rospanel

module
v0.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 10, 2026 License: AGPL-3.0

README

РосПанель

РосПанель

Простая self-hosted панель управления VPN на Xray-core.

Release Go Xray-core React Platform Deploy



Что это

РосПанель — это лёгкая панель для самостоятельного хостинга личного VPN-сервера. Под капотом один процесс Xray-core, который сразу поднимает несколько протоколов, а панель даёт удобный веб-интерфейс: пользователи, подписки, тарифы и приём платежей, маршрутизация, статистика, бэкапы, брендинг и тема — без правки конфигов руками.

Главное отличие от Marzban / 3x-ui — радикальная простота: вся панель это один статический бинарник (фронтенд вшит через go:embed), без Docker-обвязки, без внешней БД, без отдельного веб-сервера. Поставил, открыл, добавил юзера.

Это панель управления (control plane), а не VPN-клиент и не «волшебная кнопка». Она лишь настраивает и обслуживает ваш собственный сервер: генерирует конфиг Xray, выдаёт ссылки/подписки и показывает статистику. Назначение — образовательное и исследовательское: изучение сетевых технологий, CTF-соревнования, авторизованный пентест и управление личной инфраструктурой. Проект не предназначен для обхода законных ограничений; ответственность за установку, настройку и использование несёт оператор (см. Дисклеймер).


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

🔐 Протоколы (один Xray-конфиг, один набор учёток)
  • VLESS-Vision — TCP/443 + uTLS-fingerprint
  • Trojan-WS — через fallback на 443
  • Hysteria2 — UDP с port-hopping
  • VLESS-gRPC-REALITY — отдельный порт, маскировка под чужой TLS
🎭 Маскировка
  • Панель спрятана за секретным путём
  • Любой другой путь отдаёт сайт-заглушку — сервер неотличим от обычного хостинга
  • 11 готовых шаблонов заглушек
🔑 TLS из коробки
  • ACME: Let's Encrypt и ZeroSSL
  • Self-signed fallback, пока не выпустится настоящий сертификат
  • Авто-продление
🧭 Маршрутизация и выходы
  • Категории block / direct / proxy / WARP / Opera с настраиваемым приоритетом
  • geosite/geoip пресеты (авто-загрузка баз)
  • Cloudflare WARP (WireGuard) — выход через WARP по правилам
  • Opera VPN — бесплатный выход с выбором региона (Европа / Азия / Америка)
  • Прокси — список из URL или вручную, балансировка по живым (Observatory)
📊 Пользователи и статистика
  • Лимиты трафика и срок действия с авто-отключением, авто-сброс (день/неделя/месяц/год)
  • Лимит устройств на пользователя — по уникальным публичным IP (одно устройство = один IP); при превышении юзер автоматически отключается, пока число активных IP не упадёт
  • Учёт трафика через Xray Stats API, онлайн-статус, список IP подключений (онлайн/офлайн)
  • Поиск, фильтр по статусу и сортировка (по имени/трафику/сроку/онлайну) + пагинация — список не тормозит и на сотнях пользователей
  • Групповые операции: выделение нескольких пользователей и одним действием включить / выключить / сбросить трафик / продлить срок / удалить — на сервере это один проход и одна перезагрузка конфига Xray вместо операции на каждого
  • Дашборд: CPU / RAM / swap / диск / сеть / VPN-трафик в реальном времени, аптайм
📲 Подписки
  • /<путь>/<токен> — base64-список + страница с QR и deep-links
  • Кнопки импорта в популярные VPN-клиенты
  • Авто-роутинг-заголовки (Happ / INCY / Mihomo)
  • Имя пользователя в заголовке подписки (опционально) — удобно, когда у клиента несколько профилей
  • Свои названия узлов — на каждый протокол своя метка вместо дефолтной (VLESS-TCP-TLS, VLESS-GRPC-REALITY…); видна в клиенте и на странице подписки. Меняется в Настройки → Подключения, без перезагрузки Xray
  • Дата обновления лимита на странице подписки — когда обнулится трафик, если у тарифа задан период сброса
  • Сброс ссылки подписки (ротация токена) — старая ссылка мгновенно перестаёт работать, при этом UUID и пароли протоколов не меняются
