Журнал сеньора вайбкодера уроки из опыта, заметки и инсайты

Личный публичный архив мыслей: оформленные как уроки наблюдения, рефлексия, идеи и недельные сводки.

RSS
← Назад к ленте

Мои серверы теперь в Telegram

hero

Раньше мои серверы молчали. Чтобы узнать, что с ними, нужно было зайти по SSH, набрать htop, пробежаться по логам, вспомнить, где лежат метрики. Каждый такой заход — переключение контекста, которое выбивает из потока на пять-десять минут. Теперь серверы сами пишут мне в Telegram. Раз в час приходит сводка: нагрузка CPU, свободное место на диске, состояние сервисов. Если что-то ломается — алерт прилетает мгновенно. И самое интересное — я могу ответить. Не просто прочитать, а дать команду, запустить скрипт, перезапустить процесс. Мессенджер стал интерфейсом к моей инфраструктуре.

Контекст

Классический подход к управлению сервером выглядит как набор разрозненных инструментов: SSH для доступа, Grafana для графиков, Prometheus для алертов, отдельный почтовый ящик для уведомлений, отдельный дашборд для логов. И где-то между ними — ты, человек, который должен переключаться между всем этим, чтобы понять, что вообще происходит.

Проблема не в том, что инструментов много. Проблема в том, что каждый требует отдельного действия: открыть, авторизоваться, найти нужный график, вспомнить команду. Это трение накапливается. Если на проверку состояния сервера уходит даже пять минут, а ты проверяешь его три раза в день — это 15 минут ежедневно, почти два часа в неделю просто на «посмотреть, всё ли в порядке».

При этом Telegram у меня открыт всегда. Это единственное приложение, которое я проверяю чаще, чем терминал. Естественная мысль: почему бы серверам не писать туда?

Как это началось

Всё сошлось в одной точке: Hermes Agent. Я уже использовал его как связку между своей мыслью и действием — он выполнял задачи в терминале, работал с файлами, публиковал статьи в журнал. В какой-то момент я настроил Telegram-шлюз — и мой AI-агент переехал из терминала в мессенджер.

Архитектура простая: Hermes Agent подключается к Telegram Bot API и слушает сообщения. Когда я пишу в чат, сообщение попадает в агента. Агент может использовать те же инструменты, что и в терминале: выполнять команды на сервере, читать файлы, запускать скрипты. Разница только в том, что теперь я нахожусь не за десктопом с открытым терминалом, а где угодно — с телефоном в руке.

Первое, что я сделал — поставил cron-задачу на мониторинг: /cron create каждый час "проверь состояние сервера и пришли сводку". Через час в Telegram упало первое сообщение: CPU 12%, памяти 34%, диск 47%, все сервисы живы. Я сидел в очереди в банке и видел состояние своего сервера. Это был момент, когда щёлкнуло: так можно.

Что изменилось

Алерты приходят раньше, чем пользователи замечают проблему. Hermes проверяет сервер по расписанию. Если нагрузка выходит за порог или сервис упал — я узнаю мгновенно, а не когда кто-то напишет «у меня сайт не грузится».

Журнал публикуется с телефона. Раньше для публикации статьи нужно было: сесть за компьютер, открыть терминал, запустить скрипт деплоя. Теперь я диктую статью голосовым сообщением в Telegram, агент распознаёт текст, прогоняет через редактора, генерирует обложку и публикует на brianfox.ru. Ни одного нажатия клавиши. Для weekly-сводок это вообще работает автоматически — раз в неделю приходит готовый дайджест.

Сервер отвечает. Не просто шлёт алерты, а реагирует на команды. Нужно перезапустить nginx? sudo systemctl restart nginx — прямо в чат. Проверить логи за последний час? journalctl -u nginx --since "1 hour ago" — агент выполнит и пришлёт вывод. Освободить место? docker system prune -af — с подтверждением, чтобы не нажать случайно.

Всё в одном окне. Раньше цепочка была: Telegram (личные чаты) → терминал (сервер) → браузер (Grafana) → почта (алерты). Теперь это один чат, где чередуются личные сообщения, сводки сервера и команды. Переключение контекста исчезло.

Техническая сторона

Связка работает через три слоя:

  1. Telegram Bot API — принимает сообщения и отправляет ответы. Бот создаётся через BotFather за две минуты, токен прописывается в конфиг Hermes.

  2. Hermes Agent Gateway — слушает входящие сообщения от Telegram, маршрутизирует их в AI-агента, возвращает ответ. Поддерживает не только текст, но и голосовые сообщения (распознавание через Whisper), изображения, файлы.

  3. Серверные инструменты — агент имеет доступ к терминалу сервера (через SSH-бэкенд Hermes) и файловой системе. Это позволяет ему выполнять любые команды, которые я бы выполнял руками.

Важный нюанс: агент не заменяет полноценный мониторинг. Prometheus и Grafana по-прежнему собирают детальные метрики. Но для 90% ежедневных вопросов — «всё ли работает?», «сколько места на диске?», «кто заходил?» — ответа в Telegram достаточно. Агент становится не заменой, а удобной надстройкой над существующей инфраструктурой.

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

Давайте честно: дать мессенджеру доступ к SSH на боевом сервере — звучит как плохая идея. И без грамотной настройки ей и является. Вот что я сделал, чтобы спать спокойно.

Привязка к пользователю. Hermes проверяет Telegram ID отправителя. Команды принимаются только от моего аккаунта. Если кто-то чужой напишет боту — он просто не получит доступа к инструментам.

Подтверждение опасных команд. По умолчанию Hermes запрашивает подтверждение перед выполнением потенциально деструктивных операций: rm -rf, systemctl stop, перезагрузка. Это не отключается случайно — нужно явно выставить режим в конфиге.

Агент на минимальных привилегиях. У Hermes нет root-доступа ко всему серверу. Он работает через отдельного пользователя с ограниченным набором разрешений: может читать логи, проверять статусы сервисов и выполнять заранее определённые команды через sudo с whitelist-ом.

Всё логируется. Каждая команда, переданная через Telegram, пишется в лог. Если что-то пойдёт не так — всегда можно восстановить, кто и когда выполнил действие.

Баланс здесь такой: удобство не должно идти в ущерб безопасности, но и паранойя не должна убивать продуктивность. Проверка отправителя + подтверждение опасных команд + минимальные привилегии = достаточно, чтобы не бояться собственного бота.

Урок

Главное, что я вынес из этого опыта: мессенджер может быть полноценным интерфейсом к инфраструктуре, а не просто каналом для алертов. Разница принципиальная. Когда ты только читаешь алерты — ты пассивный наблюдатель. Когда можешь ответить действием — ты оператор, который решает проблему в том же окне, где её увидел.

Это закрывает разрыв между «узнал о проблеме» и «начал решать». Раньше этот разрыв требовал дойти до компьютера, открыть терминал, вспомнить команду. Теперь он измеряется секундами — столько, сколько нужно, чтобы написать ответ в чат.

Для соло-разработчика или владельца небольшого проекта это меняет правила игры. У тебя нет команды DevOps-инженеров и сменного дежурства. Ты сам — и команда, и дежурный. И чем быстрее ты можешь отреагировать на проблему с сервером, тем меньше она повлияет на пользователей.

Мои серверы теперь в Telegram. И это не трюк и не демка — это новый способ взаимодействия с собственной инфраструктурой, к которому я уже привык и без которого уже некомфортно.