Files
AWG2_harness/docs/INSTALLATION.md
T

154 lines
4.3 KiB
Markdown

# Установка AWG2 Harness на production-хост
## 1. Предусловия
Хост:
- Debian 13 amd64;
- root-доступ;
- SSH настроен заранее;
- AmneziaWG/AWG 2.0 установлена официальным способом;
- контейнер Amnezia запускается через Docker;
- сервер выделенный, без соседних сервисов, чьи сетевые правила нужно сохранять.
На хосте должны быть доступны:
```bash
docker
systemctl
ip
tc
wg
nsenter
modprobe
nft
```
`tc/ip/wg` внутри контейнера полезны для fallback, но целевая модель — host tools + вход в network namespace контейнера.
## 2. Сборка бинаря
Сборку лучше выполнять на отдельной build-машине с тем же целевым ABI.
```bash
cargo build --release
```
Проверки перед переносом:
```bash
cargo fmt --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --release
file target/release/awg2-harness
ldd target/release/awg2-harness
```
## 3. Установка файлов
```bash
install -m 0755 target/release/awg2-harness /usr/local/bin/awg2-harness
install -d -m 0755 /etc/awg2-harness
install -m 0644 config.toml /etc/awg2-harness/config.toml
```
Проверка конфига:
```bash
awg2-harness validate-config --config /etc/awg2-harness/config.toml
```
## 4. Первичное применение traffic topology
```bash
awg2-harness apply-limits --config /etc/awg2-harness/config.toml
awg2-harness status --config /etc/awg2-harness/config.toml
```
Ожидается:
- найден контейнер `amnezia-awg2` или `amnezia-awg`;
- найден network namespace контейнера;
- найден AWG/WG-интерфейс;
- найдены peers из `wg show all allowed-ips`;
- создана egress topology на AWG/WG-интерфейсе;
- создан `ifb0`;
- создан ingress redirect в `ifb0`;
- на каждого peer есть egress и ingress class/filter;
- если anti-torrent включён, в Amnezia netns есть `table inet awg2_harness` и drop counter отображается в status.
## 5. Настройка swap
```bash
awg2-harness ensure-swap --config /etc/awg2-harness/config.toml
swapon --show
cat /proc/sys/vm/swappiness
```
Ожидается `/swapfile` размером 2 ГБ, права `0600`, запись в `/etc/fstab`, низкая склонность к использованию.
## 6. Установка systemd unit
`/etc/systemd/system/awg2-harness.service`:
```ini
[Unit]
Description=AWG2 Harness multi-orchestrator
After=network-online.target docker.service
Wants=network-online.target
Requires=docker.service
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/awg2-harness daemon --config /etc/awg2-harness/config.toml
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
```
Активация:
```bash
systemd-analyze verify /etc/systemd/system/awg2-harness.service
systemctl daemon-reload
systemctl enable --now awg2-harness.service
```
## 7. Проверка после запуска daemon
```bash
systemctl status awg2-harness.service
journalctl -u awg2-harness.service -n 100 --no-pager
awg2-harness status --config /etc/awg2-harness/config.toml
```
## 8. Проверка auto-healing
```bash
docker restart amnezia-awg2
sleep 30
awg2-harness status --config /etc/awg2-harness/config.toml
```
Затем проверить Docker restart и host reboot. После каждого события status должен показывать healthy state без ручного запуска old bash.
## 9. Rollback
Если нужно временно вернуться к old bash:
```bash
systemctl stop awg2-harness.service
systemctl disable awg2-harness.service
# вернуть /opt/amnezia/limit_peers.sh и /opt/amnezia/docker_watcher.sh
# вернуть amnezia-tc.service и amnezia-tc-watcher.service
systemctl daemon-reload
systemctl enable --now amnezia-tc.service amnezia-tc-watcher.service
```
Rollback должен быть проверен до первой production-выкладки.