🎨 Брендинг и тема
  • Название и логотип панели — своё имя вместо «РосПанель» и кастомный логотип (PNG/JPEG, ≤ 512 КБ); применяются и в панели, и на странице подписки. Настраивается в Настройки → Брендинг
  • Редактор цветовой схемы — пять токенов: акцент, текст, приглушённый текст, фон и поверхность. Акцент одним цветом перекрашивает весь интерфейс (кнопки, ссылки, вкладки, рамки, графики); можно выбрать готовый пресет или любой #RRGGBB
  • Полноценная тёмная тема — задаёте тёмные фон/поверхность, и всё (текст, статусы, бейджи, графики, страница подписки) автоматически подстраивается под светлоту, сохраняя контраст для любого сочетания цветов
  • Всё попадает в резервную копию: имя и цвета — в БД, логотип — файлом в каталоге данных
💳 Биллинг и тарифы (опционально)
  • Тарифные планы: цена (₽), срок действия, лимиты трафика и устройств. Редактируются в Настройки → Оплата. Цена 0 — бесплатный тариф: не истекает, а квота трафика обнуляется каждый срок действия (например, раз в 30 дней). Платный истекает по сроку и требует продления
  • Пробный период и бесплатный тариф-фоллбэк: новые регистрации в пользовательском боте получают триал, затем автоматически переходят на бесплатный; истёкшие платные тоже даунгрейдятся на бесплатный. Тариф, назначенный «пробным» в настройках, всегда истекает по сроку — в том числе при ручной выдаче
  • Назначение тарифа вручную — из карточки пользователя в панели или из админ-бота; режим «вручную» снимает тариф и обнуляет лимиты. При выключенном биллинге всё работает как раньше
  • Продление, отмена, миграция: активный платный тариф можно продлить (время добавляется к текущему сроку) или отменить; при выводе тарифа из линейки всех его пользователей переносят на другой одним действием
💰 Приём платежей (опционально)
  • ЮКасса (карты, ₽) и CryptoBot (крипта в Telegram) — настраиваются в Настройки → Оплата → Приём платежей (ключи шифруются в БД)
  • Авто-активация: в боте или на странице подписки клиент видит текущий тариф, выбирает план и способ оплаты → получает ссылку → после оплаты тариф включается сам, боту приходит подтверждение. Пока активен платный тариф, показывается только продление/отмена, а не переключение на другой
  • Подтверждение двумя путями: мгновенный вебхук (ЮКасса перепроверяется запросом к API, CryptoBot — по HMAC-подписи) + поллинг каждые 25 c как страховка, если вебхук не дошёл. Обработка идемпотентна
  • Вебхук висит на случайном секретном пути — фиксированный URL для кабинета провайдера, но он не раскрывает скрытую панель (готовый URL с кнопкой копирования показан в настройках)
  • Тестовые режимы: CryptoBot → testnet (@CryptoTestnetBot); ЮКасса → тестовый магазин
  • Без провайдеров — ручной режим: создаётся заказ, админ подтверждает оплату (с вводом своего пароля) из раздела «Ожидают оплаты»
