SCPM is a simple panel manager that provide a simplify REST API over undocumented SOAP protocols from SolidCP (https://github.com/FuseCP/SolidCP). For example, if you want to automate the creation of virtual machines, via your billing panel.
At the moment SCPM only supports creating HyperV VMs via SolidCP SOAP.
Swagger API docs - http://localhost/docs/index.html
- PHP >= 8.3
- PostgresSQL
- SolidCP 1.4.9
apache or nginx (https://symfony.com/doc/6.4/setup/web_server_configuration.html#nginx)
sudo apt install php8.3-soap php8.3-xml php8.3-mbstring php8.3-intl php8.3-curl
- php libsgit clone --branch builded https://github.com/berkut1/scpm.git
composer install
composer dump-env prod
after in the file .env.local.php update APP_SECRET, DATABASE_URL and JWT_PASSPHRASE variablescomposer install --no-dev --optimize-autoloader
php bin/console asset-map:compile
APP_ENV=prod APP_DEBUG=0 php bin/console cache:clear
More information here - https://symfony.com/doc/6.4/deployment.html
php bin/console lexik:jwt:generate-keypair
- generate jwt keyphp bin/console doctrine:migrations:migrate
- create sql tablesphp bin/console user:create
- create a panel user
git pull
composer sefl-update
composer install --no-dev --optimize-autoloader
php bin/console asset-map:compile
APP_ENV=prod APP_DEBUG=0 php bin/console cache:clear
- Enterprise Dispatchers - SolidCP an Enterprise server with a reseller account. Normally you should have only one Enterprise server and one main reseller account, which contact with all SolidCP servers in different locations. Not recommended to use serveradmin account (tested only with the reseller).
- Node Servers - physical node/server, but can represent many "logical" SolidCP servers, but physically they are one server (The SolidCP "feature" of configuration, if you need to separate storages in the one node).
- Hosting Spaces - SolidCP reseller Hosting Space and also represent SolidCP storages, where should be created a client VM. In the Hosting Space you should assign all plans that should be use for VMs.
- VM Packages - VM packages/product, the name of which you provide to clients through your billing panel. To the selected package, you need to assign all SolidCP plans that this package will use to create client servers.
You send the VM package name and related data to the API -> the SCPM searches from assigned to the "VM" package possible plans (which are bound to the specific storages) -> SCPM send to SoliCP request to create a user with a Hosting Space that represent one of selected reseller SolidCP plans -> after that create a VM with information that has the VM package.
SCMP creates a new hosting space for each Virtual Machine.
User -> new Hosting Space -> new VM
In SolidCP, one client hosting space must have one Virtual Machine, because SolidCP can only suspend the hosting space, but not certain items in the hosting space.
- Get Authentication token - /api/login/authentication_token
- Create a VM /api/solidCP/all-in-one/user/package/vps
- Wait until the provision status returns "OK" - /api/solidCP/vps/{solidcp_item_id}/provisioning-status
- Check that the VM properly started - return status - "Running" /api/solidCP/vps/{solidcp_item_id}/state
- The VM server is ready.
SCPM - это простая панель управления, которая предоставляет простой Rest API, поверх не документированного SOAP панели SolidCP (https://github.com/FuseCP/SolidCP). Например, если вам нужно автоматизировать создание серверов для вашей биллинговой панели.
В данный момент, данное приложение поддерживает только создание Вирутальных Машин HyperV через SOAP вызовы панели SolidCP.
Swagger API docs - http://localhost/docs/index.html
- PHP >= 8.3
- PostgresSQL (не тестировалось с другими СУБД)
- Enterprise Dispatchers - SolidCP Enterprise сервер и аккаунт реселлера. Обычно у вас должен быть только один Enterprise сервер и один главный аккаунт реселлера, которые связывают все SolidCP сервера в разных локациях. Не рекомендуется использовать serveradmin аккаунт (тестировалось только с помощью реселлер аккаунта).
- Node Servers - физический сервер/нода, но который может представлять множество "логических" SolidCP серверов, но физически это всё равно один сервер (У SolidCP "фишка" настройки, если вам нужно разделить места хранения на одном сервере, вам нужно создать ещё один сервер, но указать другое место хранения).
- Hosting Spaces - SolidCP Hosting Space реселлера и так же представляют собой диски/хранилище SolidCP, где будут размещаться клиентские сервера. В Hosting Space вы должны привязать все SolidCP планы, которые используются панелью для создание клиентских серверов.
- VM Packages - пакеты/продукт серверов, название которых вы предоставляете клиентам через свои биллинг панели. К выбранному пакету нужно привязать все SolidCP планы, которые данный пакет будет использовать для создание клиенский серверов.
Вы отправляете название пакеты и сопутствующие данные в API -> SCPM ищет подходящий SolidCP план (который привязан к нужному хранилищу) -> SCPM отправляет запрос к SolidCP на создание клиента и его Hosting Space, который является одним из выбранных SolidCP планов реселлера -> после этого в новом Hosting Space создаётся клиентская виртуальная машина с данными, которые содержатся в VM Package.
SCPM создаёт клиентам каждый раз новый Hosting Space при создание клиенской виртуальной машины.
User -> new Hosting Space -> new VM
В SolidCP один клиентский Hosting Space должен иметь только одну ВМ, потому что SolidCP не умеют "suspend" определённые объекты, только целиком весь Hosting Space.
- Получить токен - /api/login/authentication_token
- Создание ВМ - /api/solidCP/all-in-one/user/package/vps
- Подождать пока "provision status" не вернёт статус - "OK" - /api/solidCP/vps/{solidcp_item_id}/provisioning-status
- Проверить, что ВМ стартовал корректно - вернул состояние - "Running" /api/solidCP/vps/{solidcp_item_id}/state
- Сервер полностью создан и готов.