Files
singbox_glue/docs/migration.md
T

4.4 KiB
Raw Blame History

Чистая установка версии 0.2.0

Поддерживаемая модель

In-place upgrade 0.1.0 → 0.2.0, автоматическая миграция policy/state и запуск старого config под новым ядром не поддерживаются. Новый package preinst отклоняет upgrade. Установка выполняется через удаление старого пакета, архивирование его данных и настройку 0.2.0 с нуля.

Описанные действия выполнять из console/maintenance-доступа. До успешного E2E anti-leak guard должен оставаться в nftables.

1. Остановить автоматическое применение

systemctl disable --now vpn-egress-sync.path || true
systemctl stop sing-box.service
systemctl mask --runtime sing-box.service
nft list table inet vpn_egress_guard

Если guard отсутствует, сначала восстановить защиту. Не продолжать переход с работающим прямым forwarding eth1 -> eth0.

2. Удалить старый package и архивировать данные

apt-get remove vpn-egressctl
install -d -m 0700 /root/vpn-egress-0.1-archive

test ! -e /etc/vpn-egress || \
  mv /etc/vpn-egress /root/vpn-egress-0.1-archive/etc-vpn-egress
test ! -e /var/lib/vpn-egress || \
  mv /var/lib/vpn-egress /root/vpn-egress-0.1-archive/var-lib-vpn-egress
test ! -e /etc/sing-box/config.json || \
  mv /etc/sing-box/config.json /root/vpn-egress-0.1-archive/config.json

Архив содержит secrets и должен оставаться root:root 0700/0600. Не копировать старые policy.json, state.json или last-good.json обратно в 0.2.0.

3. Установить exact sing-box 1.14.0

apt-get update
apt-get install sing-box=1.14.0
sing-box version

Вывод должен содержать exact 1.14.0, Linux environment, with_quic и with_gvisor. Runtime mask не снимать: старый config уже архивирован, но новая policy ещё не настроена.

4. Установить vpn-egressctl 0.2.0

dpkg -i vpn-egressctl_0.2.0_all.deb
systemctl daemon-reload

Если postinst сообщает о legacy state или unmanaged config, не обходить проверку: архивировать указанный объект и повторить dpkg --configure vpn-egressctl.

5. Настроить новую policy и Gecko URI

Редактировать новый /etc/vpn-egress/policy.json вручную. Из старой policy можно перенести осознанно проверенные локальные значения, но нельзя заменять ею новый файл целиком.

install -m 0600 -o root -g root /dev/null /etc/vpn-egress/hysteria2.uri
read -r -s URI
printf '%s\n' "$URI" > /etc/vpn-egress/hysteria2.uri
unset URI

vpn-egressctl check
vpn-egressctl diff

Проверить, что URI содержит obfs=gecko. check не запускает service.

6. Активировать защиту и config

systemctl enable --now vpn-egress-guard.service
nft list table inet vpn_egress_guard
systemctl unmask --runtime sing-box.service
vpn-egressctl sync
vpn-egressctl doctor

После первого успешного sync last-good ещё отсутствует — это ожидаемо.

7. Acceptance и watcher

С workload за eth1 проверить DNS, TCP, UDP, внешний VPN IP и отсутствие прямого WAN при остановленном sing-box. Серверный Gecko E2E выполняется отдельно владельцем HY2XS.

systemctl enable --now vpn-egress-sync.path
vpn-egressctl status --json
vpn-egressctl doctor

Возврат к 0.1.0

0.2.0 не выполняет downgrade. Возврат — отдельная ручная чистая установка: удалить 0.2.0, архивировать её состояние, установить exact старые packages и только после этого восстановить согласованный snapshot 0.1.0. Нельзя запускать config одной версии под бинарником другой.