Я не разработчик, но сделал Telegram-бота для Hysteria 2
Я не программист, языков не знаю, я небольшой руководитель отдела в айти, неплохо знаю серверную архитектуру. Но у меня была простая боль: недавно завел для себя и родни сервер Hysteria 2, до этого было с VLESS на сервере и устал каждый раз руками править YAML, когда нужно:
добавить или удалить пользователя, выдать доступ, проверить статус, перезапустить сервис и при этом ничего не сломать
Перерыл интернет и какое было мое удивление, когда я не нашел ничего, абсолютно, то есть единственное решение - либо лазить каждый раз на сервер либо сделать самому.
Сразу честно: делал с помощью LLM. Статью эту тоже, кстати. Панаму я приготовил. Цель статьи не выпендреж, а просто рассказать о боте, что бы его уже нормальные разработчики посмотрели переделали, может на основе его сделали адекватный продукт
Почему не SSH?
Да, можно через SSH, nano и systemctl. Но когда делаешь это регулярно — растёт шанс ошибки.
Хотелось проще: открыть Telegram, нажать пару кнопок и выдать доступ без ручного редактирования config.yaml.
Веб-панель тоже рассматривал, но бот оказался быстрее и удобнее “на ходу”.
Что умел MVP
Минимум, который был нужен:
/status — жив ли сервис /users — список пользователей add / delete / enable / disable генерация hy2:// ссылки /logs — последние логи /restart — перезапуск с подтверждением
Звучит просто. Пока не думаешь о безопасности.
Главная проблема: бот ≠ root
Первая (и плохая) идея — дать боту полный доступ: пусть сам правит YAML, дергает systemctl и читает логи.
Это почти готовый root-доступ извне.
Я сделал иначе:
Бот — это интерфейс, не исполнитель.
Бот хранит данные (SQLite) Все опасные действия делает отдельный helper на сервере Helper: генерирует YAML делает backup валидирует только потом применяет и перезапускает
В sudoers разрешены только конкретные команды helper-а, а не shell.
Безопасность (без этого смысла нет)
Сделал максимально жёстко:
deny by default доступ только по Telegram user ID (не username) админ-команды только в личке в группах — никаких опасных действий delete/apply/restart — через подтверждение audit log: кто, когда и что сделал
Бот должен быть параноидальным, а не “удобным для всех”.
Грабли, на которые я наступил
Права на конфиг permission denied на /etc/hysteria/config.yaml — лечится не перезапуском, а нормальными правами.
Cert/key Один неправильный путь — сервис не стартует. Плюс легко сломать доступ к privkey.pem.
URI и userpass
hy2:// и hysteria2:// формат username:password спецсимволы нужно кодировать
Очень легко получить “почти рабочую” ссылку.
Клиенты На iOS импорт URI иногда работает хуже, чем ручной ввод.
OpenWrt + sing-box Сначала “не работает”, потом “работает, но не так”, и только после настройки DNS и роутинга — всё нормально.
Что получилось
Сейчас это нормальный админ-пульт:
управляю доступами из Telegram не трогаю YAML руками опасные действия подтверждаются и главное — нет полного root-доступа у бота
Удобство появилось без видимых дыры в безопасности.
Про LLM
Да, я использовал нейронку. Но это не “магическая кнопка”.
Без продуманной архитектуры (права, границы, apply, валидация, rollback) получилась бы просто опасная игрушка.
Что бы сделал иначе сразу делал бы helper-архитектуру добавил бы audit log с самого начала разделил бы read и write операции по правам сделал бы preflight-проверки перед apply
Что дальше
Планирую:
улучшить UX, возможно добавить лёгкую веб-панель, оставить Telegram, как быстрый пульт
Уверен, что в коде кучу дыр в безопасности, еще раз говорю, я код не знаю, мои были идеи, промты и направление, как сделать лучше на самом сервере.
P.S. Это моя первая статья, готов ко всем минусам, хейту и так далее. Единственная цель этого поста - рассказать о боте и дать его в народ
ссылка не репу https://github.com/Ramisya4ka/hysteria-bot-manager (внутри есть очень подробное Readme)
















