1. Overview
ezBookkeeping is a lightweight, open-source personal finance management tool. This guide documents the process of deploying it using Docker Compose with SQLite as the database backend.
I chose this configuration because it is resource-efficient for a personal server (like my YunoHost/Docker hybrid setup) and requires minimal maintenance compared to running a dedicated MySQL or PostgreSQL instance.
2. Prerequisites
- A Linux server (Debian/Ubuntu/YunoHost)
- Docker & Docker Compose installed
- Basic knowledge of terminal commands
3. Directory Structure
To keep the filesystem organised and strictly separate data from configuration, we use a standard directory path in the home folder.
Command to initialise directories:
mkdir -p ~/docker/ezbookkeeping/data
cd ~/docker/ezbookkeeping
4. Configuration (docker-compose.yml)
Create the configuration file within the directory created above.
nano docker-compose.yml
Paste the following configuration. Note the custom port assignment and timezone setting.
services:
ezbookkeeping:
image: mayswind/ezbookkeeping:latest
container_name: ezbookkeeping
restart: unless-stopped
ports:
# Format is HOST_PORT:CONTAINER_PORT
# We use 55222 to avoid conflicts with standard web ports
- "55222:8080"
volumes:
# Maps the local data folder to the container's storage
# This ensures the database persists after restarts
- ./data:/data
environment:
# Sets the application time to Malaysian time
- TZ=Asia/Kuala_Lumpur
# By default, ezBookkeeping uses SQLite, so no DB vars are needed
Key Configuration Decisions:
- Database: We rely on the default SQLite. The database file will be created automatically inside the
/datavolume. - Port 55222: Chosen to prevent conflict with other services running on ports 80, 443, or 8080.
- Timezone: Set to
Asia/Kuala_Lumpurto ensure transaction timestamps match local time.
5. Deployment
Once the file is saved, launch the container in detached mode (running in the background):
docker compose up -d
Verification:
You can check if the container is running correctly by viewing the logs:
docker compose logs -f
Press Ctrl+C to exit the log view.
6. Initial Setup
- Open your web browser and navigate to:
http://<your-server-ip>:55222 - Important: ezBookkeeping does not come with a default "admin" account.
- On the login screen, look for the "Register" button.
- Create your account. The first account created serves as the primary user.
7. Backup & Maintenance
Because we utilised a volume mapping (./data:/data), backing up this application is straightforward.
- Data Location: All financial data and uploaded receipts are stored in:
~/docker/ezbookkeeping/data - Backup Method: To back up, simply copy this entire folder to a secure location (e.g., external drive or cloud storage).
<!-- end list -->
# Example backup command (creates a timestamped archive)
tar -czvf ezbookkeeping_backup_$(date +%F).tar.gz ~/docker/ezbookkeeping/data
8. Troubleshooting / Notes
- Updating: To update to the latest version of ezBookkeeping in the future, run:
bash docker compose pull docker compose up -d - YunoHost Users: If you wish to expose this to a public domain (e.g.,
money.domain.com), you must create a "Redirect" app in the YunoHost admin panel pointing tohttp://127.0.0.1:55222.
This entry is part of my self-hosted lab documentation. Documenting these steps helps minimise errors and ensures the setup is reproducible.