dispatch · monitor
personal infrastructure management platform
почему это появилось
Ни один хостер не даст вам гарантию 100% uptime. Когда ты мигрируешь каждый месяц, потому что сервер упал, поддержка тупит, а твои проекты стоят потому что у тебя сломался SSH или закрылся порт - это начинает раздражать. И тут в дело вступает Dispatch.
Когда серверов становится два и больше, а инфраструктура развивается геометрическими шагами, привычка "зайти по SSH и посмотреть" превращается в рутину. Конечно, существуют готовые решения - открываешь сотни терминалов, читаешь логи, смотришь htop или docker ps, закрываешь — но через час всё повторяется, а глаз уже замылен и можно пропустить что-то важное.
Dispatch — это один экран вместо пяти панелей, функционал которых в 95% случаев не нужен рядовому пользователю. Не панель управления в духе cPanel или Portainer, а личный инструмент написанный под конкретную инфраструктуру и конкретные задачи.
философия
👁
dispatcher
Система наблюдает и сигнализирует. Она никогда не принимает решения сама - финальное слово всегда за человеком.
📡
signal, but don't act
Recovery Agent может попробовать исправить проблему — но честно скажет если не помогло. Никаких тихих действий в фоне.
🔒
least privilege
Flask подключается к серверам как пользователь dispatch, без root пользователя и root прав. SSH-ключ — read-only, 2FA через Telegram.
🔁
no loops
Никаких фоновых цепочек без явного подтверждения. Каждое действие — отдельный запрос с явным намерением.
из чего состоит
core/
SSH-клиент, БД, модели серверов, конфиг, защита от петель
monitor/
Сбор метрик, алерты, планировщик, Recovery Agent
suitcase/
17 коллекторов аудита конфигурации, миграция между серверами
bot/
Telegram: алерты, 2FA подтверждение входа, управление
web/
Flask панель, публичное портфолио, Pulse, API
cli/
Click CLI для локального запуска аудита без веб-панели
зачем такой стек
🔌
Почему asyncssh?
Сервера не знают что за ними наблюдают. Никаких лишних демонов или агентов, никаких лишних портов. Dispatch подключается по SSH и уходит.
⚗️
Почему Flask?
Панель для одного человека, а не проекта уровня Google. Flask даёт ровно столько сколько нужно без лишнего груза.
🗄️
Почему SQLite?
Три сервера, один администратор. Один файл БД — проще бэкапить, проще переносить, нет лишнего сервиса.
📱
Зачем aiogram 3?
Бот всегда под рукой. Алерты, 2FA, управление контейнерами — всё в одном месте без отдельного приложения.
🚀
GitHub Actions
Пуш в main → тесты → mypy → деплой на VPS. Защита от ошибок - если тесты не прошли —> деплоя нет.
🐳
Docker — изоляция без компромиссов
Каждый сервис в своём контейнере: упал один — остальные живут. Переезд на новый сервер становится проще — скопировать файл и запустил согласно требованиям.
← на главную