version: '3'

services:
  backup:
    image: mazzolino/restic:1.7.1
    container_name: restic-backup
    restart: unless-stopped
    networks:
      - private
    hostname: docker
    volumes:
      - ${HOME}/services:/source/services:ro
      - /mnt/nextcloud_data:/mnt/nextcloud_data:ro
      - /mnt/photoprism_data:/mnt/photoprism_data:ro
      - /mnt/photoprism_import_data:/mnt/photoprism_import_data:ro
      - /etc:/source/etc:ro
    environment:
      RUN_ON_STARTUP: 'true'
      BACKUP_CRON: '0 30 3 * * *' # backups run every day at 03:30
      RESTIC_PASSWORD: ${RESTIC_PASSWORD}
      RESTIC_REPOSITORY: ${B2_BUCKET}
      RESTIC_BACKUP_SOURCES: /source
      RESTIC_BACKUP_ARGS: >-
        --tag docker-volumes
        --verbose
      RESTIC_FORGET_ARGS: >-
        --keep-last 10
        --keep-daily 7
        --keep-weekly 5
        --keep-monthly 12
      B2_ACCOUNT_ID: ${B2_ACCOUNT_ID}
      B2_ACCOUNT_KEY: ${B2_ACCOUNT_KEY}
      TZ: 'Europe/Berlin'

  prune:
    image: mazzolino/restic:1.7.1
    container_name: restic-prune
    restart: unless-stopped
    hostname: docker
    environment:
      RUN_ON_STARTUP: 'false'
      PRUNE_CRON: '0 0 4 * * *' # prune runs every day at 04:00
      RESTIC_REPOSITORY: ${B2_BUCKET}
      RESTIC_PASSWORD: ${RESTIC_PASSWORD}
      B2_ACCOUNT_ID: ${B2_ACCOUNT_ID}
      B2_ACCOUNT_KEY: ${B2_ACCOUNT_KEY}
      TZ: 'Europe/Berlin'

  check:
    image: mazzolino/restic:1.7.1
    container_name: restic-check
    restart: unless-stopped
    hostname: docker
    environment:
      RUN_ON_STARTUP: 'false'
      CHECK_CRON: '0 30 4 * * *' # check runs every day at 04:30
      RESTIC_CHECK_ARGS: >-
        --read-data-subset=10%
      RESTIC_REPOSITORY: ${B2_BUCKET}
      RESTIC_PASSWORD: ${RESTIC_PASSWORD}
      B2_ACCOUNT_ID: ${B2_ACCOUNT_ID}
      B2_ACCOUNT_KEY: ${B2_ACCOUNT_KEY}
      TZ: 'Europe/Berlin'

networks:
  private: {}