Backups
Geekonomics stores all data in two places:
data/geekonomics.db— the SQLite database (all transactions, accounts, invoices, clients, users)uploads/— receipt file attachments
Both are in bind-mounted directories outside the container, so Docker rebuilds never affect them. But you still need to back them up.
Manual backup
# Backup the database
cp /mnt/user/appdata/geekonomics-app/data/geekonomics.db \
/mnt/user/appdata/geekonomics-app/backups/geekonomics-$(date +%Y%m%d).db
# Backup uploads (optional, but recommended)
tar -czf /mnt/user/appdata/geekonomics-app/backups/uploads-$(date +%Y%m%d).tar.gz \
/mnt/user/appdata/geekonomics-app/uploads/Hot backups
SQLite supports hot backups while the database is in use. You can copy geekonomics.db without stopping the container.
If you see .db-wal or .db-shm files alongside the database, include them in the backup — they contain uncommitted transactions that haven't been checkpointed yet.
Automated backup via cron (Unraid)
Add a cron job on the Unraid server. In Unraid, use the User Scripts plugin or add to the cron file directly:
# Daily at 2:00 AM — keep 30 days of backups
0 2 * * * cp /mnt/user/appdata/geekonomics-app/data/geekonomics.db \
/mnt/user/backups/geekonomics/geekonomics-$(date +\%Y\%m\%d).db && \
find /mnt/user/backups/geekonomics/ -name "*.db" -mtime +30 -deleteRestoring from backup
Stop the container:
bashcd /mnt/user/appdata/geekonomics-app docker compose stopReplace the database file:
bashcp /path/to/backup/geekonomics-20260101.db data/geekonomics.db # Remove any stale WAL files rm -f data/geekonomics.db-shm data/geekonomics.db-walRestart:
bashdocker compose start
What's NOT in the database
Receipt files are stored in uploads/ as plain files, not inside the database. If you restore a database backup but not the matching uploads backup, transaction records will reference attachments that no longer exist.
Back up both data/ and uploads/ for a complete restore.
Google Drive / cloud sync (optional)
For offsite backups, use rclone to sync your backup directory to Google Drive or any cloud storage:
# Install rclone and configure a remote called "gdrive"
rclone copy /mnt/user/backups/geekonomics gdrive:backups/geekonomics
# Add to cron after the backup stepRclone supports 40+ cloud providers. See rclone.org for setup instructions.