Skip to main content

Backup & Recovery

What to back up

DataPriority
PostgreSQL databaseCritical
deploy/.env configuration fileCritical
Uploaded files (if using local storage)High
ClickHouse dataHigh

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

  1. Provision a host meeting the system requirements
  2. Clone the repository and restore your deploy/.env
  3. Start services: cd deploy && make ee
  4. Wait for all services to show healthy
  5. Restore PostgreSQL: docker compose -f docker-compose.ee.yml exec -T postgres psql -U aiser aiser < backup.sql
  6. Restore ClickHouse if applicable
  7. Verify at http://your-server:3001