Документация ISPGo

Полная документация по панели управления ISPGo, REST API и CLI утилитам

Биллинговая система предоставлена alertweb.ru

Начало работы

Установка панели

Панель ISPGo устанавливается автоматически с помощью установщика:

curl -sSL http://ispgo.alertweb.ru/install.sh | sudo bash

Установщик автоматически установит все зависимости, настроит базу данных и создаст администратора.

Первоначальная настройка

  1. После установки получите учетные данные: cat /root/ispgo-credentials.txt
  2. Откройте веб-интерфейс по адресу http://your-server-ip/
  3. Войдите с учетными данными администратора
  4. Настройте серверы, клиентов и начните создавать ресурсы

Управление веб-сайтами

Создание веб-домена

В веб-интерфейсе панели:

  1. Перейдите в раздел "Веб-домены"
  2. Нажмите "Создать домен"
  3. Заполните форму:
    • Выберите сервер
    • Выберите клиента
    • Введите доменное имя (например, example.com)
    • Укажите корневую директорию (document root)
    • Выберите версию PHP (если требуется)
    • Включите SSL для автоматической установки Let's Encrypt сертификата
  4. Сохраните домен

После создания домена панель автоматически сгенерирует конфигурацию для Apache2/Nginx и перезагрузит веб-сервер.

FTP доступ

Для создания FTP пользователя:

  1. Откройте веб-домен
  2. Перейдите в раздел "FTP пользователи"
  3. Создайте нового пользователя с указанием домашней директории
  4. Установите пароль и права доступа

Управление почтой

Создание почтового домена

  1. Перейдите в раздел "Почтовые домены"
  2. Создайте новый почтовый домен
  3. Укажите доменное имя (например, example.com)
  4. Настройте MX записи в DNS

Создание почтового ящика

  1. Откройте почтовый домен
  2. Создайте нового почтового пользователя
  3. Укажите email адрес и пароль
  4. Установите квоту (лимит размера почтового ящика)

Почтовые ящики доступны через IMAP/POP3 и веб-интерфейс (Roundcube).

Управление DNS

Создание DNS зоны

  1. Перейдите в раздел "DNS зоны"
  2. Создайте новую зону
  3. Укажите origin (доменное имя зоны)
  4. Настройте NS записи (nameservers)
  5. Установите параметры SOA (refresh, retry, expire, minimum)

Добавление DNS записей

Поддерживаемые типы записей:

A - IPv4 адрес
AAAA - IPv6 адрес
MX - Почтовый сервер
CNAME - Каноническое имя
TXT - Текстовая запись
NS - Nameserver

Управление базами данных

Создание базы данных

  1. Перейдите в раздел "Базы данных"
  2. Создайте новую базу данных MySQL/MariaDB
  3. Укажите имя базы данных
  4. Создайте пользователя БД с паролем
  5. Назначьте права доступа

Доступ к базе данных возможен через phpMyAdmin или напрямую через MySQL клиент.

Импорт базы данных

Для импорта существующей базы данных:

  1. Подготовьте SQL дамп базы данных
  2. Используйте API endpoint /api/v1/databases/import (требует admin)
  3. Или используйте phpMyAdmin для импорта через веб-интерфейс

Управление Cron задачами

Создание Cron задачи

  1. Перейдите в раздел "Cron задачи"
  2. Создайте новую задачу
  3. Укажите расписание в формате cron (например, 0 2 * * * для ежедневного выполнения в 2:00)
  4. Укажите команду для выполнения
  5. Выберите пользователя, от имени которого будет выполняться задача

Cron задачи автоматически добавляются в crontab выбранного пользователя.

Управление серверами

Мультисерверная конфигурация

Панель поддерживает управление несколькими серверами из одной панели:

  1. Добавьте новый сервер в разделе "Серверы" (требует admin)
  2. Укажите IP адрес, SSH доступ и другие параметры
  3. Проверьте подключение к серверу
  4. При создании доменов выберите нужный сервер

Важно: Все серверы используют централизованную базу данных. Изменения синхронизируются автоматически через систему datalog.

