Backrest: install Backrest as a systemd service to simplify pre/post-backup hooks (e.g., docker compose stop/start). Do not want to overcomplicate setup and run backrest (single binary) in a container with SSHing to host and/or docker.sock access

This commit is contained in:
v.karaychentsev
2026-02-20 11:34:29 +03:00
parent 7d7080b336
commit 2bf6cba869
4 changed files with 54 additions and 42 deletions

View File

@@ -1,29 +0,0 @@
services:
backrest:
image: ghcr.io/garethgeorge/backrest:latest
container_name: backrest
hostname: backrest
networks:
- caddy_internal
volumes:
- /srv/rundata/backrest/data:/data
- /srv/rundata/backrest/config:/config
- /srv/rundata/backrest/cache:/cache
- /srv/rundata/backrest/tmp:/tmp
#- /srv/rundata/backrest/rclone:/root/.config/rclone # Mount for rclone config (needed when using rclone remotes)
- /srv/rundata:/srv/rundata:ro # Mount local paths to backup
- /srv/photo:/srv/photo:ro # Mount local paths to backup
- /srv/backups/backrest:/repos # Mount local repos (optional for remote storage)
environment:
- BACKREST_DATA=/data
- BACKREST_CONFIG=/config/config.json
- XDG_CACHE_HOME=/cache
- TMPDIR=/tmp
- TZ=Europe/Minsk
# ports:
# - "9898:9898"
restart: unless-stopped
networks:
caddy_internal:
external: true

View File

@@ -10,58 +10,57 @@
(apps) {
@backrest host backrest.catmedved.com
@backrest host backrest.catmedved.com
handle @backrest {
reverse_proxy http://backrest:9898
reverse_proxy http://host.docker.internal:9898
}
@beszel host beszel.catmedved.com
@beszel host beszel.catmedved.com
handle @beszel {
reverse_proxy http://beszel:8090
}
# @copypaste host copypaste.catmedved.com
# @copypaste host copypaste.catmedved.com
# handle @copypaste {
# reverse_proxy http://microbin:8080
# }
@copypaste host copypaste.kladovka52.com
@copypaste host copypaste.kladovka52.com
handle @copypaste {
reverse_proxy http://microbin:8080
}
@gameyfin host gameyfin.catmedved.com
@gameyfin host gameyfin.catmedved.com
handle @gameyfin {
reverse_proxy http://gameyfin:8080
}
@gitea host gitea.catmedved.com
@gitea host gitea.catmedved.com
handle @gitea {
reverse_proxy http://gitea:3000
}
@music host music.catmedved.com
@music host music.catmedved.com
handle @music {
reverse_proxy http://navidrome:4533
}
@pdftools host pdf-tools.catmedved.com
@pdftools host pdf-tools.catmedved.com
handle @pdftools {
reverse_proxy http://stirling_pdf:8080
}
@pdftools_k host pdf-tools.kladovka52.com
@pdftools_k host pdf-tools.kladovka52.com
handle @pdftools_k {
reverse_proxy http://stirling_pdf:8080
}
@photo host photo.catmedved.com
@photo host photo.catmedved.com
handle @photo {
reverse_proxy immich_server:2283
}
@recepies host recepies.catmedved.com
@recepies host recepies.catmedved.com
handle @recepies {
reverse_proxy http://mealie:9000
}

View File

@@ -0,0 +1,14 @@
[Unit]
Description=Backrest
After=network.target docker.service
[Service]
Type=simple
User=backups
ExecStart=/usr/local/bin/backrest
WorkingDirectory=/home/backups/backrest
# wrap with caddy reverse proxy
Environment="BACKREST_PORT=172.17.0.1:9898"
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,28 @@
#! /bin/bash
set -euo pipefail
BACKREST_VERSION='v1.11.2'
TMPDIR="$(mktemp -d)"
# backrest working directory
sudo mkdir -p /home/backups/backrest
sudo chown backups:backups /home/backups/backrest
curl -fL -o "${TMPDIR}/backrest.tar.gz" \
"https://github.com/garethgeorge/backrest/releases/download/${BACKREST_VERSION}/backrest_Linux_x86_64.tar.gz"
tar -xzf "${TMPDIR}/backrest.tar.gz" -C "${TMPDIR}"
if systemctl is-active --quiet backrest; then
sudo systemctl stop backrest
echo "Paused backrest for update"
fi
sudo install -D -o root -g root -m 0644 ./backrest.service /etc/systemd/system/backrest.service
sudo install -o root -g root -m 0755 "${TMPDIR}/backrest" /usr/local/bin/backrest
echo "Reloading systemd service"
sudo systemctl daemon-reload
sudo systemctl enable --now backrest
rm -rf "${TMPDIR}"