115 lines
3.9 KiB
Markdown
115 lines
3.9 KiB
Markdown
# VPS Sync API - Быстрый старт
|
||
|
||
## TL;DR - что нужно сделать
|
||
|
||
### На Панели управления (уже готово)
|
||
|
||
✅ Эндпоинт: `POST /api/vps/sync`
|
||
✅ Защита: API ключ в заголовке `X-API-Key`
|
||
✅ Таблица БД: `vps` со всеми параметрами
|
||
✅ Методы: create, update, delete
|
||
|
||
### На главном сайте (что нужно сделать)
|
||
|
||
1. **Добавить переменную окружения:**
|
||
```env
|
||
VPS_SYNC_API_KEY=your_secret_api_key_here_min_32_chars_change_this
|
||
OSPAB_PANEL_URL=https://panel.ospab.host
|
||
```
|
||
|
||
2. **Создать функцию для отправки данных:**
|
||
```typescript
|
||
// Минимальный пример на Node.js
|
||
async function createVPSonPanel(vpsData) {
|
||
const res = await fetch(`${process.env.OSPAB_PANEL_URL}/api/vps/sync`, {
|
||
method: 'POST',
|
||
headers: {
|
||
'Content-Type': 'application/json',
|
||
'X-API-Key': process.env.VPS_SYNC_API_KEY
|
||
},
|
||
body: JSON.stringify({
|
||
action: 'create',
|
||
vps: {
|
||
user_id: vpsData.userId,
|
||
name: vpsData.name,
|
||
cpu: vpsData.cpu,
|
||
ram: vpsData.ram * 1024, // GB to MB!
|
||
disk: vpsData.disk,
|
||
os: vpsData.os,
|
||
status: 'creating',
|
||
hypervisor: 'proxmox'
|
||
}
|
||
})
|
||
});
|
||
return res.json();
|
||
}
|
||
```
|
||
|
||
3. **Вызвать после создания VPS на хостинге:**
|
||
```typescript
|
||
// После успешного создания на Proxmox/VMware/и т.д.
|
||
const created = await createVPSonPanel({
|
||
userId: 5, // ID пользователя из SSO
|
||
name: 'web-server-01', // Имя VPS
|
||
cpu: 4, // Ядер
|
||
ram: 8, // GB (будет конвертировано в MB)
|
||
disk: 100, // GB
|
||
os: 'Ubuntu 22.04 LTS'
|
||
});
|
||
|
||
console.log('VPS создан с ID:', created.vps.id);
|
||
```
|
||
|
||
4. **Обновить статус когда VPS готов:**
|
||
```typescript
|
||
async function updateVPSStatusOnPanel(vpsId, status) {
|
||
return fetch(`${process.env.OSPAB_PANEL_URL}/api/vps/sync`, {
|
||
method: 'POST',
|
||
headers: {
|
||
'Content-Type': 'application/json',
|
||
'X-API-Key': process.env.VPS_SYNC_API_KEY
|
||
},
|
||
body: JSON.stringify({
|
||
action: 'update',
|
||
vps: { id: vpsId, status }
|
||
})
|
||
}).then(r => r.json());
|
||
}
|
||
|
||
// Вызов
|
||
await updateVPSStatusOnPanel(createdVPS.id, 'running');
|
||
```
|
||
|
||
## Ключевые моменты
|
||
|
||
| Параметр | Важно помнить |
|
||
|----------|---------------|
|
||
| `user_id` | Это ID из SSO системы (от Панели управления) |
|
||
| `ram` | Отправляем в **MB**, главный сайт отправляет в **GB** (×1024) |
|
||
| `disk` | В **GB** |
|
||
| `cpu` | Количество **ядер** |
|
||
| `status` | creating, running, stopped, suspended |
|
||
| `hypervisor` | proxmox (для Proxmox VE) |
|
||
| `X-API-Key` | ДОЛЖЕН быть в заголовке, не в body! |
|
||
|
||
## Проверка что работает
|
||
|
||
1. Создайте тестовый VPS через curl (смотри VPS_SYNC_EXAMPLES.md)
|
||
2. Зайдите в Панель управления под пользователем с ID 5
|
||
3. Должен появиться VPS в списке
|
||
|
||
## Файлы для ознакомления
|
||
|
||
- `CLIENT_VPS_INTEGRATION.md` - полная документация API
|
||
- `VPS_SYNC_EXAMPLES.md` - примеры кода (Node.js, Python)
|
||
- `.env` - переменные окружения
|
||
|
||
## Что дальше?
|
||
|
||
После интеграции синхронизации:
|
||
|
||
- [ ] Добавить webhook для автоматических обновлений статуса
|
||
- [ ] Добавить batch API для синхронизации множества VPS
|
||
- [ ] Настроить мониторинг (CPU, RAM, Disk usage)
|
||
- [ ] Добавить real-time обновления через WebSocket
|