Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WDTT Control Panel

Текущая версия: 0.11.24

Отдельная web-панель для SpaceNeuroX/proxy-turn-vk-android. При установке и обновлении она автоматически собирает совместимое расширение WDTT с резервной копией прежнего бинарника; по умолчанию используется серверная часть релиза v1.3.5 с поддержкой режима маскировки «Видео». Метки Telegram и учёт трафика всех пользователей работают без отдельного действия. Если сборка временно не удалась, система повторяет её автоматически.

Возможности

  • создание, изменение, деактивация и удаление до 10 WDTT-пользователей;
  • авто-создание пользователя по одной метке: пароль генерируется, срок 30 дней, VK-хеш берется из библиотеки;
  • массовое создание пользователей с автоматическими паролями и назначением VK-хешей всем или по кругу;
  • библиотека VK-хешей с импортом и экспортом JSON для переноса между серверами и панелями;
  • срок действия, бессрочный доступ, до четырех VK-хешей и отдельные порты;
  • просмотр привязанного устройства, внутреннего IP, подключения пользователя и администратора с мягким статусом недавней активности;
  • накопительная статистика трафика пользователей для Android-клиента: текущий счётчик WDTT, сегодня и всё время с момента обновления панели;
  • генерация совместимых wdtt:// ссылок;
  • dashboard: соединения, NAT, uptime, трафик, CPU, RAM, диск, пользователи и устройства;
  • журнал wdtt.service с фильтрацией;
  • полная диагностика журналов WDTT, Xray/WARP, каскада, панели, Nginx и установщика: выбор источника, до 5000 строк и выгрузка в файл;
  • безопасная очистка журналов и системного мусора: журналы служб, systemd journal с хранением последних дней, кэш пакетов Ubuntu/Linux и failed-units без удаления пользователей, backup, сертификатов и настроек; недоступные read-only логи пропускаются без остановки всей очистки, а результат показывает сколько было, освобождено и осталось;
  • start/stop/restart WDTT, состояние службы, IP forwarding и бинарника;
  • автоматические резервные копии passwords.json перед каждым изменением;
  • полные и пользовательские backup с загрузкой на компьютер, восстановлением, удалением и расписанием автоматических копий;
  • восстановление резервной копии и журнал действий администратора;
  • случайный URL панели вместо стандартного пути;
  • автоматический HTTPS для домена и публичного IPv4;
  • автоматическое продление Let's Encrypt и self-signed сертификатов;
  • интерактивное меню установки, обновления, отката к сохранённым тегам GitHub, статуса, сертификатов и удаления;
  • быстрые команды обновления и удаления из GitHub;
  • отображение текущей и новой версии с обновлением прямо из web-панели;
  • настройка Telegram-бота WDTT при установке и из web-панели: Bot Token, Admin ID, включение/отключение и тестовое сообщение;
  • мобильный /api/v1 для Android-клиента: password login, bearer-токены, обзор, пользователи, логи и сервисные действия;
  • qWDTT-подписка /api/v1/qwdtt/subscription для экспорта профилей пользователей в совместимый HTTPS JSON;
  • отдельный Xray Core с управляемой и полной Raw JSON-конфигурацией без изменения исходного WDTT;
  • компактная настройка Xray без JSON: VLESS‑маршруты и правила открываются в отдельных окнах; есть редактирование, порядок приоритета и готовые наборы WARP для AI, видео, соцсетей и музыки;
  • свёрнутый экспертный редактор входящих, нестандартных исходящих и JSON‑правил Xray с шаблонами VLESS, VMess, Trojan, Shadowsocks, SOCKS, HTTP и WireGuard;
  • стандартные GeoIP/GeoSite и собственные GeoFiles из HTTPS-источников;
  • ручное и автоматическое обновление GeoFiles через systemd-таймер;
  • российские GeoFiles из runetfreedom/russia-v2ray-rules-dat: geosite:ru-blocked и geoip:ru-blocked для маршрутизации заблокированных в РФ ресурсов;
  • автоматический Cloudflare WARP: установка wgcf, создание, перезапуск и пересоздание профиля с добавлением WireGuard-исходящего в Xray;
  • прозрачный каскад RU → EU: трафик сети WDTT 10.66.66.0/24 перехватывается Xray, а категории российских блокировок направляются в указанный EU-VLESS;
  • установка на пустой сервер или поверх уже развернутого WDTT.

