FOSSBilling + AlertWeb
Автоматическая выдача VPS клиентам FOSSBilling через REST API панели AlertWeb — по той же схеме, что BILLmanager и WHMCS.
Обзор
После оплаты заказа модуль вызывает API панели: создаёт VM из шаблона/пресета, выделяет IP из пула, сохраняет UUID и адрес в услуге FOSSBilling. При suspend/cancel — останавливает или удаляет VM.
Исходники: integrations/fossbilling/alertweb-hosting/modules/Servicealertweb/
Установка
- Скопируйте
modules/Servicealertwebвmodules/корня FOSSBilling - Extensions → Servicealertweb → Activate
- В настройках модуля укажите URL API и API-ключ панели
- Создайте продукты типа Hosting с опциями: шаблон ОС, пресет CPU/RAM/диск, кластер
Параметры подключения
| Параметр | Пример |
|---|---|
| API URL | https://panel.example.ru/api |
| URL панели | https://panel.example.ru (ссылка клиенту, консоль) |
| API token | Authorization: Bearer … или ключ alertweb_* |
| Cluster ID | Кластер для размещения VM и IPAM |
Права ключа: vms.create, vms.read, vms.destroy, vms.lifecycle, ipam.allocate.
Продукты VPS в FOSSBilling
Тип продукта — хостинг/VPS. Настраиваемые опции заказа:
- Шаблон ОС — из
GET /templates/ready - Пресет (vCPU, RAM, диск) — из
GET /vm-presets - Доп. IP — опция заказа →
allocate-ip
Жизненный цикл услуги
| Событие FOSSBilling | AlertWeb API |
|---|---|
| Активация заказа (оплачен) | POST /vms → ожидание job → IP |
| Suspend | POST /vms/{uuid}/actions/admin-stop |
| Unsuspend | POST /vms/{uuid}/actions/admin-unlock |
| Отмена / удаление | DELETE /vms/{uuid} |
| Смена тарифа | POST /vms/{uuid}/resize |
UUID VM хранится в custom field или service_config заказа.
Выдача IP
Модуль запрашивает пулы кластера (GET /ipam/pools?cluster_id=), выбирает пул со свободными адресами и вызывает POST /vms/{uuid}/allocate-ip. Без IP услуга не активируется.
Маппинг тарифов
Аналогично модулю BILLmanager:
- Опции продукта FOSSBilling ↔ ID пресета и шаблона в панели
- Доп. vCPU/RAM/диск — через resize после создания или расширенный пресет
Мультиаккаунтность
Владелец VM в панели определяется владельцем API-токена. Для изоляции клиентов: отдельный API-ключ на клиента или отдельный аккаунт панели на тарифный план.