🔌 REST API (опционально)
  • Внешний API для управления панелью из своих систем (биллинг, магазин-бот, скрипты провижининга): создание / удаление / изменение пользователей, тарифы, заказы, статистика трафика. Вызывает ту же логику, что и панель, — поведение не расходится
  • Именованные ключи с авторизацией Authorization: Bearer <ключ>. Ключ показывается один раз при создании, в БД хранится только его HMAC-хэш (с тем же per-install-«перцем», что и сессии) и префикс для опознания; ключи можно отзывать
  • Свой стабильный адрес /<путь>/v1/... — отдельный от секретного пути панели, поэтому ротация секрета не ломает интеграции; адрес можно сменить или выключить. Настраивается в Настройки → API
  • OpenAPI-спека из кода — /<путь>/v1/openapi.json генерируется рефлексией по Go-типам (не расходится с реализацией) + Swagger UI на /<путь>/v1/docs для живых вызовов из браузера
  • Вебхуки — панель сама шлёт POST на ваши адреса при событиях (создание/удаление юзера, истечение, исчерпание трафика, оплата) вместо опроса. Каждая доставка подписана HMAC-SHA256 (заголовок X-RosPanel-Signature), с ретраями и бэкоффом; получатель может быть и во внутренней сети. Настройка — Настройки → API → Вебхуки. Полное описание — в docs/api.md
🤖 Telegram-боты
  • Админ-бот: список пользователей, добавление, удаление, вкл/выкл, сброс трафика, назначение тарифа, QR-подписка по юзеру; бэкапы по расписанию (cron) и по команде. Привязка чата одноразовым кодом (/start <код>) — бот отвечает только привязанным чатам. Уведомления о событиях (настраиваются переключателями в Настройки → Telegram): новая регистрация, истечение подписки, исчерпание трафика, превышение лимита устройств, сбой/перезапуск Xray, продление или ошибка TLS-сертификата, новые заказы и оплаты
  • Пользовательский бот (отдельный токен): открытый бот для клиентов — саморегистрация (получают подписку сами), личное меню с подпиской, QR и статистикой, выбор и покупка тарифа; привязка существующего аккаунта по одноразовой ссылке — короткоживущий код вместо постоянного токена. Саморегистрацию можно включать/выключать. Ссылка на бота прокидывается в клиенты как support-url (кнопка поддержки в Happ)
🧰 Эксплуатация
  • Диагностика — кнопка в разделе «Управление» на дашборде открывает модальное окно со сводкой здоровья: процесс Xray, последнее применение конфига, TLS-сертификат (срок/тип), свободное место на диске и ОЗУ, свежесть geo-баз, состояние выходных каналов. Каждая проверка — ОК / предупреждение / проблема с подсказкой, что делать
  • Бэкап / восстановление и сброс к заводским — из дашборда и из CLI
  • Логи приложения с ротацией + просмотрщик прямо в панели
  • Брутфорс-защита: бан по iptables за перебор на SOCKS/HTTP-инбаунде
  • Обновление из GitHub Releases (rospanel update)
  • Режим прокси: socks/http forward-inbound для цепочек РосПанель↔РосПанель
🔒 Безопасность
  • Шифрование секретов в БД (AES-GCM): токены ботов, приватные ключи WARP/REALITY, пароли пользователей хранятся зашифрованными. Ключ — secrets.key в каталоге данных (входит в бэкап, поэтому восстановление на новом сервере работает «из коробки»)
  • Step-up-аутентификация: чувствительные операции (подтверждение оплаты) требуют повторного ввода пароля администратора
  • HMAC-сессии: токены сессий хешируются с per-install-«перцем» (session pepper)
  • SSRF-защита исходящих запросов (списки прокси, шаблоны авто-роутинга): только https, запрет приватных/link-local/metadata-адресов и защита от DNS-rebinding
  • Одноразовые коды привязки Telegram с коротким сроком жизни

🚀 Быстрый старт

Вариант 1 — установочный скрипт (рекомендуется)

Одной командой: скачает релиз, поставит systemd-сервис, запустит и покажет логин.

curl -Ls https://raw.githubusercontent.com/AppsGanin/rospanel/main/install.sh | sudo bash

Скрипт спросит домен: укажите его — панель запросит TLS-сертификат через ACME; оставьте пустым — будет работать по IP. Можно задать заранее, тогда вопроса не будет: curl -Ls … | sudo ROSPANEL_HOST=vpn.example.com bash.

