release: prepare 0.2.0 for sing-box 1.14

This commit is contained in:
2026-09-08 19:26:00 +05:00
parent 81ea89f7fa
commit 76dce5b47a
42 changed files with 1634 additions and 549 deletions
+23 -38
View File
@@ -1,21 +1,19 @@
# Эксплуатация
## Ротация credential
Интерактивно:
## Ротация URI
```bash
sudo vpn-egressctl import --stdin
```
Из защищённого файла:
Либо из защищённого файла режима 0600:
```bash
sudo vpn-egressctl import --file /run/credentials/new-hysteria2.uri
```
Файл должен иметь режим `0600`. Не используйте positional argument, environment
variable, shell history или URL в тикете/логе.
Production URI HY2XS должен использовать Gecko. Не передавать URI через argv,
environment, shell history, тикет или журнал.
## Изменение policy
@@ -26,52 +24,39 @@ vpn-egressctl diff
vpn-egressctl sync
```
Path unit следит только за URI. Policy применяется явным `sync`, чтобы случайное
редактирование инфраструктурных параметров не вызвало неожиданный restart.
Path unit следит только за URI; policy применяется явным `sync`.
## Состояние
## State и rollback
```bash
vpn-egressctl status
vpn-egressctl status --json
```
State содержит только hashes, endpoint без auth, версию, время и результат.
## Rollback
```bash
vpn-egressctl rollback
```
Команда проверяет last-good реальным sing-box, атомарно меняет конфиги местами,
перезапускает сервис и выполняет тот же healthcheck. Повторный rollback возвращает
конфигурацию, которая была активна до первого rollback.
Rollback относится только к конфигам, успешно управлявшимся этой же версией
0.2.0 с sing-box 1.14.0. `last-good.meta.json` обязан совпадать по controller
version, engine version и SHA-256. Legacy backup отклоняется.
После ручного rollback desired URI остаётся прежним. `status` показывает
`status=rolled_back`, а `doctor` сообщает `config-drift`, потому что production
config отличается от заново отрендеренного desired state. Перед новым `sync`
нужно либо исправить URI, либо осознанно вернуть desired state.
Первое clean apply не имеет предыдущего конфига и не создаёт `last-good`.
Последующие успешные изменения сохраняют backup. Ручной rollback меняет current
и last-good местами, поэтому повторная команда возвращает предыдущий current.
## Реакция systemd.path
После rollback desired URI не меняется; `doctor` показывает config drift. До
следующего `sync` нужно исправить URI либо осознанно вернуть desired state.
`PathChanged` запускает oneshot `vpn-egress-sync.service`. Одновременный ручной
import сериализуется lock-файлом. Если новый URI некорректен, production config
не меняется, а unit завершается с ошибкой, видимой в journal.
## Watcher
`PathChanged` запускает `vpn-egress-sync.service`. Все операции сериализованы
lock-файлом. Некорректный URI не меняет production config.
```bash
journalctl -u vpn-egress-sync.service -n 100 --no-pager
systemctl reset-failed vpn-egress-sync.service
```
## Плановое обновление
## Обновления package/engine
Обновление policy или пакета внутри 1.13.19:
1. `vpn-egressctl check`;
2. `vpn-egressctl diff`;
3. backup артефакта пакета;
4. обновление;
5. `vpn-egressctl sync`;
6. `vpn-egressctl doctor`;
7. контролируемый rollback-тест на staging.
0.2.0 не объявляет совместимость с другими версиями приложения или sing-box.
Любой следующий переход выполняется по отдельному release runbook как clean
install. `apt upgrade` не считается допустимой процедурой обновления этого
control plane.