rospanel

module
v0.15.0 Latest Latest
Warning

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

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

README

РосПанель

РосПанель

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

Release Go Xray-core React Platform Deploy



Что это

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

Панель самодостаточна: это один статический бинарник, которому не нужны Docker, внешняя БД, отдельный веб-сервер и обвязка из сторонних скриптов и ботов. Домен тоже не обязателен — сертификат выпустится и на голый IP. Поставил, открыл, добавил юзера.

Что уже внутри и не требует докручивания:

  • TLS сам — ACME (Let's Encrypt / ZeroSSL) с авто-продлением, без reverse-proxy впереди. Нет домена — сертификат выпускается прямо на IP-адрес сервера.
  • Xray сам — проверенная версия ядра скачивается при первом запуске и зафиксирована, так что обновление Xray не может внезапно сломать панель.
  • Тарифы и приём оплаты — ЮКасса и CryptoBot: клиент выбирает тариф и платит, доступ включается сам.
  • Команда и следы — несколько администраторов с ролями, журнал всего, что происходило с пользователем, и отдельный журнал действий над самой панелью.
  • Маскировка — панель живёт за секретным путём, любой другой адрес отдаёт сайт-заглушку.
  • Без обрыва связи — пользователи добавляются и удаляются в работающем Xray на лету: активные подключения остальных не рвутся.
  • Без знания Xray — конфиг ядра всегда генерируется из состояния панели, JSON руками править не нужно.
  • Переживает сбой диска — при старте панель проверяет целостность базы и, если та повреждена (жёсткая перезагрузка, забитый диск), сама поднимается из последнего локального бэкапа, а не падает в цикл.

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


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

Вариант 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>/ форму логина не найти.


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

🔐 Протоколы, маскировка, TLS

Один Xray-конфиг, один набор учёток: VLESS-Vision (TCP/443 + uTLS), Trojan-WS (fallback на 443), Hysteria2 (UDP + port-hopping), VLESS-gRPC-REALITY (отдельный порт, маскировка под чужой TLS).

Панель спрятана за секретным путём, любой другой путь отдаёт сайт-заглушку (11 шаблонов) — сервер неотличим от обычного хостинга. TLS из коробки: ACME (Let's Encrypt / ZeroSSL) с авто-продлением и self-signed, пока не выпустится настоящий сертификат. Домена может не быть вообще — панель умеет получать сертификат Let's Encrypt на сам IP-адрес сервера, так что клиенты подключаются по валидному TLS без покупки домена и настройки DNS.

👤 Пользователи

Лимиты трафика и срок действия с авто-отключением и авто-сбросом квоты (день/неделя/месяц/год). Лимит устройств — по уникальным публичным IP: при превышении пользователь отключается, пока число активных IP не упадёт. Учёт трафика через Xray Stats API, онлайн-статус, список подключений. Истёкших можно автоматически удалять через заданное число дней после окончания срока (по умолчанию — никогда; запись в журнале остаётся).

Поиск, фильтры, сортировка и пагинация не тормозят и на сотнях пользователей. Групповые операции (включить / выключить / сбросить трафик / продлить / удалить) выполняются одним проходом и одной перезагрузкой конфига Xray, а не операцией на каждого.

Дашборд показывает CPU / RAM / swap / диск / сеть / VPN-трафик в реальном времени.

📲 Подписки

/<путь>/<токен> — base64-список плюс страница с QR, deep-links и кнопками импорта в популярные клиенты; авто-роутинг-заголовки (Happ / INCY / Mihomo). Настраиваются свои названия узлов и имя пользователя в заголовке. Ссылку можно сбросить (ротация токена) — старая перестаёт работать мгновенно, при этом UUID и пароли протоколов не меняются. Объявление внутри клиента (Happ, v2RayTun): короткий текст показывается прямо в приложении

🧭 Маршрутизация и выходы

Категории block / direct / WARP / Opera с настраиваемым приоритетом, пресеты geosite/geoip с авто-загрузкой баз, выход через Cloudflare WARP (WireGuard) и бесплатный Opera VPN с выбором региона.

Полосы прокси — сколько угодно независимых выходов, у каждого свой набор socks5/http-апстримов и свои правила: зона .ru уходит через один, .com — через другой. Внутри полосы — балансировка по живым (Observatory); полоса без живых прокси пропускается.

💳 Тарифы и оплата (опционально)

Тарифные планы: цена, срок, лимиты трафика и устройств. Цена 0 — бесплатный тариф: не истекает, а квота обнуляется каждый срок. Есть пробный период, бесплатный тариф-фоллбэк для истёкших, продление, отмена и перенос всех пользователей с выводимого тарифа.

Приём платежей: ЮКасса (карты) и CryptoBot (крипта в Telegram) — клиент выбирает тариф в боте или на странице подписки, платит, тариф включается сам. Подтверждение идёт двумя путями — мгновенный вебхук (с проверкой подписи) и поллинг как страховка, если вебхук не дошёл; обработка идемпотентна. Без провайдеров работает ручной режим: админ подтверждает оплату сам.

👥 Доступ, роли и аудит

Несколько администраторов с ролями-лестницей: владелец (может всё, включая список админов; он один и неудаляем), администратор (всё, кроме списка админов), оператор (пользователи, статистика и журнал — без настроек, бэкапов и API). Новому сотруднику выдаётся временный пароль, который он обязан сменить при первом входе. Права проверяются на сервере на каждом запросе, а не скрытием кнопок.

Журнал пользователей — всё, что происходило с пользователем, и кто это сделал: создание, лимиты, тариф, оплаты, ротация ссылки, удаление, а также системные события (истёк срок, кончился трафик). У каждой записи есть автор: админ, API-ключ, Telegram-бот, сам пользователь или система. Журнал переживает удаление пользователя.

Журнал администраторов (виден только владельцу) — что делали с самой панелью: входы и неудачные попытки входа с IP, состав администраторов, изменения настроек, скачивание бэкапа, восстановление, сброс к заводским. Пишется только успешное действие, и никогда — тела запросов: токены и ключи в журнал не утекают.

Оба журнала хранятся 90 дней.

🤖 Интеграции

Админ-бот в Telegram: управление пользователями, назначение тарифа, QR-подписка, бэкапы по расписанию и уведомления о событиях (регистрации, истечения, сбой Xray, оплаты, проблемы с сертификатом). Пользовательский бот — саморегистрация клиентов, личное меню с подпиской и статистикой, покупка тарифа.

REST API для управления панелью из своих систем: именованные ключи (Authorization: Bearer), свой стабильный адрес, OpenAPI-спека из кода и Swagger UI. Вебхуки — панель сама шлёт подписанные HMAC-SHA256 события на ваши адреса, с ретраями. Подробности — в docs/api.md.

🎨 Брендинг и тема

Своё название и логотип вместо «РосПанели» — и в панели, и на странице подписки. Редактор цветовой схемы: один акцентный цвет перекрашивает весь интерфейс, а полноценная тёмная тема сама подстраивает текст, статусы и графики под светлоту фона.

🧰 Эксплуатация и безопасность

Диагностика одной кнопкой: процесс Xray, применение конфига, срок TLS-сертификата, место на диске, свежесть geo-баз, состояние выходов — каждая проверка с подсказкой, что делать. Отдельная проверка подключения отвечает на вопрос, которого нет в обычной диагностике: панель сама подключается к каждому протоколу как настоящий клиент и убеждается, что трафик реально проходит наружу — ловит рассинхрон учёток, TLS или ALPN раньше, чем на них наткнётся пользователь. Бэкап / восстановление и сброс к заводским — из панели и из CLI; логи с ротацией и просмотрщиком.

Обновление из GitHub Releases одной командой: панель сверяет SHA256 нового бинарника, прогоняет его вхолостую, снимает бэкап данных и только потом подменяет себя, сохраняя предыдущую версию рядом. Версия Xray-core зафиксирована и ставится самой панелью, а упавшее ядро супервизор поднимает обратно сам.

Секреты в БД зашифрованы (AES-GCM): токены ботов, приватные ключи WARP/REALITY, пароли пользователей. Токены сессий и API-ключи в базе не хранятся вообще — только их хэши, поэтому даже увидев таблицу, подставить чужую сессию нельзя. Чувствительные операции (подтверждение оплаты, управление администраторами) требуют повторного ввода пароля — украденной куки мало. Исходящие запросы защищены от SSRF, а перебор на SOCKS/HTTP-инбаунде банится по iptables.


🛠️ 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, секреты/токены, сессии
  actor/             кто выполняет действие (едет в context) — для журнала аудита
  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.

Защита от флуда (нафтабл-лимиты на публичных TCP-портах, см. «Эксплуатация») тоже настраивается через окружение — пригодится, если за одним IP сидит целый офис или CGNAT-оператор и клиенты упираются в дефолты:

Переменная Что делает
ROSPANEL_CONNLIMIT=off Полностью выключает лимиты (правила nftables сносятся)
ROSPANEL_CONNLIMIT_MAX Максимум одновременных TCP-соединений с одного IP
ROSPANEL_CONNLIMIT_RATE Максимум новых соединений с одного IP в секунду

Текущее состояние защиты видно в Дашборд → Управление → Диагностика: если nftables не установлен или панель работает не от root, правила молча не применятся — диагностика об этом скажет.

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
actor
Package actor carries WHO is performing an action across layer boundaries.
Package actor carries WHO is performing an action across layer boundaries.
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.
autobackup
Package autobackup runs scheduled local backups of the data directory.
Package autobackup runs scheduled local backups of the data directory.
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.
selftest
Package selftest answers the question a health page can't: not "is Xray running?" but "does a client actually get through?".
Package selftest answers the question a health page can't: not "is Xray running?" but "does a client actually get through?".
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.
tlsutil
Package tlsutil handles low-level X.509 certificates: generating the self-signed cert used as the internal pre-ACME fallback, reading certificate metadata for display, computing SHA-256 pins, and writing key pairs to disk.
Package tlsutil handles low-level X.509 certificates: generating the self-signed cert used as the internal pre-ACME fallback, reading certificate metadata for display, computing SHA-256 pins, and writing key pairs to disk.
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