x-arcane:
icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/backrest.svg
urls:
- https://github.com/garethgeorge/backrest#docker
services:
backrest:
image: ghcr.io/garethgeorge/backrest:latest
restart: unless-stopped
ports:
- "${BIND_ADDRESS:-127.0.0.1}:${PORT:-9898}:9898"
labels:
com.getarcaneapp.arcane.icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/backrest.svg
environment:
BACKREST_DATA: /data
BACKREST_CONFIG: /config/config.json
XDG_CACHE_HOME: /cache
TZ: ${TZ:-Etc/UTC}
volumes:
- data:/data
- config:/config
- cache:/cache
- ${SOURCE_PATH:-/srv/backup-source}:/userdata:ro
- ${REPOSITORY_PATH:-/srv/backrest-repos}:/repos
volumes:
data:
config:
cache:
BIND_ADDRESS=127.0.0.1
PORT=9898
TZ=Etc/UTC
SOURCE_PATH=/srv/backup-source
REPOSITORY_PATH=/srv/backrest-repos
README
Restic backup management with schedules, snapshots, and restore tools.
Copy .env.example to .env, adjust the settings, then deploy with docker compose up -d or import this template in Arcane. Open http://localhost:9898 on the Docker host. Ports bind to localhost by default; set BIND_ADDRESS to a trusted interface for LAN access, or use a reverse proxy with HTTPS.
Create the source and repository directories before deployment. Complete the first-run setup and enable authentication before exposing the UI. Add a repository at /repos/<name> or a remote backend, set its encryption password, and create plans for /userdata. Source data is read-only; repository storage is writable. Restore to a separate writable target rather than the source mount.
Named volumes retain internal application state across container upgrades. Keep a backup before updating images; docker compose down -v deletes named volume data.
Upstream: installation and configuration.