Skip to content

Releases: itsnotkubrick/3X-UI_KIT

v1.2.1: fix & updates

Choose a tag to compare

@itsnotkubrick itsnotkubrick released this 14 Oct 11:17

Updates

  • Полное удаление: пункт «Удалить KIT с сервера» в меню kit останавливает панель и подписку, убирает таймеры, настройки nginx от KIT, сертификаты, логи, правила fail2ban от 3X-UI и команду x-ui, закрывает порты в ufw и в конце удаляет сам kit, чтобы не осталось никаких следов.
  • Все ссылки на подключения теперь одним экраном (подписка, REALITY, Hysteria2, AmneziaWG, Telegram и остальные): «kit → Пользователи → Показать ссылки».
  • Теперь установщик спрашивает, какие протоколы ставить: «Стандарт» (основной набор) или «На выбор» по номерам, хоть один. Слабому серверу столько протоколов ни к чему: меньше процессов и портов, меньше памяти.
  • Подсказки KIT больше не заваливают командами: везде, где раньше предлагалась команда, теперь написан путь по меню («kit → Пользователи → Показать ссылки»), а недостающие пункты появились в самом меню (раздельная маршрутизация, DNS в подписках, ответ Hysteria2 чужим запросам, прежние имена сайта, поток vision, «Удалить KIT с сервера»).
  • Установщик теперь сообщает, почему ядро Xray не самое новое: на версиях после 26.6 клиенты на sing-box (Karing, Hiddify) перестают подключаться по REALITY, XHTTP и VMess (проверено 13 октября на 26.10.10). Перейдём на новое ядро, когда это исправят.
  • Панель и ядро обновляйте только через kit («Обновить kit и подписку»). Пункт обновления в меню x-ui ставит самые новые панель и ядро Xray, и приложения на sing-box перестают подключаться. Если уже обновили: «kit → Проверка сервера → Исправить безопасное» вернёт проверенное ядро, а «kit → Протоколы, порты и маскировка → Поток vision у REALITY» вернёт vision, который такое обновление сбрасывает.
  • Глубокая проверка, когда всё зелёное, честно признаётся, что смотрит на сервер изнутри, и подсказывает, как за минуту понять, кто виноват – сеть или клиент: открыть адрес сервера в браузере на том самом телефоне.
  • Восстановление из копии стало придирчивее: каталог вместо файла настроек или нечитаемый файл отклоняются, а в 3x-ui.txt не пускаются невидимые символы (например, разворот текста U+202E), которые могли бы подделать то, что вы видите в терминале.

FIX

  • Установка больше не падает без причины. «Ошибка в строке 18» случалась из-за чужого сломанного репозитория пакетов (например, speedtest-cli от Ookla без файла Release для вашей Ubuntu): теперь установщик покажет, на что ругается apt, и продолжит. Сертификат Let's Encrypt не выдавался там, где файрвол ufw уже включён и закрывал порт 80: установщик сам открывает порт на время выпуска и закрывает, если он больше не нужен. А проверка A-записи домена сверяется с публичным DNS, а не с кэшем самого сервера, который помнил «записи нет» ещё до того, как вы её добавили.
  • Режим «всё на 443» падал на nginx, если имя сайта маскировки длинное: таблица имён была тесновата. Таблицу расширили, а при смене сайта настройка добавляется в уже стоящий конфиг сама.
  • Повторный запуск после неудачной установки больше не оставляет сервер на полпути: подключения и nginx собираются заново с одним набором имён, вопросы про протоколы и сайт маскировки задаются снова (раньше повтор молча брал автоподбор), а установщик сначала говорит, что нашёл следы прошлого запуска. Если прошлый запуск был с вашим сертификатом, установщик берёт его сам; а если доверенного сертификата нет вовсе, не рапортует «Готово» без подписки, а прямо говорит, что сделать. «Проверка сервера» теперь замечает, что карта nginx разошлась с сайтами подключений, и чинит её, гоняет nginx -t и больше не пропускает сломанный конфиг, на котором nginx держится до первой перезагрузки.
  • MTProto: ссылка из панели вела на внутренний порт 10445, про который снаружи никто не знает, – теперь на 443. А после смены сайта маскировки прежние пользователи Telegram больше не остаются за бортом: секреты переезжают на новый сайт вместе с подключением (ссылки придётся разослать заново, KIT напомнит). Проверка сервера присматривает за mtg, а глубокая здоровается с ним, как настоящий Telegram.
  • Hiddify 4.x снова добавляет подписку: он в своей строке называет себя и Clash, поэтому получал YAML, обрезал в нём пробелы и писал «Unable to determine config format». Теперь Hiddify получает обычный список ссылок, а приложения на Clash – по-прежнему свой YAML.
  • Смена сайта маскировки больше не обрывает тех, кто ещё не обновил подписку: прежнее имя сайта у REALITY и XHTTP неделю работает рядом с новым, а потом KIT убирает его сам (сразу – в меню «Протоколы, порты и маскировка»). Имя, которое уже занято (например, вашим доменом), KIT теперь не берёт, а говорит, почему; если nginx всё же откажется, покажет, что именно ему не понравилось.
  • Обновление больше не винит новую подписку в том, что сломалось до неё: если подписка не отвечала ещё до обновления (например, у встроенной подписки панели включён TLS), установщик так и скажет, покажет код ответа, а обновление доведёт до конца.