Xray, geo-базы и TLS-сертификат панель подтянет сама. Откройте https://<ваш-домен-или-IP>/<секрет>/ и войдите. Поддерживаются linux/amd64 и linux/arm64 — скрипт сам выберет нужный бинарь по архитектуре.

Вариант 2 — бинарник + systemd вручную
# скачать последний релиз (замените amd64 на arm64 для ARM-серверов)
curl -fsSL -o rospanel \
  https://github.com/AppsGanin/rospanel/releases/latest/download/rospanel-linux-amd64
chmod +x rospanel

# установить как сервис (копирует бинарь в /usr/local/bin, пишет systemd-юнит, стартует)
sudo ./rospanel install
#   сразу с доменом:  sudo ROSPANEL_HOST=vpn.example.com ./rospanel install

# логин и секретный путь печатаются ОДИН раз:
journalctl -u rospanel | grep -A6 FIRST-RUN
Вариант 3 — Docker
docker run -d --name rospanel \
  --network host \
  --cap-add NET_ADMIN \
  -v rospanel-data:/data \
  ghcr.io/appsganin/rospanel:latest

docker logs rospanel | grep -A6 FIRST-RUN

--network host нужен, чтобы Xray слушал 443/TCP, 80/TCP и UDP-порты Hysteria2 напрямую; NET_ADMIN — для port-hopping и бана по iptables.

🔑 Вход по умолчанию
Поле Значение
Логин admin
Пароль admin
Путь панели /rospanel/

То есть сразу после установки панель доступна по адресу https://<домен-или-IP>/rospanel/. Точная ссылка дублируется в логе (journalctl -u rospanel | grep -A6 FIRST-RUN или docker logs rospanel | grep -A6 FIRST-RUN).

При первом входе мастер настройки принудительно потребует сменить пароль и предложит сменить путь панели на случайный секрет — дефолтные admin/admin и /rospanel/ работают только до этого шага.

⚠️ После смены панель доступна только по секретному пути — корень отдаёт страницу-обманку. Без знания /<secret>/ форму логина не найти.


🛠️ CLI

rospanel                     запустить панель (обычно через systemd)
rospanel install             установить systemd-сервис и запустить (root)
rospanel uninstall [-y]      снять сервис (данные сохраняются)
rospanel start|stop|restart  управление сервисом
rospanel status              статус сервиса
rospanel update [-y]         обновиться до последнего релиза с GitHub
rospanel backup [файл]       снапшот .tar.gz (БД + ключ шифрования + сертификаты + конфиг Xray)
rospanel restore [-y] <файл> восстановить из снапшота (применится при старте)
rospanel host [-y] [домен|IP] показать/сменить адрес (перевыпуск TLS)
rospanel path                показать URL панели и проверить secrets.key / БД
rospanel reset [-y]          сброс к заводским настройкам (стирает БД)
rospanel version             версия
rospanel help                полная справка

Деструктивные команды (reset, restore, host, uninstall) спрашивают подтверждение; флаг -y его пропускает.


🧱 Архитектура

Единственный источник правды — SQLite; конфиг Xray всегда генерируется из неё и применяется супервизором. Веб-панель встроена в бинарник.

