Skip to content

About

Centralized management for multiple WDTT Control Panel nodes

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

9 Commits

Folders and files

Repository files navigation

WDTT Fleet Manager

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

Центральная web-панель для нескольких самостоятельных WDTT Control Panel. Она показывает узлы и пользователей из последних снимков, ставит строго ограниченные команды в очередь и получает результаты от исходящих агентов на узлах.

Панель управляет пользовательской частью WDTT/WireGuard: пользователями, их метками, устройствами, сроками доступа, трафиком и состоянием online.

Что уже есть

  • русскоязычная web-панель: обзор, узлы, пользователи и журнал команд;
  • одноразовые гранты регистрации, временные учётные данные агента, ротация и мгновенный отзыв;
  • версия протокола, heartbeat и last_seen;
  • типизированные команды user.create, user.update, user.delete, user.read, node.snapshot.read для реальной модели WDTT: пароль, VK-хеши, порты, метка, срок и доступ;
  • снимки пользователей: метки, устройства, срок, трафик и online по данным агента;
  • статусы выполнения команд и идемпотентность;
  • атомарное JSON-хранилище состояния с правами 0600 для первой установки;
  • публичные HTTPS-точки Nginx: случайный URL с Basic Auth для оператора и отдельный случайный URL только для исходящих агентов.

Установка на сервер

Поддерживаются Debian/Ubuntu и Fedora/RHEL-подобные системы. Команда открывает интерактивное меню установки, аналогичное WDTT Control Panel. Меню и все вопросы читаются непосредственно из терминала, поэтому команда корректно работает и при запуске через curl | sudo bash:

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

Установщик спросит домен или публичный IPv4, логин и пароль панели, HTTPS-порт (по умолчанию 8444) и сам создаст случайный URL. Он устанавливает Nginx, Node.js 22, systemd-сервис и пытается выпустить сертификат Let's Encrypt. Если публичный сертификат временно недоступен, создаётся self-signed сертификат.

Панель открывается извне по адресу, который покажет установщик: https://ваш-хост:8444/случайный-путь/. Сам процесс Node.js остаётся внутренним за Nginx; это не ограничивает внешний доступ, а не даёт обойти HTTPS и аутентификацию.

Неинтерактивный пример:

curl -fsSL https://raw.githubusercontent.com/lebrit/wdtt-fleet-manager/main/bootstrap.sh | \
  sudo bash -s -- install --domain fleet.example.com --user admin \
  --password 'Длинный-Случайный-Пароль' --non-interactive

Для Let's Encrypt у домена должна быть A/AAAA-запись на сервер, а TCP-порт 80 — доступен из интернета. Установщик открывает порты 80 и HTTPS-порт, когда обнаруживает активный UFW или firewalld.

Меню и обслуживание

После установки доступно циклическое меню:

sudo wdtt-fleet

В нём есть только относящиеся к Fleet Manager действия:

  1. обновление из GitHub;
  2. откат к сохранённому GitHub-тегу;
  3. состояние и перезапуск сервиса;
  4. журнал systemd;
  5. сведения и обновление TLS-сертификата;
  6. смена пароля web-панели и случайного URL;
  7. удаление только Fleet Manager.

Удобные команды:

sudo wdtt-fleet-status
sudo wdtt-fleet-update
sudo wdtt-fleet-uninstall
sudo bash /opt/wdtt-fleet-manager/install.sh rollback --version v0.1.0

Обновление и удаление также можно запустить без локального wrapper:

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

Установщик не устанавливает, не обновляет и не меняет WDTT, Xray, WARP, WireGuard или их конфигурацию. Это граница безопасности проекта, а не недостающая функция.

Как начать работу

  1. Войдите в web-панель по выданному адресу.
  2. В разделе Узлы скопируйте постоянный адрес агента из карточки «Подключение WDTT Control Panel», затем создайте одноразовый грант. Передайте оба значения по защищённому каналу в wdtt-control-panel версии 0.10.12 или новее.
  3. Агент регистрируется с публичным fingerprint, отправляет heartbeat и снимки пользователей, затем забирает только адресованные ему команды.
  4. В разделах Пользователи и Команды отображаются последние снимки и результат выполнения.

Совместимый исходящий агент встроен в wdtt-control-panel начиная с версии 0.10.12. На узле откройте вкладку Fleet, вставьте адрес агента и одноразовый грант из раздела Узлы, затем включите агент. Новый агент подключится сам: входящие административные порты на узле не нужны.

Безопасность и текущие ограничения

  • Nginx публикует только два случайных пути: защищённый Basic Auth путь оператора и отдельный путь протокола агентов. Все остальные пути получают 404.
  • Внутренний процесс доверяет заголовку оператора лишь на 127.0.0.1 за конфигурацией Nginx, которую создаёт установщик. Не публикуйте его порт напрямую.
  • Пароль хранится только как bcrypt-хеш Nginx в /etc/nginx/wdtt-fleet-manager.htpasswd; конфигурация панели остаётся закрыта от web-процесса. Состояние содержит хеши временных токенов агентов, а не их исходные значения.
  • JSON-хранилище — практичный старт для одного центра, но не замена PostgreSQL, журналу аудита и резервному копированию в production.
  • Агентская аутентификация использует одноразовый грант и временный узловой Bearer-токен. mTLS остаётся рекомендуемым следующим уровнем защиты для развёртываний с повышенными требованиями.

Подробнее: архитектура и контракт интеграции WDTT.

Локальная проверка

Нужен Node.js 22 или новее:

npm test
npm run check

Сценарии установки проверяются в Linux:

bash -n bootstrap.sh install.sh update.sh uninstall.sh

About

Centralized management for multiple WDTT Control Panel nodes

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages