Backup & Recovery
What to back up
| Data | Priority |
|---|---|
| PostgreSQL database | Critical |
deploy/.env configuration file | Critical |
| Uploaded files (if using local storage) | High |
| ClickHouse data | High |
PostgreSQL backup
Manual
cd deploy
docker compose -f docker-compose.ee.yml exec postgres pg_dump -U aiser aiser > backup-$(date +%Y%m%d-%H%M%S).sql
Automated daily backup
Add to crontab (crontab -e):
0 2 * * * cd /path/to/aicser/deploy && docker compose -f docker-compose.ee.yml exec -T postgres pg_dump -U aiser aiser > /backups/aiser-$(date +\%Y\%m\%d).sql
Restore PostgreSQL
cd deploy
docker compose -f docker-compose.ee.yml exec -T postgres psql -U aiser aiser < backup-YYYYMMDD.sql
ClickHouse backup
# Stop ClickHouse for a consistent snapshot
docker compose -f docker-compose.ee.yml stop clickhouse
# Copy volume data
docker run --rm \
-v aiser-ee_clickhouse_ee_data:/data \
-v /backups:/backup \
alpine tar czf /backup/clickhouse-$(date +%Y%m%d).tar.gz -C /data .
# Restart ClickHouse
docker compose -f docker-compose.ee.yml start clickhouse
Configuration backup
Keep deploy/.env in a secure location — it contains all secrets needed to restore the deployment. Do not commit it to a public repository.
Full recovery
- Provision a host meeting the system requirements
- Clone the repository and restore your
deploy/.env - Start services:
cd deploy && make ee - Wait for all services to show healthy
- Restore PostgreSQL:
docker compose -f docker-compose.ee.yml exec -T postgres psql -U aiser aiser < backup.sql - Restore ClickHouse if applicable
- Verify at
http://your-server:3001