- Python 93.6%
- Shell 6.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .forgejo/workflows | ||
| docs | ||
| patches | ||
| scripts | ||
| systemd | ||
| tests | ||
| LICENSE | ||
| README.md | ||
| upstream.env | ||
VPnBot Xray patches
Этот репозиторий хранит только наши изменения для Xray-core. Полной копии
чужого проекта здесь нет: scripts/prepare-source.sh получает точный тег из
официального XTLS/Xray-core, проверяет
его commit и последовательно накладывает три файла из patches/.
Патчи добавляют capability-маркер vpnbot-active-revoke-v3. Он означает, что
после удаления пользователя через Xray API закрываются уже установленные
VLESS, Trojan, VMess и Shadowsocks-сессии этого пользователя. Обычный
официальный Xray запрещает только новые подключения; поэтому до принятия этого
механизма upstream-проектом VPnBot не может безопасно устанавливать чистый
официальный бинарник на платные узлы.
Граница источников
- чужой исходный код загружается только из официального GitHub XTLS;
- Forgejo хранит наши патчи, проверки, сборочные сценарии и готовые релизы;
- тег и commit upstream закреплены в
upstream.envдля ручной сборки, а автоматический выпуск создаёт отдельный build-env с теми же строгими проверками; - SHA-256 каждого патча закреплён в
patches/series; - Actions заново применяет патчи к официальному исходнику, запускает профильные тесты и собирает три Linux-архива, которые используются VPnBot.
Автоматические dev-релизы
Workflow Follow official Xray dev releases каждые шесть часов проверяет
официальные GitHub Releases XTLS/Xray-core. Официальный prerelease/dev-тег
для него является нормальным входом, но не становится стабильным релизом
VPnBot сразу.
Цепочка разделена на два состояния:
- Actions разрешает тег в точный официальный commit, применяет патчи, запускает
unit- и real-process-тесты, собирает архивы и публикует Forgejo prerelease с
суффиксом
-candidate.1. - Root-only таймер на production-хосте устанавливает точный кандидат на выделенный canary-узел, проверяет живую конфигурацию и запускает изолированный VLESS-сценарий с двумя непрерывными потоками. После удаления пользователя A поток A должен закрыться не позднее 10 секунд, а поток B — продолжить работу.
- Только после этого создаётся обычный
proven-релиз. Его файлы копируются из candidate без пересборки и поэтому имеют ровно те же SHA-256.
Стабильные Xray-updater-таймеры на узлах используют канал stable: они
игнорируют prerelease=true и видят только proven-релизы. При конфликте патча,
падении теста, недоступном canary или неуспешном отзыве новый stable-релиз не
создаётся.
Каждый candidate содержит vpnbot-xray-release-manifest.json с официальным
тегом/commit, SHA-256 патчей и архивов. Proven дополнительно содержит
vpnbot-xray-pilot-proof.json, то есть машинно проверяемый отчёт живого пилота.
Полная модель состояний, гонок и rollback описана в
docs/2026-08-07-automatic-dev-release-plan.md.
Production-компонент устанавливается от root:
scripts/install_promoter.sh
Перед включением таймера нужен runtime-файл
/etc/vpnbot-xray-release-promoter.env по примеру из systemd/ и root-only
Forgejo-токен с областью write:repository. Токен, SSH-ключ и состояние пилота
не хранятся в Git.
Локальная проверка
scripts/test-patches.sh
scripts/build-release.sh ./release-assets
Для подготовки исходного дерева без сборки:
scripts/prepare-source.sh ./xray-with-vpnbot-patches
Каталоги назначения должны отсутствовать или быть пустыми.
Исходный Xray-core и изменённые файлы распространяются по Mozilla Public
License 2.0. Полный текст лицензии находится в LICENSE.