8.1 KiB
🌐 HydraRoute Manager
Веб-интерфейс для централизованного управления конфигурацией HydraRoute Neo на роутерах Keenetic. Без мониторинга, без Telegram — только домены и IP.
Интерфейс
Вкладка «Конфигурация» — группы доменов и IP
Карточки с переключателями вкл/выкл, политикой маршрутизации (HydraRoute, RU и т.д.), быстрым редактированием и кнопкой «Обновить все роутеры».
Вкладка «Импорт файлов»
Два текстовых поля для вставки содержимого domain.conf и ip.list с роутера, кнопки «Сохранить на сервер» и «Сохранить + обновить все роутеры», ниже — экспорт текущей конфигурации для копирования.
Вкладка «Роутеры»
Список роутеров: IP — это хост для SSH (не веб-URL KeenDNS). У каждой строки:
- Тест — проверка SSH, каталога
/opt/etc/HydraRoute(или/opt/etc/hydra) и наличияdomain.conf/ip.listна роутере. - С роутера — скачать эти файлы по SSH и подставить во вкладку «Импорт файлов» (сохранение на сервер — отдельной кнопкой).
API: POST /api/routers/{имя}/test, GET /api/routers/{имя}/fetch (заголовок X-Admin-Password).
Вкладка «Настройки»
Смена пароля администратора веб-интерфейса (запись в server/.env).
Экран входа
При открытии сайта запрашивается пароль из ADMIN_PASSWORD в .env.
Возможности
- Управление группами доменов и IP через браузер
- Включение / отключение групп одним переключателем
- Импорт
domain.confиip.listс роутера - Отправка конфига на все роутеры одной кнопкой (SSH +
curlс сервера) - Авторизация по паролю
- Прямые ссылки для роутера:
/hydra/domain.conf,/hydra/ip.list,/hydra/version
Установка сервера (Ubuntu 22/24)
Сначала перейди в существующий каталог (если ты был в удалённой папке вроде /opt/keenetic-unified, git выдаст Unable to read current working directory — тогда выполни cd /opt или cd /).
cd /opt
git clone https://github.com/andrey271192/domen_hydra.git /opt/domen-hydra
cd /opt/domen-hydra
bash server/install.sh
nano server/.env # при необходимости поправь плейсхолдеры (см. ниже)
systemctl restart hydra-manager
Сервис hydra-manager появляется только после успешного bash server/install.sh; сообщение Unit hydra-manager.service not found значит, что установка не дошла до конца (часто из‑за ошибки git clone выше).
Скрипт server/install.sh при первом запуске сам создаёт server/.env из server/.env.example с уже заполненными полями (вместо паролей — текст-напоминание, его нужно заменить на свои секреты).
Файл server/.env
| Переменная | Назначение |
|---|---|
HOST |
Адрес привязки HTTP (обычно 0.0.0.0). |
PORT |
Порт веб-интерфейса (по умолчанию 8000). |
ADMIN_PASSWORD |
Пароль входа в веб-интерфейс. |
SSH_USER |
Пользователь SSH для «Обновить все роутеры». |
SSH_PASS |
Пароль SSH по умолчанию (на карточке роутера можно задать свой). |
Шаблон по умолчанию (после установки открой nano server/.env и подставь реальные пароли):
HOST=0.0.0.0
PORT=8000
ADMIN_PASSWORD=ВАШ_НАДЁЖНЫЙ_ПАРОЛЬ_ВЕБ
SSH_USER=root
SSH_PASS=ПАРОЛЬ_SSH_РОУТЕРА
Интерфейс: http://ВАШ_IP:PORT — значения HOST и PORT из server/.env подставляются в hydra-manager.service при запуске server/install.sh. Если поменяешь порт в .env уже после установки, снова выполни bash server/install.sh (или вручную обнови ExecStart в unit и systemctl daemon-reload).
Установка на роутер (Keenetic + Entware)
Подставь URL своего сервера:
export SERVER_URL="http://ВАШ_IP:8000" \
&& curl -fsSL https://raw.githubusercontent.com/andrey271192/domen_hydra/main/install_router.sh | sh
Роутер будет каждый день в 02:00 скачивать актуальный конфиг с сервера.
Ручное обновление:
sh /opt/bin/hydra_update.sh
Как пользоваться
- Открой веб-интерфейс → введи пароль из
.env - Импорт: вставь
domain.confиip.listс роутера → «Сохранить на сервер» - Редактируй группы на вкладке «Конфигурация»
- Нажми «Обновить все роутеры» — файлы запишутся в
/opt/etc/HydraRoute/и выполнитсяneo restart
Формат файлов
domain.conf:
##youtube
youtube.com,youtu.be,googlevideo.com/HydraRoute
##avito
avito.ru,ozon.ru/RU
ip.list:
##geoip:ru
/RU
geoip:ru
Структура проекта
server/
main.py — FastAPI приложение
config.py — настройки из .env
hydra_manager.py — парсинг/генерация domain.conf + ip.list
models.py — модели данных
database.py — работа с JSON
install.sh — установка на Ubuntu
uninstall.sh — снятие systemd и каталога `/opt/domen-hydra` (см. README)
.env.example — шаблон конфигурации
templates/
index.html — веб-интерфейс
docs/
preview.png — превью интерфейса
install_router.sh — установка на роутер
hydra_update.sh — скачивание конфига с сервера
Удаление с сервера (одной командой)
Останавливается hydra-manager, удаляется unit и каталог /opt/domen-hydra:
curl -fsSL https://raw.githubusercontent.com/andrey271192/domen_hydra/main/server/uninstall.sh | sudo bash
Из каталога установки: sudo bash server/uninstall.sh
Обновление
cd /opt/domen-hydra && git pull && systemctl restart hydra-manager
Поддержка проекта
Boosty — донат. На GitHub доступна кнопка Sponsor (.github/FUNDING.yml).
Связь: Telegram @Iot_andrey — вопросы и обратная связь.
Связь с Keenetic Unified
Логика парсинга domain.conf / ip.list и веб-интерфейс доменов взяты из проекта keenetic-unified в урезанном виде: только управление HydraRoute, без дашборда, watchdog и Telegram.
