README: установка сервера из последнего релиза
CI / test (push) Successful in 1m17s

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mrleo1nidandClaude Opus 5.5 committed 2026-10-06 22:04:45 +03:00
1 parent 89333dd4d8
commit fa1817e614
1 file changed
+53 -23
+53 -23
View File
@@ -8,39 +8,46 @@
Всё это делает один бинарник `backupctl`. Как он устроен внутри — в [docs/DESIGN.md](docs/DESIGN.md).
## Сборка
```bash
make build # dist/backupctl-linux-amd64, dist/backupctl-linux-arm64
make test
```
Готовые бинарники собирает Gitea Actions. `.gitea/workflows/ci.yml` на каждый push и PR проверяет форматирование, запускает vet и тесты и собирает бинарники. `release.yml` на тег `v*` публикует релиз с `backupctl-linux-{amd64,arm64}`, `checksums.txt` и файлами из `deploy/`:
```bash
git tag v0.1.0 && git push origin v0.1.0
```
Без make:
```bash
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags "-s -w" -o dist/backupctl-linux-amd64 ./cmd/backupctl
```
## Установка сервера
Ставим из [последнего релиза](https://gitea.hsrv.site/mrleo1nid/backup-master/releases/latest). Ссылка `releases/download/latest/...` всегда ведёт на свежую версию. Чтобы поставить конкретную версию, замените `latest` на тег, например `v0.1.0`.
```bash
REL=https://gitea.hsrv.site/mrleo1nid/backup-master/releases/download/latest
ARCH=$(dpkg --print-architecture) # amd64 или arm64
# пользователь и каталоги
sudo useradd -r -s /usr/sbin/nologin -d /var/lib/backup-master backup-master
sudo install -d -o backup-master -g backup-master -m 700 /var/lib/backup-master
sudo install -d /opt/backup-master/dist
sudo cp dist/backupctl-linux-* /opt/backup-master/dist/
sudo cp dist/backupctl-linux-amd64 /usr/local/bin/backupctl
# бинарники: свой — в /usr/local/bin, оба — в dist для раздачи агентам
for a in amd64 arm64; do sudo curl -fsSL "$REL/backupctl-linux-$a" -o "/opt/backup-master/dist/backupctl-linux-$a"; done
sudo curl -fsSL "$REL/checksums.txt" -o /tmp/backupctl-checksums.txt
(cd /opt/backup-master/dist && grep backupctl-linux /tmp/backupctl-checksums.txt | sha256sum -c -)
sudo install -m 755 "/opt/backup-master/dist/backupctl-linux-$ARCH" /usr/local/bin/backupctl
backupctl version
# администратор веб-морды
sudo -u backup-master BM_DATA=/var/lib/backup-master backupctl admin-passwd admin
sudo cp deploy/backup-master.service /etc/systemd/system/ # поправьте BM_PUBLIC_URL
# systemd: поправьте BM_PUBLIC_URL на внешний адрес сервера
sudo curl -fsSL "$REL/backup-master.service" -o /etc/systemd/system/backup-master.service
sudo sed -i 's|https://backup.example.com|https://backup.ВАШ-ДОМЕН|' /etc/systemd/system/backup-master.service
sudo systemctl daemon-reload
sudo systemctl enable --now backup-master
```
Сервер слушает `127.0.0.1:8080`, TLS даёт Caddy (пример — `deploy/Caddyfile.example`). Агентам сервер раздаёт бинарники из `BM_DIST`. Для своей архитектуры сервер раздаёт сам себя.
Сервер слушает `127.0.0.1:8080`, TLS даёт Caddy:
```bash
curl -fsSL "$REL/Caddyfile.example" # блок для /etc/caddy/Caddyfile, замените домен
sudo systemctl reload caddy
```
Агентам сервер раздаёт бинарники из `BM_DIST` (`/opt/backup-master/dist`).
**Обновление сервера:** снова выполните блок «бинарники», затем `sudo systemctl restart backup-master`. Агенты обновляются командой `curl -fsSL https://backup.ВАШ-ДОМЕН/agent.sh | sudo bash` без `--token`, конфиг при этом сохраняется.
В «Настройках» укажите топик ntfy. Уведомления приходят:
- об ошибках бэкапа;
@@ -126,6 +133,29 @@ categories:
restore_cmd: mysql < "$DUMP_FILE"
```
## Сборка из исходников
```bash
make build # dist/backupctl-linux-amd64, dist/backupctl-linux-arm64
make test
```
Без make:
```bash
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags "-s -w" -o dist/backupctl-linux-amd64 ./cmd/backupctl
```
CI (Gitea Actions):
- `.gitea/workflows/ci.yml` на каждый push и PR проверяет форматирование, запускает vet и тесты и собирает бинарники;
- `release.yml` на тег `v*` публикует релиз с бинарниками, `checksums.txt` и файлами из `deploy/`.
Новый релиз:
```bash
git tag v0.2.0 && git push origin v0.2.0
```
## Хранение
Бэкапы лежат в `/var/lib/backup-master/backups/<домен>/<дата>-<id>/`: `main.tar.zst`, heavy-части и `manifest.json`. Архив — обычный tar+zstd, его можно разобрать и без backupctl: