Backup & Restore¶
Guide for backing up and restoring your Bifolk installation.
Target Audience: System administrators
What to Back Up¶
| Component | Location | Method |
|---|---|---|
| Database (SQLite) | /bifolk/db/db.sqlite3 |
File copy |
| Database (PostgreSQL) | PostgreSQL server | pg_dump |
| Media files | /bifolk/media/ |
File copy |
| Configuration | .env, secrets/ |
File copy |
| Docker volumes | Named volumes | docker volume commands |
SQLite Backup¶
Simple File Copy¶
# Stop the application (recommended for consistency)
docker compose stop bifolk-app
# Copy the database file
docker cp bifolk-app:/bifolk/db/db.sqlite3 ./backup/db.sqlite3
# Restart
docker compose start bifolk-app
Using Django dumpdata¶
# Export as JSON (application running)
docker compose exec bifolk-app python manage.py dumpdata \
--exclude auth.permission \
--exclude contenttypes \
--indent 2 > backup/data.json
PostgreSQL Backup¶
# Using pg_dump
docker compose exec bifolk-db pg_dump -U bifolk bifolk > backup/bifolk.sql
# Compressed
docker compose exec bifolk-db pg_dump -U bifolk bifolk | gzip > backup/bifolk.sql.gz
Media Files Backup¶
Full Backup Script¶
#!/bin/bash
# Full Bifolk backup
BACKUP_DIR="./backups/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
# Database (SQLite)
docker cp bifolk-app:/bifolk/db/db.sqlite3 "$BACKUP_DIR/db.sqlite3"
# Media files
docker cp bifolk-app:/bifolk/media/ "$BACKUP_DIR/media/"
# Configuration
cp .env "$BACKUP_DIR/.env"
cp -r ../../secrets/ "$BACKUP_DIR/secrets/"
echo "Backup completed: $BACKUP_DIR"
Restoring from Backup¶
SQLite Restore¶
# Stop the application
docker compose stop bifolk-app
# Restore the database
docker cp ./backup/db.sqlite3 bifolk-app:/bifolk/db/db.sqlite3
# Restart
docker compose start bifolk-app
PostgreSQL Restore¶
# Drop and recreate the database
docker compose exec bifolk-db psql -U bifolk -c "DROP DATABASE bifolk;"
docker compose exec bifolk-db psql -U bifolk -c "CREATE DATABASE bifolk;"
# Restore
cat backup/bifolk.sql | docker compose exec -T bifolk-db psql -U bifolk bifolk
Media Restore¶
Django loaddata Restore¶
Backup Schedule Recommendations¶
| Frequency | What to Back Up |
|---|---|
| Daily | Database |
| Weekly | Database + Media files |
| Before upgrades | Full backup (database + media + configuration) |
Testing Backups¶
Regularly test your backups by restoring to a test environment:
- Set up a separate Docker Compose instance
- Restore the backup
- Verify data integrity
- Verify media files are accessible
Related Documentation¶
- Maintenance - System maintenance
- Upgrading - Upgrade procedures