Skip to content

To backup all my servers data I use App iconRestic. Restic use (here) rclone internally to backup everything on pCloud.

The backed up data includes mainly container volumes (configs) and docker-compose (from App iconPortainer ).

Restic is a modern backup program that can back up your files

  • to many different storage types, including self-hosted and online services
  • easily, being a single executable that you can run without a server or complex setup
  • effectively, only transferring the parts that actually changed in the files you back up
  • securely, by careful use of cryptography in every part of the process
  • verifiably, enabling you to make sure that your files can be restored when needed
services:
backup:
image: mazzolino/restic:1.7.2
container_name: backup_restic
hostname: ${HOST}
restart: always
environment:
BACKUP_CRON: 0 0 4 * * *
RUN_ON_STARTUP: 'true'
RESTIC_REPOSITORY: rclone:pcloud:/Homelab/Backups/Data/${HOST}
RESTIC_PASSWORD: ${RESTIC_PASSWORD}
RESTIC_BACKUP_SOURCES: /data
RESTIC_BACKUP_ARGS: --exclude **node_modules** --exclude
/data/apps/media-center/torrents/** --exclude
/data/apps/emulatorjs/data/**/roms/** --exclude
/data/apps/monitoring/prometheus/data/** --exclude
/data/apps/traefik/logs/** --verbose
TZ: Europe/Paris
RESTIC_FORGET_ARGS: --prune --keep-last 14 --keep-daily 1 --verbose
POST_COMMANDS_SUCCESS: curl -X GET
'https://uptime.zrx.sh/api/push/${UPTIME_ID}?status=up&msg=OK&ping='
volumes:
- /data:/data:ro
- /data/apps/restic/rclone.conf:/run/secrets/rclone.conf:ro
check:
image: mazzolino/restic:1.7.2
hostname: ${HOST}
container_name: backup_check
restart: always
environment:
SKIP_INIT: 'true'
#RUN_ON_STARTUP: 'true'
CHECK_CRON: 0 10 4 * * *
RESTIC_CHECK_ARGS: --read-data-subset=10% --verbose
RESTIC_REPOSITORY: rclone:pcloud:/Homelab/Backups/Data/${HOST}
RESTIC_PASSWORD: ${RESTIC_PASSWORD}
TZ: Europe/Paris
POST_COMMANDS_FAILURE: curl -X GET
'https://uptime.zrx.sh/api/push/${UPTIME_ID}?status=down&msg=OK&ping='
volumes:
- /data/apps/restic/rclone.conf:/run/secrets/rclone.conf:ro
pcloud:
image: ghcr.io/zareix/docker-rclone-cron:latest
container_name: backup_pcloud
environment:
- CRON_SCHEDULE=30 4 * * *
- COMMAND=rclone sync --config /run/secrets/rclone.conf -v pcloud:/
/mnt/usbhddstx/data/pcloud
volumes:
- /mnt/usbhddstx:/mnt/usbhddstx
- /data/apps/restic/rclone.conf:/run/secrets/rclone.conf:ro
networks: {}