fix28: обновлена production-документация и упаковка docs в deb

This commit is contained in:
2026-05-12 16:56:36 +05:00
parent a9bac8fdad
commit 69c737bcf4
10 changed files with 488 additions and 150 deletions
+40 -50
View File
@@ -1,72 +1,62 @@
# AWG2 Harness builder
Основной скрипт: [`build.sh`](build.sh).
Целевой crate: [`traffic_core`](../traffic_core/Cargo.toml).
Unit: [`awg2-harness.service`](../awg2-harness.service).
Пример конфига: [`config.example.toml`](../config.example.toml).
`tools/build.sh` — единый build/package helper для AWG2 Harness. Он предназначен в первую очередь для build-machine. Production-хост обычно получает только готовый `.deb` и `/etc/awg2-harness/config.toml`.
## Supported host
Скрипт собирает workspace из двух бинарей:
- Debian/Ubuntu (apt-based)
- amd64/x86_64
```text
traffic_core -> awg2-harness
reboot_module -> awg2-reboot-scheduler
```
## Purpose
И при `--package` создаёт Debian-пакет `dist/awg2-harness_<version>_amd64.deb` с checksum-файлом `dist/SHA256SUMS`.
Скрипт используется на build-machine для проверки, сборки и упаковки AWG2 Harness.
## Поддерживаемая build-среда
## Default mode
- Debian/Ubuntu с `apt`.
- amd64/x86_64.
- Rust toolchain из `rust-toolchain.toml` (`1.95.0` в текущем дереве).
- `Cargo.lock` обязателен: build gate работает в `--locked` режиме.
## Быстрый production build
```bash
cd awg2_harness
chmod +x tools/build.sh
./tools/build.sh --prepare-build-env --bootstrap-rust --yes
./tools/build.sh --package --version 0.1.6
sha256sum -c dist/SHA256SUMS
dpkg-deb -I dist/awg2-harness_0.1.6_amd64.deb
dpkg-deb -c dist/awg2-harness_0.1.6_amd64.deb | sort
```
## Что делает default запуск
```bash
./tools/build.sh
```
Дефолтный запуск **не изменяет систему**. Он:
Если не указан ни один action flag, включается `--build`.
- проверяет prereqs;
- запускает `fmt/clippy/test/build` в locked-режиме;
- печатает `file`, `ldd`, `sha256` для собранного бинаря.
## Flags
- `--prepare-build-env` — установить недостающие build-пакеты;
- `--prepare-runtime-env` — установить недостающие runtime-пакеты;
- `--bootstrap-rust` — установить rustup и pinned toolchain;
- `--build` — запустить build gate явно;
- `--package` — собрать Debian-пакет в `dist/`;
- `--dist-dir <path>` — директория для release artifacts;
- `--version <version>` — переопределить версию пакета;
- `--install` — установить бинарь + systemd unit (без enable/start);
- `--enable` — `systemctl enable --now awg2-harness.service`;
- `--yes` — подтверждение системных изменений (apt/rustup);
- `--skip-fmt` — пропустить `cargo fmt --check`;
- `--help` — справка.
## Build machine flow
## Проверка пакета перед переносом
```bash
./tools/build.sh --prepare-build-env --bootstrap-rust --yes
./tools/build.sh --build
./tools/build.sh --package
sha256sum -c dist/SHA256SUMS
dpkg-deb -I dist/awg2-harness_<version>_amd64.deb
dpkg-deb -c dist/awg2-harness_<version>_amd64.deb | sort
```
## Production host flow
В нормальном production deployment **не нужно** клонировать репозиторий на целевой хост.
Ставится сгенерированный пакет:
## Production transfer
```bash
apt install ./awg2-harness_*_amd64.deb
scp -P 2323 dist/awg2-harness_<version>_amd64.deb root@<server-ip>:/root/
scp -P 2323 dist/SHA256SUMS root@<server-ip>:/root/
```
## Manual source-tree install
## Что скрипт намеренно не делает
`--install` и `--enable` оставлены для staging/debug из checked-out source tree.
Это **не рекомендуемый** production path.
## What the script intentionally does not do
- не устанавливает Docker автоматически;
- не генерирует production config из example;
- не включает сервис без явного `--enable`;
- не управляет установкой AmneziaWG.
- не устанавливает AmneziaVPN;
- не генерирует client keys/configs;
- не копирует `config.example.toml` в `/etc/awg2-harness/config.toml`;
- не включает services без `--enable`;
- не управляет SSH hardening.
+6 -3
View File
@@ -329,6 +329,7 @@ package_deb() {
install -d -m 0755 "$staging/usr/share/doc/awg2-harness/repo"
install -d -m 0755 "$staging/usr/share/doc/awg2-harness/repo/docs"
install -d -m 0755 "$staging/usr/share/doc/awg2-harness/repo/tools"
install -d -m 0755 "$staging/usr/share/doc/awg2-harness/repo/reboot_module"
install -m 0755 "$TARGET_BIN" "$staging/usr/sbin/awg2-harness"
install -m 0755 "$REBOOT_BIN" "$staging/usr/sbin/awg2-reboot-scheduler"
@@ -336,10 +337,12 @@ package_deb() {
install -m 0644 "$ROOT_DIR/awg2-reboot-scheduler.service" "$staging/lib/systemd/system/awg2-reboot-scheduler.service"
install -m 0644 "$ROOT_DIR/config.example.toml" "$staging/usr/share/doc/awg2-harness/repo/config.example.toml"
install -m 0644 "$ROOT_DIR/README.md" "$staging/usr/share/doc/awg2-harness/repo/README.md"
install -m 0644 "$ROOT_DIR/docs/INSTALLATION.md" "$staging/usr/share/doc/awg2-harness/repo/docs/INSTALLATION.md"
install -m 0644 "$ROOT_DIR/docs/CONFIGURATION.md" "$staging/usr/share/doc/awg2-harness/repo/docs/CONFIGURATION.md"
install -m 0644 "$ROOT_DIR/docs/ACCEPTANCE_CHECKLIST.md" "$staging/usr/share/doc/awg2-harness/repo/docs/ACCEPTANCE_CHECKLIST.md"
local doc
for doc in "$ROOT_DIR"/docs/*.md; do
install -m 0644 "$doc" "$staging/usr/share/doc/awg2-harness/repo/docs/$(basename "$doc")"
done
install -m 0644 "$ROOT_DIR/tools/README.md" "$staging/usr/share/doc/awg2-harness/repo/tools/README.md"
install -m 0644 "$ROOT_DIR/reboot_module/README.md" "$staging/usr/share/doc/awg2-harness/repo/reboot_module/README.md"
cat >"$staging/DEBIAN/control" <<EOF
Package: awg2-harness