Skip to content

About

Rust control panel for MTProxy, NaiveProxy, Mieru, AmneziaWG and TrustTunnel, with transactional installation, routing, monitoring and HTTPS-linked panels.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

10 stars

Watchers

0 watching

Forks

Latest commit

 

History

1,004 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

English · Русский

Proxy Control

Панель управления прокси, которая может работать на одном сервере с 3x-ui

MTProxy, NaiveProxy, Mieru, AmneziaWG и TrustTunnel под одной панелью — с транзакционным установщиком, который либо доводит установку до конца, либо возвращает сервер в прежнее состояние.

CI Лицензия: MIT

Что это · Требования · Установка человеком · Установка ИИ-агентом · Обновление · Документация

Иллюстрация Proxy Control

Note

Текущий выпуск — v4.0.1. Что изменилось — в описании выпуска и журнале изменений.

Important

Проект рассчитан на людей, которые понимают, что такое DNS, TLS, Nginx и Docker. Установщик берёт на себя рутину и не даст сделать опасный шаг молча, но не заменяет понимания того, как устроен ваш сервер.

Содержание

Навигация по README

Что это такое

Proxy Control — отдельная панель управления прокси MTProxy, NaiveProxy, Mieru, AmneziaWG и TrustTunnel, их пользователями и доступами. Это не дополнение и не ответвление 3x-ui: панель ставится на чистый сервер или рядом с уже работающим 3x-ui — тогда обе панели делят общий порт 443 и не мешают друг другу. По желанию установщик поставит и сам 3x-ui.

Компонент Что он даёт
MTProxy / Telemt Прокси для Telegram: tg://-ссылки и QR-коды, лимиты, срок действия, состояние службы.
NaiveProxy HTTPS-прокси, который снаружи выглядит обычным сайтом. HTTP/1.1 CONNECT и HTTP/2 CONNECT поверх TLS/TCP, один доступ на оба; квота и учёт трафика на пользователя.
Mieru Прокси с маскировкой трафика на собственном протоколе поверх TCP; одноразовая mierus://-ссылка и QR.
AmneziaWG VPN поверх UDP — WireGuard с маскировкой трафика. Версии 1.5, 2.0 и 3.1 работают каждая на своём порту; у клиента может быть доступ к нескольким, конфиг выдаётся файлом .conf и QR. Включается необязательно.
TrustTunnel VPN от AdGuard: HTTP/2 поверх TLS, только TCP, на общем порту 443 через SNI-маршрут Nginx, без новых портов и UDP. Выдаётся ссылкой tt:// с QR, конфигом TOML и записью в ленте Clash/mihomo; маршрутизируется как служба (без полос для отдельных клиентов). Включается необязательно, нужен свой домен.
Рядом с 3x-ui Режим existing принимает уже установленный 3x-ui: делит с ним порт 443 и не меняет его файлы. Режим managed-new на чистом сервере ставит 3x-ui 3.10.2 и создаёт VLESS Reality (TCP и XHTTP) и Hysteria2. Управление 3x-ui остаётся в его собственной панели.
Клиенты и подписки Один клиент — доступы ко всем протоколам и одна отзываемая ссылка https://<домен подписки>/s/<token> для sing-box/Karing, Clash/mihomo и других. Учётные данные хранятся под мастер-ключом (AES-256-GCM).
Связанные панели (Fleet) Центральная панель выдаёт доступы на другие серверы с Proxy Control по HTTPS и API-ключу node-sync.
Маршрутизация Правила исходящего трафика для каждого узла и службы: напрямую, через WARP, через свой выход или другой узел; блокировки по домену, CIDR, geosite и geoip через необязательный Xray-router.
Мониторинг Ресурсы сервера и трафик по протоколам в прямом эфире (CPU, память, диск, сеть, контейнеры, скорости ↑/↓ MTProxy, NaiveProxy, Mieru, AmneziaWG и TrustTunnel), история до года, сравнение узлов и оповещения. Только чтение, видно всем ролям.
Обновления Экран «Версии» обновляет Telemt, NaiveProxy, Mieru, AmneziaWG, TrustTunnel, Xray-router и саму панель с резервной копией и откатом, а менеджеры после обновления панели пересобирает сам; сервер целиком обновляется одной командой.
MCP и навыки для ИИ Необязательный MCP-сервер на центральной панели: API панели как инструменты для Claude Code и Claude Desktop, необратимые действия — только с confirm.
Панель Роли владельца, администратора и наблюдателя; API-ключи с областями admin | monitor | node-sync; аудит без секретов; интерфейс на русском и английском.

Учёт трафика у протоколов разный, и панель этого не скрывает: Telemt разделяет счётчик процесса и расход квоты, NaiveProxy считает байты только после закрытия туннеля, а Mieru показывает unavailable, когда безопасного счётчика на пользователя нет.

Интерфейс

Снимки панели с изолированного стенда и тестовыми данными — без ключей, QR-кодов и адресов рабочих узлов.

Обзор Маршрутизация по шагам
Обзор пяти протоколов и ресурсов сервера Четыре шага маршрутизации NaiveProxy

Мобильный обзор · Клиенты с поиском · Окно доступа · Клиенты на телефоне · Встроенная инструкция · Английский обзор · Маршрутизация на английском · Вход

Мониторинг в прямом эфире: Сейчас · Трафик · Узлы · Сейчас на телефоне · Сейчас на английском

Как устроен общий порт 443

Схема подключения и таблица портов

Публичный порт 443 остаётся у Nginx. Nginx смотрит только на имя домена в TLS-приветствии (SNI) и передаёт соединение нужной службе. Proxy Control не забирает 443 себе: установщик добавляет в карту SNI только свои строки и никогда не переписывает её целиком. Если конфигурацию Nginx нельзя понять однозначно, он останавливается, а не угадывает.

Клиент ── TCP/443 ──► Nginx stream + SNI
                         ├──► 3x-ui и его протоколы
                         ├──► MTProxy / Telemt
                         ├──► NaiveProxy
                         ├──► TrustTunnel (необязательно)
                         ├──► другие ваши сайты
                         └──► панель Proxy Control
