No description
  • Python 99.6%
  • Shell 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Z User 6227c5a1e2
Some checks are pending
Mirror to GitLab / mirror (push) Waiting to run
feat(bootstrap): мульти-источник — CHIMERA_MIRROR/CHIMERA_BRANCH + авто-fallback GitLab→GitHub
bootstrap.sh был жёстко завязан на GitLab (README GitHub-зеркала показывал gitlab-команду — хрупко). Теперь:
- CHIMERA_MIRROR: gitlab (дефолт, без изменений — backward compat) | github | <URL кастомного зеркала> (https://, ssh://, git@); CHIMERA_BRANCH: авто (chimera-v5 для gitlab/кастома, main для github) или явно;
- цепочка fallback при сбое источника (clone/pull/archive timeout/ошибка/битый архив): gitlab→github; github→gitlab; кастом→gitlab→github; каждая попытка логируется («Источник i/N: …»);
- per-source REPO_URL/ARCHIVE_URL/SHA256_URL: github = inferno1978/Chimera-Project (archive/refs/heads/main.tar.gz + raw.githubusercontent.com sha256); кастом = clone-only (tar.gz и чексумма могут не отдаваться — WARN и пропуск);
- integrity-проверка на обоих archive-путях: bootstrap.sh из распакованного архива сверяется с bootstrap.sh.sha256 источника (raw-URL), расхождение → следующее зеркало; для git-установок штатный git pull origin сохранён первым шагом + прямой pull с зеркала при сбое origin;
- сохранены: unset прокси-guard (анти-сломанное окружение), set -euo pipefail, атомарный tmp→verify→staging→backup флоу с rollback, русские сообщения/цвета; при отказе ВСЕХ источников: свежая установка → exit 1, существующая → запуск текущей версии (как раньше);
- README: быстрый старт = GitLab (основной) + GitHub-зеркало (raw.githubusercontent) + своё зеркало CHIMERA_MIRROR=<mirror-url> (плейсхолдеры, без реальных доменов); заметка о fallback-цепочке и CHIMERA_BRANCH; убрана устаревшая приписка о spam-flag;
- bootstrap.sh.sha256 перегенерирован (a40d584e785b3382…);
+тесты ×28 (tests/test_bootstrap_mirrors.py, без сети: bash-выполнение конфиг-блока CHIMERA MIRRORS + структурные проверки): дефолт bit-exact (gitlab/chimera-v5/старые URL), github URL-матрица, кастом https/ssh/git@ clone-only, порядок всех fallback-цепочек, CHIMERA_BRANCH (в т.ч. динамические URL), мусорный MIRROR→gitlab+WARN, инварианты (proxy-guard, clone по $REPO_URL, integrity в обоих путях, bash -n), актуальность .sha256 — все зелёные; смежный сьют github_mirrors 37 — зелёный; leak_guard staged: 0 LEAK 0 WARN
2026-10-09 07:52:17 +00:00
.githooks feat(security): SHA256 integrity verification for bootstrap.sh 2026-07-16 21:34:13 +00:00
.github ci(mirror): v3 — schedule */15 + repository_dispatch: push-события не триггерят 2026-10-02 17:06:06 +00:00
assets/wpp fix(wpp-panel): add /__logo + /__flag endpoints + country code detection from hostname TLD 2026-09-26 00:23:02 +00:00
chimera feat(status): AWG-каскад в /status + «Режим B» + параллельный SSH-сбор пиров 2026-10-08 15:00:39 +00:00
docs feat(status): AWG-каскад в /status + «Режим B» + параллельный SSH-сбор пиров 2026-10-08 15:00:39 +00:00
scripts feat(status): AWG-каскад в /status + «Режим B» + параллельный SSH-сбор пиров 2026-10-08 15:00:39 +00:00
tests feat(bootstrap): мульти-источник — CHIMERA_MIRROR/CHIMERA_BRANCH + авто-fallback GitLab→GitHub 2026-10-09 07:52:17 +00:00
vendor chore(vendor): add WPP frontend v2.4.2 tarball as in-repo mirror 2026-09-28 10:42:19 +00:00
.gitignore fix(awg-standalone): correct PPA amnezia/ppa + GPG fingerprint + wg fallback for keys 2026-07-08 23:30:02 +00:00
bootstrap.sh feat(bootstrap): мульти-источник — CHIMERA_MIRROR/CHIMERA_BRANCH + авто-fallback GitLab→GitHub 2026-10-09 07:52:17 +00:00
bootstrap.sh.sha256 feat(bootstrap): мульти-источник — CHIMERA_MIRROR/CHIMERA_BRANCH + авто-fallback GitLab→GitHub 2026-10-09 07:52:17 +00:00
CHANGELOG.md feat(status): AWG-каскад в /status + «Режим B» + параллельный SSH-сбор пиров 2026-10-08 15:00:39 +00:00
CONTRIBUTING.md docs(rebrand): update SECURITY.md versions table, bug_report template, CONTRIBUTING.md 2026-07-14 22:13:54 +00:00
full_test.py feat(rebrand): new CHIMERA ASCII banner (pyfiglet ansi_shadow) + visible strings 2026-07-14 22:02:58 +00:00
hysteria2_main_patch.py feat(rebrand): rename Python package vless_installer → chimera 2026-07-14 21:20:36 +00:00
hysteria2_state_example.json fix(awg-standalone): correct PPA amnezia/ppa + GPG fingerprint + wg fallback for keys 2026-07-08 23:30:02 +00:00
INSTALL.md FEAT(updater): самообновление Chimera из TUI — Раздел 1 → U: git pull --ff-only с пред-чеками (divergence/dirty/stash), ночное автообновление 04:30 (cron, только ff-only, лог), фоновая проверка при старте + строка-подсказка в главном меню, ретраи против CF-403, 54 теста 2026-09-11 21:08:53 +00:00
INTEGRATION.md feat(rebrand): rename Python package vless_installer → chimera 2026-07-14 21:20:36 +00:00
LICENSE fix(awg-standalone): correct PPA amnezia/ppa + GPG fingerprint + wg fallback for keys 2026-07-08 23:30:02 +00:00
main.py feat(wpp-panel): Phase 2 — QR codes, subscriptions, OpenFlux mgmt, landing presets, auto-update cron 2026-09-25 15:08:40 +00:00
migrate_awg_to_h2.py feat(rebrand): rename Python package vless_installer → chimera 2026-07-14 21:20:36 +00:00
PROJECT_MAP.md feat(vless-lb): состав нод балансировки VLESS-каскада (chain_lb_nodes, меню [E], set_lb_nodes) + CHANGELOG: сводка трёх балансировщиков и CPU Steal-монитора 2026-10-06 07:25:07 +00:00
README.md feat(bootstrap): мульти-источник — CHIMERA_MIRROR/CHIMERA_BRANCH + авто-fallback GitLab→GitHub 2026-10-09 07:52:17 +00:00
SECURITY.md fix: replace all functional GitHub URLs with GitLab 2026-07-16 21:43:34 +00:00
smoke_test_modules.py feat(rebrand): migrate OS paths /opt/vless-ultimate → /opt/chimera, /var/log/vless-install.log → /var/log/chimera.log 2026-07-14 22:08:51 +00:00
TROUBLESHOOTING.md FIX(trusttunnel): обход upstream-дедлока setup_wizard (exit 124): визард без --cert-type + подмена hosts.toml на LE 2026-09-01 20:01:52 +00:00
verify.py feat(rebrand): new CHIMERA ASCII banner (pyfiglet ansi_shadow) + visible strings 2026-07-14 22:02:58 +00:00
XHTTP_REALITY_PLAN.md docs: xHTTP+REALITY implementation plan 2026-09-29 11:06:49 +00:00

Chimera Project

Version Python License Platform

Multi-Protocol Anti-DPI Installer — мульти-протокольный установщик для обхода цензуры: VLESS REALITY/xHTTP, Hysteria2, AmneziaWG, TrustTunnel, MTProto, NaiveProxy, Mieru, FPTN, Slipgate и др. Полная автоматизация: от установки до мониторинга, с кластеризацией, балансировкой, веб-панелью и REST API.

Почему Chimera? Проект вырос из простого VLESS-installer в мульти-протокольный комбайн: 9+ протоколов, 143 модуля, 25 категорий — как мифическая химера, собранная из частей разных животных. Каждая «голова» (протокол) нужна для своего сценария: VLESS — основной, AmneziaWG — устойчивый к DPI, Hysteria2 — быстрый UDP, TrustTunnel — AdGuard VPN protocol, и т.д. Если цензор блокирует один протокол, химера «выращивает новую голову». Подробное обоснование — в CHANGELOG

 ██████╗██╗  ██╗██╗███╗   ███╗███████╗██████╗  █████╗
██╔════╝██║  ██║██║████╗ ████║██╔════╝██╔══██╗██╔══██╗
██║     ███████║██║██╔████╔██║█████╗  ██████╔╝███████║
██║     ██╔══██║██║██║╚██╔╝██║██╔══╝  ██╔══██╗██╔══██║
╚██████╗██║  ██║██║██║ ╚═╝ ██║███████╗██║  ██║██║  ██║
 ╚═════╝╚═╝  ╚═╝╚═╝╚═╝     ╚═╝╚══════╝╚═╝  ╚═╝╚═╝  ╚═╝
 Chimera Project  — Multi-Protocol Anti-DPI Installer

⚡ Быстрый старт

GitLab (основной источник, ветка chimera-v5):

bash <(curl -fsSL https://gitlab.com/netwalker071778/chimera-project/-/raw/chimera-v5/bootstrap.sh)

Или с wget:

wget -O bootstrap.sh https://gitlab.com/netwalker071778/chimera-project/-/raw/chimera-v5/bootstrap.sh
chmod +x bootstrap.sh
bash bootstrap.sh

Зеркало на GitHub (ветка main):

bash <(curl -fsSL https://raw.githubusercontent.com/inferno1978/Chimera-Project/main/bootstrap.sh)

Своё зеркало (self-hosted git):

CHIMERA_MIRROR=https://git.<mirror-domain>/owner/chimera.git bash <(curl -fsSL <bootstrap-url>)

Note: bootstrap — мульти-источник: при сбое основного источника автоматический fallback на зеркала (gitlab→github; при CHIMERA_MIRROR=github — наоборот; своё зеркало — первым, затем gitlab и github). Ветка выбирается автоматически (chimera-v5/main), переопределяется через CHIMERA_BRANCH. Своё зеркало — только git-clone (tar.gz-фолбэк и проверка bootstrap.sh.sha256 пропускаются).

⚠️ GitLab branch chimera-v5 is a mirror only — never commit directly to it, changes will be force-overwritten on next push to main on GitHub.

🎯 Возможности

Категория Функции
Протоколы VLESS + TCP + REALITY, VLESS + xHTTP + TLS, TrustTunnel (AdGuard VPN)
Режимы Одиночный (A), Каскад Россия→Зарубеж (B), Мульти-каскад (до 10 нод)
Транспорт AmneziaWG (AWG 2.0) с multi-node балансировкой
Маскировка XTLS Vision/Splice, сайты-заглушки (TechHub, Nextcloud, custom)
DNS DNSCrypt-proxy, кастомные DNS-правила, DNS Leak Test
Анти-цензура Split Tunneling, РФ-подсети (RIPE NCC), AS-direct routing
CloudFlare WARP full / selective / runet-only
Безопасность AutoBan, DPI Detector, Honeypot, SSH Hardening
Мониторинг Smart Balancer, Watchdog, Health Reports, Failover A↔B
Пользователи Добавление/удаление, QR-коды, ссылки, TTL, лимиты трафика
Диагностика Health Check, MTU Tracepath, Speed Test, TLS Cert Check
Интеграции Telegram-уведомления, Clash Meta / Sing-box конфиги
Обслуживание Авторестарт, автообновление xray/geo, миграция конфигов
v4.11.1 Smoke-test, nginx Watchdog [NW], ipset Persist [IP], Кластер [CL]
v4.11.4 Telemt MTProto на entry-ноде → xray-каскад → Telegram (VLESS / AWG 2.0)
v4.11.5 TCP-фрагментация ClientHello: обход DPI, 6 модулей, поддержка Happ / Incy / Nekoray
v4.12.3 🔥 Hysteria2 транспорт: меню 7, выбор H2 при установке Режима B, балансировщик нод
v4.12.8 Интерактивный выбор TLS Fingerprint (11 вариантов) при установке и для каждой exit-ноды; единый модуль fingerprint_manager.py; FP сохраняется в state.json и применяется во всех режимах (A, B, AWG, WARP)
v4.12.8 🛡️ Telemt MSS-фрагментация против TSPU JA4 DPI: новый модуль telemt_mss_selector.py, 10 пресетов (tspu★/2in8/extreme-low/…) с интерактивным выбором при установке Telemt
v4.12.9 📊 Статистика трафика NaiveProxy и Mieru: новые модули naiveproxy_stats.py и mieru_stats.py; метрики из iptables, journalctl, ss; гистограммы активности, топ клиентов, NTP-мониторинг; живое обновление каждые 30 сек
v4.13 🚀 Полный рефакторинг кодовой базы; добавлены Web Admin Panel, User Portal и REST API
v4.14 🔒 AmneziaWG 2.0 standalone VPN: 13 новых модулей awg_*.py (полный порт bivlked/amneziawg-installer), 9 carrier-пресетов (Yota/Tele2/Мегафон/Билайн/T-Mobile US), каскад RU→зарубеж с split-routing, QR+vpn:// URI, временные клиенты, backup/restore, diagnose с carrier-compare
v4.15 NEW 🛡️ AmneziaWG peer management в веб-панели: новый модуль awg_rest_api.py (15 REST endpoints), owner_email model (admin видит все пиры, user — только свой), Admin Panel — секция AmneziaWG с CRUD, User Portal — карточка «Мой AmneziaWG» (QR/conf/regen). Security: PSK фильтрация из JSON, QR PNG chmod 0o600, нет print ключа в journal. Bug fixes: порядок nginx→сокет, state.json ДО health check.
v4.20.1 🎭 Telemt nginx-fallback: режим "own-site" — свой домен + свой сайт на локальном nginx вместо чужого donor-домена. Telemt сплайсит failed handshakes на локальный nginx с реальным Let's Encrypt сертификатом (censorship.mask_host + tls_emulation=true), убирая детектируемую аномалию fake_cert_len=2048. Рефакторинг сигнатур create_website() / setup_nginx_final() / obtain_ssl_cert() — опциональные domain/port/socket_path перекрывают core.PARAM_* без мутации глобального state. Guard перед стартом Telemt: проверка готовности nginx (TCP connect) — откат к donor-режиму если nginx не слушает (защита от silent regression в духе AWG rotation no-op, telemt/telemt #330 #713). 24 новых регресс-теста.
*📺 YouTube-маршрутизация: две новые опции для обхода ТСПУ SNI-фильтрации. [W] YouTube→WARP — маршрутизация через Cloudflare WARP (sendThrough + kernel table 301), интерактивный flow с авто-установкой WARP, авто-определение IP-версии (IPv4/IPv6 fallback). [F] YouTube→RU+fragment — TCP-фрагментация ClientHello (Xray freedom outbound с settings.fragment), 4 пресета (Light/Medium/Heavy/Max) + Custom, опциональная блокировка QUIC. Требует Xray 26.x+ (XTLS форк). 42 теста.
*📺 Стабильность YouTube через RU+fragment — полная переработка на основе сверки с докой Xray v26.7.28. Решает: «видео buffering», «Shorts не грузятся», «Нет подключения при смене preset». (1) Patch inbound sniffing — routeOnly=True + destOverride:["http","tls","quic"] ТОЛЬКО при активном fragment (откатывается при выключении). Чинит асимметричную маршрутизацию QUIC-видео мимо fragment-правила. (2) Безопасный sockopt в freedom outbound (tcpKeepAlive + TFO + tcpUserTimeout) — БЕЗ tcpCongestion="bbr" (он ломал YouTube, требуя modprobe tcp_bbr). (3) maxSplit — новое поле fragment (недокументированное, но поддерживаемое Xray v26.x). (4) Грейсфул-рестарт — 500мс sleep перед systemctl restart xray. (5) Расширенный список YouTube-доменов (CDN variants). 16 новых тестов, всего 204 связанных теста проходят.
*📺 HOTFIX — откат опасных изменений (sockopt + patch sniffing). После у пользователя YouTube снова выдал «Нет подключения к интернету». Причина: routeOnly=True ломал фикс v4.12.6 (freedom outbound получал IP от клиента вместо домена → domainStrategy=UseIPv4 игнорировалась → если клиент резолвил YouTube в IPv6, dial падал). Также sockopt с tcpFastOpen мог фейлить setsockopt на VPS с net.ipv4.tcp_fastopen=0. Откат: убран sockopt из freedom outbound, убраны вызовы patch_inbounds_for_fragment (функции оставлены в коде с пометкой ВЫКЛЮЧЕНО). Оставлены безопасные улучшения: maxSplit, расширенный список YouTube-доменов (CDN variants), грейсфул-рестарт 500мс. Состояние: YouTube работает как в (т.е. «работает, но нестабильно»). 11 новых тестов (включая проверку отсутствия sockopt), всего 279 связанных тестов проходят.
*📺 ВОЗВРАТ для серверов с IPv6 connectivity. Пользователь переезжает на сервер с IPv6, где routeOnly=True безопасен ( freedom outbound может звонить на IPv6, не падает). Возвращено: sockopt в freedom outbound (tcpKeepAlive + TFO + tcpUserTimeout), вызовы _youtube_patch_inbounds_for_fragment() (routeOnly=True + destOverride[quic]). На сервере БЕЗ IPv6 — использовать QUIC block или WARP routing. Обновлены тексты TUI с предупреждением про IPv6 requirement. 59 тестов YouTube-модуля, 285 связанных тестов проходят.
*🛡️ Per-user IP whitelist для ingress_geoip. Новый модуль chimera/modules/user_ip_whitelist.py — позволяет клиентам с российскими IP подключаться к VLESS на 443 при включённой блокировке входящих из РФ. Структура: allowed_ips в users.json → ipset clients_wl_v4/clients_wl_v6 → iptables ACCEPT перед DROP. Atomic swap через ipset swap (без перерыва в фильтрации). TUI: меню → Пользователи → [6] IP whitelist. User Portal: карточка «🛂 Мои IP-адреса» с auto-detect текущего IP. REST API: GET/POST/DELETE /api/portal/ips. Q1 (chicken-egg): User Portal на отдельном порту 8443, не подпадает под ingress_geoip DROP. Q2 (X-Forwarded-For): НЕ доверяем XFF, используем self.client_address[0] напрямую (rest_api слушает без nginx). 40 новых тестов, 493 связанных теста проходят.
*🌐 nginx front (TLS) для User Portal + port_registry. Два новых модуля: chimera/modules/port_registry.py (централизованный реестр портов с conflict detection — registry/ss/UFW//etc/services) и chimera/modules/nginx_front_portal.py (nginx reverse-proxy с TLS для User Portal на настраиваемом порту, default 9443). nginx ставит TLS перед rest_api: client → https://<domain>:<port> → nginx (TLS) → 127.0.0.1:8443 (rest_api). Сертификат Let's Encrypt переиспользуется от PARAM_DOMAIN (если нет — certbot получает новый). Auto UFW open/close через port_registry.ufw_open_port/ufw_close_port с tag-комментариями. TUI: меню → Веб-панель → [7] nginx front (TLS) — вкл/выкл/выбор порта/проверка конфликтов. Lifecycle: uninstall_web_service() автоматически удаляет nginx front. Atomic rollback при nginx -t fail. Security headers: HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy. Паттерн port_registry документирован для будущих рефакторингов существующих сервисов (VLESS/Hysteria2/AWG/и т.д.) — они НЕ рефакторены в этом коммите, чтобы не рисковать регрессиями. 37 новых тестов, 530 связанных тестов проходят.
*🔄 Миграция 14 сервисов на port_registry. Все основные сервисы (WebDAV tunnel, NaiveProxy, TrustTunnel, FPTN, WDTT, Telemt MTProxy, Telemt iOS-fix, Mieru, Port hopping, AWG standalone, AWG uninstall, Subscription) переведены на централизованный port_registry с backward compatibility. Новые API: ufw_close_port(port, proto, service, legacy_comments=[...]) — для очистки orphaned UFW-правил от старых comments; ufw_open_port_range/ufw_close_port_range — для Mieru/port_hopping. Стратегия: при install → port_register + ufw_open_port; при uninstall → ufw_close_port с legacy_comments (старый comment, например "NaiveProxy") + port_unregister. Backward compat: orphaned UFW-правила на существующих серверах будут найдены через legacy_comments и удалены при следующем uninstall. Fallback: если port_registry недоступен — все сервисы fallback на прямой ufw allow/delete. НЕ мигрированы (намеренно): autoban/honeypot/dpi_detector (ufw deny, не open), singbox_ufw (своя multi-protocol логика), SSH hardening (критичная операция), VLESS port в network_setup/reconfigure (основной install flow, мигрируется отдельно). 1441 тест проходит, 0 регрессий.
*✅ Финальная миграция на port_registry. Завершающие 4 сервиса: VLESS port (network_setup.py — SSH/HTTP/VLESS при install), VLESS reconfigure (reconfigure.py — смена порта с legacy_comments для всех старых вариантов), sing-box UFW (singbox_ufw.py — регистрация SERVICE_SINGBOX без изменения multi-protocol UFW-логики), Web Panel (rest_api.py — expose=True с SERVICE_WEB_PANEL). Теперь ВСЕ сервисы Chimera (кроме SSH hardening и deny-rules) используют port_registry. Полная карта: 17 сервисов мигрированы (VLESS install/reconfigure, sing-box, Web Panel, nginx front, WebDAV, NaiveProxy, TrustTunnel, FPTN, WDTT, Telemt MTProxy/iOS-fix, Mieru, Port hopping, AWG standalone/uninstall, Subscription). НЕ мигрированы (финально): SSH hardening (по указанию), emergency SSH restore, autoban/honeypot/dpi_detector (deny-rules), client_config_export (ephemeral), hybrid_addon (generic), awg_transport (remote SSH). 1945 тестов проходят, 0 регрессий.
*🔒 IP lifecycle: pin/unpin, FIFO, age-based cleanup, replace-all. Предотвращение накопления старых IP в whitelist. (1) Detailed формат: allowed_ips теперь [{"ip": "...", "added_at": "...", "pinned": false}] — lazy migration старого формата (строки) при чтении. (2) FIFO: при достижении лимита (20) автоматически удаляется самый старый незакреплённый IP. (3) Age-based cleanup (cron, раз в сутки): удаляет незакреплённые IP старше N дней (default 30, настраивается). (4) Pin/unpin: закреплённые IP не удаляются при cleanup и FIFO — пользователь закрепляет домашний статический IP. (5) «Заменить все»: удаляет все IP (кроме pinned) и добавляет текущий — для быстрой смены IP. REST API: POST /api/portal/ips/replace-all, POST /api/portal/ips/pin, POST /api/portal/ips/unpin. User Portal: 📌 для закреплённых, кнопки Закрепить/Открепить, «🔄 Заменить все на текущий». 19 новых тестов, 684 связанных теста проходят.
*🌐 Мульти-нод конфиги подписки (Mode B). Новый модуль subscription_multinode.py — подписка отдаёт клиенту ВСЕ ноды (entry + chain-exit'ы + mirrors): ?format=clash — полный mihomo/Clash Meta YAML по эталону проекта (DNS fake-ip+DoH сплит, TUN, sniffer, rule-providers Loyalsoldier+MetaCubeX, группы «📍 Выбор ноды»/Auto/Fallback/Balance-RR/Hash/Sticky/Weighted/Streaming/Telegram/AI, adblock+QUIC-block+RU-direct правила), ?format=singbox — selector «🎯 Chimera» + urltest «auto» + все ноды, base64 — vless:// каждой exit-ноды (chain-UUID). GeoIP-флаги нод (ip-api, кеш 7 суток). UA-эвристика: ClashMeta/FlClash/Mihomo → clash автоматически. User Portal: карточка «📚 Моя подписка» (URL+QR+скачивание полных конфигов). Admin Panel: секция «🔁 Подписка» (per-user URL всех форматов). TUI: подписка → пункт 8 (вкл/выкл/авто; авто = Mode B). 23 новых теста.
*🛰 Per-user привязка сателлитов (Mieru/NaiveProxy/Telemt/TrustTunnel/sing-box). Новый модуль satellite_bindings.py — единый side-table satellite_bindings.json с CRUD API (set_binding/find_login/remove_binding/list_for_user/remove_user). НЕ трогает форматы state сателлитов (TOML/JSON). Авто-сканирование логинов всех 5 сателлитов + авто-предложения привязок по совпадению имени/email-local-part/UUID (suggest_for_user). Приоритет в подписке: identity_map (legacy) > satellite_bindings (canon) > эвристика по имени (fallback). TUI: подписка → пункт 5 — авто-скан + 4 действия (принять все/выбрать вручную/снять все/legacy identity_map). User Portal: таб «🛰 Сателлиты» — список привязок + доступные для привязки с выпадающим списком + кнопки «Привязать/Отвязать» (с валидацией логина). Admin Panel: секция «🛰 Сателлиты» с таблицей всех привязок и UUID→email маппингом. Синхронизация: bind/unbind в Portal сразу обновляет подписку. REST API: 6 новых endpoints (user: GET sat-info/sat-suggest, POST sat-bind/sat-unbind; admin: GET sat/info, POST sat/bind/unbind). 20 новых тестов.
*⚠️ Email/имя при установке + WARNING при удалении юзера. Баг: при удалении дефолтного «безымянного» юзера через TUI, в клиентах (Nyamebox/v2rayNG/FlClash) с импортированным его UUID подключения переставали работать с ошибкой «invalid request user id». (1) install_prompts.py: новые шаги [1/12] Email + [2/12] Имя при установке — email/имя администратора с валидацией; сохраняются в PARAM_USER_EMAIL/PARAM_USER_NAME; используются в users.json, User Portal, Admin Panel. (2) users_manager.py::do_user_delete(): WARNING + подтверждение [y/N] (по умолчанию N) + 4-шаговый чеклист «Действия перед удалением». Также чистит users.json + снимает привязки сателлитов (satellite_bindings.remove_user). (3) admin_panel.py::deleteUser(): тот же WARNING в браузере через confirm() с полным текстом. После удаления обновляет подписку и сателлиты. (4) rest_api.py::DELETE /api/users/{email}: дополнительно снимает привязки сателлитов. Работает для всех режимов: A/B, VLESS Reality / xHTTP TLS.
*📺 b4 (DPI bypass для YouTube на entry VPS). Новый модуль youtube_b4.py — интеграция с b4 (Bye Bye Big Bro), DanielLavrushin. b4 — статически слинкованный Go binary, ставится на entry VPS как systemd-сервис. Перехватывает ИСХОДЯЩИЙ TCP-трафик от Xray к YouTube CDN через iptables mangle + NFQUEUE. Применяет DPI bypass: фейковый DuckDuckGo ClientHello (DPI читает, сервер отбрасывает по pastseq) + фрагментация combo стратегией (split в середине SNI). ТСПУ не видит SNI → пропускает → YouTube работает. Не требует изменений в Xray config (работает поверх routing geosite:youtube → direct). Совместим с UFW/iptables/ingress_geoip (mangle vs filter). IPv4/IPv6 — не важно (работает на L3). 3 пресета: Default (DuckDuckGo fake + combo), Aggressive (Google fake + меньше delay), Light (только фрагментация, без fake). Discovery для автоподбора под провайдера. Health check YouTube. Web UI на порту 9700 (только локально, через SSH-туннель). TUI: python3 -m chimera.modules.youtube_b4 или через основное меню → Y → B. REST API: 7 endpoints (/api/b4/info, /api/b4/health, /api/b4/install, /api/b4/uninstall, /api/b4/enable, /api/b4/disable, /api/b4/preset, /api/b4/discovery, /api/portal/b4-info). User Portal: таб «📺 YouTube DPI» с статусом (для юзеров). Admin Panel: секция «📺 b4 (YouTube DPI)» с полным управлением. Решает проблему «YouTube работает урывками / без IPv6 не работает».

🔐 TrustTunnel (AdGuard VPN protocol)

Меню: главное → 18 · Upstream: https://github.com/TrustTunnel/TrustTunnel

Референсная реализация протокола AdGuard VPN на Rust (Apache 2.0, open-source с января 2026). Интеграция использует официальный upstream-бинарник trusttunnel_endpoint + setup_wizard (prebuilt, GPG-подписан ключом AdGuard 28645AC9...) — НЕ форк и НЕ реимплементация. Транспорт: HTTP/2-over-TLS (TCP) и HTTP/3-over-QUIC (UDP) с мультиплексированием TCP/UDP/ICMP. Выдача доступа пользователю — через deep-link tt://?<base64url> (upstream TLV-формат), который встраивается в существующий self-service Telegram-бот наравне с vless://, vpn://, hysteria2://.

Порт по умолчанию: 8443 (TCP + UDP). Это отдельный порт, не 443 — порт 443 уже занят VLESS (TCP, REALITY или xHTTP) и Hysteria2 (UDP), а TrustTunnel слушает одновременно TCP и UDP на одном номере порта, не имеет SNI-dispatch и не умеет fallback. При установке конфликт проверяется через core.check_port_used_by_other_protocol.

Сертификаты — через существующий конвейер ssl_certbot.obtain_ssl_cert(). setup_wizard запускается БЕЗ --cert-type (обход upstream-дедлока ≤ v1.0.33 — ветки provided/letsencrypt гарантированно виснут в non-interactive, см. TROUBLESHOOTING.md §3), после чего hosts.toml перегенерируется на LE-пути. Авто-renewal — через certbot cron + deploy-hook systemctl reload trusttunnel (SIGHUP перезагружает hosts.toml без рестарта, без разрыва активных сессий).

Управление пользователями — общий user_lifecycle.TrustTunnelAdapter, credentials в /opt/trusttunnel/credentials.toml (TOML, массив [[client]]). Известные ограничения — см. TROUBLESHOOTING.md (агрегированный трафик, рестарт при смене пользователей).

📋 Требования

Параметр Минимум Рекомендуется
ОС Ubuntu 20.04 LTS Ubuntu 22.04 / 24.04 LTS
Python 3.10+ 3.12
RAM 512 МБ 1 ГБ+
Права root root
Сеть Публичный IP Публичный IP + домен

Поддерживаемые ОС: Ubuntu 20.04 / 22.04 / 24.04, Debian 11 / 12 / 13

🔧 Ручная установка

git clone -b chimera-v5 https://gitlab.com/netwalker071778/chimera-project.git /opt/chimera
cd /opt/chimera
sudo python3 main.py

📚 Документация и FAQ

Подробные гайды по отдельным компонентам Chimera находятся в docs/faq/:

FAQ Описание
TELEMT_FAQ.md Telemt (MTProto Proxy) — установка, режимы Middle Proxy / Direct, xray-интеграция, SYN Limiter, фрагментация TLS
VLESS_FAQ.md VLESS/Reality — установка, конфигурация, XOR/CDN-маскировка, разбор типовых проблем; §18 — матрица совместимости клиентских ядер (sing-box/mihomo/Xray × версии Xray-core: гейт версий, X25519MLKEM768/рецепт B)
HYSTERIA2.md Hysteria2 транспорт — UDP-протокол на базе QUIC, выбор при установке
SECURITY_BAN_FAQ.md AutoBan / Honeypot / IP-Ban / GeoIP Block / РФ-блокировка — пять модулей защиты от сканеров и DPI-зондов: сравнительная таблица, комбинации, диагностика, бан ASN
DNSCRYPT_FAQ.md DNSCrypt-proxy — зашифрованный DNS: установка, конфигурация, выбор резолверов, анонимизация, ODoH/DNSSEC, принудительный DNS REDIRECT, диагностика утечек DNS
AGH_FAQ.md AdGuard Home — DNS-сервер с фильтрацией: архитектура связки Xray + AGH + DNSCrypt, плюсы и минусы, установка с нулевым даунтаймом, режимы Web UI и кастомный порт, финализация, порты и port_registry, надёжность DNS, взаимодействие с b4 (DPI-обход)
AI_ACCESS_TG_FAQ.md ИИ-агент на роутере + разблокировка Telegram — MCP/REST-доступ к b4: включение MCP-сервера, токен, три пути доступа (LAN/WAN/nginx front), firewall-правила с Source IP и персистенцией, роли «пользователь vs ИИ», живой кейс разблокировки ТГ (мост mtproto-ws, дороги: WS-edge / CF-пул Flowseal / socat / CF Worker, почему Discovery бессилен при IP-блоке), встроенные защиты b4, сравнение с VLESS-туннелями, автобан и Q&A
RU_NODE_CASCADE_FAQ.md Выбор RU-ноды для каскада — цензурный аудит входной ноды: четыре цензора на пути (реестр оператора / ТСПУ-антитуннель / фильтры аплинка / v6-плечо), три оси профиля, два живых кейса (лицензированный оператор vs «офшорная полка» с РФ-транзитом), чек-лист аудита в 7 шагов, матрица «профиль → роль», живые и режущиеся хостеры плеча entry→exit, ловушки интерпретации детектора, Q&A
DPI_BYPASS_FAQ.md DPI Bypass (b4) — обход ТСПУ для YouTube и любых заблокированных ресурсов: почему b4, а не fragment/WARP, ТСПУ-ярусы (почему дома строже, чем на VPS), установка на entry VPS, пресеты, Discovery, импорт сетов, Web UI и nginx front, CRUD сетов, health check, решение проблем
GITHUB_BYPASS_FAQ.md GitHub Bypass (b4) — обход частичных блокировок GitHub (РКН и исходники): диагностика трёх режимов блока (SNI-фильтр / троттлинг / DNS-отравление), артефакты зондов на CDN-корнях, архитектура сета GitHub-Fat-v1 (combo + timestamp-фейк + DoH + эскалация на Heavy), три слоя таргетов (19 суффиксов + geosite:github на 64 домена + 87 CIDR из api.github.com/meta), установка тремя способами (MCP/Web UI/TUI), watchdog-верификация, тонкая настройка, честные ограничения (IP-душение лечится только routing→upstream)
OWN_DOH_FAQ.md Собственные DoH в сетах b4 (миграция 2026-09-06): уход с Cloudflare 1.1.1.1 на свои резолверы cdn-vps/vpn-node:30443 (РКН против CF), primary/backup через эскалацию (doh_url — одиночное поле), strict=true = fail-closed без утечек наружу, петли и same-VPS-безопасность, живые улики миграции, урок канала MCP (iptables-правило умерло при пересборке firewall + ротация egress песочницы, лечение через /jffs/scripts/firewall-start на Merlin), Heavy-пары всем 7 DNS-сетам (06.09 вечером доклеены XHamster/XVideos/Meta/YT-Nocookie, эскалация-only дизайн с пустыми targets), что осталось (два VPS-инстанса)
NNM_BYPASS_FAQ.md NNM-Club Bypass (b4) — SNI-блок торрент-трекера за Cloudflare (полный цикл 2026-09-06): диагностика TLS_RST/TLS_DROP, разведка сателлитов (жив только nnmclub.to, зеркала — парковки/сквоттеры, таблица), Discovery → desync-fin-ttl6-c2 → сет NNM-Fat-v1 (desync-ack + pastseq + DoH против dns_poisoned + rst_protection + эскалация на NNM-Heavy-v1), почему «Discovery нашёл, но не заработало» (баг apply 1.80.x + DNS-плечо + отсутствие верификации), установка (MCP/Web UI/TUI), ограничения CF-ротации краёв

🗂️ Структура проекта

Chimera-Project/
├── main.py                      # Точка входа
├── bootstrap.sh                 # Установка одной командой
├── verify.py                    # Проверка целостности (232 теста, ~10/10)
├── full_test.py                 # Полный автотест (10 секций)
├── smoke_test_modules.py        # 42 smoke-теста в стен-режиме
├── README.md / INSTALL.md / CHANGELOG.md / TROUBLESHOOTING.md
├── PROJECT_MAP.md               # Полная карта 143 модулей по 25 категориям
├── SECURITY.md / CONTRIBUTING.md / INTEGRATION.md
├── docs/faq/                    # Подробные FAQ по компонентам Chimera
│   ├── TELEMT_FAQ.md            #   Telemt (MTProto Proxy)
│   ├── VLESS_FAQ.md             #   VLESS/Reality
│   ├── HYSTERIA2.md             #   Hysteria2 транспорт
│   ├── SECURITY_BAN_FAQ.md      #   AutoBan / Honeypot / IP-Ban / GeoIP Block / РФ-блокировка
│   ├── DNSCRYPT_FAQ.md          #   DNSCrypt-proxy — зашифрованный DNS, анти-утечки
│   ├── AGH_FAQ.md               #   AdGuard Home — DNS-сервер с фильтрацией
│   ├── AI_ACCESS_TG_FAQ.md     #   ИИ-агент на роутере + разблокировка ТГ (MCP/REST)
│   ├── RU_NODE_CASCADE_FAQ.md  #   Выбор RU-ноды для каскада (цензурный аудит)
│   ├── DPI_BYPASS_FAQ.md        #   DPI Bypass (b4) — обход ТСПУ (YouTube и любые сайты)
│   ├── GITHUB_BYPASS_FAQ.md     #   GitHub Bypass (b4) — частичные блокировки GitHub (сет GitHub-Fat-v1)
│   ├── NNM_BYPASS_FAQ.md       #   NNM-Club Bypass (b4) — SNI-блок за Cloudflare (сет NNM-Fat-v1)
│   └── OWN_DOH_FAQ.md          #   Собственные DoH-резолверы в сетах b4 (миграция с Cloudflare)
├── vendor/
│   └── b4/                      #   Исходники b4 v1.81.0 (апстрим DanielLavrushin/b4): src, installer, toolkit
│       └── set-artifacts/       #   Готовые сеты: 6 артефактных пар Fat+Heavy (NNM, GitHub, XHamster, XVideos, Meta, YT-Nocookie; 4 пары добавлены 06.09) + vps-prodcdn/ (8 сетов VPS cdn-vps — Heavy-схема с эскалацией всем сетам, DNS не тронут, этап 1) + vps-vpn/ (8 сетов VPS vpn-node — то же, вторая нода) + верификации (MCP-кейсы); dns-блоки роутерных = свои DoH (см. OWN_DOH_FAQ)
├── LICENSE
└── chimera/
    ├── __init__.py
    ├── _core.py                 # Ядро: orchestrator + globals (~8 093 строк, −75% от 32 557)
    ├── __all_exports.py         # Реестр экспортируемых имён
    └── modules/                 # 143 модуля по 25 категориям (см. PROJECT_MAP.md)
        │
        ├── 1. Ядро и утилиты
        │   └── box_renderer, resources, system_deps, tui, scheduler, smoke_test, xray_safe_apply
        │
        ├── 2. Установка и конфиг Xray
        │   └── xray_install, install_prompts, nginx_setup, ssl_certbot, network_setup, dnscrypt_setup/selector, geo_files, backup_rollback, emergency_repair, uninstall
        │
        ├── 3. Пользователи и доступ
        │   └── users_manager, ttl_users, credential_rotation, user_fp_manager, fingerprint_manager, subscription(+subscription_multinode)
        │
        ├── 4. Маршрутизация и split-tunnel
        │   └── split_tunnel, ru_subnets, as_direct, geoip_block, dns_rules, ingress_geoip, ripe_file_age
        │
        ├── 5. Безопасность и баны
        │   └── autoban, fail2ban_setup/manager, ipban, ipset_persist, ssh_hardening, honeypot
        │
        ├── 6. Мониторинг и диагностика
        │   └── diagnostics, connection_audit, health, health_report, traffic_tracking, traffic_history, node_health_monitor, network_bench, status_panel, standalone_screens
        │
        ├── 7. Статус, скорость, реконфигурация
        │   └── quick_status, speed_test, reconfigure, switch_mode, migration, cold_boot_restore, config_backup
        │
        ├── 8. Telegram и уведомления
        │   └── tg_bot, tg_nets
        │
        ├── 9. Фрагментация (TLS fragmentation)
        │   └── fragment_config/fuzzer/log_viewer/presets/link/guide/share/stats/mux/noise/watchdog (11 мод.)
        │
        ├── 10. Hysteria2 (15 модулей)
        │   └── hysteria2_common/menu/transport/cert_mgr/balancer/cluster/dpi/exit_mgr/health/quality/smoke_test/traffic/watchdog/backup/auto_update
        │
        ├── 11. Альтернативные протоколы
        │   └── mtproto(+_stats), naiveproxy(+_stats), mieru(+_stats), fptn, olcrtc, wdtt, webdav_tunnel, turnable, turntunnel(+_links), vkturn_menu, port_hopping, proto_common
        │
        ├── 12. WARP и зеркала
        │   └── warp, warp_curated_lists, entry_mirrors, slipgate
        │
        ├── 13. Кластер и балансировка
        │   └── cluster_ops, smart_balancer, failover, chain_nodes
        │
        ├── 14. Telemt (телеметрия)
        │   └── telemt_panel/fallback/ios_fix/mss_selector/syn_limiter/self_route/warp_route
        │
        ├── 15. DPI-детекторы
        │   └── dpi_detector, dpi_censor_check
        │
        ├── 16. Клиентские конфиги и MTU
        │   └── client_config_export, pq_vless, mtu_tuning, asn_cache
        │
        ├── 17. Веб-панель, Admin, Portal
        │   └── rest_api, admin_panel, user_portal, awg_rest_api
        │
        ├── 18. AWG Transport (Mode B)
        │   └── awg_transport (45 функций)
        │
        └── 19. Вендорные модули
            └── _vendor/dpi_detector/ (Python)

        ── 20. AmneziaWG 2.0 standalone (14 модулей + awg_net_common, NEW v4.15.0) ──
           awg_constants/state/presets/hw_tuning/apply/standalone/
           peers/qr/expires/backup/cascade/diagnose/uninstall/
           net_common (общий NAT/sysctl слой) + awg_rest_api (REST API для веб-панели)
           — полный порт bivlked/amneziawg-installer, carrier-пресеты, каскад,
             управление пирами через Admin Panel + User Portal

📋 Полная карта по 25 категориям с описанием каждого файла — в PROJECT_MAP.md.

🏗️ Архитектура

Режимы развёртывания

Режим A — одиночный сервер

Клиент ──VLESS/REALITY──► VPS (любая страна) ──► Интернет

Режим B — каскад Россия → Зарубеж

Клиент ──VLESS/REALITY──► Entry VPS (RU) ──AWG──► Exit VPS (EU/US) ──► Интернет

Режим B Multi — мульти-каскад с балансировкой

                              ┌──► Exit VPS 1 (EU) ──►┐
Клиент ──► Entry VPS (RU) ─── ┼──► Exit VPS 2 (US) ──►├──► Интернет
                              └──► Exit VPS 3 (AS) ──►┘

Компоненты

┌─────────────────────────────────────────────────────────────┐
│                        Chimera Project                      │
│                                                             │
│  bootstrap.sh ──► main.py ──exec──► _core.py                │
│                                         │                   │
│                               modules/            │
│                                         │                   │
│         Xray-core              Nginx (TLS)                  │
│         /etc/xray/             /etc/nginx/                  │
│         config.json            sites-enabled/               │
│              │                      │                       │
│         iptables/ipset         Certbot (ACME)               │
│         (ingress block)                                     │
│              │                                              │
│         AmneziaWG (AWG)                                     │
│         /etc/amnezia/awg0.conf                              │
└─────────────────────────────────────────────────────────────┘
Компонент Роль
Xray-core VLESS REALITY / xHTTP TLS, routing, outbounds
Nginx TLS termination, маскировочный сайт-заглушка
AmneziaWG Зашифрованный туннель Entry→Exit (Режим B)
DNSCrypt-proxy Зашифрованный DNS, защита от leak
ipset + iptables Ingress-блокировка РФ подсетей (опционально)
Certbot TLS-сертификаты Let's Encrypt (xHTTP режим)

Telemt MTProto — интеграция с xray-каскадом [v4.12.1]

Для entry-нод в России: Telemt принимает клиентов по MTProto, трафик перехватывается через iptables REDIRECT и направляется в dokodemo-door inbound xray, затем уходит через каскад на exit VPS.

Клиент (Telegram)
    │  tg://proxy?server=ENTRY_IP...
    ▼
Telemt (entry VPS / RU)  — type = "direct"
    │  iptables REDIRECT  →  127.0.0.1:10811
    ▼
Xray dokodemo-door  (tag: tproxy-telemt)
    │  routing: inboundTag → balancerTag / outboundTag
    ▼
┌─ VLESS+REALITY:  chain-exit[-1] → exit VPS
└─ AWG 2.0:        fwmark → awg0  → exit VPS
    ▼
Серверы Telegram ✓

Хранение состояния

/etc/xray/
├── config.json              # Конфиг Xray
├── ru_subnets_ripe.txt      # РФ подсети (split tunneling)
├── geosite.dat / geoip.dat  # GeoData (runetfreedom)
└── config.json.pre-apply    # Авто-бэкап перед каждым apply

/var/lib/xray-installer/
├── state.json               # Состояние установщика (UUID, ключи, настройки)
├── ingress_geoip.json       # Состояние ingress-блокировки
└── backups/                 # Резервные копии конфигов

/etc/ipset.conf              # [v4.12.1] Дамп ipset для восстановления при reboot
/var/log/
├── vless-install.log        # Лог установщика
├── nginx-watchdog.log       # [v4.12.1] Лог nginx watchdog
└── xray-ipset-restore.log   # [v4.12.1] Лог восстановления ipset

🖥️ Управление сервисами

systemctl status xray nginx
systemctl restart xray nginx
journalctl -u xray -f

🖥️ CLI-флаги

sudo python3 /opt/chimera/main.py                   # Меню
sudo python3 /opt/chimera/main.py --status          # Быстрый статус
sudo python3 /opt/chimera/main.py --scheduled-backup
sudo python3 /opt/chimera/main.py --switch-mode-a
sudo python3 /opt/chimera/main.py --switch-mode-b
sudo python3 /opt/chimera/main.py --autoban
sudo python3 /opt/chimera/main.py --ttl-check
sudo python3 /opt/chimera/main.py --smart-balance
sudo python3 /opt/chimera/main.py --dpi-check
sudo python3 /opt/chimera/main.py --update-ru-subnets
sudo python3 /opt/chimera/main.py --update-as-direct
sudo python3 /opt/chimera/main.py --ingress-geoip-update
sudo python3 /opt/chimera/main.py --telemt-panel-geoip-update   # DB-IP Lite, без MaxMind-аккаунта; --maxmind — зеркало GeoLite2
sudo python3 /opt/chimera/main.py --pinned-fallback-check
sudo python3 /opt/chimera/main.py --tg-event EVENT MSG
sudo python3 /opt/chimera/main.py --clear-asn-cache

🔗 Кластерное управление [CL]

Меню Безопасность и Автоматизация → [CL] позволяет управлять всеми Exit Nodes из Entry Node одной командой по SSH.

Пункт Действие
1 Диагностика всех нод (статус + xray -test)
2 Перезапуск Xray на всех нодах
3 Обновление Xray-core на всех нодах
4 Ротация UUID на всех нодах
5 Произвольная команда на всех нодах
6 Проверить SSH-доступ к нодам
P Задать / сменить пароль SSH-сессии

Аутентификация: сначала пробуется SSH-ключ (~/.ssh/id_ed25519 и др.), при неудаче — запрашивается пароль root (один раз за сессию через sshpass).

Зависимость: для парольной аутентификации требуется sshpass (apt install sshpass). При первом использовании устанавливается автоматически.

🔍 Диагностика

# Полная диагностика через меню
sudo python3 /opt/chimera/main.py
# → Диагностика и Мониторинг → Полная диагностика

sudo python3 /opt/chimera/main.py --status
/usr/local/bin/xray run -test -config /etc/xray/config.json
tail -100 /var/log/chimera.log

🔄 Обслуживание

python3 /opt/chimera/verify.py
cd /opt/chimera && git pull
sudo python3 /opt/chimera/main.py --scheduled-backup

❓ Решение проблем

Смотри TROUBLESHOOTING.md.

📌 О проекте и формате общения

Этот проект — личная инициатива, разрабатывается и поддерживается в свободное от основной занятости время. Это не коммерческий продукт и не услуга с SLA.

Что это значит на практике:

  • Автор не обязан отвечать в каком-либо конкретном темпе, реализовывать любую функцию по запросу или подстраивать архитектуру под чужие сценарии.
  • Сообщения в требовательном или претензионном тоне будут проигнорированы. Токсичное поведение — повод для бана без предупреждения.

Как помочь проекту или получить помощь:

  • Нашли реальный баг? Опишите шаги воспроизведения — это самое полезное, что можно сделать.
  • Есть идея фичи? Аргументированное предложение с пользой для проекта в целом — welcome.
  • Хотите другую логику под свои задачи? Форкайте репозиторий и меняйте как нужно — для этого он open-source.

Спасибо всем, кто использует проект с уважением к тому, что он создан бесплатно и на энтузиазме.

🔗 Связанные проекты

  • HYDRA-ULTIMATE — форк на базе Sing-Box как единого оркестратора трафика, с плагинной архитектурой и собственным набором транспортов.

📄 Лицензия

MIT — см. LICENSE

✍️ Автор

inferno1978 · GitLab · GitHub