cmd/rospanel/        запуск сервера + CLI (main / service / cli)
internal/
  model/             доменные типы (User, Settings, RoutingConfig, …)
  store/             SQLite + миграции
  auth/              argon2id, секреты/токены, сессии
  datasec/           шифрование секретов в БД (AES-GCM, ключ secrets.key)
  netguard/          SSRF-safe HTTP (валидация исходящих URL)
  tlsmgr/ tlsutil/   ACME (Let's Encrypt / ZeroSSL) + self-signed
  decoy/             сайт-заглушка (шаблоны)
  geo/               geoip.dat / geosite.dat
  hop/               nftables port-hopping (Hysteria2)
  xray/              типизированный конфиг + генератор + supervisor + stats
  warp/              Cloudflare WARP (WireGuard outbound)
  opera/             хелпер Opera VPN (загрузка бинаря + supervisor)
  proxypool/         пул прокси + health-check (Observatory)
  proxyproto/        PROXY-протокол листенер (реальный IP клиента)
  logbuf/            кольцевой лог-буфер + ротация в файл
  link/ sub/         сборка ссылок и подписок
  backup/            tar.gz снапшоты
  updater/           обновление из GitHub
  sysstat/ netinfo/  метрики хоста + определение публичного IP
  tuning/            включение TCP BBR
  core/              сервисный слой (reconcile, квоты, тарифы, TLS, трафик, роутинг)
  server/            маскировка-роутер + API + rate-limit + step-up-аутентификация
web/                 React + Vite + Tailwind (встраивается через go:embed)
install.sh           установщик: релизный бинарь + systemd-юнит (`rospanel install`)

Стек: Go 1.26 · Xray-core · SQLite (modernc, без CGO) · React + Vite + Tailwind.


⚠️ Дисклеймер

Программное обеспечение предоставляется «как есть» (as is), без каких-либо гарантий, явных или подразумеваемых.

Назначение проекта — образовательное и исследовательское. Он создан для изучения принципов работы сетевых протоколов, TLS и прокси-технологий; для проведения CTF-соревнований и лабораторных работ по сетевой безопасности; для авторизованного тестирования на проникновение и для управления собственной инфраструктурой. Это учебный и исследовательский инструмент, а не средство для какой-либо противоправной деятельности.

Проект не предназначен для обхода законных ограничений, нарушения законодательства или иных противоправных действий. Реализованные механизмы маскировки служат для изучения соответствующих технологий и проверки устойчивости сетевых сервисов в рамках санкционированного тестирования.

Всю ответственность за установку, настройку и эксплуатацию, а также за соблюдение законов своей юрисдикции несёт оператор сервера. Авторы и контрибьюторы проекта не несут ответственности за способы его использования третьими лицами.


🧑‍💻 Разработка

# фронтенд (после изменений в web/)
npm --prefix web install
npm --prefix web run build      # → web/dist (вшивается в бинарник)

# бинарник
go build -o rospanel ./cmd/rospanel
./rospanel

Полезные переменные окружения (все опциональны): ROSPANEL_DATA (каталог данных), ROSPANEL_ADMIN_ADDR (loopback-адрес панели, по умолчанию 127.0.0.1:8080), XRAY_BIN, ROSPANEL_HOST, ROSPANEL_ACME_EMAIL.

PR и issue приветствуются. Коммиты — в стиле Conventional Commits: на их основе release-please собирает релиз и публикует бинарь + Docker-образ в GHCR.


💝 Поддержать проект

РосПанель развивается в свободное время и распространяется бесплатно. Если панель оказалась полезной — можно поддержать разработку.

Удобнее всего — через DonationAlerts или Boosty (картой РФ, разово или регулярно). Либо донатом в USDT — выберите удобную сеть и внимательно скопируйте адрес (сеть отправителя и получателя должны совпадать):

Сеть Токен Адрес
TRC20 (Tron) USDT TJwyrPVEZVZ1YrcmDiZTyFjLo3Q2DmEGzs
ERC20 (Ethereum) USDT 0xf9d663146ce902da91911b214c71cc73a5269d1d
Solana USDT 2qAZRTbaUMTfYuZbD1dCYHjkYgxkw4dUYE9XY3JhC2Cs
TON USDT UQDoat731MLYuIw8ayL3Vhhw7zTBbLvRaQFmDvab--CNNI7e

Если у вас тоже Bybit — проще всего перевести по UID (мгновенно и без комиссии):

Биржа UID
Bybit 136462734

Дешевле всего комиссия в сетях TRON (TRC20) и TON. Отправляйте только USDT и только в указанной сети — перевод по неверной сети невозвратен.

Спасибо за поддержку! 🙏

Нет возможности поддержать?

Если поддержать проект напрямую не получается — вы всё равно можете помочь, арендуя серверы по этим реферальным ссылкам:


📄 Лицензия

GNU Affero General Public License v3.0 (AGPL-3.0).

Проект свободен для использования, изменения и self-hosting. Если вы предоставляете доступ к изменённой версии панели по сети (в т.ч. как сервис), вы обязаны открыть исходный код своих изменений на тех же условиях.

Directories

Path Synopsis
cmd
rospanel command
Command rospanel is the RosPanel VPN panel: boot the store, obtain a Let's Encrypt cert (domain or IP), generate the Xray config, and serve the admin API + the masquerade/subscription surface.
Command rospanel is the RosPanel VPN panel: boot the store, obtain a Let's Encrypt cert (domain or IP), generate the Xray config, and serve the admin API + the masquerade/subscription surface.
internal
auth
Package auth provides password hashing (Argon2id), random secret generation, and constant-time helpers used by the panel's authentication and masquerade.
Package auth provides password hashing (Argon2id), random secret generation, and constant-time helpers used by the panel's authentication and masquerade.
backup
Package backup creates and restores tar.gz snapshots of the data directory (SQLite DB, certs, generated config, ACME account).
Package backup creates and restores tar.gz snapshots of the data directory (SQLite DB, certs, generated config, ACME account).
branding
Package branding holds the configurable panel identity: display name, accent colour and logo.
Package branding holds the configurable panel identity: display name, accent colour and logo.
connguard
Package connguard installs host-level nftables rules that cap, per source IP, both the number of concurrent TCP connections and the rate of new connections to the public proxy ports.
Package connguard installs host-level nftables rules that cap, per source IP, both the number of concurrent TCP connections and the rate of new connections to the public proxy ports.
core
Package core ties the store and the Xray supervisor together: mutations go through it so the proxy config is reconciled from the DB after every change.
Package core ties the store and the Xray supervisor together: mutations go through it so the proxy config is reconciled from the DB after every change.
cron
Package cron is a minimal standard 5-field cron parser/matcher (minute, hour, day-of-month, month, day-of-week).
Package cron is a minimal standard 5-field cron parser/matcher (minute, hour, day-of-month, month, day-of-week).
datasec
Package datasec provides at-rest encryption for secrets stored in SQLite.
Package datasec provides at-rest encryption for secrets stored in SQLite.
decoy
Package decoy serves an innocent-looking website ("заглушка") for every request that doesn't carry the secret panel path.
Package decoy serves an innocent-looking website ("заглушка") for every request that doesn't carry the secret panel path.
geo
Package geo manages the geoip.dat / geosite.dat databases Xray needs to resolve geosite:/geoip: routing rules.
Package geo manages the geoip.dat / geosite.dat databases Xray needs to resolve geosite:/geoip: routing rules.
hop
Package hop manages Hysteria2 UDP port-hopping via host NAT.
Package hop manages Hysteria2 UDP port-hopping via host NAT.
link
Package link builds client share-links from a user + settings.
Package link builds client share-links from a user + settings.
logbuf
Package logbuf captures the panel's own log output into an in-memory ring buffer and fans new lines out to live subscribers (the dashboard log viewer).
Package logbuf captures the panel's own log output into an in-memory ring buffer and fans new lines out to live subscribers (the dashboard log viewer).
model
Package model holds the core domain types shared across the panel.
Package model holds the core domain types shared across the panel.
netguard
Package netguard provides SSRF-safe outbound HTTP helpers.
Package netguard provides SSRF-safe outbound HTTP helpers.
netinfo
Package netinfo resolves the server's own public IP, used for unattended first-boot host configuration and the post-factory-reset redirect.
Package netinfo resolves the server's own public IP, used for unattended first-boot host configuration and the post-factory-reset redirect.
opera
Package opera manages the opera-proxy helper binary: a standalone Opera VPN client that exposes a local HTTP proxy.
Package opera manages the opera-proxy helper binary: a standalone Opera VPN client that exposes a local HTTP proxy.
payments
Package payments wraps the YooKassa (card, RUB) and CryptoBot (Telegram crypto) HTTP APIs: create a payment/invoice for an order, query its status (polling fallback), and verify a webhook.
Package payments wraps the YooKassa (card, RUB) and CryptoBot (Telegram crypto) HTTP APIs: create a payment/invoice for an order, query its status (polling fallback), and verify a webhook.
proxypool
Package proxypool fetches and parses outbound proxy lists for the proxy-pool egress: free public lists or a manually-entered set, one "scheme://[user:pass@]host:port" per line.
Package proxypool fetches and parses outbound proxy lists for the proxy-pool egress: free public lists or a manually-entered set, one "scheme://[user:pass@]host:port" per line.
proxyproto
Package proxyproto provides a net.Listener that reads an optional PROXY-protocol v1 header (the text format Xray emits with xver=1) from each accepted connection and exposes the real client address via RemoteAddr.
Package proxyproto provides a net.Listener that reads an optional PROXY-protocol v1 header (the text format Xray emits with xver=1) from each accepted connection and exposes the real client address via RemoteAddr.
server
Package server implements the public-facing masquerade router and the hidden admin panel mounted under the secret path.
Package server implements the public-facing masquerade router and the hidden admin panel mounted under the secret path.
store
Package store is the SQLite-backed persistence layer.
Package store is the SQLite-backed persistence layer.
sub
Package sub builds the per-user subscription: the machine payload consumed by VPN clients and the human-facing page (QR + one-tap import buttons).
Package sub builds the per-user subscription: the machine payload consumed by VPN clients and the human-facing page (QR + one-tap import buttons).
sysstat
Package sysstat samples host metrics (CPU, memory, swap, disk, network) from /proc on Linux.
Package sysstat samples host metrics (CPU, memory, swap, disk, network) from /proc on Linux.
telegram
Package telegram is a self-contained Telegram Bot API client plus the panel's admin bot: it long-polls for commands (view/add/remove users) and pushes scheduled backups to the linked admin chat.
Package telegram is a self-contained Telegram Bot API client plus the panel's admin bot: it long-polls for commands (view/add/remove users) and pushes scheduled backups to the linked admin chat.
tlsmgr
Package tlsmgr obtains the TLS certificate via ACME (Let's Encrypt) for a domain or an IP address.
Package tlsmgr obtains the TLS certificate via ACME (Let's Encrypt) for a domain or an IP address.
tuning
Package tuning applies host-level network optimizations recommended for an Xray server — currently enabling the TCP BBR congestion-control algorithm, which noticeably improves throughput on lossy/long-haul links.
Package tuning applies host-level network optimizations recommended for an Xray server — currently enabling the TCP BBR congestion-control algorithm, which noticeably improves throughput on lossy/long-haul links.
updater
Package updater self-updates the panel binary from its GitHub Releases: it finds the latest release, downloads the matching asset, verifies its SHA-256 against the release's SHA256SUMS BEFORE the binary is ever executed or swapped in, then atomically replaces the running executable (keeping a .bak for rollback).
Package updater self-updates the panel binary from its GitHub Releases: it finds the latest release, downloads the matching asset, verifies its SHA-256 against the release's SHA256SUMS BEFORE the binary is ever executed or swapped in, then atomically replaces the running executable (keeping a .bak for rollback).
version
Package version exposes the panel's release version.
Package version exposes the panel's release version.
warp
Package warp registers a free Cloudflare WARP account and returns the WireGuard parameters Xray needs to use it as an outbound.
Package warp registers a free Cloudflare WARP account and returns the WireGuard parameters Xray needs to use it as an outbound.
xray
Package xray models the Xray-core config as typed Go structs (so field-name mistakes are compile errors) and supervises the Xray child process.
Package xray models the Xray-core config as typed Go structs (so field-name mistakes are compile errors) and supervises the Xray child process.
Package webui embeds the built React SPA (web/dist) into the Go binary.
Package webui embeds the built React SPA (web/dist) into the Go binary.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL