Files
AWG2_harness/docs/INSTALLATION.md
T

6.2 KiB
Raw Blame History

Installation

Этот документ описывает production-порядок установки AWG2 Harness. Подробный runtime-план с SSH hardening и Amnezia preflight находится в корневом README.md.

Deployment contract

  • Целевой production-хост: Debian 13 amd64.
  • Amnezia ставится до AWG2 Harness официальным self-hosted способом через приложение AmneziaVPN.
  • Проект рассчитан на AmneziaWG/AWG 2.0 и compatible legacy-сценарий AmneziaWG/AWG 1.5.
  • SSH должен быть заранее настроен. Production-пример: порт 2323, вход по ключу, password login disabled.
  • Production-хост получает готовый Debian-пакет; Rust/cargo/source tree на нём не требуются.
  • /etc/awg2-harness/config.toml создаётся вручную. config.example.toml не копируется автоматически как боевой config.
  • Пакет не устанавливает Docker/Amnezia и не включает services автоматически.

A. Build machine

A1. Подготовить build environment

cd awg2_harness
chmod +x tools/build.sh
./tools/build.sh --prepare-build-env --bootstrap-rust --yes

A2. Проверить код

cargo fmt --manifest-path Cargo.toml --all --check
cargo clippy --locked --workspace --all-targets --manifest-path Cargo.toml -- -D warnings
cargo test --locked --workspace --release --manifest-path Cargo.toml

То же самое выполняет build helper:

./tools/build.sh --build

A3. Собрать Debian-пакет

./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

--version можно опустить, если версия в traffic_core/Cargo.toml уже равна release version. Version override влияет только на metadata .deb.

B. Подготовить production-хост

B1. SSH

Production-пример:

install -d -m 0755 /etc/ssh/sshd_config.d
cat >/etc/ssh/sshd_config.d/99-awg2-production.conf <<'EOF'
Port 2323
PermitRootLogin prohibit-password
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
EOF
sshd -t
systemctl reload ssh 2>/dev/null || systemctl reload sshd
ss -ltnp | grep ':2323'

Обязательно проверьте вход с нового терминала:

ssh -p 2323 root@<server-ip>

B2. Amnezia

Установите AmneziaWG/AWG через официальное приложение AmneziaVPN в режиме self-hosted server. Вводите в приложении тот SSH host/port/user/private key, который реально работает после B1.

Проверка после установки:

docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'
C="$(docker ps --format '{{.Names}}' | grep -E '^(amnezia-awg2|amnezia-awg)$' | head -n1)"
echo "container=$C"
docker port "$C"
docker exec "$C" wg show

Если контейнер называется иначе или интерфейс не awg0, отразите это в /etc/awg2-harness/config.toml.

C. Transfer artifacts

scp -P 2323 dist/awg2-harness_*_amd64.deb root@<server-ip>:/root/
scp -P 2323 dist/SHA256SUMS root@<server-ip>:/root/
scp -P 2323 config.example.toml root@<server-ip>:/root/awg2-harness.config.toml

Перед установкой отредактируйте /root/awg2-harness.config.toml. Минимально проверьте:

  • [host_firewall].ssh_port совпадает с реальным SSH-портом (2323 в production-примере);
  • [host_firewall].amnezia_port совпадает с published UDP port Amnezia;
  • [amnezia].peer_ipv4_cidr совпадает с подсетью clients;
  • [anti_torrent].peer_ipv4_cidr обычно равен [amnezia].peer_ipv4_cidr;
  • peer_limit и root_rate отражают нужную traffic policy.

D. Production install

cd /root
sha256sum -c SHA256SUMS
apt install ./awg2-harness_*_amd64.deb
install -d -m 0755 /etc/awg2-harness
install -m 0644 /root/awg2-harness.config.toml /etc/awg2-harness/config.toml
systemctl daemon-reload

E. Preflight before enable

awg2-harness --config /etc/awg2-harness/config.toml validate-config
awg2-harness --config /etc/awg2-harness/config.toml validate-runtime
awg2-harness --config /etc/awg2-harness/config.toml ensure-swap
awg2-harness --config /etc/awg2-harness/config.toml apply-firewall
awg2-harness --config /etc/awg2-harness/config.toml apply-limits
awg2-harness --config /etc/awg2-harness/config.toml status

Expected healthy result:

Traffic actual:
  drift: no
Host firewall:
  drift: no
Anti-torrent:
  drift: no
Swap:
  drift: no

If there are no peers yet, apply-limits may print no peers found, skip tc apply. That is healthy for an empty server.

When swap.enabled=true, AWG2 Harness intentionally makes swap exclusive: one managed swapfile, one fstab swap entry, configured swappiness.

F. Enable services

systemctl enable --now awg2-harness.service
systemctl enable --now awg2-reboot-scheduler.service

systemctl status awg2-harness.service --no-pager -l
systemctl status awg2-reboot-scheduler.service --no-pager -l
journalctl -u awg2-harness.service --since '5 minutes ago' --no-pager
journalctl -u awg2-reboot-scheduler.service --since '5 minutes ago' --no-pager

After 30–60 seconds:

awg2-harness --config /etc/awg2-harness/config.toml status

G. Reboot validation

reboot

After reconnect:

systemctl status docker --no-pager -l
systemctl status awg2-harness.service --no-pager -l
systemctl status awg2-reboot-scheduler.service --no-pager -l
awg2-harness --config /etc/awg2-harness/config.toml status

H. Manual source-tree install

./tools/build.sh --install and ./tools/build.sh --enable exist for staging/debug. They are not the recommended production path. Use .deb on production.