Текущая версия: 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.
По умолчанию панель получает 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, статуса, сертификатов и удаления. В мастере установки можно:
- Указать домен, публичный IPv4 или включить автоматическое определение IPv4.
- Задать логин, пароль, HTTPS-порт и секретный URL-путь.
- Использовать уже установленный WDTT либо установить официальный WDTT на пустой сервер.
- Получить Let's Encrypt сертификат или автоматически создать self-signed сертификат.
- При желании сразу включить 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 года:
- https://letsencrypt.org/2026/01/15/6day-and-ip-general-availability
- https://letsencrypt.org/2026/03/11/shorter-certs-certbot
- 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- Максимум 10 сгенерированных паролей задан в
server.go. - Счетчики пользователя находятся в памяти и записываются в JSON только при некоторых операциях самого WDTT. Панель показывает сохраненные значения; незаписанная часть может потеряться при перезапуске.
- Изменение главного пароля не реализовано: WDTT получает его из
ExecStart -password, а затем переписывает значение в JSON при каждом старте. Для ротации главного пароля нужен осознанный повторный деплой или изменение unit-файла. - При установке и обновлении панели совместимое серверное расширение WDTT собирается отдельно от Android-приложения. Перед заменой бинарника сохраняются текущий
wdtt-serverи/etc/wdtt/passwords.json. После запуска панель проверяет, что главный пароль, пользователи и устройства не исчезли; при любой ошибке прежний бинарник и база возвращаются.