Files
kaskad/README.md
andrey271192 b856909437 docs: добавлены секции 'Поддержка проекта' и связанные проекты
README:
- Связанные проекты (keenetic-unified, keenetic_ssh-web, keenetic-dns-routes)
- Поддержка: GitHub звезда, Boosty, Ozon СБП, Telegram @Iot_andrey

WebUI footer:
- кнопки Boosty, Ozon, Telegram, GitHub в одну строку
2026-05-02 22:20:45 +03:00

6.3 KiB
Raw Blame History

Kaskad

Каскадная маршрутизация русских сайтов через свой набор RU-серверов (WireGuard) с автоматическим failover, Telegram-ботом и веб-интерфейсом.

Что это

Несколько зарубежных серверов с X-ray («ам.») держат WireGuard-туннели к одному из RU-серверов. Российские IP/домены идут через RU, всё остальное — через зарубежный. Если RU упал — за минуту переключение на следующий по приоритету. Когда восстановился — пробный failback с автоматическим откатом если WG не отвечает.

телефон/клиент ──> ам. сервер (X-ray) ──┬──> RU primary  ──> RU-сайты
                                        ├──> RU backup   (failover)
                                        └──> RU N        (по приоритету)
                  └──> остальное идёт напрямую через ам.

Возможности

  • N RU-серверов в конфиге, упорядочены по приоритету
  • Авто-failover по handshake age + TCP-проба; cooldown между переключениями; автоматический failback с проверкой
  • Telegram-бот для всех операций: смотреть статус, переключать вручную, добавлять/удалять серверы, домены, IP
  • Веб-интерфейс с тем же функционалом
  • Маршруты по доменам: бот резолвит vk.com → IP, добавляет в маршруты на всех ам. серверах. Cron каждые 6ч переподнимает резолв
  • Доп. подсети/IP добавляются на лету через бот или WebUI; переживают рестарт туннеля и сервера
  • Уведомления в TG при каждом failover/failback

Структура репозитория

kaskad/
├── bin/                     # скрипты для ам. серверов (failover, switch, routes, domains)
├── bot/                     # Telegram-бот + systemd unit
├── webui/                   # Flask-приложение
├── examples/                # шаблоны конфигов
├── docs/                    # подробная документация
└── README.md

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

См. docs/install.md для полной установки.

Краткая последовательность:

  1. Настроить первый RU-сервер вручную (см. docs/install.md § «RU-сервер»)
  2. Настроить первый ам. сервер (см. § «Ам. сервер»)
  3. Создать /etc/wireguard/ru-servers.json по шаблону examples/ru-servers.example.json
  4. Запустить TG-бот на одном из ам. серверов (bot/ru-tg-bot.service)
  5. (опц.) Запустить WebUI на том же ам. сервере (webui/ru-webui.service)
  6. Дальше — добавлять RU/ам./домены/IP через бот или WebUI

Команды бота

Категория Команды
Туннели /status, /use <id>, /primary, /backup
RU-серверы /server-list, /server-add, /server-remove, /bot-key
Ам. серверы /ams-list, /ams-add, /ams-remove
Маршруты /ips, /list, /add <IP/CIDR>, /remove <IP/CIDR>, /clear
Домены /list-domains, /add-domain <domain>, /remove-domain <domain>, /show-domain <domain>, /refresh-domains
Прочее /help

Полный синтаксис: docs/bot.md.

Веб-интерфейс

Запускается на любом ам. сервере (там же где бот), HTTP basic auth.

После запуска: http://<ам-сервер>:8088

Подробнее: docs/webui.md.

Архитектура

См. docs/architecture.md — как устроены failover, маршрутизация, синхронизация конфига между серверами.

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

  • Конфиги (ru-servers.json, notify.env, webui.env) с правами 600, не коммитятся в репо
  • SSH между серверами — по ключам; пароли используются только при первичной онбординге нового сервера через password= в боте/WebUI и сразу затираются после установки ключа
  • Веб-интерфейс через basic auth, рекомендуется ставить за HTTPS reverse-proxy (nginx/caddy)
  • Telegram-бот принимает команды только от заранее заданного TG_CHAT_ID

Связанные проекты

  • 🔧 keenetic-unified — мониторинг роутеров Keenetic с TG-ботом и веб-дашбордом
  • 🌐 keenetic_ssh-web — веб-панель shell-команд на самом роутере
  • 🛣 keenetic-dns-routes — DNS-маршрутизация без HydraRoute Neo

Поддержка проекта

Если Kaskad оказался полезен — поддержи разработку:


Лицензия

MIT