GeoFiles, WARP и каскад RU → EU

По умолчанию панель получает geoip.dat и geosite.dat по HTTPS из runetfreedom/russia-v2ray-rules-dat и проверяет обновления каждые шесть часов. В этих файлах доступны, в частности, geoip:ru-blocked, geoip:ru-blocked-community, geoip:re-filter, geosite:ru-blocked, geosite:ru-blocked-all и категории из domain-list-community. Для обычного каскада используйте ru-blocked: более широкий ru-blocked-all содержит сотни тысяч доменов и может давать лишнюю маршрутизацию.

Вкладка Xray позволяет установить wgcf, создать Cloudflare WARP-профиль и автоматически добавить исходящий warp в Managed-конфигурацию Xray. WARP использует встроенный userspace‑TUN Xray и не создаёт системный интерфейс или маршруты хоста. Кнопка Пинг WARP запускает изолированную временную проверку через этот профиль, показывает задержку, IP выхода и подтверждение Cloudflare warp=on; при ошибке TLS пробует альтернативный адрес Trace и HTTP-проверку. WARP остаётся обычным исходящим: его можно выбрать в правилах маршрутизации Xray.

На сервере, где WDTT уже расположен в нужной стране, включите «Направлять трафик WDTT в Xray». Защищённый TPROXY-шлюз передаёт в Xray трафик заданной подсети WDTT, оставляя все сайты прямыми по умолчанию и применяя WARP/VLESS только к созданным правилам. Тогда журнал доменов и маршрутов показывает реальный домен и выбранный исходящий; журнал ошибок Xray помогает увидеть причину сбоя. Этот шлюз не включают одновременно с RU → EU каскадом: каскад использует свой шлюз.

Каскад RU → EU требует установленный и включённый Xray в Managed-режиме. Укажите VLESS-ссылку EU-сервера, проверьте подсеть WDTT (стандартно 10.66.66.0/24) и включите каскад. Панель загрузит GeoFiles, добавит защищённый TPROXY-маршрут и направит geosite:ru-blocked, geoip:ru-blocked, а также заданные вручную домены и IP/CIDR через EU-VLESS; весь остальной трафик, включая обычные российские сайты, остаётся прямым через RU-сервер. В каскад попадает только трафик из указанной подсети WDTT, а его внутренний порт закрывается для внешних подключений.

Совместимость

Панель работает с форматом базы актуального WDTT:

/etc/wdtt/passwords.json
/etc/wdtt/server.log
systemd: wdtt.service
binary: /usr/local/bin/wdtt-server

WDTT не предоставляет административный API и не перечитывает passwords.json на лету. Поэтому панель применяет изменения безопасной транзакцией: останавливает wdtt.service, создает backup, атомарно заменяет JSON и запускает сервис обратно. Обычно это занимает несколько секунд и разрывает текущие туннели.

Быстрая установка

curl -fsSL https://raw.githubusercontent.com/lebrit/wdtt-control-panel/main/bootstrap.sh | sudo bash

Откроется циклическое интерактивное меню установки, обновления, отката к сохранённым тегам GitHub, статуса, сертификатов и удаления. В мастере установки можно:

  1. Указать домен, публичный IPv4 или включить автоматическое определение IPv4.
  2. Задать логин, пароль, HTTPS-порт и секретный URL-путь.
  3. Использовать уже установленный WDTT либо установить официальный WDTT на пустой сервер.
  4. Получить Let's Encrypt сертификат или автоматически создать self-signed сертификат.
  5. При желании сразу включить Telegram-бота WDTT через Bot Token и Admin ID.

Для автоматизации тот же скрипт принимает install, update, rollback, status, renew-cert, change-password, uninstall и параметры --domain, --ip, --user, --password, --email, --https-port, --path, --wdtt, --wdtt-password, --telegram-token, --telegram-admin-id, --version, --non-interactive.

Пример автоматической установки с доменом:

curl -fsSL https://raw.githubusercontent.com/lebrit/wdtt-control-panel/main/bootstrap.sh | \
  sudo bash -s -- install --domain panel.example.com \
  --password 'Long-Random-Panel-Password' --non-interactive

