Документация ISPGo
Полная документация по панели управления ISPGo, REST API и CLI утилитам
Биллинговая система предоставлена alertweb.ru
Начало работы
Установка панели
Панель ISPGo устанавливается автоматически с помощью установщика:
curl -sSL http://ispgo.alertweb.ru/install.sh | sudo bash
Установщик автоматически установит все зависимости, настроит базу данных и создаст администратора.
Первоначальная настройка
- После установки получите учетные данные:
cat /root/ispgo-credentials.txt - Откройте веб-интерфейс по адресу
http://your-server-ip/ - Войдите с учетными данными администратора
- Настройте серверы, клиентов и начните создавать ресурсы
Управление веб-сайтами
Создание веб-домена
В веб-интерфейсе панели:
- Перейдите в раздел "Веб-домены"
- Нажмите "Создать домен"
- Заполните форму:
- Выберите сервер
- Выберите клиента
- Введите доменное имя (например, example.com)
- Укажите корневую директорию (document root)
- Выберите версию PHP (если требуется)
- Включите SSL для автоматической установки Let's Encrypt сертификата
- Сохраните домен
После создания домена панель автоматически сгенерирует конфигурацию для Apache2/Nginx и перезагрузит веб-сервер.
FTP доступ
Для создания FTP пользователя:
- Откройте веб-домен
- Перейдите в раздел "FTP пользователи"
- Создайте нового пользователя с указанием домашней директории
- Установите пароль и права доступа
Управление почтой
Создание почтового домена
- Перейдите в раздел "Почтовые домены"
- Создайте новый почтовый домен
- Укажите доменное имя (например, example.com)
- Настройте MX записи в DNS
Создание почтового ящика
- Откройте почтовый домен
- Создайте нового почтового пользователя
- Укажите email адрес и пароль
- Установите квоту (лимит размера почтового ящика)
Почтовые ящики доступны через IMAP/POP3 и веб-интерфейс (Roundcube).
Управление DNS
Создание DNS зоны
- Перейдите в раздел "DNS зоны"
- Создайте новую зону
- Укажите origin (доменное имя зоны)
- Настройте NS записи (nameservers)
- Установите параметры SOA (refresh, retry, expire, minimum)
Добавление DNS записей
Поддерживаемые типы записей:
Управление базами данных
Создание базы данных
- Перейдите в раздел "Базы данных"
- Создайте новую базу данных MySQL/MariaDB
- Укажите имя базы данных
- Создайте пользователя БД с паролем
- Назначьте права доступа
Доступ к базе данных возможен через phpMyAdmin или напрямую через MySQL клиент.
Импорт базы данных
Для импорта существующей базы данных:
- Подготовьте SQL дамп базы данных
- Используйте API endpoint
/api/v1/databases/import(требует admin) - Или используйте phpMyAdmin для импорта через веб-интерфейс
Управление Cron задачами
Создание Cron задачи
- Перейдите в раздел "Cron задачи"
- Создайте новую задачу
- Укажите расписание в формате cron (например,
0 2 * * *для ежедневного выполнения в 2:00) - Укажите команду для выполнения
- Выберите пользователя, от имени которого будет выполняться задача
Cron задачи автоматически добавляются в crontab выбранного пользователя.
Управление серверами
Мультисерверная конфигурация
Панель поддерживает управление несколькими серверами из одной панели:
- Добавьте новый сервер в разделе "Серверы" (требует admin)
- Укажите IP адрес, SSH доступ и другие параметры
- Проверьте подключение к серверу
- При создании доменов выберите нужный сервер
Важно: Все серверы используют централизованную базу данных. Изменения синхронизируются автоматически через систему datalog.
Синхронизация DNS и Firewall
Для синхронизации конфигураций на удаленных серверах:
- Используйте API endpoint
/api/v1/servers/:id/sync-dnsдля синхронизации DNS - Используйте
/api/v1/servers/:id/sync-firewallдля синхронизации правил firewall - Или используйте веб-интерфейс для ручной синхронизации
Резервное копирование
Создание бэкапа
Панель поддерживает создание бэкапов для:
Веб-сайты
Бэкап файлов веб-домена и конфигурации
Почта
Бэкап почтовых ящиков и конфигурации
Базы данных
SQL дамп базы данных
Пользователи
Бэкап домашних директорий пользователей
Для создания бэкапа:
- Перейдите в раздел "Бэкапы"
- Выберите тип ресурса и конкретный ресурс
- Укажите описание (опционально)
- Создайте бэкап
Расписания бэкапов
Для автоматического создания бэкапов по расписанию (требует admin):
- Перейдите в раздел "Расписания бэкапов"
- Создайте новое расписание
- Укажите тип бэкапа (web, mail, database, user, all)
- Установите cron выражение для расписания
- Укажите срок хранения бэкапов (retention_days)
Восстановление из бэкапа
Для восстановления ресурса из бэкапа:
- Найдите нужный бэкап в списке
- Нажмите "Восстановить"
- Подтвердите восстановление
Внимание: Восстановление перезапишет существующие данные. Убедитесь, что у вас есть актуальный бэкап перед восстановлением.
SSL сертификаты
Автоматическая установка Let's Encrypt
При создании веб-домена с включенным SSL панель автоматически:
- Запрашивает SSL сертификат у Let's Encrypt
- Устанавливает сертификат на сервер
- Настраивает автоматическое обновление сертификата
- Настраивает редирект с HTTP на HTTPS (если включен SSL Redirect)
Управление сертификатами
В разделе "SSL сертификаты" (требует admin) вы можете:
- Просматривать все установленные сертификаты
- Обновлять сертификаты вручную
- Удалять сертификаты
Управление PHP
Установка версий PHP
Панель поддерживает установку и управление несколькими версиями PHP (требует admin):
- Перейдите в раздел "PHP Management"
- Выберите версию PHP для установки
- Установите версию через API или веб-интерфейс
- Настройте конфигурацию 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
/api/v1/health
- Проверка статуса сервиса (публичный)
Лицензия
/api/v1/license
- Информация о лицензии
/api/v1/license/validate
- Валидация и активация лицензии
Клиенты
/api/v1/clients
- Список клиентов
/api/v1/clients/:id
- Получить клиента
/api/v1/clients
- Создать клиента (admin)
/api/v1/clients/:id
- Обновить клиента (reseller/admin)
/api/v1/clients/:id
- Удалить клиента (admin)
Веб-домены
/api/v1/domains
- Список веб-доменов
/api/v1/domains/:id
- Получить веб-домен
/api/v1/domains
- Создать веб-домен
/api/v1/domains/:id
- Обновить веб-домен
/api/v1/domains/:id
- Удалить веб-домен
/api/v1/domains/migrate
- Миграция домена (admin)
/api/v1/domains/:id/nginx-config
- Получить конфигурацию Nginx
/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
}
Почта
Почтовые домены
/api/v1/mail/domains
- Список почтовых доменов
/api/v1/mail/domains/:id
- Получить почтовый домен
/api/v1/mail/domains
- Создать почтовый домен
/api/v1/mail/domains/:id
- Обновить почтовый домен
/api/v1/mail/domains/:id
- Удалить почтовый домен
Почтовые пользователи
/api/v1/mail/users
- Список почтовых пользователей
/api/v1/mail/users/:id
- Получить почтового пользователя
/api/v1/mail/users
- Создать почтового пользователя
/api/v1/mail/users/:id
- Обновить почтового пользователя
/api/v1/mail/users/:id
- Удалить почтового пользователя
Пересылки почты
/api/v1/mail/forwardings
- Список пересылок
/api/v1/mail/forwardings/:id
- Получить пересылку
/api/v1/mail/forwardings
- Создать пересылку
/api/v1/mail/forwardings/:id
- Обновить пересылку
/api/v1/mail/forwardings/:id
- Удалить пересылку
Транспорты, доступы, рассылки
/api/v1/mail/transports
- Управление транспортами
/api/v1/mail/accesses
- Управление доступами
/api/v1/mail/mailing-lists
- Управление списками рассылки
DNS
DNS зоны
/api/v1/dns/zones
- Список DNS зон
/api/v1/dns/zones/:id
- Получить DNS зону
/api/v1/dns/zones
- Создать DNS зону
/api/v1/dns/zones/:id
- Обновить DNS зону
/api/v1/dns/zones/:id
- Удалить DNS зону
DNS записи
/api/v1/dns/records
- Список DNS записей (опционально ?zone_id=1)
/api/v1/dns/records/:id
- Получить DNS запись
/api/v1/dns/records
- Создать DNS запись
/api/v1/dns/records/:id
- Обновить DNS запись
/api/v1/dns/records/:id
- Удалить DNS запись
DNS Slaves
/api/v1/dns/slaves
- Управление DNS slave серверами
Базы данных
Базы данных
/api/v1/databases
- Список баз данных
/api/v1/databases/:id
- Получить базу данных
/api/v1/databases
- Создать базу данных
/api/v1/databases/:id
- Обновить базу данных
/api/v1/databases/:id
- Удалить базу данных
/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