В какой‑то момент у меня накопилось несколько VPS у разных провайдеров. Не десятки, но уже достаточно, чтобы каждый месяц ловить себя на одной и той же мысли: «А этот сервер когда оплачивать?»
Ссылка на биллинг — где‑то в закладках. Дата продления — в Telegram. Пароль от кабинета — в другом месте. Таблицы, заметки, все разбросано. Пока серверов немного, это ещё работает. Когда их перевалило за 15, начинаешь постоянно все терять. Кто хостер, а что там крутится, вкладки, вкладки, вкладки!
Так появилась идея: сделать личный кабинет для своих серверов.
Панель не проводит платежи и не хранит банковские карты. Она напоминает о сроках, держит ссылки на оплату, показывает статус серверов — «в порядке», «скоро», «срочно», «просрочено» — и при желании подтягивает данные из API провайдера. Только на чтение.
Репозиторий:
https://github.com/AlekseyRusaleev/Server‑billing
Релиз v1.0.0:
https://github.com/AlekseyRusaleev/Server‑billing/releases/tag/v1.0.0
Лицензия: MIT. Проект open source.
Что получилось
Я не хотел делать простыню из 40 пунктов, поэтому опишу главное.
Дашборд
Основная идея — один экран, на котором видно всё важное: серверы, ближайшие оплаты и фильтры.
У каждого сервера есть IP, логин, зашифрованный пароль, дата следующего платежа, кнопка перехода к оплате и кнопка «отметить оплачено». При отметке оплаты дата переносится вперёд, а действие записывается в историю.
Несколько VPS можно привязать к одному аккаунту хостинга. Например, один логин у провайдера — и несколько машин внутри него.
Telegram‑напоминания
Напоминания настраиваются за 7, 3, 1, 0 и −1 день до оплаты. Также есть сводки после автосинхронизации и backup базы.
Backup отправляется не сырым SQLite‑файлом, а зашифрованным.db.enc.
Для Telegram‑бота сделал мастер настройки прямо в панели: token → «найти мой чат» → тестовое сообщение. Вручную копировать chat ID необязательно.
Провайдеры и синхронизация
Есть три режима работы:
1. Полностью ручной режим — подходит для любого хостера без API.
2. BILLmanager‑совместимый API.
3. Web API по ключу.
Синхронизация ничего не оплачивает и не меняет у провайдера. Она только подтягивает данные: даты, IP, суммы и статусы.
Если какие‑то поля были исправлены вручную, для сервера можно включить флаг «не перезаписывать при автосинхронизации».
Остальные функции
Из того, чем я реально пользуюсь или что добавлял под запросы:
· календарь оплат;
· аналитика по месяцам;
· валюты RUB / USD / EUR / USDT;
· мониторинг SSL;
· веб‑SSH из браузера;
· каталог хостеров с фильтрами.
Веб‑SSH есть, но по умолчанию выключен.
Каталог хостеров — скорее витрина и набор шаблонов, чем мой личный список.
Установка
На чистом Linux VPS установка запускается одной командой:
curl ‑fsSL https://raw.githubusercontent.com/AlekseyRusaleev/Server‑billing/main/scripts/install.sh | bash
Install‑скрипт спрашивает домен. Если домена нет, можно использовать адрес через sslip.io: получится что‑то вроде https://ВАШ_IP.sslip.io. TLS поднимается через Caddy.
Также скрипт попросит:
· логин администратора;
· пароль администратора;
· отдельный пароль разблокировки ключей шифрования.
Последний пароль — это не пароль от панели. Он нужен для расшифровки секретов в базе. Минимальная длина — 12 символов. Его важно сохранить: без него расшифровать данные не получится.
Стек проекта:
· Python 3.12;
· FastAPI;
· SQLite;
· Docker Compose;
· Caddy.
Если 443 порт уже занят nginx, есть отдельный compose‑вариант под nginx.
Кому это подойдёт
Проект подойдёт, если у вас несколько VPS у разных хостеров и вы хотите self‑hosted‑панель без подписки.
Основной сценарий:
· хранить список серверов;
· видеть ближайшие оплаты;
· получать напоминания;
· держать ссылки на биллинг;
· вести историю оплат;
· при необходимости синхронизироваться с API провайдера.
Не подойдёт, если вам нужны:
· multi‑user;
· роли и права доступа;
· биллинг клиентов;
· приём платежей;
· полноценная CRM для хостинга.
Это одна учётная запись администратора. Так задумано специально.
Зачем выкладываю на Habr
Я не продаю SaaS и не ищу инвестора.
v1.0.0 — первая версия, которой уже не стыдно делиться: есть Docker, one‑liner install, Telegram‑напоминания, синхронизация, backup и нормальная базовая безопасность.
Если проект кому‑то сэкономит нервы на продлениях серверов — уже хорошо.
Star на GitHub помогает другим админам наткнуться на репозиторий. Не обязательно, но полезно для проекта.
P. S. Если проект оказался полезен, можно поддержать через Telegram Stars: @AlekseyRdonate_bot. Это необязательно, но будет приятно, ведь так я пойму, что кому‑то помог.
ссылка на оригинал статьи https://habr.com/ru/articles/1048222/