Синхронизация DNS и Firewall

Для синхронизации конфигураций на удаленных серверах:

  • Используйте API endpoint /api/v1/servers/:id/sync-dns для синхронизации DNS
  • Используйте /api/v1/servers/:id/sync-firewall для синхронизации правил firewall
  • Или используйте веб-интерфейс для ручной синхронизации

Резервное копирование

Создание бэкапа

Панель поддерживает создание бэкапов для:

Веб-сайты

Бэкап файлов веб-домена и конфигурации

Почта

Бэкап почтовых ящиков и конфигурации

Базы данных

SQL дамп базы данных

Пользователи

Бэкап домашних директорий пользователей

Для создания бэкапа:

  1. Перейдите в раздел "Бэкапы"
  2. Выберите тип ресурса и конкретный ресурс
  3. Укажите описание (опционально)
  4. Создайте бэкап

Расписания бэкапов

Для автоматического создания бэкапов по расписанию (требует admin):

  1. Перейдите в раздел "Расписания бэкапов"
  2. Создайте новое расписание
  3. Укажите тип бэкапа (web, mail, database, user, all)
  4. Установите cron выражение для расписания
  5. Укажите срок хранения бэкапов (retention_days)

Восстановление из бэкапа

Для восстановления ресурса из бэкапа:

  1. Найдите нужный бэкап в списке
  2. Нажмите "Восстановить"
  3. Подтвердите восстановление

Внимание: Восстановление перезапишет существующие данные. Убедитесь, что у вас есть актуальный бэкап перед восстановлением.

SSL сертификаты

Автоматическая установка Let's Encrypt

При создании веб-домена с включенным SSL панель автоматически:

  1. Запрашивает SSL сертификат у Let's Encrypt
  2. Устанавливает сертификат на сервер
  3. Настраивает автоматическое обновление сертификата
  4. Настраивает редирект с HTTP на HTTPS (если включен SSL Redirect)

Управление сертификатами

В разделе "SSL сертификаты" (требует admin) вы можете:

  • Просматривать все установленные сертификаты
  • Обновлять сертификаты вручную
  • Удалять сертификаты

Управление PHP

Установка версий PHP

Панель поддерживает установку и управление несколькими версиями PHP (требует admin):

  1. Перейдите в раздел "PHP Management"
  2. Выберите версию PHP для установки
  3. Установите версию через API или веб-интерфейс
  4. Настройте конфигурацию PHP при необходимости

После установки версия PHP становится доступной для выбора при создании веб-доменов.

Настройка PHP-FPM пулов

Для каждого веб-домена создается отдельный PHP-FPM pool с настраиваемыми параметрами:

  • Лимиты памяти (memory_limit)
  • Максимальное количество процессов (pm.max_children)
  • Таймауты выполнения скриптов
  • Другие параметры php.ini

Файловый менеджер

Работа с файлами

Панель предоставляет файловый менеджер через API для:

  • Просмотра списка файлов и директорий
  • Чтения и редактирования файлов
  • Создания новых файлов и директорий
  • Копирования и перемещения файлов
  • Изменения прав доступа (chmod) и владельца (chown)
  • Архивации и распаковки архивов

Все операции выполняются с учетом прав доступа пользователя панели.

Мониторинг и статистика

Дашборд

На главной странице панели отображается:

  • Общая статистика: количество доменов, почтовых ящиков, баз данных
  • Использование ресурсов сервера
  • Последние действия и изменения
  • Статус сервисов (веб-сервер, почта, DNS и др.)

Статистика трафика

Панель отслеживает использование трафика для каждого веб-домена:

  • Входящий и исходящий трафик
  • Статистика по месяцам
  • Лимиты трафика (если установлены)

Аутентификация

Базовый URL

http://your-server-ip/api/v1

Получение токена

Все защищенные endpoints требуют JWT токен в заголовке:

Authorization: Bearer <token>

POST /api/v1/auth/login

Request:

{
  "username": "admin",
  "password": "password123"
}

