embeddevio a3396b2be6 docs(#21): VERIFICATION-21 §7 — реальные прогоны раунда 3 (коды 0/1/3/4, make→2, env-алиас, DEV_SKIP_BUILD)
Гоняно на 192.168.1.147 на дереве, сверенном по git-blob-SHA: ci.sh 0/4/3/1,
make при коде 4 и 1 отдаёт 2 (контейнерные коды видны в логе), AWG_NS_EXEC_MODE
больше не перекрывается, DEV_SKIP_BUILD=1 даёт AC-1 (200 + healthy), test-deploy
51 passed / 98.86 %, manifests и shellcheck — 0.

Refs #21
Refs #56
2026-10-28 21:58:58 +03:00
2026-10-16 22:45:47 +03:00

awg-dash

VPN-шлюз AmneziaWG с интеллектуальной маршрутизацией: один Docker-образ = туннель + policy routing + split-tunnel (GeoIP / DNS) + REST API v1 + Web UI (тёмная тема).

  • Эпик и декомпозиция: Gitea issue #15 (embeddevio/awg-dash).
  • Исполнение: Hermes Kanban, борда awg-dash (hermes kanban --board awg-dash list).
  • PoC-референс: embeddevio/amneziawg-docker-gateway (bash + iptables, docs/technical-specification.md).

Архитектура

Два процесса в одном образе:

Процесс Пользователь Ответственность
awg-agent root awg/wg-интерфейс, iptables/ipset, dnsmasq, policy routing, метрики
awg-api непривилегированный FastAPI: REST API v1, WebSocket, статика UI

Обмен — unix-socket /run/awg/agent.sock; состояние — SQLite в /data, конфиги .conf в /config. Принятые решения зафиксированы в docs/adr/.

Быстрый старт (после релиза 1.0)

docker run -dit --name=vpn-gateway \
  --network=host \
  --device=/dev/net/tun:/dev/net/tun \
  --cap-add=NET_ADMIN --cap-add=SYS_MODULE \
  --restart always \
  -v /srv/awg/config:/config -v /srv/awg/data:/data \
  registry.example.com/vpn-gateway:latest

Web UI: http://<host>:8080. До релиза образ собирается локально: make build.

Разработка

make venv    # локальное окружение (.venv)
make lint    # ruff + mypy
make test    # pytest + coverage (порог 70%)
make build   # docker build образа (задача #18)
make dev-up  # dev-стенд (задача #21)

Сетевые тесты выполняются в netns-стенде (tests/netns/), без реального VPN-провайдера.

Структура репозитория

Путь Назначение
backend/awg_agent/ привилегированный агент: туннель, маршрутизация, GeoIP, DNS, метрики
backend/awg_api/ FastAPI-приложение (REST + WS + статика UI)
backend/tests/ unit/integration-тесты (pytest)
ui/ React + TypeScript + Tailwind + shadcn-ui
deploy/ Dockerfile, compose-профили, entrypoint, Grafana-дашборд
docs/adr/ архитектурные решения
tests/netns/ сетевой тестовый стенд

Процесс разработки

1 задача = 1 issue = 1 ветка feat/<issue>-slug = 1 PR.

Гейты мержа: CI green, coverage нового кода ≥ 70 %, security scan low/none, ревью владельца роли. Merge в main и деплой в prod — только TechLead после гейтов. Все операции с репозиторием — через Gitea MCP.

S
Description
awg-dash 🚀
Readme MIT 537 KiB
Languages
Python 85.4%
Shell 12.3%
Makefile 2.3%