- kit check и kit fix: проверка служб, сертификата, подписки, сайта маскировки, прав на файлы; безопасная починка
- kit-sub: пропускает заголовки Happ (Routing и др.) до клиентов
- ядро Xray: запасная загрузка через зеркало только с проверкой SHA256, tools/release.sh сверяет суммы с официальными
- установка со своим доменом: при отказе Let's Encrypt предлагается самоподписанный сертификат
- README: инструкция XKeen, команды kit, новый баннер; правки инструкций и changelog
Co-authored-by: xlok1e <124461726+xlok1e@users.noreply.github.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- kit update ставит только релизы, у которых SHA256SUMS подписан ключом автора
(ssh-keygen -Y verify), версия внутри подписи совпадает, файлы сошлись с хешами;
откат на старую версию запрещён; после обновления проверяется подписка, иначе возврат
- автообновление: systemd-таймер раз в сутки ночью со случайной задержкой,
kit update --manual / --auto, журнал /var/log/kit-update.log
- hy2 update тоже проверяет подпись
- tools/release.sh: проверка версий и хеша установщика 3X-UI, SHA256SUMS и подпись
- kit backup и 3x-ui.sh --restore: архив 600, строгая проверка архива, конфиги nginx
и kit-sub собираются заново, смена IP в подключениях
- сайт-заглушка: случайный из шести шаблонов внутри скрипта
- zashboard закреплён на v3.29.1, короткие тире и 192.168.x.x в текстах и картинках
- CI: ключ подписи одинаковый в kit и hy2, проверка подписи релиза
- CHANGELOG, README, инструкция, SECURITY.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7GrBSRPVXhrz3RAprWDnt
kit update скачивает kit и kit-sub из тега релиза, переводит kit-sub на работу
без root, убирает cron меню x-ui и исправляет ссылку подписки в панели.
При сбое новой kit-sub возвращает прежнюю.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7GrBSRPVXhrz3RAprWDnt
- hysteria2.sh: строгая проверка --email/--host/--sni, install.env через printf %q,
SHA256 бинарника в самом скрипте, hy2 update из тега релиза
- 3x-ui.sh: SHA256 установщика 3X-UI, проверка --sni/--host, kit и kit-sub из тега,
kit-sub без root (DynamicUser + LoadCredential), без cron для меню x-ui
- VERSION, CHANGELOG, SECURITY.md, CI (ShellCheck, Python, тесты генераторов),
установка с проверкой в README
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7GrBSRPVXhrz3RAprWDnt
Адрес панели без слеша nginx перенаправлял на https://IP:10446/… (внутренний порт) —
панель не открывалась. absolute_redirect off и адрес панели сразу со слешем.
- nginx stream на 443: по SNI — REALITY, XHTTP REALITY (свой сайт маскировки), MTProto
(свой FakeTLS-домен); остальное — HTTPS-сервер nginx
- HTTPS-сервер: VLESS WS, VMess WS, Trojan gRPC, подписка (kit-sub) и панель по секретным
путям, сайт-заглушка на всё прочее
- Подключения слушают только localhost, ссылки ведут на 443 через External Proxy 3X-UI;
настоящие IP клиентов доходят через proxy protocol (лимит устройств работает)
- Снаружи открыты только 443/tcp, 80, SSH, Shadowsocks и UDP-порты
- Режим для новых установок с доверенным сертификатом; --multi-port — прежняя схема;
старые многопортовые установки не переделываются автоматически
Проверено: Mihomo по подписке 10/10 у двух пользователей, официальный AmneziaWG,
матрица Xray/Mihomo/sing-box, панель и заглушка, пробы REALITY и MTProto без ключа.
- scripts/kit.sh (команда kit на сервере): user add/list/link/limit/off/on/del;
общие трафик, лимит, срок и число устройств на все протоколы
- Установщик создаёт подключения без клиентов и первого пользователя сразу во все,
имя подписки случайное (чужую подписку не угадать по имени)
- AmneziaWG: у записи 3X-UI одна пара ключей WireGuard, поэтому ко второму AmneziaWG
подключается запись-«двойник» с подпиской «-awg»; kit работает с обеими как с одной
- kit-sub фильтрует по содержимому: Clash-приложениям без AmneziaWG он вырезается,
приложениям со ссылками не отдаются vpn:// и tg://
Проверено: три пользователя — Mihomo по подписке 10/10 у каждого, официальный клиент
AmneziaWG — оба варианта у каждого; выключение, лимиты и удаление действуют на все записи.
Karing запрашивает формат Clash, но работает на sing-box и AmneziaWG не умеет —
на телефоне AmneziaWG вернулся с ошибкой. Теперь Karing, Hiddify, NekoBox, Happ, Stash
и похожие получают Clash-конфиг без AmneziaWG. В журнал kit-sub пишется User-Agent
и выбранный вариант (без IP) — чтобы видеть, чем представляются приложения.
- scripts/kit-sub.py — посредник на публичном порту подписки (HTTPS), 3X-UI только на 127.0.0.1
- Clash/Mihomo (Clash Verge, FlClash…) получают конфиг 3X-UI плюс AmneziaWG
- Happ, v2rayN, Karing, Hiddify — ссылки без AmneziaWG, которого они не умеют
- expire=0 убирается из Subscription-Userinfo — больше нет «01.01.1970»
- Сертификат перечитывается после продления Let's Encrypt, TLS в потоках, тайм-ауты
- Установщик ставит kit-sub сам (systemd, ограничения безопасности); адрес подписки не меняется
Проверено: Mihomo по итоговому Clash-конфигу — все 10 прокси, включая оба AmneziaWG;
обновление поверх существующей установки на сервере в России.
Проверено на телефоне (Karing, мобильный МТС): приложения на sing-box и Xray видят
AmneziaWG как обычный WireGuard и не подключаются. Теперь общая подписка содержит
только протоколы, которые понимают все приложения; AmneziaWG — в подписке «-awg»
(Clash Verge, FlClash), ссылки vpn:// для AmneziaVPN и tg:// для Telegram — в /root/3x-ui.txt.
- Повторный запуск: панель по HTTPS определяется сама
- Клиент с занятым именем (остался от удалённого подключения) получает уникальное имя
Установка командой из инструкции на чистый Ubuntu 24.04 в России:
- Let's Encrypt на IP выпускается, панель/подписка/TLS-протоколы на нём
- через интернет работают REALITY, Hysteria2, XHTTP, VLESS/VMess WS, Trojan gRPC,
Shadowsocks, TUIC и оба AmneziaWG (Mihomo, Xray, sing-box, официальный AmneziaWG)
- обычный WireGuard режет DPI (ответ сервера не доходит) — убран из набора по умолчанию
- хостер блокирует Telegram — установщик проверяет доступ и пропускает MTProto