This guide covers backing up and restoring data for your Currents on-prem deployment.
Currents stores data in several locations:
| Service | Default Path | Data Type |
|---|---|---|
| MongoDB | data/mongodb |
Primary application data (projects, runs, tests, users) |
| ClickHouse | data/clickhouse |
Analytics and reporting data |
| Redis | data/redis |
Cache and session data (optional to backup) |
| RustFS | data/rustfs |
Artifacts, screenshots, videos (if using the provided rustfs) |
Important: Always stop services before backing up to ensure data consistency.
cd on-prem
docker compose stop
The simplest approach is to backup the entire data/ directory:
# Stop services
docker compose stop
# Create timestamped backup
tar -czvf backup-$(date +%Y%m%d-%H%M%S).tar.gz data/
# Restart services
docker compose start
Important: In addition to data backups, securely store:
- Your
.envfile (contains credentials needed for restore) - use a password manager or secrets vault- Your
docker-compose.yml(or keep it version controlled)
MongoDB contains your primary application data. For production environments, consider using mongodump for more reliable backups.
docker compose stop
tar -czvf mongodb-backup-$(date +%Y%m%d).tar.gz data/mongodb/
docker compose start
# Source credentials from .env
source .env
# Run mongodump inside the container
docker compose exec mongodb mongodump \
-u "$MONGODB_USERNAME" \
-p "$MONGODB_PASSWORD" \
--authenticationDatabase admin \
--archive=/data/db/backup.archive
# Copy backup out of container
docker compose cp mongodb:/data/db/backup.archive ./mongodb-backup-$(date +%Y%m%d).archive
# Clean up backup file in container
docker compose exec mongodb rm /data/db/backup.archive
ClickHouse stores analytics data. For large datasets, use ClickHouse’s native backup.
docker compose stop
tar -czvf clickhouse-backup-$(date +%Y%m%d).tar.gz data/clickhouse/
docker compose start
# Source credentials from .env
source .env
# Create backup using clickhouse-client
docker compose exec clickhouse clickhouse-client \
--user currents \
--password "$CLICKHOUSE_CURRENTS_PASSWORD" \
--query "BACKUP DATABASE currents TO Disk('backups', 'backup-$(date +%Y%m%d)')"
Note: Native backups require configuring a backup disk in ClickHouse. See ClickHouse backup documentation.
If using local RustFS for object storage:
docker compose stop
tar -czvf rustfs-backup-$(date +%Y%m%d).tar.gz data/rustfs/
docker compose start
If using external S3-compatible storage, use your cloud provider’s backup features or tools like aws s3 sync or rclone.
Redis primarily stores cache data that can be regenerated. Backup is optional but can speed up recovery:
docker compose stop
tar -czvf redis-backup-$(date +%Y%m%d).tar.gz data/redis/
docker compose start
Before restoring, ensure you have:
.env file (or recreate with the same credentials)docker-compose.yml file (or clone the repository and run setup)# Stop services
docker compose down
# Remove existing data (careful!)
rm -rf data/
# Extract backup
tar -xzvf backup-YYYYMMDD-HHMMSS.tar.gz
# Set permissions (Podman users - see quickstart troubleshooting)
# Example for rootful Podman:
# sudo chown -R 999:999 data/mongodb data/redis
# sudo chown -R 101:101 data/clickhouse
# Restart services
docker compose up -d
docker compose down
rm -rf data/mongodb/
tar -xzvf mongodb-backup-YYYYMMDD.tar.gz
docker compose up -d
# Copy backup into container
docker compose cp ./mongodb-backup-YYYYMMDD.archive mongodb:/data/db/backup.archive
# Source credentials
source .env
# Restore using mongorestore
docker compose exec mongodb mongorestore \
-u "$MONGODB_USERNAME" \
-p "$MONGODB_PASSWORD" \
--authenticationDatabase admin \
--archive=/data/db/backup.archive \
--drop
# Clean up
docker compose exec mongodb rm /data/db/backup.archive
docker compose down
rm -rf data/clickhouse/
tar -xzvf clickhouse-backup-YYYYMMDD.tar.gz
docker compose up -d
# Source credentials from .env
source .env
# Restore backup using clickhouse-client
docker compose exec clickhouse clickhouse-client \
--user currents \
--password "$CLICKHOUSE_CURRENTS_PASSWORD" \
--query "RESTORE DATABASE currents FROM Disk('backups', 'backup-YYYYMMDD')"
Note: See ClickHouse restore documentation for advanced options such as restoring to a different database or renaming tables.
docker compose down
rm -rf data/rustfs/
tar -xzvf rustfs-backup-YYYYMMDD.tar.gz
docker compose up -d