backup-master: сервер бэкапов, агент и восстановление VPS

Один бинарник backupctl:
- server: API для агентов и restore, веб-морда (один админ), SQLite,
  ретеншн GFS, heavy-части, уведомления ntfy, раздача agent.sh/restore.sh;
- backup/plan: сбор по каталогу категорий (files/systemd/xui/compose),
  горячие дампы Postgres/Mongo/MySQL, снимок x-ui.db, docker-тома,
  digest образов, проверка crontab, потоковая отправка tar.zst;
- restore: провижининг на основе vps_installer с теми же версиями пакетов,
  recipes 3x-ui/nebula/sing-box нужных версий, восстановление compose
  с заливкой дампов и закреплением образов по digest.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mrleo1nidandClaude Opus 5.5 committed 2026-10-06 21:52:40 +03:00
commit 1d44d067e9
53 files changed
+7278

No files matched your search

+12
View File
@@ -0,0 +1,12 @@
backup.example.com {
# части бэкапа большие и грузятся долго — без лимита размера и с длинными таймаутами
request_body {
max_size 200GB
}
reverse_proxy 127.0.0.1:8080 {
transport http {
read_timeout 6h
write_timeout 6h
}
}
}
+25
View File
@@ -0,0 +1,25 @@
[Unit]
Description=backup-master server
After=network-online.target
Wants=network-online.target
[Service]
User=backup-master
Group=backup-master
Environment=BM_LISTEN=127.0.0.1:8080
Environment=BM_DATA=/var/lib/backup-master
Environment=BM_PUBLIC_URL=https://backup.example.com
Environment=BM_DIST=/opt/backup-master/dist
Environment=BM_TRUST_PROXY=1
ExecStart=/usr/local/bin/backupctl server
Restart=on-failure
RestartSec=5
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
PrivateTmp=true
ReadWritePaths=/var/lib/backup-master
[Install]
WantedBy=multi-user.target