Repository navigation
Backup and Restore
Bindarr stores all application data, user accounts, locations, cards, and custom valuations in a single SQLite database file (bindarr.db).
Bindarr operates SQLite in WAL (Write-Ahead Logging) mode for high concurrency and performance. In WAL mode, three files coexist in the data directory:
-
bindarr.db— The primary database file. -
bindarr.db-wal— The Write-Ahead Log containing recent uncommitted or uncheckpointed transactions. -
bindarr.db-shm— Shared-memory index for concurrent readers.
Caution with Raw File Copies: Never copy
bindarr.dbdirectly while the server is active without stopping the container or using Bindarr's automated backup engine. Doing so may result in missing transactions that are still buffered in the-walfile.
Bindarr includes a built-in automated backup scheduler that generates safe SQLite snapshots while the server is live and serving requests:
-
Schedule: Runs automatically every 24 hours (
BACKUP_INTERVAL_HOURS=24). -
Retention: Retains the last 10 snapshots (
BACKUP_KEEP_LAST=10), automatically deleting older snapshots. -
Location: Snapshots are saved to
/app/database/backups/within the persistent storage volume.
Administrators can navigate to Admin → Backups to:
- Trigger an immediate database snapshot.
- View a table of existing backup timestamps and file sizes.
- Download a snapshot file (
.db.bak) directly to your computer.
To create an off-site copy of your database using Docker:
Stop the container to ensure all WAL transactions are fully flushed to disk:
# 1. Stop the container
docker compose stop
# 2. Copy the database file to your current working directory
docker run --rm -v bindarr-data:/data -v "$PWD":/backup alpine cp /data/bindarr.db /backup/bindarr-manual-backup.db
# 3. Restart the container
docker compose startIf you cannot take downtime, trigger SQLite's online backup API:
docker exec bindarr sqlite3 /app/database/bindarr.db ".backup '/app/database/backups/manual.db'"To restore Bindarr from a backup snapshot:
- Stop the container:
docker compose stop
- Copy your backup file into the volume as
bindarr.db:docker run --rm -v bindarr-data:/data -v "$PWD":/backup alpine cp /backup/bindarr-manual-backup.db /data/bindarr.db - Remove any lingering stale WAL files:
docker run --rm -v bindarr-data:/data alpine rm -f /data/bindarr.db-wal /data/bindarr.db-shm
- Start Bindarr:
docker compose start
Individual users can also export and import their card collections without requiring server-level filesystem access:
- Go to Settings → Data Management or Collection → Export.
- Choose your format:
- JSON: Full fidelity export including custom market values, physical binder pages/slots, and grading details.
- CSV: TCGplayer-compatible format containing card names, set codes, conditions, quantities, and printings.
- Go to Settings → Import Collection.
- Select your CSV or JSON file.
- Review the preview and click Confirm Import.
Bindarr is licensed under the MIT License.
Need help? Check Troubleshooting & FAQ or open an issue on GitHub.