Граница Адрес Кто имеет доступ
Публичный вход TCP/443 Только Nginx stream, маршрутизация по SNI
Telemt / MTProxy 127.0.0.1:8445 Только Nginx и локальная система
Панель 127.0.0.1:8787 (HTTP) Локально; наружу — через виртуальный узел HTTPS на 127.0.0.1:8443
NaiveProxy (Caddy) 127.0.0.1:4443 Только Nginx
Telemt API mtproxy:9091 Только внутри сети Compose
TrustTunnel (необязательно) 127.0.0.1:4453 (endpoint), 127.0.0.1:1987 (метрики менеджера) Только Nginx и локальная система; наружу — TCP/443 по SNI; ни портов, ни UDP
Вход Xray-router для TrustTunnel (необязательно) 127.0.0.1:45104 (SOCKS5 без пароля) Только локальная система: любой локальный процесс или контейнер с сетью хоста может им пользоваться
Mieru Выбранные вами TCP-порты Публично; порт 443 не используется
Управление Mieru /run/mita/mita.sock Только локальный Unix-сокет
AmneziaWG (необязательно) По одному UDP-порту на версию: случайный свободный, свой на каждый сервер (или ваш) Публично, напрямую по UDP; управление — Unix-сокет контейнера awg-manager

Свежая установка сохраняет IP клиента панели через общий вход Nginx. Если входящими соединениями управляет ваша собственная конфигурация Nginx, настройте передачу адреса по протоколу PROXY — порядок описан в справочнике установщика.

Контейнеры называются proxy-control-*, проект Compose — proxy_panel_by_dubr1k.

Требования

  • Сервер x86-64 с Ubuntu 24.04 LTS и systemd. Другие архитектуры установщик отвергает при проверке сервера, до любых изменений.
  • Bash, awk, curl, tar, sha256sum и обычная учётная запись с sudo. Проверка релиза идёт без root. Python и Rust на хосте не нужны: релиз содержит статические бинарники.
  • DNS-записи A/AAAA всех ваших имён указывают напрямую на сервер. Для MTProto проксирование CDN выключено — только режим DNS-only.
  • Свободный TCP/80: по нему Let's Encrypt проверяет домены.
  • Режим fresh — сервер ваш целиком, установщик сам ставит и настраивает Nginx; чужого владельца порта 443 быть не должно. Режим coexist — уже работающий Nginx со stream владеет портом 443, и в файле маршрутов есть ровно одна понятная карта $ssl_preread_server_name.
  • Свободные локальные порты из таблицы выше.
  • Для необязательного AmneziaWG: устройство /dev/net/tun на сервере, имя, которое доходит до сервера напрямую по UDP, без CDN. Нового домена не нужно — подойдёт домен панели.
  • Для необязательного TrustTunnel: отдельный домен с A-записью на сервер, только DNS (без проксирования CDN); сертификат для него выпускает установщик. UDP и новые порты не нужны.
  • Своя резервная копия Nginx, служб, маршрутов и состояния Docker.

Установщик остановится и ничего не тронет, если увидит несовпадение DNS с адресом сервера, NAT, CDN перед MTProto, неоднозначную карту Nginx, занятый порт, владельца 443, который не является Nginx, или ошибку nginx -t. Это повод сначала разобраться, а не «продолжить всё равно».

Внешние файлы сторонних компонентов готовить не нужно: установщик сам скачивает их по закреплённым HTTPS-адресам в /var/lib/proxy-control/ и сверяет SHA-256 до любого использования. Для сервера без интернета положите их туда заранее — положенный вручную файл используется как есть. Список, адреса и контрольные суммы — в release/external-artifacts.json.

Домены и сертификаты

Именно здесь установка чаще всего останавливается. Полный набор — профиль full, 3x-ui в режиме managed-new, домен подписки клиентов, MCP-сервер и TrustTunnel — требует 12 разных доменов. Сертификат нужен не всем:

Все домены и правила выпуска сертификатов
Домен Когда нужен Сертификат
panel — панель Всегда Да
mtproxy — MTProxy (Fake-TLS) Всегда Да
naive — NaiveProxy Профили с NaiveProxy Да
mieru — Mieru Профили с Mieru Нет
three_xui.panel_domain — панель 3x-ui managed-new Да
three_xui.hysteria_domain — Hysteria2 managed-new Да
three_xui.vless_tcp_domain — VLESS Reality TCP existing и managed-new Нет
three_xui.vless_xhttp_domain — VLESS Reality XHTTP existing и managed-new Нет
three_xui.subscription_domain — подписка 3x-ui managed-new, если нужна Да
subscription — подписка клиентов Если нужны ссылки https://<домен>/s/<token> Да
mcp — MCP-сервер Только на центральной панели, если нужен Да
trusttunnel — TrustTunnel Если включён TrustTunnel; свой домен, A-запись на сервер, без проксирования CDN Да

Mieru и VLESS Reality не нужен сертификат Let's Encrypt: Mieru работает на собственном протоколе, Reality использует сертификат сайта-прикрытия. Домен им всё равно нужен — он попадает в клиентские конфигурации.

Перед выпуском сертификата установщик сам проверяет каждое имя:

  1. есть запись A, и хотя бы один её адрес — адрес этого сервера;
  2. записи AAAA нет, либо все её адреса тоже принадлежат серверу (забытая AAAA на старый сервер — самая частая причина «сертификат выпущен, а протокол не работает»);
  3. CAA самого домена и его родителей не запрещает Let's Encrypt;
  4. уже существующий сертификат покрывает это имя — чужой сертификат не трогается.

Сертификаты выпускаются certbot certonly --webroot по TCP/80 без DNS-01 и API регистратора. Имена группируются по линиям (--cert-name): proxy-control — панель и MTProxy одним сертификатом, naive, three-xui-panel, three-xui-hysteria, three-xui-subscription. Сразу после выпуска выполняется certbot renew --dry-run, чтобы продление было проверено в момент установки, а не через три месяца.

Установка человеком

Шаг 1. Скачайте выпуск и проверьте его

Работайте обычным пользователем с доступом к sudo. Скачивание и проверка проходят без прав администратора:

curl -fsSLO https://github.com/dubr1k/proxy-control/releases/latest/download/install-release.sh &&
curl -fsSLO https://github.com/dubr1k/proxy-control/releases/latest/download/install-release.sh.sha256 &&
sha256sum --check install-release.sh.sha256

Если контрольная сумма совпала, прочитайте сценарий и требования, затем запустите мастер:

less install-release.sh
bash install-release.sh --requirements
bash install-release.sh

