В какой‑то момент у меня накопилось несколько 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. Это необязательно, но будет приятно, ведь так я пойму, что кому‑то помог.
Комментарии (6)

igrblkv
16.06.2026 14:06Скрипт для Проксмокса для развёртывания в LXC?
Готовая виртуалка для развёртывания у себя?Не очень понятно, зачем её именно на VPS?
Сколько надо ресурсов? 1vCPU/1GB RAM/10GB HDD хватит или не запуститься даже?
А если 512М RAM?
AlekseyRus Автор
16.06.2026 14:06Отличное замечание. Впс не обязателен, панель действительно легко можно установить к себе через lxs контейнер. У меня она крутится на еу впс просто, чтобы не заморачиваться с туннелями для работы тг, так как личный сервер стоит в рф. Скрипт для проксмы сейчас добавлю. Для работы хватит 1 ядра 1 гб оперативной памяти и 10гб дискового пространства

Kenya-West
16.06.2026 14:06... Docker, one‑liner install, Telegram‑напоминания, синхронизация, backup и нормальная базовая безопасность.
Star на GitHub
Смотря какой performance, смотря какая stability.
Но за старание вам плюс автоматом! Надо потом бекенд отделить от дашборда и прикрутить к Grafana и Alert manager.

bosha
16.06.2026 14:06Простите, а чем почта не угодила? Не встречал еще ни одного хостера, который бы не умел слать уведомления с напоминанием об оплате.
AnyDen
Мне нравится идея, у самого пока vps мало, 5 штук в разных хостингах. И пока проблема больше не с напоминанием об оплате, а что где установлено и как настроено, т.е. какие сервисы, на каких протоколах и портах. Уже приходится вести ексель табличку, где в том числе и инфа об оплате (сроки и стоимость). Есть ли возможность заносить дополнительные данные?
AlekseyRus Автор
Да, есть возможность добавить аккаунт провайдера, добавить сервера, которые там находятся, с указанием данных для подключения. Вся необходимая информация доступна для добавления.