Всем привет! Прошло совсем немного времени с момента выпуска версии 1.10.9 моего Telegram-бота для мониторинга VPS, о котором я рассказывал ранее. Но проект не стоит на месте – за пару недель бот значительно прокачался. В этой статье я расскажу, что нового появилось с версии 1.10.9 до текущей 1.10.14, какие изменения произошли в коде, и чего ждать дальше.

Скриншот бота
Скриншот бота

1. Модульность и умная установка – фундамент для роста

Главное внутреннее изменение – бот пережил масштабный рефакторинг. Вместо одного монолитного скрипта теперь чёткое разделение на ядро (core/) и набор независимых модулей (modules/). Каждая фича вынесена в свой модуль, что повышает читаемость кода и упрощает добавление нового функционала. Прошлая структура скрипта больше не поддерживается – пришлось внести breaking changes, потребовавшие переустановки, но оно того стоило.

Одновременно я полностью переработал скрипт установки deploy.sh. Теперь он стал умнее: перед запуском меню он проверяет целостность установки – наличие всех нужных папок, виртуального окружения, конфигов, systemd-сервисов и т.д. В зависимости от результата бот направит вас либо к установке, либо к восстановлению недостающих файлов, либо предложит переустановку. Это защитит от случаев, когда после кривого обновления чего-то не хватает.

Скрипт также создаёт .gitignore, чтобы при обновлении не затирать ваши локальные файлы. Можно выбирать ветку: main или develop. В меню теперь показывается текущая и последняя версия бота.

2. Бот заговорил по-английски: полноценная i18n

Теперь бот полностью двуязычный, поддерживает русский и английский языки во всех сообщениях, кнопках, меню и уведомлениях. Реализовано это через модуль core/i18n.py. Язык пользователя запоминается, а переключить его можно в главном меню через кнопку "Язык / Language".

Переведены также README и скрипт установки. А для разработчиков все тексты централизованы и подключаются через get_text() — никаких хардкодов.

Выбор языка
Выбор языка
Окно бота на английском языке
Окно бота на английском языке

Теперь бот можно запускать в Docker. При установке вы выбираете: классический systemd или контейнер. Бот определяет тип установки по переменной DEPLOY_MODE, а watchdog теперь следит как за сервисом, так и за контейнером через Docker API.

Для работы с хостом внутри контейнера реализована утилита get_host_path(). К примеру, reboot теперь делается через chroot /host /sbin/reboot. Всё работает и в Secure, и в Root режиме.

Добавлены зависимости, настройка docker-compose, исправлены баги с cgroups. Всё разворачивается в один клик.

4. Новые возможности: оптимизация и улучшения мониторинга

Добавлена кнопка "⚡️ Оптимизация" — выполняет набор команд по очистке системы. Работает только в Root-режиме. Speedtest теперь на базе iperf3 с умным подбором ближайших серверов и понятной визуализацией. Также поддерживаются локальные iperf-сервера по стране.

Добавлены:

  • антифлуд на кнопки (5 секунд кулдаун);

  • отдельная кнопка "⏹ Остановить" для мониторинга трафика;

  • экранирование HTML в логах;

  • улучшения UX (имя пользователя в логах, исправление гонки в async);

  • ежедневная ротация логов и раздельные папки логов для watchdog и бота.

5. Надёжность и безопасность

Бот стал стабильнее. watchdog различает статусы: активен, активен с ошибками, не запущен. После старта проверяются логи на наличие критических ошибок. Используется logging.exception — теперь всё в логах с traceback.

Исправлены XSS в логах и баг с проверкой прав у админов. Ошибка чтения логов AssertionError: feed_data after feed_eof устранена.

6. Roadmap: Web UI, CLI и агент-ноды

Что дальше:

  • Агент-нода архитектура: бот будет контроллером, а на каждой VPS будет нода-агент. Управление из Telegram одного бота для десятков серверов.

  • Web UI: легковесная панель для мониторинга всех серверов. Не заменит бота, а дополнит.

  • CLI: управление ботом и нодами из терминала. Удобно для автоматизации.

Также будут расширяться модули: мониторинг Docker, бэкапы, интеграции.


Проект open-source, лицензия GPL-3.0. Присоединяйтесь, предлагайте идеи, ставьте звёздочки на GitHub. Сделаем администрирование серверов проще вместе!

Комментарии (0)