feat(deploy): nightly backup script (mongodump + minio volume, 14-day rotation)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
pull/314/head
Timothy Fedorko 4 weeks ago
parent 3f3870574c
commit a292634e4c

@ -45,7 +45,7 @@ Nightly cron on the VPS (`/etc/cron.d/tailchat-backup`) dumps MongoDB and tars t
MinIO volume into `/root/backups/tailchat/`, keeping 14 days.
Restore: stop the stack, `mongorestore` the dump into the `mongo` container, untar the
MinIO volume back into `tailchat-server_storage`, start the stack.
MinIO volume back into `tailchat_storage`, start the stack.
## Ports exposed publicly

@ -0,0 +1,18 @@
#!/bin/sh
# Nightly Tailchat backup: mongodump + MinIO volume tar, 14-day rotation.
# Installed at /opt/tailchat/backup.sh, run by /etc/cron.d/tailchat-backup.
set -eu
TS=$(date +%Y%m%d)
DEST="/root/backups/tailchat/$TS"
mkdir -p "$DEST"
cd /opt/tailchat
docker compose exec -T mongo mongodump --archive --gzip --db tailchat > "$DEST/mongo-tailchat.archive.gz"
docker run --rm -v tailchat_storage:/data:ro -v "$DEST":/backup alpine \
tar czf /backup/minio-storage.tar.gz -C /data .
# rotate: drop day-dirs older than 14 days
find /root/backups/tailchat -maxdepth 1 -mindepth 1 -type d -mtime +14 -exec rm -rf {} +
echo "$(date -Is) backup ok: $(du -sh "$DEST" | cut -f1)"
Loading…
Cancel
Save