Забыл продлить VPS? Сделал open‑source панель с напоминаниями и sync API хостеров

от автора

В какой‑то момент у меня накопилось несколько 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/