Commit Graph
57 Commits
Author SHA1 Message Date
maxdmitrov 7425c672b8 Правки по независимому аудиту: --restore (сертификат домена, xver при сбое, LINK_HOST), REALITY-2 при панели по домену, резервная копия базы через SQLite, ответы kit-sub как у nginx, меньше параллельность подбора сайта, перемешивание запасных сайтов, нейтральные тексты 2026-10-05 16:51:26 +03:00
maxdmitrov 00319a6655 Панель и подписка по домену или по IP: kit net panel, --panel-on при установке, выбор в диалоге, возврат при --restore 2026-10-05 16:38:41 +03:00
maxdmitrov f22e043902 Тексты: нейтральные формулировки 2026-10-05 16:28:55 +03:00
maxdmitrov 7161ef6fe8 systemd старше 247: установщик останавливается с понятным сообщением (kit-sub без root требует LoadCredential), kit update не трогает юнит 2026-10-05 16:01:52 +03:00
maxdmitrov 21c3ac18c2 DNS: безопасный dns в Clash-подписке (kit-sub), DoH в Xray JSON (kit net dns), AmneziaWG вне автовыбора; проверено клиентами Mihomo и Xray 2026-10-05 16:00:59 +03:00
maxdmitrov eb152b201f Hysteria 2.13.0: закреплена проверенная версия (суммы сверены, чистая установка и подключение клиента проверены) 2026-10-05 11:18:46 +03:00
maxdmitrov a6b70c154a shellcheck: SC2155 в kit sni rotate 2026-10-04 20:46:31 +03:00
maxdmitrov 85f3535a1c Hysteria2: ответ страницей сайта на чужой HTTP/3-запрос (masquerade, kit net masq); kit check --deep проверяет и Hysteria2, с повтором при перезапуске ядра 2026-10-04 20:44:45 +03:00
maxdmitrov 844ac083b3 Установщик: соседи для XHTTP и MTProto, повтор итоговой проверки, имена с сомнительными словами не берём; kit net site предупреждает о запасном сайте 2026-10-04 20:41:24 +03:00
maxdmitrov 4c795ea6e0 kit check: предупреждения о сайте-бренде на чужом IP и о запасных портах с пустым ответом 2026-10-04 20:36:12 +03:00
maxdmitrov f7ac1ddf49 Установщик: шаги [1/6]–[6/6], выбор маскировки (домен, сосед по подсети, свой сайт), блок ссылок по группам, итог с блоком «Внимание», адрес в ссылках LINK_HOST (домен в ссылках и MTProto), REALITY-2 не ставится по умолчанию, новая заглушка вместо «Welcome to nginx» 2026-10-04 20:28:24 +03:00
maxdmitrov 346159210b Подбор сайта по соседям: блок /23, проверка ответа на «/», без Cloudflare и брендов; подтверждение перед сменой 2026-10-04 20:22:54 +03:00
maxdmitrov 0a9cce18b6 kit 1.2: меню как у x-ui (kit без аргументов), kit net (протоколы, порты, сайт, отпечаток, вкл/выкл), блок ссылок по группам, kit check --fix, kit update --panel; версия 1.2 2026-10-04 20:20:20 +03:00
maxdmitrov 4246031ff9 Второй REALITY на высоком порту: ставится установщиком, kit reality add для существующих серверов; kit check --deep подписывает XHTTP и порт 2026-10-04 19:57:17 +03:00
maxdmitrov 4b336d7395 --restore: чистка WAL-файлов перед подменой базы (иначе база «битая»), включение таймера общего лимита 2026-10-04 19:39:02 +03:00
maxdmitrov 31db2d30a4 --restore: восстановление из kit backup возвращено (проверка архива, смена IP), будет проверено на чистом сервере 2026-10-04 19:28:32 +03:00
maxdmitrov 2bcfb95b05 kit port, kit port set: смена порта подключения с ufw и проверкой занятости по tcp и udp 2026-10-04 19:27:00 +03:00
maxdmitrov c9fc0c25be kit check --deep: порты всех подключений и подключение настоящим клиентом Xray через REALITY и XHTTP 2026-10-04 19:25:24 +03:00
maxdmitrov a19f60c8b0 kit sni rotate --nearby: без динамических доменов, только сайты с проверенным сертификатом; подсказка проверить сайты 2026-10-04 19:23:17 +03:00
maxdmitrov d6109a9b3a kit-sub: в Clash-подписке группа «Авто» (url-test) по умолчанию, ручной выбор протокола остаётся 2026-10-04 19:04:00 +03:00
maxdmitrov 88feba6190 Маскировка: свой домен предлагается первым, предупреждение о чужом сайте; три заглушки под облачный сервис; kit sni и kit sni rotate (в том числе --nearby) 2026-10-04 19:03:01 +03:00
maxdmitrov 5232e431de REALITY: у новых пользователей включён xtls-rprx-vision; kit user vision для существующих; kit check сообщает, у кого он выключен 2026-10-04 02:03:56 +03:00
maxdmitrov d751093bbd kit panel update: проверенная версия панели без смены ядра и настроек, откат при сбое; kit fix возвращает проверенное ядро; предупреждения о версии панели; tools/release.sh сверяет суммы 2026-10-04 01:42:55 +03:00
maxdmitrov ec25f0e0e8 3X-UI v3.9.0: закреплён установщик; установка ядра не падает на ответе панели с ошибкой GitHub API 2026-10-04 00:59:03 +03:00
maxdmitrov ca74a1dee3 1.2: kit user link --amnezia и --telegram; kit fix: ставит systemd-timesyncd на Debian 13 без NTP-клиента; kit check проверяет содержимое подписки 2026-10-03 23:23:59 +03:00
maxdmitrov 0f52237286 kit: общий лимит трафика (сумма по записям пользователя), kit user enforce, таймер раз в 5 минут, проверка в kit check и kit fix 2026-10-03 23:20:04 +03:00
maxdmitrov 0e7372efb7 kit user link: в режиме «панель через SSH-туннель» показываются отдельные ссылки на протоколы, --all работает с https-подпиской 2026-10-03 22:35:51 +03:00
maxdmitrov 3d3f3e2d9d 1.1.2: исправление установки с сертификатом Let's Encrypt на IP, ufw и порты SSH, параметры, kit-sub, kit user 2026-10-03 21:36:22 +03:00
099117c2a7 1.1.1: kit check и kit fix, заголовки Happ, безопасная загрузка ядра, инструкция XKeen
- 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>
2026-10-03 16:47:12 +03:00
maxdmitrovandClaude Sonnet 5.5 98217c56ae Документация сверена с кодом: вопрос про маскировку, порты, режим без сертификата, hy2 restart, справка kit backup
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 13:46:37 +03:00
maxdmitrovandClaude Sonnet 5.5 942c2bf9a7 1.1: --restore отложен до 1.2; без сертификата Let's Encrypt на IP установка не врёт про «Готово»
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 13:16:58 +03:00
maxdmitrovandClaude Sonnet 5.5 4a631ce701 Установка ждёт, пока система закончит автообновления (до 15 минут), и сообщает об этом
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 13:02:52 +03:00
maxdmitrovandClaude Sonnet 5.5 48add0cee2 apt-get ждёт замок dpkg до 5 минут: на свежем VPS автообновления системы не валят установку
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 01:10:27 +03:00
maxdmitrovandClaude Sonnet 5.5 66fcdeee91 Аудит: домен из базы при восстановлении, сервер не застревает без сертификата, строже права ключа, защита от зацикливания вопроса
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 00:40:14 +03:00
maxdmitrovandClaude Sonnet 5.5 7bec113e3e nginx: имена сайтов и пути из базы панели проверяются перед записью в конфиг
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 00:31:54 +03:00
maxdmitrovandClaude Sonnet 5.5 778ff5802a Маскировка REALITY: вопрос про стандартный сайт или свой домен (self-steal), --domain
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-01 00:30:17 +03:00
Claude 28f8a14854 1.1: открытый ключ подписи релизов
Отпечаток SHA256:VDuGgJ8dOeCNXB4nBZf3+kRlWthw3+vh8rfMxzMSRIM. kit update и hy2 update
ставят только релизы, подписанные этим ключом.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7GrBSRPVXhrz3RAprWDnt
2026-09-30 19:39:31 +00:00
Claude 0a19858efa 1.1: подписанное автообновление, kit backup и --restore, случайная заглушка
- 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
2026-09-30 19:15:19 +00:00
itsnotkubrickandClaude Opus 5.5 7167c8158d 1.1: kit update и kit version для доставки исправлений на серверы 1.0
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
2026-09-30 18:22:52 +00:00
itsnotkubrickandClaude Opus 5.5 fdae4588ea 1.1: исправления по аудиту безопасности
- 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
2026-09-30 18:11:43 +00:00
itsnotkubrick 4f1e5d98cc 3x-ui: восстановить полный скрипт 2026-09-30 17:55:38 +03:00
itsnotkubrick 6a7b28c9aa 3x-ui: ссылка подписки в панели, переустановка после удаления, команда в меню x-ui 2026-09-30 17:52:53 +03:00
itsnotkubrick 201e3d7811 Новая страница 3X-UI KIT, «Дополнительные пользователи» вместо «Друзья» 2026-09-27 19:49:31 +03:00
itsnotkubrick de2a3e10c9 Репозиторий переименован в 3X-UI_KIT — новые ссылки 2026-09-27 19:45:34 +03:00
itsnotkubrick d9ed8981f1 Пасхалка только в конце установки, название 3X-UI KIT 2026-09-27 19:43:08 +03:00
itsnotkubrick 8aa5812acf Пасхалка kit itsnotkubrick, подпись автора в установщике и подписке 2026-09-27 19:32:14 +03:00
itsnotkubrick 01fc56956b Панель за nginx: редирект без внутреннего порта, адрес со слешем
Адрес панели без слеша nginx перенаправлял на https://IP:10446/… (внутренний порт) —
панель не открывалась. absolute_redirect off и адрес панели сразу со слешем.
2026-09-27 19:26:33 +03:00
itsnotkubrick c39fe19b08 Всё TCP через порт 443: nginx разводит по SNI и путям
- 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 без ключа.
2026-09-27 19:16:09 +03:00
itsnotkubrick e13ae7f42f Пользователи: kit — один пользователь сразу на всех протоколах
- 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 — оба варианта у каждого; выключение, лимиты и удаление действуют на все записи.
2026-09-27 19:00:32 +03:00
itsnotkubrick 8ff22e1239 kit-sub: AmneziaWG только приложениям на Mihomo
Karing запрашивает формат Clash, но работает на sing-box и AmneziaWG не умеет —
на телефоне AmneziaWG вернулся с ошибкой. Теперь Karing, Hiddify, NekoBox, Happ, Stash
и похожие получают Clash-конфиг без AmneziaWG. В журнал kit-sub пишется User-Agent
и выбранный вариант (без IP) — чтобы видеть, чем представляются приложения.
2026-09-27 18:17:11 +03:00