Response:

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "user": {
    "id": 1,
    "username": "admin",
    "email": "admin@example.com"
  }
}

API Endpoints

Health Check

GET /api/v1/health - Проверка статуса сервиса (публичный)

Лицензия

GET /api/v1/license - Информация о лицензии
POST /api/v1/license/validate - Валидация и активация лицензии

Клиенты

GET /api/v1/clients - Список клиентов
GET /api/v1/clients/:id - Получить клиента
POST /api/v1/clients - Создать клиента (admin)
PUT /api/v1/clients/:id - Обновить клиента (reseller/admin)
DELETE /api/v1/clients/:id - Удалить клиента (admin)

Веб-домены

GET /api/v1/domains - Список веб-доменов
GET /api/v1/domains/:id - Получить веб-домен
POST /api/v1/domains - Создать веб-домен
PUT /api/v1/domains/:id - Обновить веб-домен
DELETE /api/v1/domains/:id - Удалить веб-домен
POST /api/v1/domains/migrate - Миграция домена (admin)
GET /api/v1/domains/:id/nginx-config - Получить конфигурацию Nginx
PUT /api/v1/domains/:id/nginx-config - Обновить конфигурацию Nginx

Пример запроса (POST /api/v1/domains):

{
  "server_id": 1,
  "client_id": 1,
  "domain": "example.com",
  "document_root": "/var/www/example.com",
  "php": "php8.3-fpm",
  "ssl": true,
  "ssl_redirect": true,
  "ddos_protection": false,
  "rate_limit_rps": 100,
  "rate_limit_rpm": 1000,
  "connection_limit": 50,
  "pretty_url": true,
  "active": true
}

Почта

Почтовые домены

GET /api/v1/mail/domains - Список почтовых доменов
GET /api/v1/mail/domains/:id - Получить почтовый домен
POST /api/v1/mail/domains - Создать почтовый домен
PUT /api/v1/mail/domains/:id - Обновить почтовый домен
DELETE /api/v1/mail/domains/:id - Удалить почтовый домен

Почтовые пользователи

GET /api/v1/mail/users - Список почтовых пользователей
GET /api/v1/mail/users/:id - Получить почтового пользователя
POST /api/v1/mail/users - Создать почтового пользователя
PUT /api/v1/mail/users/:id - Обновить почтового пользователя
DELETE /api/v1/mail/users/:id - Удалить почтового пользователя

Пересылки почты

GET /api/v1/mail/forwardings - Список пересылок
GET /api/v1/mail/forwardings/:id - Получить пересылку
POST /api/v1/mail/forwardings - Создать пересылку
PUT /api/v1/mail/forwardings/:id - Обновить пересылку
DELETE /api/v1/mail/forwardings/:id - Удалить пересылку

Транспорты, доступы, рассылки

/api/v1/mail/transports - Управление транспортами
/api/v1/mail/accesses - Управление доступами
/api/v1/mail/mailing-lists - Управление списками рассылки

DNS

DNS зоны

GET /api/v1/dns/zones - Список DNS зон
GET /api/v1/dns/zones/:id - Получить DNS зону
POST /api/v1/dns/zones - Создать DNS зону
PUT /api/v1/dns/zones/:id - Обновить DNS зону
DELETE /api/v1/dns/zones/:id - Удалить DNS зону

DNS записи

GET /api/v1/dns/records - Список DNS записей (опционально ?zone_id=1)
GET /api/v1/dns/records/:id - Получить DNS запись
POST /api/v1/dns/records - Создать DNS запись
PUT /api/v1/dns/records/:id - Обновить DNS запись
DELETE /api/v1/dns/records/:id - Удалить DNS запись

DNS Slaves

/api/v1/dns/slaves - Управление DNS slave серверами

Базы данных

Базы данных

GET /api/v1/databases - Список баз данных
GET /api/v1/databases/:id - Получить базу данных
POST /api/v1/databases - Создать базу данных
PUT /api/v1/databases/:id - Обновить базу данных
DELETE /api/v1/databases/:id - Удалить базу данных
POST /api/v1/databases/import - Импорт базы данных (admin)