Сменился ключ подписи релизов, поэтому сервер на версии 1.2 и ниже сам не обновится. Один раз выполните на сервере эту команду, и дальше автообновление снова заработает:

curl -fsSL https://raw.githubusercontent.com/itsnotkubrick/3X-UI_KIT/v1.2.1/scripts/kit.sh -o /usr/local/bin/kit && chmod 755 /usr/local/bin/kit && kit update

Новая установка ничего не требует.

v1.2

Choose a tag to compare

@itsnotkubrick itsnotkubrick released this 06 Oct 16:40

v1.2: панель 3X-UI v3.9.0, меню kit и маскировка по соседям

  • Панель 3X-UI обновлена до v3.9.0, а ядро Xray я оставил проверенным: новое не всегда лучше, это показал тест. kit update --panel обновит панель без смены ядра и настроек, а при сбое откатит всё назад.
  • kit без аргументов открывает меню, как у x-ui: нажали цифру – готово. Всё про сеть собрано в kit net: порты, протоколы, сайт маскировки, отпечаток. kit check --deep подключается к серверу настоящим клиентом, а --fix лечит безопасное.
  • Раздельная маршрутизация: kit net split on – и через VPN идёт только список популярных иностранных сервисов (нейросети, видео, соцсети, мессенджеры, GitHub, Google и другие), а всё остальное напрямую. Правила приезжают вместе с подпиской: Mihomo-приложения берут их из подписки, Happ – из заголовка, приложения на JSON-подписке Xray – из конфига. Список лежит в /etc/kit-sub/rules.yaml, проверка – kit net split check, после правки – kit net split apply. У v2rayN, Karing и Hiddify подписка прежняя. Спасибо VasilevVitalii за идею и первый набросок.
  • Маскировка: у каждого сервера теперь своя заглушка, она собирается при установке из двадцати тем и пяти вёрсток со случайным названием и цветами (пекарня, переводчик или мастерская по велосипедам – как повезёт). Со своим доменом на сервере стоит ваш сайт, без него – сайт среди соседей по подсети. REALITY теперь с xtls-rprx-vision, а Hysteria2 отвечает на чужой запрос той же страницей, байт в байт.
  • Подписка и переезд: ссылка подписки в браузере открывается страницей с трафиком, сроком и кнопками «открыть в приложении», в Clash есть «Авто», а общий лимит считается по всем подключениям пользователя. Со своим доменом панель и подписку можно открывать по домену: --panel-on domain при установке или kit net panel domain потом. Вернулся --restore: чистый сервер поднимается из kit backup, как из резервной копии настроек телефона. Если Let's Encrypt не выдал сертификат на новый IP, я ставлю самоподписанный и честно об этом говорю. Спасибо xlok1e за исправление времени на Debian 13.
  • Исправил то, что спотыкалось: kit backup теперь работает из любой папки, kit net masq on не роняет Hysteria2, JSON-подписка снова открывается в приложениях на Xray, а kit check смотрит, запущено ли ядро и слушает ли каждое подключение свой порт.
  • Отдельный установщик Hysteria2 ушёл на пенсию: он и так входит в основную установку. Кто ставил его отдельно – сервер работает как работал, а hy2 update расскажет, что дальше. Нужен один Hysteria2 без панели – официальный установщик: bash <(curl -fsSL https://get.hy2.sh/).

Сервер обновится сам этой ночью, нетерпеливым – kit update.

v1.1.2: fix

Choose a tag to compare

@itsnotkubrick itsnotkubrick released this 03 Oct 18:43
  • Исправил «Ошибка в строке 452»: установка спотыкалась о собственную проверку, как человек о порог в тёмной комнате. Теперь идёт ровно. Спасибо ram0973, который сообщил первым, и xlok1e за точную правку.
  • ufw больше не запирает вас снаружи на нестандартном порту SSH (сервер, закрытый от хозяина, – так себе охрана). Имя с точкой не цепляет чужих, а kit fix и откат обновления доводят дело до конца.
  • Параметры прощают --port=8443 и VPN.Example.COM: я перестал придираться к регистру.

Сервер обновится сам этой ночью, нетерпеливым – kit update.

v1.1.1: Баннер: ровная табличка

Choose a tag to compare

@itsnotkubrick itsnotkubrick released this 03 Oct 14:21

Что нового

kit check и kit fix. Раньше, если что-то ломалось, вы гадали по логам. Теперь я научил kit самому осматривать сервер: службы, версии, сертификат, открытые порты, подписку, заглушку, часы. kit check только смотрит и печатает ✅/❌. kit fix чинит найденное и сначала берётся за причину, а уже потом за следствия. Например, x-ui cert включал TLS у встроенной подписки и ломал kit-sub. Теперь kit check это ловит, а kit fix откатывает.

Подписка для Happ

kit-sub пересылает клиентам заголовки Happ. Значения с переводами строк отбрасываются, поэтому через заголовки ничего не подсунуть.

Скачивание ядра Xray

Если GitHub недоступен, запасной путь идёт через зеркало, но архив принимается только при совпадении зашитой SHA256. tools/release.sh сверяет эти суммы с официальными перед каждым выпуском.

Установка стала устойчивее

  • Установщик ждёт, пока unattended-upgrades отпустит dpkg, а не падает на замке.
  • Если Let's Encrypt отказал в сертификате на IP, ставится самоподписанный запасной с отпечатком в ссылках. Скрипт больше не говорит «Готово» при неработающей панели.
  • Ключ запасного сертификата с самого начала пишется с правами 600.

Роутеры

Генератор конфигов теперь один: Keenetic и OpenWrt, ядра Xray и Mihomo.

Спасибо xlok1e за помощь с этим обновлением.

Обновление

kit update

Релизы подписаны, kit update ставит только подписанное.

v1.1

Choose a tag to compare

@itsnotkubrick itsnotkubrick released this 02 Oct 14:22

3X-UI KIT v1.1

Большое обновление с акцентом на автономность, безопасность и удобство настройки роутеров.


🚀 Что нового

  • Обновления приходят сами. Раз в сутки по ночам сервер проверяет подпись автора и аккуратно обновляет KIT. Все пользователи, настройки и ссылки остаются прежними — эпоха «Мам, удали старый VPN, вот новый» наконец-то закончилась.
    • Если подпись не сошлась или подписка перестала отвечать — происходит мгновенный откат.
    • Не любите автоматические сюрпризы? Переключитесь на ручной режим: kit update --manual.
  • Резервная копия одной командой. Команда kit backup собирает подключения, ключи и пользователей в единый архив.
    • _Восстановление из бэкапа появится в релизе 1.2: выпускаю только то, что успел проверить на настоящем боевом сервере.
  • Маскировка на выбор. Инсталлятор теперь предлагает два пути:
    • Стандартный чужой сайт (работает сразу «из коробки»).
    • Собственный домен (надёжнее: настоящая страница и сертификат Let's Encrypt).
    • Для тихой установки без диалогов: --domain vpn.example.com. Теперь «под кого косим», решаете вы, а не скрипт за вас.
  • Заглушка с характером. При случайном заходе по IP сервер покажет сайт кофейни, портфолио фотографа или блог про Linux. Тысячи серверов 3X-UI KIT больше не выглядят как близнецы.
  • Один генератор для роутера вместо двух. Выбираете Keenetic или OpenWrt, ядро Xray или Mihomo, вставляете ссылки — и получаете готовый конфиг вместе с командой, которая сама положит его на роутер. Меньше вкладок, меньше «а я точно там нажал?». Старые адреса генераторов продолжают работать.
  • OpenWrt через Nikki (бета). Генератор собирает профиль Mihomo и команду, которая сразу активирует его и перезапустит Nikki. Xray для OpenWrt не предлагаем намеренно: Nikki работает только на Mihomo, и мы просто не даём нажать то, что гарантированно не заработает.

🛡️ Безопасность и исправления

  • Проверка установщика по SHA-256. Если установщик 3X-UI кто-то попытается подменить, скрипт посмотрит на него как на незнакомца в чате с «выгодным предложением» и откажется запускать. Сами файлы теперь забираются строго из тега версии, а не из ветки main.
  • Честная сверка Hysteria. Контрольная сумма теперь жестко зашита в скрипт, а не проверяется по справке, которую бинарник сам же и принёс. Проверять человека по его собственному рекомендательному письму - так себе затея.
  • Защита от инъекций в Hysteria2. Почтовый адрес больше не может случайно выполниться как shell-команда. Особо изобретательный адрес вроде me@gmail.com;rm -rf теперь получит вежливый и бескомпромиссный отказ.
  • Отказ от root для подписок. Сервис kit-sub переведён на непривилегированного пользователя. Даже если его гипотетически взломают, ключей от сервера у процесса нет - пусть попробует открыть хоть одну дверь.

🔄 Как обновиться с v1.0

Обновиться вручную нужно только один раз, дальше сервер будет делать всё сам:

curl -fsSL [https://raw.githubusercontent.com/itsnotkubrick/3X-UI_KIT/v1.1/scripts/kit.sh](https://raw.githubusercontent.com/itsnotkubrick/3X-UI_KIT/v1.1/scripts/kit.sh) -o /usr/local/bin/kit && chmod 755 /usr/local/bin/kit && kit update