Tikpilot

Пятьдесят роутеров в одном окне

Централизованное управление парком MikroTik: состояние, массовые операции, бэкапы и оповещения, хоть на пятьдесят роутеров, хоть на пять. Ставится на свой сервер, наружу ничего не отдаёт.

git clone https://github.com/maximdr86/tikpilot
cd tikpilot && cp .env.example .env
docker compose up -d
Как поставить Код на GitHub MIT · Python · без облака и сборки · работает в сети без интернета
Дашборд: блок «требует внимания» с шестью пунктами, плитки парка, разбивка по группам и версии RouterOS

Скриншоты сняты с живого парка из 49 роутеров при включённом режиме витрины: названия точек, адреса и имена клиентов подменены самой панелью.

Видеть

Что происходит с парком, без обхода WinBox.

Делать

Однообразное на всём парке сразу.

Не пропустить

Панель сама скажет, когда стоит посмотреть.

Экраны

Список устройств: имя, адрес, группа, модель, оператор связи и версия RouterOS
Список устройств. Оператор связи определяется сам, по нему же работает поиск.
Мониторинг: сводка, карта парка по группам и доступность за сутки
Мониторинг: карта парка по группам и доступность за сутки с длительностью простоя.
Диалог массового действия: цель - все 49 устройств, список доступных действий
Одно действие на все 49 точек. Опасные помечены, каждый запуск попадает в задачи.
Задача «тест скорости»: полоса от каждой из 49 точек до одной цели, строкой на точку
Полоса от каждой площадки до центра, померенная самими роутерами. Точки идут по одной, иначе они делят канал цели и врут.
WireGuard: настройки хаба и таблица связей с рукопожатиями и трафиком
WireGuard: хаб, связи, рукопожатия и трафик. Конфигурация споука генерируется сама.
Библиотека скриптов и таблица того, на каких точках они стоят
Библиотека скриптов и ответ на вопрос, у кого из парка какой стоит.
Логи с устройств: время, точка, тема сообщения и текст, с правилами подсветки
Syslog со всего парка. Правила подсветки и скрытия убирают повторяющийся шум.

Установка

Нужен любой сервер с Docker, доступный до роутеров. Панель поднимется на порту 8080.

git clone https://github.com/maximdr86/tikpilot
cd tikpilot
cp .env.example .env
docker compose up -d

Дальше: завести на роутерах пользователя API, добавить устройства руками или загрузкой CSV. Панель работает по API RouterOS (8728/8729) и по SSH для терминала. Обновление - git pull и docker compose up -d --build.

Чего она не делает

Частые вопросы

Чем заменить The Dude?

Отчасти Tikpilot. The Dude и Zabbix отвечают на вопрос «что происходит в сети» и делают это лучше. Tikpilot отвечает на другой: «сделай это на всех роутерах» - запустить скрипт, снять бэкап, обновить RouterOS, и показать результат по каждой точке. История доступности тут тоже есть, поэтому на небольшом парке он часто закрывает обе задачи. Разбор целиком: что вместо The Dude. Ещё есть разборы: массовое обновление RouterOS, бэкапы конфигов и мониторинг парка.

Как обновить RouterOS сразу на всех роутерах?

Выбрать устройства или целую группу, запустить «Проверить обновления», затем «Обновить RouterOS». Каждый запуск становится задачей с результатом по каждой точке: панель ждёт возвращения роутера, не даёт откатиться на версию ниже и проверяет свободное место до начала.

Можно ли делать бэкапы MikroTik по расписанию?

Да. Правила работают сами: бинарный .backup, текстовый .rsc или оба сразу, с хранением N последних копий на устройство. Любые две конфигурации сравниваются построчно, и есть поиск по всем сохранённым.

Работает ли панель без интернета?

Да. Она общается только с вашими роутерами по API RouterOS и по SSH. Наружу есть ровно два необязательных выхода: поиск оператора связи в реестре адресов и скачивание базы производителей по MAC. Оба включаются вручную.

Сколько стоит?

Нисколько. Лицензия MIT, исходники на GitHub, платной версии и облачного аккаунта нет.

Почему так сделано

Один процесс и файл базы

Python, FastAPI, SQLite. Ни Redis, ни очередей, ни сборки фронтенда.

Ни одного обращения наружу

Страницы собираются на сервере, шрифты и скрипты свои. Панель обязана работать в изолированной сети.

Пароли и доступ

Пароли роутеров зашифрованы ключом, который лежит отдельно от базы, права выдаются по каждой возможности, всё сделанное пишется в журнал.

Проверено настоящим протоколом

Больше трёхсот тестов на трёх версиях Python, и заглушка, говорящая на настоящем протоколе RouterOS.

Кто это написал

Я сисадмин, обслуживаю 49 точек: магазины, столовые, удалённые площадки. Панель выросла из моей работы и работает на моём парке, поэтому ошибки достаются мне первому.

Код написан нейросетью (Claude) под моим руководством. Говорю об этом сразу, чтобы никто не выяснял это из истории коммитов. Лицензия MIT: посмотрите код, прежде чем доверять ему свои роутеры.

Открыть файл в полном размере