Пользователи БД

/api/v1/databases/users - CRUD операции для пользователей БД

Дополнительные endpoints

Серверы

/api/v1/servers - управление серверами (admin)

/api/v1/servers/:id/check-connection - проверка подключения

/api/v1/servers/:id/sync-dns - синхронизация DNS

/api/v1/servers/:id/sync-firewall - синхронизация firewall

FTP/Shell пользователи

/api/v1/ftp-users - управление FTP пользователями

/api/v1/shell-users - управление Shell пользователями

Cron задачи

/api/v1/cron - управление cron задачами (CRUD)

Web Folders

/api/v1/web-folders - управление веб-папками

/api/v1/web-folder-users - пользователи веб-папок

Firewall

/api/v1/firewall - управление правилами firewall (admin)

/api/v1/firewall/sync - синхронизация правил

Бэкапы

/api/v1/backups - управление бэкапами

/api/v1/backups/:id/restore - восстановление

/api/v1/backup-schedules - расписания (admin)

SSL сертификаты

/api/v1/ssl - управление SSL сертификатами (admin)

/api/v1/ssl/:id/renew - обновление сертификата

PHP Management

/api/v1/php/versions - список версий PHP (admin)

/api/v1/php/:version/config - конфигурация PHP

/api/v1/php/install - установка версии PHP

Файловый менеджер

/api/v1/files/list - список файлов

/api/v1/files/read - чтение файла

/api/v1/files/write - запись файла

/api/v1/files/archive - архивация

Мониторинг

/api/v1/dashboard/stats - статистика дашборда

/api/v1/system/stats - системная статистика

/api/v1/traffic/stats - статистика трафика

/api/v1/services/status - статус сервисов

Система

/api/v1/user/profile - профиль пользователя

/api/v1/panel-users - пользователи панели (admin)

/api/v1/system-settings - настройки системы (admin)

/api/v1/updates - обновления панели (admin)

Terminal

/api/v1/terminal - WebSocket терминал

API биллинга

Базовый URL

http://your-domain.com/api

Аутентификация

Для работы с API биллинга требуется токен Sanctum:

POST /api/auth/token

{
  "email": "client@example.com",
  "password": "password123",
  "device_name": "My API Client"
}

Используйте токен в заголовке:

Authorization: Bearer <token>

Основные эндпоинты

Тарифы

GET /api/client/plans - Список доступных тарифов с периодами

Покупка лицензии

POST /api/client/plans/{plan_id}/purchase - Покупка одной лицензии

Пример запроса:

{
  "payment_method": "balance",
  "name": "Мой сервер",
  "server_ip": "192.168.1.100",
  "period_id": 1,
  "auto_renewal": false
}

Для массовой покупки используйте цикл с вызовом этого эндпоинта

Лицензии

GET /api/client/licenses - Список лицензий

GET /api/client/licenses/{id} - Информация о лицензии

POST /api/client/licenses/{id}/toggle-auto-renewal - Включить/выключить автопродление

Баланс

GET /api/client/balance - Информация о балансе и транзакциях

API биллинга

Базовый URL

http://your-domain.com/api

Аутентификация

Для работы с API биллинга требуется токен Sanctum:

POST /api/auth/token

{
  "email": "client@example.com",
  "password": "password123",
  "device_name": "My API Client"
}

Используйте токен в заголовке:

Authorization: Bearer <token>

Основные эндпоинты

Тарифы

GET /api/client/plans - Список доступных тарифов с периодами

Покупка лицензии

POST /api/client/plans/{plan_id}/purchase - Покупка одной лицензии

Пример запроса:

{
  "payment_method": "balance",
  "name": "Мой сервер",
  "server_ip": "192.168.1.100",
  "period_id": 1,
  "auto_renewal": false
}

Для массовой покупки используйте цикл с вызовом этого эндпоинта

Лицензии

GET /api/client/licenses - Список лицензий