Сценарий скачивает архив, SHA256SUMS, release-manifest.json и sbom.spdx.json, сверяет контрольные суммы, описание выпуска и SHA-256 архива, записанную в самом сценарии: подменённый архив не распаковывается, даже если вместе с ним подменён SHA256SUMS. При наличии gh дополнительно проверяется attestation — подтверждение происхождения файлов. Происхождение самого сценария проверяется командой gh attestation verify install-release.sh --repo dubr1k/proxy-control.

Полезные параметры: --check-only только скачивает и проверяет; --no-wizard ещё и распаковывает, но мастер не запускает; --lang ru|en — язык сообщений и мастера (язык мастер тогда не спрашивает). Сценарий запускает нативный бинарник установщика с необходимыми правами; Python на сервере не нужен. Если Proxy Control на сервере уже стоит, используйте bash install-release.sh --update, а не кнопку «Обновить» в панели 3.3.0. Сначала проверьте Fleet v1: установленный агент или ingress с mTLS требует сохранения состояния и явного переноса, не удаления тома при обновлении.

В архиве — установочные бинарники, исходники для сборки контейнеров, общие библиотеки, приёмочные клиенты и пользовательские инструкции. Тестовые наборы, CI, лаборатории и инструменты разработки остаются в исходном репозитории; состав задаёт release/runtime-files.json.

Проект намеренно не предлагает «скачать и сразу выполнить одной командой»: сценарий сначала проверяется, потом читается и только потом запускается.

Шаг 2. Ответьте на вопросы мастера

Мастер говорит по-русски или по-английски, перед каждым выбором коротко объясняет варианты и сохраняет ответы в файл TOML, который можно прочитать и поправить вручную. В квадратных скобках — ответ по умолчанию, клавиша ввода его принимает.

Профили, параметры и вопросы мастера

Режим сервера. fresh (по умолчанию) — установщик сам ставит и настраивает Nginx. coexist — Nginx уже держит порт 443, установщик только дописывает свои маршруты.

Профиль.

Профиль Что ставится
core Telemt/MTProxy и панель
core-naive То же плюс NaiveProxy
core-mieru То же плюс Mieru
full Всё вместе (по умолчанию)

Режим 3x-ui.

  • none — 3x-ui не трогаем совсем (по умолчанию);
  • existing — принять уже установленный: установщик добавит маршруты к его входящим подключениям VLESS Reality TCP и XHTTP и не изменит ни одного его файла. Входящие подключения вы заводите в 3x-ui сами;
  • managed-new — поставить 3x-ui 3.10.2: установщик выпишет сертификаты, уведёт панель 3x-ui с публичных портов на 127.0.0.1 под приватный адрес, сменит заводские admin/admin на ваши и сам создаст VLESS Reality TCP, VLESS Reality XHTTP и Hysteria2. Только в режиме fresh.

Домены. Мастер спрашивает только те, что нужны выбранному профилю и режиму 3x-ui (см. таблицу доменов). Домен подписки клиентов и домен MCP-сервера можно оставить пустыми — тогда эти функции выключены. Домен TrustTunnel мастер спрашивает только после «да» на вопрос о TrustTunnel. MCP нужен только на центральной панели. Порты Mieru по умолчанию — 46001; мастер не даст выбрать порт, занятый самим установщиком, и скажет, кем он занят.

WARP. В режиме managed-new мастер спрашивает, включать ли WARP для Xray, и при ответе «да» требует непустой список доменов и geosite:-списков через запятую (например, example.com, geosite:openai); NaiveProxy и Mieru при этом остаются на прямом выходе. В режимах 3x-ui none и existing вопрос задаётся, если профиль включает NaiveProxy или Mieru: ответ «да» направляет весь их трафик через WARP. Установщик сам ставит закреплённый официальный клиент Cloudflare и поднимает собственную точку SOCKS5 127.0.0.1:40000; заранее запущенный WARP не нужен и считается чужим состоянием.

AmneziaWG. Необязательный VPN для любого профиля: «да/нет», затем версии (по умолчанию все три — 1.5, 2.0, 3.1) и имя или IPv4-адрес, по которому клиенты подключаются (по умолчанию домен панели; он должен указывать прямо на сервер и не проксироваться). Новый домен не нужен. UDP-порты случайные и свободные, свои на каждый сервер (не общеизвестные 51820–51822, которые цензоры узнают по отпечатку): мастер показывает их и даёт ввести свои, в TOML есть ports. MTU и DNS задаются только в TOML (секция [amneziawg]). Установщик собирает образ awg-manager из закреплённого коммита amneziawg-go, создаёт /var/lib/awg-manager (ключи сервера) и sysctl-файл пересылки IPv4. В режиме fresh с UFW он открывает UDP-порты и маршрутизацию на интерфейсах awg15, awg20, awg31; в остальных случаях откройте эти UDP-порты и разрешите пересылку на интерфейсах awg* сами.

TrustTunnel. Необязательный VPN для любого профиля: два вопроса — «установить?» и домен. Домен свой: A-запись на сервер, только DNS (без проксирования CDN), не совпадающий ни с одним другим доменом. Установщик выпускает для него сертификат, добавляет строку в карту SNI Nginx и собирает образ trusttunnel-manager из закреплённого trusttunnel_endpoint (v1.1.0), создаёт /var/lib/trusttunnel-manager (учётные данные и счётчики). Endpoint слушает только 127.0.0.1:4453 (listen_port); новых портов, UDP и правил UFW нет. Нужен доступ к GitHub на время сборки образа.

Почта для сертификатов. Адрес для Let's Encrypt.

Учётные данные. Имя первого пользователя MTProxy и Mieru; пароль владельца панели (имя для входа всегда owner); имя и пароль панели 3x-ui в режиме managed-new. Пароль вводится дважды и не отображается. Пустой ответ означает «создай сам» — установщик сгенерирует случайный пароль. Требование одно: не короче 12 символов.

[!IMPORTANT] Пароли не попадают в файл конфигурации. Если вы выбираете «сохранить» (save), мастер кладёт их рядом, в <имя-конфигурации>.credentials с правами 0600, — удалите этот файл сразу после установки. При выборе «применить» (apply) пароли передаются установке напрямую и стираются, как только она закончится.

Порты в UFW. Только в режиме fresh: разрешить ли установщику открыть нужные порты (по умолчанию да). Он добавляет только свои правила с пометкой proxy-control:firewall, а выключенный UFW включает, первым правилом пропустив SSH.

В конце мастер показывает все ответы под понятными названиями (а не ключами файла) и предлагает исправить любое поле, сохранить конфигурацию или продолжить. Готовые конфигурации для каждого профиля и режима 3x-ui — в examples/installer/.

