Repository navigation
Releases
Bob Auto Xray v0.4.5 · Preview
Bob Auto Xray v0.4.5 · Preview
- Установка на уже настроенную VPS. Preflight больше не требует «чистой» системы там, где конфликта нет. Каждое найденное условие относится к одному из трёх классов: совместимо — установка продолжается, чужая конфигурация не меняется; адаптируемо — Bob подстраивается или пропускает необязательное; конфликт — отказ с названием причины и способом исправления.
- UFW оценивается по действию правил, а не по их записи. Прежняя проверка сравнивала каждую строку с одним шаблоном и отвечала
Existing non-SSH UFW rulesдаже наufw allow 22(tcp+udp),ufw allow OpenSSH,ufw limit ssh,ufw allow 80,443/tcpи на любой DENY. Теперь правила IPv4 и IPv6 разбираются с учётом протокола, портов и диапазонов, источника, интерфейса, порядка и действия. Сохраняются без изменений: дополнительные DENY, правила для других служб, UDP, доверенные адреса и частные интерфейсы (ufw allow in on tailscale0),limitна SSH. Отказ — только если правило закрывает SSH, 80 или 443 для всех, ограничивает частоту на 80/443, открывает из интернета внутренний порт (панель, подписки, Xray API и метрики, SOCKS5 WARP) или не поддаётся надёжной оценке и может сделать одно из этого. В сообщении — само правило, причина и команды исправления. Заодно исправлено: правилаuser6.rules(цепочкиufw6-*) прежняя проверка не видела вовсе. - Bob не выполняет
ufw reset, не удаляет и не переставляет чужие правила и добавляет только недостающиеufw allowдля SSH, 80 и 443. SSH, который оператор разрешил только своим адресам, Bob не открывает для всех. Раньшеufw allow 22/tcpмолча заменял чужойlimit 22/tcp. - Сторонние службы больше не блокируют установку. Отказ
Foreign TCP listener on port …заменён проверкой реального конфликта: заняты ли порты, которые открывает сам Bob (80, 443, 62789, 11111, 40000 при установке WARP, сохранённые порты панели и подписок при resume). Сообщение называет порт, его назначение и процесс. Остальные TCP- и UDP-службы перечисляются и не трогаются. - Изменения, которые меняют работу сервера, требуют явного подтверждения. Если включение UFW с политикой deny отрежет работающую публичную службу, если политика исходящих соединений не
allow, если правило SSH не покрывает текущую сессию или служба слушает только IPv6-адрес, который Bob отключит, установщик показывает причину и действие и спрашиваетyes. При запуске с--domain(режим без вопросов) и без терминала это безопасный отказ с командами исправления. Подтверждение сохраняется в state и при resume не запрашивается повторно. - Этап FIREWALL идемпотентен, обратим и возобновляем. Перед изменением правила оцениваются заново; после — результат читается из файлов UFW. При любой ошибке и при Ctrl+C команды этого запуска отменяются в обратном порядке.
FIREWALLдобавлен к этапам, после которых разрешён resume: раньше сбойufwоставлял установку без продолжения. - Адаптируемое: существующий
/etc/fail2ban/jail.localсохраняется (отказ только при остатках3x-ipl); при нескольких версиях PHP-FPM выбирается версия пакетаphp-fpmдистрибутива; пустой/var/lib/selfsniне считается установкой; публичный IPv4 определяется по трём независимым сервисам вместо одного. Проверка IPv6 в режимахexternal/skippedдопускает службы, слушавшие до установки. - Диагностика. Сообщения preflight переписаны: что найдено, почему это мешает и как исправить. При отказе до создания state причина и наблюдения (сокеты, правила UFW) записываются в
/var/log/bob-auto-xray/preflight.log(0600, без credentials).--preflight-onlyпо-прежнему ничего не записывает и теперь показывает, что будет сохранено, что Bob изменит и что потребует подтверждения. - Acceptance и Bob Doctor проверяют закрытость внутренних портов по действию правил: диапазон, multiport или «allow all», покрывающие порт, —
FAIL, как и правило с самим портом. - Намеренно сохранено: существующие 3x-ui,
/etc/nginx,/etc/letsencryptи файлы прежней установки Bob по-прежнему отказ (это доказательства владения для resume), как и AAAA-запись, несовпадение DNS A и занятые порты Bob. VPS E2E этих изменений не проводился.
Проверки и ограничения
CI проверяет Python 3.10/3.12 unittest, real Nginx harness, pinned 3x-ui API/GeoData/TLS subscription harness, compileall,
Bash syntax, ShellCheck и две воспроизводимые release-сборки с SHA256.
Release workflow повторяет локальные проверки перед публикацией assets.
Фактические результаты и границы проверок: docs/TESTING.md.
Какие сценарии этой сборки подтверждены на VPS, а какие NOT TESTED, перечислено
в docs/TESTING.md; CI и локальные проверки реальный VPS E2E не заменяют.
Bob Doctor: на новых установках bob doctor [--deep] [--json]; на уже установленной
ноде без установки — bash <(curl …/v0.4.5/install.sh) doctor (тот же проверенный архив).
Меню bob на работающей ноде v0.4.0+: только CLI, без provision —
bash <(curl …/v0.4.5/install.sh) cli-upgrade --check, затем cli-upgrade.
Старые установки автоматически не мигрируют.
Установка от root
bash <(curl -fsSL --proto '=https' https://github.com/DaMistic727/Bob-auto-xray/releases/download/v0.4.5/install.sh)Bootstrap закрепляет immutable URL и SHA256 payload; SHA256SUMS опубликован в assets.
README ·
Архитектура
SHA256 payload: e2cfa4acb9c8399461fc79d79c683f6cccadfc39f23313cf4af9add83f7c2cbd
SHA256 bootstrap: 04b0004d80acabfd55ce0a22293a9a75ed724407cc0d0d008dcf81d73ffbe4d6
Bob Auto Xray v0.4.4 · Preview
Bob Auto Xray v0.4.4 · Preview
- TCP BBR/FQ и swap больше не останавливают установку. v0.4.3 падала на preflight с
TCP BBR/FQ is already configured in a foreign persistent sysctl file, если BBR уже включён VPS-Server-Menu: оно дописываетnet.core.default_qdisc=fqиnet.ipv4.tcp_congestion_control=bbrв/etc/sysctl.conf. Такая же остановка ждала чужой/swapfileразмером не 2 ГиБ (VPS-Server-Menu создаёт 1, 2, 4 ГиБ или произвольный). - BBR/FQ работает по той же схеме, что IPv6:
managed/external/skippedвstate.bbr.mode. Уже применённая чужая настройка —external, Bob ничего не пишет. Контейнер, ядро без BBR, противоречащие значения или сбой с откатом —skippedс предупреждением. Чужой swap не трогается (external/skipped). Установщик выводит отдельную строку по IPv6, BBR/FQ и swap и продолжает. - Откаты BBR и swap выполняются и при Ctrl+C, откат BBR перечитывается. Неподтверждённый откат остаётся фатальным. Убран
except Exception: passиз отката BBR. - Исправлено: v0.4.3 печатала
✓ TCP BBR/FQ: настроены., не проверяя результат BBR. - Acceptance проверяет BBR/FQ только в режиме
managed. Doctor читаетstate.bbr: внешняя настройка —PASS, пропущенная —SKIP, чужой swap —SKIP. Ноды безmodeпроверяются, как раньше.
Проверки и ограничения
CI проверяет Python 3.10/3.12 unittest, real Nginx harness, pinned 3x-ui API/GeoData/TLS subscription harness, compileall,
Bash syntax, ShellCheck и две воспроизводимые release-сборки с SHA256.
Release workflow повторяет локальные проверки перед публикацией assets.
Фактические результаты и границы проверок: docs/TESTING.md.
Какие сценарии этой сборки подтверждены на VPS, а какие NOT TESTED, перечислено
в docs/TESTING.md; CI и локальные проверки реальный VPS E2E не заменяют.
Bob Doctor: на новых установках bob doctor [--deep] [--json]; на уже установленной
ноде без установки — bash <(curl …/v0.4.4/install.sh) doctor (тот же проверенный архив).
Меню bob на работающей ноде v0.4.0+: только CLI, без provision —
bash <(curl …/v0.4.4/install.sh) cli-upgrade --check, затем cli-upgrade.
Старые установки автоматически не мигрируют.
Установка от root на чистой VPS
bash <(curl -fsSL --proto '=https' https://github.com/DaMistic727/Bob-auto-xray/releases/download/v0.4.4/install.sh)Bootstrap закрепляет immutable URL и SHA256 payload; SHA256SUMS опубликован в assets.
README ·
Архитектура
SHA256 payload: 32c8d623f69075f6cfdfd95d3c2c56c80c8dd2dea11144dffc55caf389f9e7c3
SHA256 bootstrap: d3e19ce6359793927a179116b47421a90b5795b7a241d428ff2018084cfb74db
Bob Auto Xray v0.4.3 · Preview
Bob Auto Xray v0.4.3 · Preview
-
IPv6 — best effort. Установка больше не останавливается на preflight с
Foreign persistent IPv6 sysctl assignment, если IPv6 уже отключён другим инструментом: совпадающие назначенияdisable_ipv6 = 1(так их пишетipv6-menuVPS-Server-Menu в/etc/sysctl.conf) не считаются конфликтом. Так упала установка v0.4.2 на VPS, где IPv6 был отключён через VPS-Server-Menu. -
Результат этапа записывается в
state.ipv6.mode:managed— политика Bob применена и проверена;external— IPv6 уже выключен чужой конфигурацией, Bob ничего не пишет;skipped— настроить IPv6 безопасно нельзя (противоречащиеdisable_ipv6 = 0, IPv6 SSH, не netplan/networkd, сбой с полным откатом), чужие файлы не изменяются. Установщик пишет⚠ IPv6: настройка пропущена — …и продолжает. IPv4-only объявляется только вmanaged. -
Без политики Bob установка продолжается, только если UFW фильтрует IPv6 (
IPV6=yes) и через маршрутизируемый IPv6 слушают лишь SSH, 80 и 443; иначе это фатальный отказ. Проверка повторяется при раннем и позднем resume и в acceptance. DNS с AAAA, проверки IPv4, symlink и изменённые файлы Bob по-прежнему фатальны. -
Откат частичной настройки IPv6 теперь проверяется повторным чтением sysctl и файлов и выполняется и при Ctrl+C. Неудачный откат остаётся фатальным.
-
BBR/FQ и swap настраиваются до IPv6 и не зависят от него. Сбой IPv6 их не отменяет, сбой BBR IPv6 не затрагивает.
-
Bob Doctor различает режимы.
external:PASS, пока IPv6 выключен, иначеWARN.skipped: всегда не вышеWARN. В обоих режимах IPv6 при UFW без IPv6 —FAIL. Ноды с прежним state читаются какmanagedи проверяются, как раньше. -
Команда установки стала короче:
curl -fsSL --proto '=https'. Флаг--proto-redirбыл лишним, потому что--proto '=https'уже запрещает редирект не на HTTPS. -
Ответ Let’s Encrypt
rateLimited«Service busy; retry later» — перегрузка сервера, частая на staging, — теперь считается временной ошибкой: проверка продления повторяется в прежних пределах (4 попытки, 20 минут). Раньше он принимался за лимит домена: повторов не было, а сообщение ошибочно называло «лимит повторных сертификатов». Так упала установка на VPS 2026-11-04 (v0.4.2). Настоящие лимиты (повторные сертификаты, неудачные проверки, регистрации) по-прежнему не повторяются и теперь называются по своему виду. -
Xray-core обновлён до официального v26.10.31 (
a4a3dff) — срочного релиза безопасности: по умолчанию отключён MPTCP у слушающих сокетов, так как в ядре Linux найдена удалённо эксплуатируемая уязвимость IPv4 MPTCP, а Go 1.24+ включает MPTCP по умолчанию. Upstream рекомендует также обновить ядро. Закреплены SHA256 архивов amd64/arm64 (совпадают с официальными.dgst) и извлечённых бинарных файлов; установщик и acceptance проверяют версию и commit. -
Между 26.10.21 и 26.10.31 в Xray ограничен native GeoData updater (только существующие файлы
.dat, интервал не меньше минуты, до 256 MiB); конфигурация Bob — четыре.datиз 3x-ui и суточный cron — ему соответствует. 3x-ui остаётся v3.11.0; её встроенный Xray 26.10.21 заменяется до первого запуска, как и прежде. -
Уже установленные ноды автоматически не обновляются. VPS E2E с Xray 26.10.31 не проводился.
-
Resume после сбоя на этапе SECURITY. Временная сетевая ошибка при проверке продления (например,
ConnectionResetErrorот ACME staging) больше не делает почти готовую установку невосстановимой: повторный запуск продолжает с первого незавершённого шага SECURITY и проходит acceptance, не повторяя APT, BBR, firewall, WARP, Certbot, nginx и установку панели. State и система сверяются до любых изменений; несовпадение или повреждённый state — отказ. Прежде простое добавление SECURITY в allowlist повторило бы BBR, firewall, выпуск сертификата, генерацию портала и переустановку 3x-ui. -
Проверка продления изолирована: только сертификат Bob (
--cert-name) и только hook Bob (--no-directory-hooks --deploy-hook …/50-selfsni); посторонние pre/post/renew hooks в renewal-конфигурации Bob илиcli.ini— отказ. Упавший, пропущенный или незапущенный hook не даёт PASS, даже если certbot завершился с кодом 0. Штатное продление черезcertbot.timerи каталог hooks не изменено. -
Повторяются только временные сетевые ошибки ACME (до 4 попыток, 20 минут). Ошибки HTTP-01, deploy hook, TLS-проверки и rate limit сообщаются отдельно и без повторов. Ложного PASS нет: без подтверждённого dry-run установка не завершается.
-
Поздний resume не обновляет Xray: acceptance сверяет ядро с проверенным при установке (SHA256 и версия из state), поэтому нода, установленная v0.4.2 с Xray 26.10.21, доводится до
HEALTHY_LOCALи этим релизом; установщик предупреждает, что ядро отличается от закреплённого 26.10.31. Свежая установка по-прежнему требует 26.10.31. -
Поздний resume не изменяет сетевую конфигурацию: IPv6-политика только проверяется, расхождение — отказ.
-
Resume с этапа CERTIFICATE после выпуска сертификата. Если сбой случился уже после успешного
certbot certonly(ошибкаcertbot.timer, таймаут после сохранения, Ctrl+C), resume отвергал собственный сертификат Bob как «чужой», и восстановить установку можно было только удалением сертификата и перевыпуском (лимит Let’s Encrypt — 5 одинаковых в неделю). Теперь принимается ровно lineage Bob, аcertonlyидёт с--keep-until-expiringи действующий сертификат не перевыпускает. -
Повтор перезагрузки TLS после продления. Certbot запускает deploy hook один раз и только логирует его ошибку; при сбое nginx и x-ui продолжали бы отдавать старый сертификат до его истечения. Hook теперь пишет отметку успешной перезагрузки, а drop-in
certbot.serviceпри каждом запускеcertbot.timerповторяет hook, пока сертификат новее отметки; сбой виден как failedcertbot.service. -
Doctor предупреждает о сроке сертификата, только когда продление запаздывает (относительно срока жизни сертификата), поэтому не даёт ложных
WARNпосле перехода Let’s Encrypt на 64 и 45 дней при certbot 4.0 (Ubuntu 26.04). -
Ubuntu 22.04 больше не поддерживается (certbot 1.21 без
--run-deploy-hooks); preflight её отклоняет. Поддерживаются Ubuntu 24.04 (certbot 2.9.0) и 26.04 (certbot 4.0.0). CI проверяет командную строку dry-run на пакетном certbot обеих ОС.
Проверки и ограничения
CI проверяет Python 3.10/3.12 unittest, real Nginx harness, pinned 3x-ui API/GeoData/TLS subscription harness, compileall,
Bash syntax, ShellCheck и две воспроизводимые release-сборки с SHA256.
Release workflow повторяет локальные проверки перед публикацией assets.
Фактические результаты и границы проверок: docs/TESTING.md.
Какие сценарии этой сборки подтверждены на VPS, а какие NOT TESTED, перечислено
в docs/TESTING.md; CI и локальные проверки реальный VPS E2E не заменяют.
Bob Doctor: на новых установках bob doctor [--deep] [--json]; на уже установленной
ноде без установки — bash <(curl …/v0.4.3/install.sh) doctor (тот же проверенный архив).
Меню bob на работающей ноде v0.4.0+: только CLI, без provision —
bash <(curl …/v0.4.3/install.sh) cli-upgrade --check, затем cli-upgrade.
Старые установки автоматически не мигрируют.
Установка от root на чистой VPS
bash <(curl -fsSL --proto '=https' https://github.com/DaMistic727/Bob-auto-xray/releases/download/v0.4.3/install.sh)Bootstrap закрепляет immutable URL и SHA256 payload; SHA256SUMS опубликован в assets.
README ·
Архитектура
SHA256 payload: e8a78e0b508ff5c28304df25dbf30d79cc3b4128bc529d9a07b73f7f9ee80c76
SHA256 bootstrap: 65a81c753d321316a90a2f6609570a333f593dc15ca07e56c31ade1d4120c081
Bob Auto Xray v0.4.2 · Preview
Bob Auto Xray v0.4.2 · Preview
bob adminподтверждает клиента admin в runtime Xray на штатной установке. Раньше всегда показывалось «не подтверждено»: официальный установщик 3x-ui распаковывает архив черезtarот root и сохраняет владельца из архива (uid 1001) у/usr/local/x-uiиbin/, а CLI требовал root-владельца каждого каталога пути. Для runtime-конфигурации владелец каталогов больше не проверяется; symlink, запись для group/other и требования к самому файлу (обычный, root,0600) сохранены, проверкиstate.jsonне изменились. Сопоставление идёт той же функцией, что в установщике (verify_admin_runtime):PASS— подтверждён,WARN— отсутствует или отличается,UNKNOWN— с причиной.- Обновление только CLI на работающей v0.4.0/v0.4.1 — прежним
install.sh cli-upgrade [--check]из этого релиза; VPN, службы и state не затрагиваются. Изменён только CLI, provision и Doctor те же, что в v0.4.1.
Проверки и ограничения
CI проверяет Python 3.10/3.12 unittest, real Nginx harness, pinned 3x-ui API/GeoData/TLS subscription harness, compileall,
Bash syntax, ShellCheck и две воспроизводимые release-сборки с SHA256.
Release workflow повторяет локальные проверки перед публикацией assets.
Фактические результаты и границы проверок: docs/TESTING.md.
Какие сценарии этой сборки подтверждены на VPS, а какие NOT TESTED, перечислено
в docs/TESTING.md; CI и локальные проверки реальный VPS E2E не заменяют.
Bob Doctor: на новых установках bob doctor [--deep] [--json]; на уже установленной
ноде без установки — bash <(curl …/v0.4.2/install.sh) doctor (тот же проверенный архив).
Меню bob на работающей ноде v0.4.0+: только CLI, без provision —
bash <(curl …/v0.4.2/install.sh) cli-upgrade --check, затем cli-upgrade.
Старые установки автоматически не мигрируют.
Установка от root на чистой VPS
bash <(curl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' https://github.com/DaMistic727/Bob-auto-xray/releases/download/v0.4.2/install.sh)Bootstrap закрепляет immutable URL и SHA256 payload; SHA256SUMS опубликован в assets.
README ·
Архитектура
SHA256 payload: f9656553ff98031e0c18b6b3b5f33e1008a8f52364cc7ef361ff8bbc36dc81b9
SHA256 bootstrap: c615c736cde5a4ba66de969b3eeb7cba7446532066751e065c83483175d735b0
Bob Auto Xray v0.4.1 · Preview
Bob Auto Xray v0.4.1 · Preview
- Меню
bob. Обычная командаbobв терминале открывает компактное меню на русском: доступ к панели, подписка admin, Bob Doctor, глубокая диагностика, состояние сервера и сводка отчёта установки. Все пункты только читают; restart, update, backup и другие изменяющие операции не добавлялись. - Новые команды:
bob panel,bob admin,bob status,bob report,bob --help,bob --version. Без терминалаbobпечатает справку и не ждёт ввода.bob doctor [--deep] [--json]делегируется прежнему Doctor без изменений: формат JSON и exit codes 0–3 те же;bob --json/bob --deepиз v0.4.0 тоже работают. - Секреты (URL панели, исходные логин и пароль, ссылка подписки admin) берутся только из root-only
/var/lib/selfsni/state.jsonи показываются после явного подтверждения; без терминала — только с флагом--show-secrets. Чтение без symlink в пути, только обычный файл root0600с одной ссылкой; state проверяется той же валидацией, что и в Doctor. В логи, JSON и другие файлы секреты не попадают; после показа меню очищает экран и scrollback (в терминалах с ANSI). - Пароль показывается как исходный из установки: если его меняли в 3x-ui, он не действует. Текущий пароль из хэша не извлекается, автоматического сброса нет. Для admin меню дополнительно сверяет наличие клиента в runtime Xray.
- Обновление только CLI на работающей v0.4.0:
install.sh cli-upgrade [--check]из проверенного архива релиза. Заменяются только/usr/local/bin/bobи/usr/local/lib/bob-auto-xray, и только если их содержимое доказывает принадлежность Bob: wrapper побайтно совпадает с записанным Bob, библиотека — с деревом релиза v0.4.0 (SHA256) или со своим манифестом. Чужие или изменённые файлы не трогаются. Замена атомарная (rename), после неё проверяется запуск новой команды, при любой ошибке — откат. Provision, службы, state и конфигурация VPN не затрагиваются; установщик и обновление взаимно исключены его lock. Существующие установки автоматически не мигрируют. - Новые установки кладут в библиотеку CLI
VERSIONи манифест.bob-cli.json; правило «имяbobне перезаписывается» сохранено.
Проверки и ограничения
CI проверяет Python 3.10/3.12 unittest, real Nginx harness, pinned 3x-ui API/GeoData/TLS subscription harness, compileall,
Bash syntax, ShellCheck и две воспроизводимые release-сборки с SHA256.
Release workflow повторяет локальные проверки перед публикацией assets.
Фактические результаты и границы проверок: docs/TESTING.md.
Какие сценарии этой сборки подтверждены на VPS, а какие NOT TESTED, перечислено
в docs/TESTING.md; CI и локальные проверки реальный VPS E2E не заменяют.
Bob Doctor: на новых установках bob doctor [--deep] [--json]; на уже установленной
ноде без установки — bash <(curl …/v0.4.1/install.sh) doctor (тот же проверенный архив).
Меню bob на работающей ноде v0.4.0+: только CLI, без provision —
bash <(curl …/v0.4.1/install.sh) cli-upgrade --check, затем cli-upgrade.
Старые установки автоматически не мигрируют.
Установка от root на чистой VPS
bash <(curl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' https://github.com/DaMistic727/Bob-auto-xray/releases/download/v0.4.1/install.sh)Bootstrap закрепляет immutable URL и SHA256 payload; SHA256SUMS опубликован в assets.
README ·
Архитектура
SHA256 payload: c80e01d9aa76f5da858f5497078d258384ce2037fb318f6e38ef7a6cf1916607
SHA256 bootstrap: 4304bd8859b2466e07b0b3b9543649c271cdf89058d2e74b211a7396a5ea5b4f
Bob Auto Xray v0.4.0 · Preview
Bob Auto Xray v0.4.0 · Preview
- Bob Doctor (
bob doctor [--deep] [--json]): read-only диагностика установленной ноды без автоматического исправления, рестартов, изменяющего API 3x-ui и acceptance. Проверяет state, Xray runtime и SHA256 закреплённого ядра, службы и gate x-ui, listeners и UFW, маршруты nginx HTTPS/443, сертификат, routing, GeoData, WARP, BBR/FQ, IPv6, SWAP, постоянного клиентаadminи остатки временных файлов state. Недостаток данных —UNKNOWN, никогда неPASS; FQDN, секретные пути, UUID, ключи и хэши в отчёт не попадают.--deepограничен GET, trace и белым списком read-only команд. - Старые ноды не получают ложный
UNHEALTHY: схема определяется по маркерам state (panel_access,admin_client,subscription_access), политики, которых нода не получала, даютWARN. На уже установленной ноде Doctor запускается из проверенного архива:install.sh doctor. Установкаbobне может сорвать установку VPN, результат записывается в state (doctor_cli). - Исправлен возврат IPv6 после reboot. Причина доказана на VPS журналом networkd: установщик работает с umask 077, каталог drop-in
/etc/systemd/network/<netplan>.network.dсоздавался0700, и systemd-networkd (пользовательsystemd-network) не мог его прочитать (Permission denied), настраивал интерфейс по исходному netplan-файлу и записывалdisable_ipv6=0. Теперь каталог0755, acceptance отказывает при нечитаемом drop-in. После исправления и reboot IPv6 на интерфейсе выключен, адресов нет. - Уже установленные ноды (v0.3.4–v0.3.8) автоматически не мигрируют: Doctor показывает
WARNс точной командойchmod 755 /etc/systemd/network/<netplan>.network.d, после неё политика сохраняется при reboot. - Doctor разделяет маршрутизируемый IPv6-адрес (
FAIL) и только link-local приdisable_ipv6=0(WARNс числом адресов и именами интерфейсов, сами адреса не печатаются). Resume с этаповWARP/CERTIFICATEзаново применяет IPv6-политику до acceptance. - Preflight не начинает установку, пока cloud-init ещё настраивает свежую VPS, и просит дождаться
cloud-init status --waitвместо непонятногоsshd exited 255. - 3x-ui обновлена до официального v3.11.0 (
c621ba9): SHA256 архивов amd64/arm64, vendoredx-ui.shиx-ui.service.debianс тега, SHA256 штатных GeoData. Встроенный Xray совпадает с отдельно закреплённым официальным v26.10.21; проверенная замена ядра сохранена. - Nginx отвечает на
<webBasePath>sponsorsпустым JSON-списком и 404 на<webBasePath>sponsors/logo/: спонсорские блоки панели пусты, логотипы не загружаются. Бинарный файл 3x-ui не изменяется. - WARP: установленный
warp-cliтребует--accept-tosи для JSON status/settings; эти запросы не меняют регистрацию и настройки. - HTTPS/443, секретный webBasePath, TLS verification upstream, подписки,
vless by bob,admin, ads block, routing/WARP и модель resume сохранены. Установленные ноды автоматически не мигрируют. - VPS E2E финального кандидата на Ubuntu 26.04.1 amd64: E2E-V040.md.
Проверки и ограничения
CI проверяет Python 3.10/3.12 unittest, real Nginx harness, pinned 3x-ui API/GeoData/TLS subscription harness, compileall,
Bash syntax, ShellCheck и две воспроизводимые release-сборки с SHA256.
Release workflow повторяет локальные проверки перед публикацией assets.
Фактические результаты и границы проверок: docs/TESTING.md.
Какие сценарии этой сборки подтверждены на VPS, а какие NOT TESTED, перечислено
в docs/TESTING.md; CI и локальные проверки реальный VPS E2E не заменяют.
Bob Doctor: на новых установках bob doctor [--deep] [--json]; на уже установленной
ноде без установки — bash <(curl …/v0.4.0/install.sh) doctor (тот же проверенный архив).
Старые установки автоматически не мигрируют.
Установка от root на чистой VPS
bash <(curl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' https://github.com/DaMistic727/Bob-auto-xray/releases/download/v0.4.0/install.sh)Bootstrap закрепляет immutable URL и SHA256 payload; SHA256SUMS опубликован в assets.
README ·
Архитектура
SHA256 payload: 848bdd61b4b9a73660df4a5a37a415c2af1d9368030d6d7ea0acc020878edf72
SHA256 bootstrap: 22201e3b3af70cc82ea785386bf8f9ab99cf424e5d72c5cbfc0754b066ff57a6
Bob Auto Xray v0.3.8 · Preview
Bob Auto Xray v0.3.8 · Preview
- VPS-Server-Menu получает актуальную официальную main во время установки Bob, без статического commit/SHA256 pin или скрытого fallback. Остальные зависимости остаются pinned.
- Checkout /root/VPS-Server-Menu находится на main tracking origin/main. Bob вызывает оригинальный install.sh с --non-interactive --no-autostart --source-dir, без --pinned-commit. Штатные команды/symlinks и пункт 9 обновления сохраняются.
- Проверяются origin, branch/upstream, чистота и обычные файлы/каталоги, конфликтующие команды и CLI contract. Существующая main продвигается только fast-forward; dirty/unknown/diverged state, network/installer/CLI errors прекращают установку. Нет reset --hard, clean или замены чужого origin.
- Фактические origin/branch/full SHA и UTC resolution time сохраняются root-only в menu_revision. Один релиз Bob в разные дни намеренно может установить разные upstream revisions; совместимость будущего upstream не гарантируется. Runtime WARP health/JSON/exit/outbound и независимый warp=on acceptance сохранены.
- Без VPS/SSH/deploy/reboot. Старая detached pinned установка меню требует ручного решения: Bob не переключает её branch принудительно.
Проверки и ограничения
CI проверяет Python 3.10/3.12 unittest, real Nginx harness, pinned 3x-ui API/GeoData/TLS subscription harness, compileall,
Bash syntax, ShellCheck и две воспроизводимые release-сборки с SHA256.
Release workflow повторяет локальные проверки перед публикацией assets.
Фактические результаты и границы проверок: docs/TESTING.md.
Чистая установка и reboot финального v0.3.8 будут проверены вручную владельцем
после публикации. VPS в ходе подготовки этого релиза не использовались.
IPv6 persistence после reboot не подтверждена: явный запрет генерации link-local
и fail-closed проверки не являются доказательством устранения исторического P1.
Независимые внешний Vision, изоляция внутреннего порта, реальные мобильные
клиенты и продление сертификата этой сборки также NOT TESTED.
Bob Doctor (PR #11) не включён. Старые установки автоматически не мигрируют.
Установка от root на чистой VPS
bash <(curl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' https://github.com/DaMistic727/Bob-auto-xray/releases/download/v0.3.8/install.sh)Bootstrap закрепляет immutable URL и SHA256 payload; SHA256SUMS опубликован в assets.
README ·
Архитектура
SHA256 payload: edf272f5b39da02620c31d1b89effc35e056065a2c68d89ea241693191ca3b6f
SHA256 bootstrap: d8624ba798e719ba4d350ae1e288285d20718c812e9a075828503f51fb57d2f7
Bob Auto Xray v0.3.7 · Preview
Bob Auto Xray v0.3.7 · Preview
- Новые установки отдают Happ/INCY подписки на общем HTTPS/443: Xray REALITY → PROXY v1 → Nginx Unix socket → HTTPS 127.0.0.1:<sub_port>. Внутренний случайный порт и TLS сохранены; subURI больше не содержит нестандартного порта.
- UFW новых установок открывает только обнаруженные SSH TCP, 80 и 443; subscription и panel ports остаются loopback. Acceptance проверяет сохранённые настройки, фактические sockets, TLS backend и публичную подписку независимо.
- Отдельный subscription snippet сохраняет URI/query, User-Agent и upstream metadata; TLS/SNI/chain verification обязательны, секретные responses no-store, URI logs выключены. Assets HTML-страницы доступны только под subscription secret; неизвестные глобальные routes закрыты.
- State marker subscription_access=https-443 управляет публичными URL. Старый state без маркера сохраняет URL с отдельным портом; автоматической миграции v0.3.6 и других завершённых установок нет.
- Сохранены vless by bob, постоянный admin, GeoSite ads block, routing/WARP, pinned components, panel/decoy, IPv6/BBR/swap и модель installer resume. VPS E2E/reboot этой версии не выполнялись; исторические результаты не приписываются новой сборке.
Проверки и ограничения
CI проверяет Python 3.10/3.12 unittest, real Nginx harness, pinned 3x-ui API/GeoData/TLS subscription harness, compileall,
Bash syntax, ShellCheck и две воспроизводимые release-сборки с SHA256.
Release workflow повторяет локальные проверки перед публикацией assets.
Фактические результаты и границы проверок: docs/TESTING.md.
Чистая установка и reboot финального v0.3.7 будут проверены вручную владельцем
после публикации. VPS в ходе подготовки этого релиза не использовались.
IPv6 persistence после reboot не подтверждена: явный запрет генерации link-local
и fail-closed проверки не являются доказательством устранения исторического P1.
Независимые внешний Vision, изоляция внутреннего порта, реальные мобильные
клиенты и продление сертификата этой сборки также NOT TESTED.
Bob Doctor (PR #11) не включён. Старые установки автоматически не мигрируют.
Установка от root на чистой VPS
bash <(curl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' https://github.com/DaMistic727/Bob-auto-xray/releases/download/v0.3.7/install.sh)Bootstrap закрепляет immutable URL и SHA256 payload; SHA256SUMS опубликован в assets.
README ·
Архитектура
SHA256 payload: 79115e5e6c07f25f8e1f8c28e0595a79ae0ead880f241d58eaf5eb016d5a9c0b
SHA256 bootstrap: a54a5563c6ff9926c354b06e6a223dec44890e33e88ebdf30d15523a22c3581a
Bob Auto Xray v0.3.6 · Preview
Bob Auto Xray v0.3.6 · Preview
- Основной inbound новых установок называется точно
vless by bob; изменён только remark, параметры REALITY/Self-SNI, TCP/443, Vision и Firefox сохранены. - В существующее серверное правило
blockedдобавлена глобальнаяgeosite:category-ads-allиз основного Loyalsoldier GeoSite рядом с прежней RU-категорией. Блокировки по-прежнему предшествуют WARP; IPOnDemand, четыре источника GeoData, расписание, DIRECT/WARP и мобильные профили не изменены. Наличие категории проверено в закреплённом архиве и обязательно проверяется перед настройкой. Покрытие ограничено используемым GeoSite, полной блокировки всей рекламы не обещается. - Новая установка создаёт через
clients/addодного постоянного VPN-клиентаadmin: случайные UUID v4 и subId, Vision, enable=true, нулевые IP/HWID/traffic/expiry/reset лимиты. Это не учётная запись панели; её генерация не меняется. Идентичность сохраняется root-only до записи, неоднозначный ответ API проверяется чтением inbound и каталога; существующие записи не заменяются. До успешного завершения проверяются Xray runtime и подписки. - Acceptance и E2E учитывают постоянного
admin. Удаляется только временный клиент с совпавшими owner/UUID/subId; после очистки проверяются неизменность постоянных параметров и attachments. Автоматической миграции завершённых старых установок нет. - Проверки выполняются локально и в GitHub Actions, включая настоящий pinned 3x-ui API в отдельной временной БД на loopback. Новые VPS/SSH/install/reboot не выполнялись. Сообщённая владельцем работоспособность v0.3.5 не приписывается v0.3.6. IPv6 persistence остаётся отдельным непроверенным на новой VPS ограничением Preview.
Проверки и ограничения
CI проверяет Python 3.10/3.12 unittest, real Nginx harness, pinned 3x-ui API/GeoData harness, compileall,
Bash syntax, ShellCheck и две воспроизводимые release-сборки с SHA256.
Release workflow повторяет локальные проверки перед публикацией assets.
Фактические результаты и границы проверок: docs/TESTING.md.
Чистая установка и reboot финального v0.3.6 будут проверены вручную владельцем
после публикации. VPS в ходе подготовки этого релиза не использовались.
IPv6 persistence после reboot не подтверждена: явный запрет генерации link-local
и fail-closed проверки не являются доказательством устранения исторического P1.
Независимые внешний Vision, изоляция внутреннего порта, реальные мобильные
клиенты и продление сертификата этой сборки также NOT TESTED.
Bob Doctor (PR #11) не включён. Старые установки автоматически не мигрируют.
Установка от root на чистой VPS
bash <(curl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' https://github.com/DaMistic727/Bob-auto-xray/releases/download/v0.3.6/install.sh)Bootstrap закрепляет immutable URL и SHA256 payload; SHA256SUMS опубликован в assets.
README ·
Архитектура
SHA256 payload: 19084c0c58feb7bf9cbc82ac4c42574eea0c7e79dc30c6797ed2423a2d06a7b7
SHA256 bootstrap: e9b7d90ababf80fcfc484e807c677be10bbc0d7115604fbcb85b8f6688bc2a7c
Bob Auto Xray v0.3.5 · Preview
Bob Auto Xray v0.3.5 · Preview
-
Панель новых установок доступна на
https://<domain>/<48-hex-secret>/через существующий REALITY TCP/443 → PROXY v1 → Nginx Unix socket. HTTPS upstream 3x-ui привязан только к127.0.0.1; отдельный публичный admin port отсутствует. Заглушка, API, WebSocket, подписки и точный REALITY Target сохранены; старые установки автоматически не мигрируют. -
Перед первым стартом панели проверяются сохранённые TLS/listen IP, internal port, webBasePath и отсутствие стандартной пары admin/admin, затем загружается сертификат/ключ. Несовпадение после exit-zero ошибки CLI оставляет service gate закрытым. Настоящий вход с сгенерированными credentials проверяется acceptance.
-
IPv6: в управляемый networkd drop-in добавлен
IPv6LinkLocalAddressGenerationMode=none, конфликтующий чужой параметр отклоняется. Проверка адресов теперь включает link-local; регрессии моделируют повторную инициализацию интерфейса, отказ проверки, повторное применение и rollback. Это обоснованное усиление политики, не подтверждение устранения исторического P1 после reboot: точная причина того сбоя остаётся не установлена без наблюдения на VPS. -
Для воспроизводимости между версиями Python явно закреплён gzip compresslevel=9 (Python 3.15 изменил default).
-
Генератор notes использует раздел текущей версии CHANGELOG вместо истории v0.3.4. Release workflow выполняет Nginx harness, compileall и проверку воспроизводимости, как CI.
-
Закреплённые версии Xray, 3x-ui, WARP menu и routing не изменены. WARP install/adopt/skip, routing presets, GeoData, BBR/FQ, resume и root-only данные сохранены. Bob Doctor из PR #11 исключён.
-
Чистую установку и reboot финального v0.3.5 проверит владелец вручную после публикации; новые VPS E2E не проводились.
-
На этапе IPv6 и BBR/FQ добавлена необязательная установка swap-файла
/swapfileна 2 ГиБ. Он создаётся только при запасе не менее 2 ГиБ свободного места после выделения файла, включается сразу и закрепляется в/etc/fstab. Уже существующий swap-файл не удаляется и не перезаписывается; при нехватке места этап пропускается. Доступны read-only preflight, проверка результата и откат при ошибке.
Проверки и ограничения
CI проверяет Python 3.10/3.12 unittest, real Nginx harness, compileall,
Bash syntax, ShellCheck и две воспроизводимые release-сборки с SHA256.
Release workflow повторяет локальные проверки перед публикацией assets.
Фактические результаты и границы проверок: docs/TESTING.md.
Чистая установка и reboot финального v0.3.5 будут проверены вручную владельцем
после публикации. VPS в ходе подготовки этого релиза не использовались.
IPv6 persistence после reboot не подтверждена: явный запрет генерации link-local
и fail-closed проверки не являются доказательством устранения исторического P1.
Независимые внешний Vision, изоляция внутреннего порта, реальные мобильные
клиенты и продление сертификата этой сборки также NOT TESTED.
Bob Doctor (PR #11) не включён. Старые установки автоматически не мигрируют.
Установка от root на чистой VPS
bash <(curl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' https://github.com/DaMistic727/Bob-auto-xray/releases/download/v0.3.5/install.sh)Bootstrap закрепляет immutable URL и SHA256 payload; SHA256SUMS опубликован в assets.
README ·
Архитектура
SHA256 payload: ddac70da5fc69526254d2ebaa6dc529b175c4b5efcf2c58120056281074a0e7d
SHA256 bootstrap: 0ff76a0e45718c8c4ce86ae55027cf51b2a36aa8b3fdd1e3d0efc1c2a8ed6f71