GET /api/client/licenses/{id} - Информация о лицензии

POST /api/client/licenses/{id}/toggle-auto-renewal - Включить/выключить автопродление

Баланс

GET /api/client/balance - Информация о балансе и транзакциях

Примеры использования

Получение токена

curl -X POST http://your-server-ip/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"username": "admin",
"password": "your_password"
}'

Сохраните полученный токен для использования в последующих запросах.

Создание веб-домена

curl -X POST http://your-server-ip/api/v1/domains \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"server_id": 1,
"client_id": 1,
"domain": "example.com",
"document_root": "/var/www/example.com",
"php": "php8.3-fpm",
"ssl": true,
"ssl_redirect": true,
"active": true
}'

Создание почтового пользователя

curl -X POST http://your-server-ip/api/v1/mail/users \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mail_domain_id": 1,
"email": "user@example.com",
"password": "SecurePassword123",
"quota": 1073741824
}'

quota указывается в байтах (1073741824 = 1GB).

Создание DNS записи

curl -X POST http://your-server-ip/api/v1/dns/records \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"zone_id": 1,
"name": "www",
"type": "A",
"data": "192.168.1.1",
"ttl": 3600
}'

Создание базы данных

curl -X POST http://your-server-ip/api/v1/databases \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"server_id": 1,
"client_id": 1,
"database_name": "mydb",
"database_type": "mysql"
}'

Получение статистики

curl -X GET http://your-server-ip/api/v1/dashboard/stats \
-H "Authorization: Bearer YOUR_TOKEN"

Создание бэкапа

curl -X POST http://your-server-ip/api/v1/backups \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "web",
"resource_id": 1,
"resource_type": "web_domain",
"description": "Daily backup",
"storage_type": "local"
}'

ispgo-admin

Описание

Утилита для создания и управления администраторами панели ISPGo.

Использование

ispgo-admin -username admin -password admin123

Опции

-username Имя пользователя (по умолчанию: admin)
-password Пароль (если не указан, будет сгенерирован автоматически)
-email Email адрес (опционально)
-config Путь к config.yaml (по умолчанию: /usr/local/ispgo/config/config.yaml)
-version Показать версию и информацию о сборке

Примеры

Создать администратора с указанным паролем:

ispgo-admin -username admin -password MySecurePass123

Создать администратора с автогенерацией пароля:

ispgo-admin -username admin

Показать версию:

ispgo-admin -version

ispgo-panel

Описание

Утилита для управления панелью, мониторинга и выполнения административных задач.

Действия

stats Показать статистику панели

Выводит информацию о горутинах, использовании памяти, статистике БД и количестве ресурсов.

restart Перезапустить сервисы

Перезапускает сервисы ispgo-server и ispgo-web через systemctl.

cache-clear Очистить кэш

Очищает кэш панели, удаляя временные файлы из директории cache.

status Проверить статус сервисов

Показывает статус сервисов ispgo-server и ispgo-web (активны/неактивны, PID, использование памяти).

version Показать версию

Выводит версию панели и информацию о конфигурации.

Примеры использования

Показать статистику:

ispgo-panel -action=stats

Выводит JSON с информацией о runtime, базе данных и ресурсах.

Перезапустить сервисы:

ispgo-panel -action=restart

Очистить кэш:

ispgo-panel -action=cache-clear

Проверить статус:

ispgo-panel -action=status

Показать версию:

ispgo-panel -action=version

Опции

-action Действие: stats, restart, cache-clear, status, version (обязательно)
-config Путь к config.yaml (по умолчанию: /usr/local/ispgo/config/config.yaml)

Статистика (stats)

Команда ispgo-panel -action=stats выводит JSON с следующей информацией:

  • Runtime: количество горутин, использование памяти (Alloc, TotalAlloc, Sys, NumGC)
  • Database: количество подключений, in use, idle, max open connections, wait count
  • Resources: количество веб-доменов, почтовых доменов, баз данных, пользователей, клиентов, бэкапов
  • Services: статус сервисов ispgo-server и ispgo-web