Шаг 3. Проверьте план и подтвердите его

План — полный список того, что произойдёт: пакеты, файлы, маршруты Nginx, сертификаты, службы. Секретов в нём нет. План ничего не меняет, поэтому его можно запускать заранее, чтобы проверить домены и DNS:

sudo bash install.sh plan --config examples/installer/full-three-xui.toml --json

Установка начинается только после подтверждения контрольной суммы (digest) именно этого плана. Если сервер изменился между планом и установкой, сумма не совпадёт и установка не пойдёт:

sudo bash install.sh install --config examples/installer/full-three-xui.toml --accept-plan DIGEST

Мастер делает то же самое сам: показывает план и просит ввести первые 12 символов digest.

Шаг 4. Дождитесь приёмки

Установщик не считает работу сделанной по факту «контейнер запустился» — он проверяет каждый протокол настоящим клиентом:

  • MTProxy — Fake-TLS, Obfuscated2, req_pq_multi и проверенный ответ resPQ;
  • NaiveProxy — сайт-прикрытие без пароля, затем аутентифицированный CONNECT, известная нагрузка и запись в учёте;
  • Mieru — статус RUNNING и официальный клиент, который реально выходит в интернет;
  • панель — вход, роли, создание и отзыв временного доступа;
  • соседние маршруты — каждый чужой SNI продолжает работать.

Если любая проверка не прошла, установщик откатывает сделанное и возвращает сервер в прежнее состояние.

Ручная установка из архива

Проверка и запуск архива вручную

Тот же путь без сценария. Скачайте четыре файла из раздела Assets выпуска 4.0.1: архив, SHA256SUMS, release-manifest.json и sbom.spdx.json. SHA256SUMS проверяет три файла: архив, описание выпуска и перечень компонентов sbom.spdx.json; сам файл контрольных сумм берётся со страницы выпуска и отдельного подтверждения происхождения не имеет.

sha256sum --check SHA256SUMS &&
tar -xOf proxy-control-v4.0.1.tar.gz proxy-control/install-bootstrap > install-bootstrap &&
chmod 700 install-bootstrap &&
./install-bootstrap --archive proxy-control-v4.0.1.tar.gz --checksum SHA256SUMS --manifest release-manifest.json

install-bootstrap отказывается работать от root. Перед единственным вызовом sudo он проверяет владельца и права файлов, контрольную сумму архива, соответствие описанию выпуска, отсутствие признака предварительной версии и путей, выходящих за пределы архива. Из рабочей копии Git установщик не запускается: ему нужен release/release.json, который создаётся при сборке выпуска.

Если Nginx, сертификаты и окружение вы ведёте сами, базовый контур можно поднять напрямую через Compose: DOCKER_DEPLOYMENT.ru.md; ручная установка NaiveProxy и Mieru — в PANEL.ru.md и MIERU.ru.md; TrustTunnel на таком сервере включает scripts/enable-trusttunnel.sh (TRUSTTUNNEL.ru.md).

Установка ИИ-агентом

Используйте проверенный архив выпуска: примеры examples/installer/ входят в него, разработческие тесты и лаборатории — нет. pc_common и pc_host — рабочие библиотеки, а probe/ и deploy/mieru-client/ — приёмочные клиенты установщика; не удаляйте их.

Этот раздел — инструкция для ИИ-агента (Claude Code, Codex и подобных), которому вы дали SSH-доступ к серверу. Агент ставит Proxy Control без мастера: пишет конфигурацию TOML, получает план и устанавливает ровно его после вашего подтверждения.

Полная инструкция для ИИ-агента

Что сказать агенту

Скопируйте и заполните:

Установи Proxy Control на этот сервер по разделу «Установка ИИ-агентом»
из https://github.com/dubr1k/proxy-control (README.md). Соблюдай правила раздела.
Режим сервера: fresh. Профиль: full. 3x-ui: none.
Домены: панель panel.example.com, MTProxy relay.example.com,
NaiveProxy edge.example.com, Mieru mieru.example.com,
подписка клиентов sub.example.com.
Почта для Let's Encrypt: admin@example.com.
WARP: нет.
Пароли не придумывай и не показывай — пусть их создаст установщик.
Перед установкой покажи мне план и дождись моего подтверждения.

Правила для агента

  1. Только названный сервер. Не трогать соседние сайты, контейнеры, маршруты Nginx и другие серверы. Работать обычным пользователем с sudo; от root сценарий установки не запускается.
  2. Ни одного секрета в выводе. Не выбирать, не печатать и не сохранять пароли, ключи доступа, ссылки доступа и QR. Пароли создаёт установщик (пустые значения), либо владелец сам кладёт их в <конфигурация>.credentials с правами 0600. В отчёте — только пути к файлам с учётными данными, не их содержимое.
  3. Отказ проверки — это стоп. Если plan завершился с ненулевым кодом (DNS, CAA, занятый порт, NAT, CDN, чужой владелец 443, неоднозначный Nginx), не обходить проверку и не менять сервер «чтобы прошло»: остановиться и передать владельцу причину дословно.
  4. Ставить только подтверждённый план. Digest берётся из JSON-вывода plan, не переписывается вручную и подтверждается владельцем.
  5. Не повторять установку вслепую. При обрыве — status, затем resume или repair. Не удалять файлы журнала и состояния в /var/lib/proxy-control/.

Шаг 1. Скачать и проверить выпуск

curl -fsSLO https://github.com/dubr1k/proxy-control/releases/latest/download/install-release.sh
curl -fsSLO https://github.com/dubr1k/proxy-control/releases/latest/download/install-release.sh.sha256
sha256sum --check install-release.sh.sha256      # ожидается: install-release.sh: OK
bash install-release.sh --requirements           # что нужно серверу и что будет поставлено
bash install-release.sh --no-wizard              # скачать, проверить и распаковать без мастера
cd proxy-control-v*/proxy-control

Любая ошибка проверки контрольной суммы или выпуска — стоп и отчёт владельцу.

Шаг 2. Написать конфигурацию

Возьмите ближайший пример из examples/installer/ и замените значения на данные владельца:

Пример Режим сервера 3x-ui
core.toml, core-naive.toml, core-mieru.toml fresh none
managed-three-xui.toml fresh managed-new
existing-three-xui.toml, full-three-xui.toml coexist existing
core-amneziawg.toml fresh none, с необязательным [amneziawg]
core-trusttunnel.toml fresh none, с необязательным [trusttunnel] и domains.trusttunnel
cp examples/installer/core.toml ~/proxy-control.toml
chmod 600 ~/proxy-control.toml
# отредактировать: host_mode, profile, acme_email, [domains], [mieru], [three_xui], [firewall]

