Tikpilot

Полсотни MikroTik в одном окне

Мониторинг доступности, массовые операции, бэкапы по расписанию, логи и связи WireGuard. Ставится на свой сервер, данные лежат в файле рядом и никуда не уходят.

Установить Смотреть код MIT · Python · без облака и без сборки
Дашборд: 49 точек, одна недоступна, разбивка по группам, версии RouterOS и последние задачи

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

Что умеет

Всё, что на парке приходится делать руками по одному роутеру за раз.

Одно действие на весь парк

Перезагрузка, скрипт, бэкап, смена identity, проверка и установка обновлений RouterOS. Каждый запуск становится задачей с результатом по каждой точке: видно, какие 3 из 49 не ответили и что именно сказали.

Мониторинг доступности

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

Бэкапы по расписанию

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

Библиотека скриптов

Свои скрипты в одном месте и ответ на вопрос, у кого из парка какой стоит. Раскатать на выбранные точки или на весь парк - в два клика.

WireGuard

Связи роутер-роутер через хаб: рукопожатия, трафик и маршруты в одной таблице. Конфигурация споука генерируется сама.

Логи и клиенты

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

Экраны

Список устройств: имя, адрес, группа, модель, оператор связи и версия RouterOS
Список устройств. Оператор связи определяется сам, по нему же работает поиск.
Мониторинг: сводка, карта парка по группам и доступность за сутки
Мониторинг: карта парка по группам и доступность за сутки с длительностью простоя.
Диалог массового действия: цель - все 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, и показать результат по каждой точке. История доступности тут тоже есть, поэтому на небольшом парке он часто закрывает обе задачи.

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

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

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

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

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

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

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

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

Как это сделано

Скучный стек

Python и FastAPI, страницы собираются на сервере, база - файл SQLite. Ни сборки, ни npm, ни внешних CDN: панель работает в изолированной сети.

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

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

Проверено на живом парке

49 роутеров в магазинах, столовых и на месторождениях, связь через WireGuard с запасным SSTP. Больше 300 тестов гоняются в CI на трёх версиях Python.

Код написан ИИ (Claude) под руководством автора: я системный администратор, а не программист. Панель управляет моим собственным парком, поэтому ошибки достаются мне первому. Код открыт - прочитайте перед тем, как доверять.

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