docs: describe packaging layout

This commit is contained in:
2026-08-27 03:48:49 +05:00
parent 8ac3b2b1ba
commit 81ea89f7fa
+40
View File
@@ -0,0 +1,40 @@
# Packaging
Каталог содержит package-managed systemd-конфигурацию проекта. Установка
файлов в Debian-пакет описана в `debian/install`.
## Состав
- `systemd/vpn-egress-guard.service` — до запуска sing-box атомарно устанавливает
отдельную nftables-таблицу, блокирующую прямой forwarding `eth1 -> eth0`;
- `systemd/vpn-egress-sync.service` — выполняет однократный reconcile текущих
Hysteria2 URI и policy;
- `systemd/vpn-egress-sync.path` — запускает sync при изменении защищённого URI;
- `systemd/sing-box.service.d/10-vpn-egress-guard.conf` — добавляет к штатному
`sing-box.service` requirement и ordering dependency от guard.
## Зависимости запуска
```text
vpn-egress-guard.service
├── required before ──> sing-box.service
└── required before ──> vpn-egress-sync.service
vpn-egress-sync.path
```
`Before=`/`After=` задают порядок, а `Requires=` — обязательность успешной
активации dependency. Drop-in нужен потому, что один `Before=sing-box.service`
в guard unit не заставляет sing-box запускать guard и не блокирует sing-box при
ошибке guard.
Guard является `Type=oneshot` с `RemainAfterExit=yes`. Эти зависимости защищают
совместный запуск units, но не являются watchdog для ручного удаления таблицы
`inet vpn_egress_guard`. Текущее runtime-состояние проверяет
`vpn-egressctl doctor`.
Units устанавливаются без автоматического enable/start. Их включение выполняется
явно по инструкции `docs/migration.md`, после проверки локальных значений policy.