management/docker-compose.yml
jtricerolph f46fe07ca8 Stack-level backup: Nextcloud WebDAV + Docker volume backup via SSH
- backup container: builds from Dockerfile (adds openssh-client, curl, jq)
  fetches Nextcloud creds from Settings API at runtime, pg_dumps all DBs
  and tars Docker volumes on each app LXC via SSH, uploads to Nextcloud
  WebDAV, writes runs.ndjson log, heartbeats Uptime Kuma
- updater: gains docker-cli, Docker socket mount, /backup/runs,
  /backup/status, /backup/trigger endpoints; reads runs.ndjson for status
- kuma_data mounted read-only into backup container for local backup
- .env.example updated with SETTINGS_URL, SETTINGS_SECRET, PG_SUPERPASS

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-14 11:03:59 +00:00

54 lines
1.6 KiB
YAML

services:
uptime-kuma:
image: louislam/uptime-kuma:2
security_opt:
- apparmor=unconfined
volumes:
- kuma_data:/app/data
ports:
- "3002:3001"
restart: unless-stopped
updater:
build: ./updater
security_opt:
- apparmor=unconfined
environment:
- WEBHOOK_SECRET=${WEBHOOK_SECRET}
- SSH_KEY_PATH=${SSH_KEY_PATH:-/root/.ssh/hotel-manage_deploy}
- FORGEJO_URL=${FORGEJO_URL:-https://git.pterois.co.uk}
- FORGEJO_ORG=${FORGEJO_ORG:-hotel-manage-stack}
- FORGEJO_TOKEN=${FORGEJO_TOKEN:-}
- AUTH_URL=${AUTH_URL:-http://10.10.10.101:3001}
- CENTRAL_AUTH_SECRET=${CENTRAL_AUTH_SECRET}
- BACKUP_CONTAINER=${BACKUP_CONTAINER:-management-backup-1}
volumes:
- /root/.ssh:/root/.ssh:ro
- /var/run/docker.sock:/var/run/docker.sock
- backup_data:/backups:ro
ports:
- "9000:9000"
restart: unless-stopped
backup:
build: ./backup
security_opt:
- apparmor=unconfined
entrypoint: ["/bin/sh", "-c", "crond -f -l 8"]
environment:
- BACKUP_DATABASES=${BACKUP_DATABASES}
- PG_SUPERPASS=${PG_SUPERPASS}
- KUMA_PUSH_URL=${KUMA_PUSH_URL}
- SETTINGS_URL=${SETTINGS_URL:-http://10.10.10.116:3080}
- SETTINGS_SECRET=${SETTINGS_SECRET}
- SSH_KEY=${SSH_KEY:-/root/.ssh/hotel-manage_deploy}
volumes:
- backup_data:/backups
- ./backup/backup.sh:/etc/periodic/daily/backup:ro
- /root/.ssh:/root/.ssh:ro
- kuma_data:/kuma_data:ro
restart: unless-stopped
volumes:
kuma_data:
backup_data: