services: backrest: image: ${RESTIC_IMAGE:-garethgeorge/backrest:latest} container_name: ${RESTIC_COMPOSE_PROJECT_NAME}_app restart: unless-stopped hostname: ${RESTIC_HOSTNAME:-falcon} volumes: # Backrest application data - backrest_data:/data - backrest_config:/config - backrest_cache:/cache - backrest_tmp:/tmp # Backup destination - ${RESTIC_BACKUP_PATH:-/mnt/hidrive/users/valknar/Backup}:/repos # Docker volumes to backup (read-only) - backup_core_postgres_data:/volumes/core_postgres_data:ro - backup_core_redis_data:/volumes/core_redis_data:ro - backup_directus_uploads:/volumes/directus_uploads:ro - backup_directus_bundle:/volumes/directus_bundle:ro - backup_awesome_data:/volumes/awesome_data:ro - backup_mattermost_config:/volumes/mattermost_config:ro - backup_mattermost_data:/volumes/mattermost_data:ro - backup_mattermost_plugins:/volumes/mattermost_plugins:ro - backup_tandoor_staticfiles:/volumes/tandoor_staticfiles:ro - backup_tandoor_mediafiles:/volumes/tandoor_mediafiles:ro - backup_scrapyd_data:/volumes/scrapyd_data:ro - backup_scrapy_code:/volumes/scrapy_code:ro - backup_n8n_data:/volumes/n8n_data:ro - backup_filestash_data:/volumes/filestash_data:ro - backup_linkwarden_data:/volumes/linkwarden_data:ro - backup_linkwarden_meili_data:/volumes/linkwarden_meili_data:ro - backup_letsencrypt_data:/volumes/letsencrypt_data:ro - backup_vaultwarden_data:/volumes/vaultwarden_data:ro - backup_joplin_data:/volumes/joplin_data:ro - backup_jelly_config:/volumes/jelly_config:ro - backup_netdata_config:/volumes/netdata_config:ro - backup_ai_postgres_data:/volumes/ai_postgres_data:ro - backup_ai_webui_data:/volumes/ai_webui_data:ro - backup_ai_crawl4ai_data:/volumes/ai_crawl4ai_data:ro - backup_asciinema_data:/volumes/asciinema_data:ro - backup_dev_gitea_data:/volumes/dev_gitea_data:ro - backup_dev_gitea_config:/volumes/dev_gitea_config:ro - backup_dev_gitea_runner_data:/volumes/dev_gitea_runner_data:ro - backup_dev_coolify_data:/volumes/dev_coolify_data:ro environment: TZ: ${TIMEZONE:-Europe/Berlin} BACKREST_DATA: /data BACKREST_CONFIG: /config/config.json XDG_CACHE_HOME: /cache TMPDIR: /tmp MATTERMOST_WEBHOOK_URL: ${MATTERMOST_WEBHOOK_URL:-} networks: - compose_network labels: - 'traefik.enable=${RESTIC_TRAEFIK_ENABLED}' - 'traefik.http.middlewares.${RESTIC_COMPOSE_PROJECT_NAME}-redirect-web-secure.redirectscheme.scheme=https' - 'traefik.http.routers.${RESTIC_COMPOSE_PROJECT_NAME}-web.middlewares=${RESTIC_COMPOSE_PROJECT_NAME}-redirect-web-secure' - 'traefik.http.routers.${RESTIC_COMPOSE_PROJECT_NAME}-web.rule=Host(`${RESTIC_TRAEFIK_HOST}`)' - 'traefik.http.routers.${RESTIC_COMPOSE_PROJECT_NAME}-web.entrypoints=web' - 'traefik.http.routers.${RESTIC_COMPOSE_PROJECT_NAME}-web-secure.rule=Host(`${RESTIC_TRAEFIK_HOST}`)' - 'traefik.http.routers.${RESTIC_COMPOSE_PROJECT_NAME}-web-secure.tls.certresolver=resolver' - 'traefik.http.routers.${RESTIC_COMPOSE_PROJECT_NAME}-web-secure.entrypoints=web-secure' - 'traefik.http.middlewares.${RESTIC_COMPOSE_PROJECT_NAME}-web-secure-compress.compress=true' - 'traefik.http.routers.${RESTIC_COMPOSE_PROJECT_NAME}-web-secure.middlewares=${RESTIC_COMPOSE_PROJECT_NAME}-web-secure-compress' - 'traefik.http.services.${RESTIC_COMPOSE_PROJECT_NAME}-web-secure.loadbalancer.server.port=9898' - 'traefik.docker.network=${NETWORK_NAME}' - 'com.centurylinklabs.watchtower.enable=${WATCHTOWER_LABEL_ENABLE}' volumes: backrest_data: name: ${RESTIC_COMPOSE_PROJECT_NAME}_data backrest_config: name: ${RESTIC_COMPOSE_PROJECT_NAME}_config backrest_cache: name: ${RESTIC_COMPOSE_PROJECT_NAME}_cache backrest_tmp: name: ${RESTIC_COMPOSE_PROJECT_NAME}_tmp # External volumes from other stacks (read-only mounts) backup_core_postgres_data: name: core_postgres_data external: true backup_core_redis_data: name: core_redis_data external: true backup_directus_uploads: name: core_directus_uploads external: true backup_directus_bundle: name: core_directus_bundle external: true backup_awesome_data: name: awesome_data external: true backup_mattermost_config: name: mattermost_config external: true backup_mattermost_data: name: mattermost_data external: true backup_mattermost_plugins: name: mattermost_plugins external: true backup_tandoor_staticfiles: name: tandoor_staticfiles external: true backup_tandoor_mediafiles: name: tandoor_mediafiles external: true backup_scrapyd_data: name: scrapy_scrapyd_data external: true backup_scrapy_code: name: scrapy_scrapy_code external: true backup_n8n_data: name: n8n_n8n_data external: true backup_filestash_data: name: stash_filestash_data external: true backup_linkwarden_data: name: links_data external: true backup_linkwarden_meili_data: name: links_meili_data external: true backup_letsencrypt_data: name: proxy_letsencrypt_data external: true backup_vaultwarden_data: name: vault_data external: true backup_joplin_data: name: joplin_data external: true backup_jelly_config: name: jelly_config external: true backup_netdata_config: name: netdata_config external: true backup_ai_postgres_data: name: ai_postgres_data external: true backup_ai_webui_data: name: ai_webui_data external: true backup_ai_crawl4ai_data: name: ai_crawl4ai_data external: true backup_asciinema_data: name: asciinema_data external: true backup_dev_gitea_data: name: dev_gitea_data external: true backup_dev_gitea_config: name: dev_gitea_config external: true backup_dev_gitea_runner_data: name: dev_gitea_runner_data external: true backup_dev_coolify_data: name: dev_coolify_data external: true networks: compose_network: name: ${NETWORK_NAME} external: true