Необязательные части: domains.subscription (подписки клиентов), domains.mcp (MCP-сервер, только на центральной панели), секция [egress] (WARP и Xray-router), секция [amneziawg] (AmneziaWG: enabled, versions, host, ports, mtu, dns; новый домен не нужен), секция [trusttunnel] (TrustTunnel: enabled, listen_port; нужен свой domains.trusttunnel). Каждое поле описано в справочнике установщика. Пароли в TOML не пишутся.

Шаг 3. Получить план и показать его владельцу

В командах ниже awk читает digest из JSON-плана. Проверяйте его вместе с читаемым планом перед передачей владельцу; Python на сервере не нужен.

sudo bash install.sh plan --config ~/proxy-control.toml --json > ~/plan.json
echo "exit=$?"                                   # не 0 — стоп, причина владельцу
awk -F'"' '/^  "digest": / {print $4}' ~/plan.json
sudo bash install.sh plan --config ~/proxy-control.toml   # читаемый план для владельца

Покажите владельцу читаемый план и digest и дождитесь явного подтверждения.

Шаг 4. Установить ровно этот план

digest=$(awk -F'"' '/^  "digest": / {print $4}' ~/plan.json)
sudo bash install.sh install --config ~/proxy-control.toml --accept-plan "$digest" --json > ~/install.json
sudo bash install.sh status --json      # ожидается "status": "active"

Установка идёт несколько минут и сама проводит приёмку протоколов. При обрыве SSH код 255 говорит только о потере связи: сначала status, затем resume или repair.

Шаг 5. Проверить и отчитаться

cd /opt/mtproxy-shared443 && sudo docker compose ps
curl -fsS -H 'Host: panel.example.com' http://127.0.0.1:8787/healthz   # {"status":"ok"}
sudo nginx -t
systemctl is-active nginx docker

В отчёте владельцу: домены, профиль, digest плана, версия из файла VERSION, состояние контейнеров и служб, пути к учётным данным (/opt/mtproxy-shared443/secrets/panel-bootstrap-password, для managed-new — /var/lib/proxy-control/three-xui/panel-access) и что осталось проверить человеку: вход в панель и подключение настоящим клиентом. Если владелец сохранял <конфигурация>.credentials, напомните удалить этот файл.

После установки агент работает с панелью не через SSH, а через MCP-сервер: выдача доступов, маршрутизация, обновления и диагностика описаны в навыках для типовых задач.

После установки

Панель Proxy Control. Откройте https://<домен панели>/login и войдите как owner. Если пароль оставляли пустым, установщик положил его в /opt/mtproxy-shared443/secrets/panel-bootstrap-password (0600): прочитайте через защищённую консоль, войдите и сразу смените.

Панель 3x-ui (managed-new). Слушает 127.0.0.1:8451 под приватным адресом и доступна снаружи по своему домену через общий 443. Адрес, имя и пароль:

sudo cat /var/lib/proxy-control/three-xui/panel-access

MCP-сервер (если задан domains.mcp). Адрес https://<домен mcp>/mcp и ключ доступа записаны в credentials/handoff.json рядом с отчётом установки (0600, только root). Подключение к Claude Code — в docs/MCP.ru.md.