Команды обслуживания:

sudo wdtt-panel
sudo wdtt-panel-status
sudo wdtt-panel-update
sudo wdtt-panel-uninstall
sudo bash /opt/wdtt-panel/install.sh renew-cert
sudo wdtt-panel change-password
sudo wdtt-panel rollback --version v0.10.3

Те же операции доступны через главное интерактивное меню. Обновление скачивает свежую версию с GitHub и сохраняет адрес, логин, пароль, случайный путь, сертификаты, аудит и резервные копии.

Одноразовые команды без установленного локального wrapper:

curl -fsSL https://raw.githubusercontent.com/lebrit/wdtt-control-panel/main/update.sh | sudo bash
curl -fsSL https://raw.githubusercontent.com/lebrit/wdtt-control-panel/main/uninstall.sh | sudo bash

Удаление затрагивает только панель. WDTT, его пользователи и серверный бинарник не изменяются. Резервные копии остаются в /var/lib/wdtt-panel-private/backups.

Сертификаты

  • Для домена используется Certbot и HTTP-01; A/AAAA запись должна указывать на сервер, TCP 80 должен быть доступен.
  • Перед запросом и продлением сертификата установщик автоматически открывает TCP 80 в UFW, firewalld или iptables. Если сертификат не получен, причина сохраняется в /var/log/wdtt-panel-install.log.
  • Если другой virtual host перехватывает ACME webroot, установщик на время останавливает Nginx и повторяет запрос в standalone-режиме Certbot, затем запускает Nginx обратно.
  • Для IPv4 используется Certbot 5.4+ и короткоживущий профиль Let's Encrypt.
  • Проверка и продление сертификата выполняются systemd-таймером каждые 12 часов.
  • Если публичный сертификат получить нельзя, установщик создает self-signed сертификат. Таймер повторно пытается получить доверенный сертификат, а self-signed автоматически заменяет до истечения срока.
  • HSTS включается только после получения Let's Encrypt. При self-signed сертификате браузер показывает предупреждение, пока сертификат не добавлен в доверенные, но не закрепляет его для домена.

Let's Encrypt объявил публичную доступность IP-сертификатов 15 января 2026 года и поддержку в Certbot 5.4+ 11 марта 2026 года:

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

  • web-процесс запускается от отдельного пользователя wdtt-panel и слушает только 127.0.0.1:8787;
  • Nginx публикует только случайный путь, остальные URL возвращают 404;
  • пароли панели хранятся как PBKDF2-HMAC-SHA256 с 600 000 итераций;
  • cookie имеет Secure, HttpOnly, SameSite=Strict; изменяющие запросы защищены CSRF;
  • root-доступ отделен в /usr/local/sbin/wdtt-panel-admin; sudo разрешает только этот helper без аргументов;
  • helper принимает JSON через stdin и поддерживает только фиксированный список операций;
  • каждое изменение базы предваряется резервной копией.

Путь не заменяет аутентификацию, но уменьшает шум автоматических сканеров. Не публикуйте URL и пароль панели в открытых каналах.

Проверка

python3 -m unittest discover -s tests -v
python3 -m compileall -q wdtt_panel
bash -n bootstrap.sh install.sh update.sh uninstall.sh

Ограничения исходного WDTT

  • Максимум 10 сгенерированных паролей задан в server.go.
  • Счетчики пользователя находятся в памяти и записываются в JSON только при некоторых операциях самого WDTT. Панель показывает сохраненные значения; незаписанная часть может потеряться при перезапуске.
  • Изменение главного пароля не реализовано: WDTT получает его из ExecStart -password, а затем переписывает значение в JSON при каждом старте. Для ротации главного пароля нужен осознанный повторный деплой или изменение unit-файла.
  • При установке и обновлении панели совместимое серверное расширение WDTT собирается отдельно от Android-приложения. Перед заменой бинарника сохраняются текущий wdtt-server и /etc/wdtt/passwords.json. После запуска панель проверяет, что главный пароль, пользователи и устройства не исчезли; при любой ошибке прежний бинарник и база возвращаются.

About

Web control panel and one-command installer for WDTT VPN server

Topics

Resources

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages