# Эксплуатация ## Ротация URI ```bash sudo vpn-egressctl import --stdin ``` Либо из защищённого файла режима 0600: ```bash sudo vpn-egressctl import --file /run/credentials/new-hysteria2.uri ``` Для новой установки production URI HY2XS должен использовать Gecko. Salamander допустим как compatibility fallback только при явно совпадающей серверной настройке. Не передавать URI через argv, environment, shell history, тикет или журнал. ## Изменение policy ```bash install -m 0600 new-policy.json /etc/vpn-egress/policy.json vpn-egressctl check vpn-egressctl diff vpn-egressctl sync ``` Path unit следит только за URI; policy применяется явным `sync`. ## State и rollback ```bash vpn-egressctl status --json vpn-egressctl rollback ``` Rollback относится только к конфигам, успешно управлявшимся этой же версией 0.2.0 с sing-box 1.14.0. `last-good.meta.json` обязан совпадать по controller version, engine version и SHA-256. Legacy backup отклоняется. Первое clean apply не имеет предыдущего конфига и не создаёт `last-good`. Последующие успешные изменения сохраняют backup. Ручной rollback меняет current и last-good местами, поэтому повторная команда возвращает предыдущий current. После rollback desired URI не меняется; `doctor` показывает config drift. До следующего `sync` нужно исправить URI либо осознанно вернуть desired state. ## 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 0.2.0 не объявляет совместимость с другими версиями приложения или sing-box. Переход на другой release выполняется по отдельному release runbook как clean install. Повторная установка ровно 0.2.0 допускается при согласованных state и config; `apt upgrade` на другой release не считается допустимой процедурой.