TrustTunnel (если включён). Убедитесь, что A-запись домена ведёт на сервер без проксирования CDN, и выдайте первый доступ из карточки клиента (ссылка tt://, QR и конфиг TOML в окне доступа); подробности — в TRUSTTUNNEL.ru.md.

Не копируйте эти файлы в Git, сообщения об ошибках, журналы и общие резервные копии. Файл <имя-конфигурации>.credentials, если мастер его создавал, удалите.

Роли. Владелец (owner) — администраторы, API-ключи, клиенты, связанные панели; администратор (admin) — пользователи протоколов и аудит; наблюдатель (viewer) — только просмотр. Последнего владельца нельзя удалить или понизить; каждое изменение требует CSRF и попадает в аудит без паролей, ключей, ссылок и QR.

Обновление

Перед обновлением сделайте резервную копию. В парке связанных панелей сначала обновите узлы, затем центральную панель. Сервер обновляется тем же сценарием, что ставит новый, — режимом --update, обычным пользователем с sudo:

curl -fsSLO https://github.com/dubr1k/proxy-control/releases/latest/download/install-release.sh &&
curl -fsSLO https://github.com/dubr1k/proxy-control/releases/latest/download/install-release.sh.sha256 &&
sha256sum --check install-release.sh.sha256 &&
bash install-release.sh --update

3.3.0 → 4.0 — только этой командой, не кнопкой обновления UI 3.3.0. До любых изменений панели/менеджеров проверенный нативный установщик заменяет Python-агент, сохраняет env, директивы unit и drop-in оператора и требует health status=ok, implementation=rust, version=<цель>. При отказе прежний агент и журнал владения восстанавливаются и проверяются. До обновления 4.0 переведите узлы Fleet v1 на v2. Python и Cargo на хосте не нужны: Bash/awk проверяет оба готовых бинарника до запуска.

Что обновляется и как работают обновления компонентов

Сценарий проверяет выпуск так же, как при установке, и просит version-agent сервера обновить панель ровно до проверенного архива — с резервной копией файлов, образа и базы и откатом при неудаче; затем пересобирает изменившиеся службы управления. Telemt, сертификаты, .env и secrets/ не трогаются. Если на сервере включён AmneziaWG и его исходники изменились, awg-manager пересобирается: туннели на секунды рвутся и клиенты переподключаются сами; /var/lib/awg-manager с ключами сервера не трогается. Так же пересобирается trusttunnel-manager: перезапуск endpoint ненадолго рвёт сессии, /var/lib/trusttunnel-manager не трогается.

Отдельные компоненты — Telemt, NaiveProxy/Caddy, Mieru/mita, AmneziaWG (amneziawg-go), TrustTunnel (endpoint), Xray-router и саму панель — можно обновить с экрана «Версии». Кнопка «Проверить обновления» показывает новые выпуски этих проектов с их опубликованной контрольной суммой; выпуск без контрольной суммы виден, но не ставится. Контрольная сумма обнаруживает подмену относительно опубликованного значения, но сама по себе не подтверждает автора и не означает, что версия проверена в Proxy Control. Обновление доступно только владельцу, и при ошибке агент возвращает предыдущую версию. Уже установленный 3x-ui обновляется его собственными средствами.

Полный порядок и откат — в docs/UPGRADING.ru.md.

Повседневная работа

Проверки состояния, резервная копия, восстановление и удаление

Проверка состояния

cd /opt/mtproxy-shared443
docker compose ps
curl -fsS -H 'Host: panel.example.com' http://127.0.0.1:8787/healthz
sudo nginx -t
ss -lntup
systemctl is-active nginx docker
systemctl is-active caddy-naive mita

Заголовок Host обязателен: панель принимает только своё публичное имя. Ожидается {"status":"ok"}. Перед тем как показывать вывод, уберите пароли, URL доступа, QR, ключи и сертификаты.

Резервная копия

Главное — база панели и мастер-ключ secrets/panel-master-key, который хранится отдельно от базы: без него зашифрованные учётные данные не восстановить. Для online backup без остановки службы нужен sqlite3 CLI на хосте (не требуется самому Proxy Control). Используйте фактический mount /data контейнера и закрытый каталог вне тома:

umask 077
backup=$(sudo mktemp -d /root/proxy-control-db.XXXXXX)
db_dir=$(sudo docker inspect --format '{{range .Mounts}}{{if eq .Destination "/data"}}{{.Source}}{{end}}{{end}}' proxy-control-panel)
test -n "$db_dir" && sudo test -f "$db_dir/panel.sqlite3" || exit 1
sudo sqlite3 "$db_dir/panel.sqlite3" ".backup '$backup/panel.sqlite3'"
sudo sqlite3 "$backup/panel.sqlite3" 'PRAGMA integrity_check;'

Ожидается ровно ok. Что ещё резервировать для Telemt, NaiveProxy, Mieru, TrustTunnel (/var/lib/trusttunnel-manager), Nginx и Fleet и как восстанавливать — в docs/BACKUP_RESTORE.ru.md.

Если установка прервалась

sudo bash install.sh status --json
sudo bash install.sh resume --json
sudo bash install.sh repair --json

resume продолжает прерванную установку с сохранённой фазы. repair проверяет, что всё принадлежащее установщику на месте и не изменено, и перезапускает только свои службы. Не удаляйте journal.json, journal.key, transaction.json, файлы WAL/SHM и резервные копии, чтобы «починить» запуск.

Удаление

sudo bash install.sh uninstall --json

Удаление останавливает службы и убирает только принадлежащие установщику маршруты, файлы и пакеты. Пакеты, которые установщик поставил сам (на чистом сервере это, например, docker.io и certbot), снимаются apt-get remove: тома Docker с базой панели, секреты, сертификаты и каталоги сайтов-прикрытий остаются. После удаления проверьте nginx -t, публичные слушатели и соседние SNI.

[!WARNING] uninstall --purge-data удаляет и данные: тома, состояние служб и — через apt-get purge тех же пакетов — /var/lib/docker целиком и /etc/letsencrypt с сертификатами. Перед ним сделайте резервную копию и унесите её с сервера.

Возможности подробнее

Клиенты, протоколы, Fleet, маршрутизация, MCP и мониторинг

Клиенты, доступы и подписки

Карточки клиентов и узлов показывают краткое состояние; подробности открываются кнопкой «Открыть». Подписка доступна отдельной кнопкой, QR и инструкция раскрываются по запросу.

Экран «Клиенты» держит человека и все его доступы к MTProxy, NaiveProxy, Mieru, AmneziaWG и TrustTunnel вместе: поиск и фильтры по всему списку, импорт существующих пользователей служб только чтением, выдача доступа одной журналируемой операцией с честным исходом — succeeded, compensated или manual_intervention_required. Каждому клиенту — одна ссылка https://<домен подписки>/s/<token> на все его доступы в форматах raw, singbox (Karing и sing-box), clash (mihomo), manifest и html. Ключ ссылки показывается один раз, в базе хранится только его контрольная сумма, отзыв действует мгновенно, запросы подписки не пишутся в журналы. Подробно — PANEL.ru.md.

Имена подключений в подписке начинаются с имени узла: AMS · Naive, AMS · Mieru · TCP 8443. Имя берётся из экрана «Узлы», в том числе для локального сервера. При совпадении имён добавляется стабильный короткий суффикс доступа. Клиента можно переименовать кнопкой «Переименовать» на его карточке, а любому доступу задать своё название в подписке: окно доступа → «Название в подписке». Протокол добавляется автоматически: например, Ams-server · Naive или Ams-server · Mieru. Пустое название возвращает «узел · протокол». Переименование меняет только отображение: учётные записи, адреса и секреты остаются прежними. После любого переименования обновите подписку в приложении — URL, логины и пароли не меняются. Throne использует формат singbox (вариант Karing). В raw имя передаётся в подписи Naive и поле profile Mieru; ссылка Telegram MTProxy не меняется.

Протоколы

  • MTProxy / Telemt. Источник истины после первого запуска — том telemt-config; квота и счётчик процесса — разные величины. DOCKER_DEPLOYMENT.ru.md
  • NaiveProxy. Без пароля домен показывает страницу-прикрытие, а не «407». Один URL https://<user>:<pass>@<домен> работает и как HTTPS, и как HTTP/2. Через прокси идёт только TCP; HTTP/3 наружу не публикуется. Проверенные клиенты — naive, Karing и sing-box. PANEL.ru.md
  • Mieru. Свои TCP-порты, порт 443 не занимает. Проект проверяет и обещает только TCP: UDP-профили в реальных сетях у клиентов не работают. Квота — приблизительная проверка, не платёжный счётчик. MIERU.ru.md, выдача доступов
  • AmneziaWG. Необязательный VPN поверх UDP. Три несовместимые версии — 1.5, 2.0 и 3.1 — работают одновременно, каждая на своём интерфейсе и UDP-порту; доступ всегда одной версии. Закрытый ключ клиента хранит панель, узел знает только открытый. Конфиг выдаётся файлом и QR, в подписки он не входит. Нужно DNS-имя, доходящее до сервера напрямую по UDP; новый домен не нужен. AMNEZIAWG.ru.md
  • TrustTunnel. Необязательный VPN от AdGuard: HTTP/2 поверх TLS, только TCP (QUIC и UDP не используются), на общем 443 через SNI; нужен свой домен без проксирования CDN. Доступ — ссылка tt:// с QR и конфиг TOML (в официальных приложениях AdGuard для iOS и Android и в клиенте командной строки), запись trusttunnel в ленте Clash/mihomo; в ленте sing-box его нет. Каждое изменение доступа ненадолго перезапускает endpoint. Маршрутизация — только для всей службы, без полос для клиентов. TRUSTTUNNEL.ru.md
  • 3x-ui. Остаётся отдельной панелью со своим интерфейсом; Proxy Control следит, чтобы оба жили на одном 443. В managed-new входящие подключения слушают 127.0.0.1:8449 (VLESS Reality TCP), 127.0.0.1:8450 (XHTTP) и 0.0.0.0:443/UDP (Hysteria2); подписка 3x-ui публикуется только при заданном subscription_domain.

Связанные панели (Fleet)

Одна панель становится центральной и управляет другими по их собственным HTTPS-доменам: на узле владелец создаёт API-ключ node-sync, на центре «Узлы → Добавить узел» принимает URL и ключ, затем «Импортировать» забирает существующих пользователей. На серверах не появляется ничего, кроме образа панели. Доверие — WebPKI или закреплённый отпечаток сертификата; желаемое состояние узла — нумерованные поколения с контрольной суммой; узел без связи догоняет при возвращении. Подробно — FLEET.ru.md.

Маршрутизация и WARP

Для каждого узла и службы задаётся политика исходящего трафика: весь трафик напрямую или через WARP, свой выход, другой узел парка (цепь до трёх узлов), блокировки по домену и CIDR. Необязательный Xray-router на узле добавляет geosite, geoip и порты; через него маршрутизируется и MTProxy. Предпросмотр показывает ровно то, что применит служба узла; применение транзакционно с откатом — локально и на связанных панелях.

WARP — одна локальная точка SOCKS5 на 127.0.0.1:40000. Установщик ставит закреплённый официальный клиент Cloudflare, проверяет SHA-256 и принимает WARP только после реального HTTPS-запроса через SOCKS5 с внешним IP, отличным от прямого выхода. Клиент WARP — проприетарная внешняя зависимость, он не входит в MIT-лицензию проекта и в архив выпуска.

Протокол Что уходит через WARP
Xray / управляемый 3x-ui Домены из warp_domains. Маршрутизация принятого 3x-ui (existing) не меняется.
NaiveProxy Начальное значение [egress].naive; дальше решает политика маршрутизации панели.
Mieru Начальное значение [egress].mieru; дальше решает политика маршрутизации, включая выборочные правила.

Подробно — docs/ROUTING.ru.md и docs/XRAY_ROUTER.ru.md.

MCP-сервер и навыки для ИИ

Контейнер proxy-control-mcp на центральной панели открывает API панели как инструменты Model Context Protocol по https://<домен mcp>/mcp. Каждый вызов идёт через API-ключ mcp и виден в аудите; необратимые действия требуют confirm: true. В skills/ лежат готовые инструкции для ИИ по типовым задачам: утренний обзор, выдача доступа, диагностика, маршрутизация, обновления. Подключение — docs/MCP.ru.md.

Мониторинг

Экран «Мониторинг» (три вкладки: «Сейчас», «Трафик», «Узлы») показывает загрузку сервера и скорость каждого протокола вживую и хранит историю: минутные точки 3 суток, 15-минутные 35 суток, часовые 400 суток. Байты по протоколам считает собственная таблица nftables, которая только считает и ничего не блокирует; направление — с точки зрения клиента, байты сетевого уровня с заголовками. Центральная панель показывает и связанные узлы. Что измеряется, API, пороги оповещений и диагностика — MONITORING.ru.md.

Пока не поддерживается

Управление доступами 3x-ui из Proxy Control, постепенное применение правил к части узлов, UDP через Xray-router и обновление панели узла из центра. Для клиентов Mieru заявлен только TCP. Учёт трафика не предназначен для расчёта платежей.

Если что-то не работает

  • Панель не открывается. Проверьте 127.0.0.1:8787, PANEL_ALLOWED_HOSTS, виртуальный узел HTTPS на 8443, базу SQLite и владельца тома.
  • MTProxy запущен, но клиент не подключается. Проверьте A/AAAA, отсутствие CDN, карту SNI, имя Fake-TLS и настоящий ответ resPQ — открытый порт ничего не доказывает.
  • Учёт NaiveProxy не растёт. Запись появляется только после закрытого CONNECT.
  • Служба управления Mieru не отвечает. Проверьте версию mita, /run/mita/mita.sock и GID сокета. Не применяйте рекурсивный chown вслепую.
  • TrustTunnel не подключается. В профиле должен быть именно домен TrustTunnel (по IP-адресу endpoint отказывает), без проксирования CDN; менеджер degraded с certificate_missing — нет сертификата домена. Подробнее — TRUSTTUNNEL.ru.md.
  • Нет QR старого пользователя Mieru. «Конфигурация» показывает сохранённый ключ; если ключ не сохранён, один раз нажмите «Новый ключ».

Больше случаев — устранение проблем и руководство по эксплуатации.

Что внутри

Пакеты, версии компонентов, образы и зависимости

Пакеты сервера

Адаптер packages ставит ровно эти пакеты: ca-certificates, certbot, curl, docker-compose-v2, docker.io, nginx-full, openssl.

Закреплённые версии сторонних компонентов

Установщик скачивает их по закреплённым HTTPS-адресам и отказывается продолжать, если контрольная сумма не совпала. Версию образа Telemt закрепляет compose; панель может обновить Telemt и сверх образа — из бинарника релиза telemt/telemt с проверенной SHA-256 (локально собранный образ на закреплённом образе реестра).

Компонент Версия Лицензия Назначение
mita (enfein/mieru) 3.38.1 GPL-3.0-or-later Сервер Mieru; ставится только исполняемый файл и уведомление о лицензии.
mieru (enfein/mieru) 3.38.1 GPL-3.0-or-later Официальный клиент Mieru для приёмки трафика.
three_xui (MHSanaei/3x-ui) 3.10.2 GPL-3.0-only Панель 3x-ui и её Xray для VLESS Reality и Hysteria2 в режиме managed-new.
xray (XTLS/Xray-core) 26.10.21 MPL-2.0 Xray-router: из Xray-linux-64.zip берутся только xray, geoip.dat и geosite.dat, каждый по своей контрольной сумме.
trusttunnel (TrustTunnel/TrustTunnel) 1.1.0 Apache-2.0 Endpoint TrustTunnel: архив скачивается и сверяется при сборке образа trusttunnel-manager; запускается без изменений как подпроцесс.

amneziawg-go (лицензия MIT, проект Amnezia VPN) собирается в образ awg-manager по awg_manager/Dockerfile из закреплённого коммита, на сервере; готового бинарного файла в выпуске нет. Caddy v2.11.7 с модулем http.handlers.forward_proxy собирается по docker/Dockerfile.caddy-naive. Адреса, контрольные суммы и идентификаторы SPDX — в release/external-artifacts.json, который сборка выпуска встраивает в SBOM.

Образы контейнеров

Dockerfile Образ База
panel/Dockerfile API и интерфейс панели (Rust) rust:1.99-slim-bookworm (сборка), debian:bookworm-slim
naive_manager/Dockerfile Управление доступами и учёт NaiveProxy (Rust) rust:1.99-slim-bookworm (сборка), debian:bookworm-slim
mieru_manager/Dockerfile Управление доступами и квотами Mieru (Rust) rust:1.99-slim-bookworm (сборка), debian:bookworm-slim
xray_router_manager/Dockerfile Xray-router: служба управления (Rust) и мост MTProxy (Go) golang:1.25.12, rust:1.99-slim-bookworm (сборка), debian:bookworm-slim
mcp_server/Dockerfile MCP-сервер (Rust, только центральная панель) rust:1.99-slim-bookworm (сборка), debian:bookworm-slim
awg_manager/Dockerfile AmneziaWG: служба управления (Rust) и amneziawg-go (необязательно) golang:1.25.12, rust:1.99-slim-bookworm (сборка), debian:bookworm-slim
trusttunnel_manager/Dockerfile TrustTunnel: служба управления (Rust) и закреплённый trusttunnel_endpoint (необязательно) rust:1.99-slim-bookworm (сборка), debian:bookworm-slim
deploy/mieru-client/Dockerfile Нативный клиент Mieru для приёмки rust:1.99-alpine (сборка), debian:bookworm-slim
probe/Dockerfile Проба MTProto на TDLib node
docker/Dockerfile.caddy-naive Caddy с forward_proxy caddy:2.11.7-builder → scratch
release/Dockerfile.host-binaries Сборщик выпуска: готовые бинари для хоста (статический musl, воспроизводимо), не образ для запуска rust:1.99-alpine → scratch
scripts/lab/Dockerfile.acceptance Одноразовый systemd-контейнер стенда ubuntu

Каждая база закреплена по контрольной сумме.

Зависимости

Зависимости панели и служб управления закреплены в их Cargo.lock; образ панели не содержит интерпретатора Python. Административные команды выполняет бинарник panel cli.

Python используется инструментами сборки, разработки и лабораторного стенда, а не процессом панели. Зависимости стенда закреплены в panel/requirements-dev.txt.

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

Тема Документ
Карта всей документации docs/README.md
Установка на Ubuntu 24.04 INSTALL.ru.md
Все команды и поля установщика docs/INSTALLER_REFERENCE.ru.md
Панель, роли, API-ключи, NaiveProxy PANEL.ru.md
MTProto за Nginx DOCKER_DEPLOYMENT.ru.md
Mieru MIERU.ru.md, выдача доступов
AmneziaWG AMNEZIAWG.ru.md
TrustTunnel TRUSTTUNNEL.ru.md
Мониторинг MONITORING.ru.md
Связанные панели FLEET.ru.md
Маршрутизация и Xray-router docs/ROUTING.ru.md, docs/XRAY_ROUTER.ru.md
MCP-сервер docs/MCP.ru.md
Эксплуатация docs/OPERATIONS.ru.md
Резервное копирование docs/BACKUP_RESTORE.ru.md
Обновление и откат docs/UPGRADING.ru.md
Устранение проблем docs/TROUBLESHOOTING.ru.md
Протокол разработки для ИИ-агентов AGENTS.md
Журнал изменений CHANGELOG.ru.md

Безопасность

  • Не публикуйте .env, secrets/, URL доступа, QR, ключи доступа, базы, журналы и ключи PKI.
  • Не открывайте наружу Telemt API, управляющие Unix-сокеты и Caddy Admin API.
  • Не подключайте сокет Docker к службам проекта.
  • Не меняйте закреплённые Telemt, Caddy или mita без проверки происхождения, контрольных сумм и плана отката.
  • Перед боевым развёртыванием прочитайте SECURITY.md и политику совместимости.

Разработка

Сборка и проверки выполняются нативно на Ubuntu 24.04 с закреплённым Rust 1.99. Внешние HTTP- и браузерные проверки используют Python, но запускают панель отдельным Rust-процессом. Подготовка бинарников, образов и тестового окружения, команды проверок — в CONTRIBUTING.md.

Приёмка установщика на архиве выпуска описана в tests/lab/README.md. Рабочий протокол для ИИ-агентов — AGENTS.md.

Лицензия и благодарности

Код распространяется по лицензии MIT. Сторонние компоненты сохраняют собственные лицензии — их перечень, сведения о происхождении и уведомления об авторских правах в THIRD_PARTY_NOTICES.md.

Proxy Control опирается на работу авторов и сопровождающих этих проектов:

Проекты и библиотеки
Компонент За что благодарим Ссылка
Telemt Служба MTProto/MTProxy на Rust telemt/telemt
TrustTunnel VPN поверх HTTP/2 и TLS (AdGuard) TrustTunnel/TrustTunnel
Mieru и mita Прокси и средства управления enfein/mieru
3x-ui Панель управления Xray MHSanaei/3x-ui
Xray-core Маршрутизатор исходящего трафика XTLS/Xray-core
Caddy Обратный прокси HTTPS и управление TLS caddyserver/caddy
forwardproxy Модуль HTTP CONNECT для Caddy klzgrad/forwardproxy
Nginx Маршрутизация по SNI на общем порту 443 nginx.org
Certbot и Let's Encrypt Выпуск и продление сертификатов Certbot · Let's Encrypt
Docker и Compose Изолированное выполнение служб Docker · Compose
Библиотеки Rust Tokio, Hyper, Axum, rusqlite, rustls, Argon2, AES-GCM, qrcode зависимости панели

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

About

Rust control panel for MTProxy, NaiveProxy, Mieru, AmneziaWG and TrustTunnel, with transactional installation, routing, monitoring and HTTPS-linked panels.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

10 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages