BIG_UPDATE deleted vps, added s3 infrastructure.
This commit is contained in:
149
ospabhost/backend/test-scripts/FIX_501_ERROR.md
Normal file
149
ospabhost/backend/test-scripts/FIX_501_ERROR.md
Normal file
@@ -0,0 +1,149 @@
|
||||
# Решение проблемы 501 "Method not implemented"
|
||||
|
||||
## Проблема
|
||||
|
||||
При смене root-пароля через Proxmox API получали ошибку:
|
||||
```
|
||||
AxiosError: Request failed with status code 501
|
||||
statusMessage: "Method 'POST /nodes/sv1/lxc/105/config' not implemented"
|
||||
```
|
||||
|
||||
## Причина
|
||||
|
||||
Proxmox API **не поддерживает POST** для изменения конфигурации контейнера.
|
||||
Правильный метод - **PUT**.
|
||||
|
||||
## Решение
|
||||
|
||||
### Было (неправильно):
|
||||
```typescript
|
||||
const response = await axios.post(
|
||||
`${PROXMOX_API_URL}/nodes/${PROXMOX_NODE}/lxc/${vmid}/config`,
|
||||
`password=${encodeURIComponent(newPassword)}`,
|
||||
...
|
||||
);
|
||||
```
|
||||
|
||||
### Стало (правильно):
|
||||
```typescript
|
||||
const response = await axios.put(
|
||||
`${PROXMOX_API_URL}/nodes/${PROXMOX_NODE}/lxc/${vmid}/config`,
|
||||
`password=${encodeURIComponent(newPassword)}`,
|
||||
...
|
||||
);
|
||||
```
|
||||
|
||||
## Правильные HTTP методы для Proxmox API
|
||||
|
||||
### LXC Container Config (`/nodes/{node}/lxc/{vmid}/config`)
|
||||
- `GET` - получить конфигурацию
|
||||
- `PUT` - **изменить конфигурацию** (в т.ч. пароль)
|
||||
- ❌ `POST` - не поддерживается
|
||||
|
||||
### LXC Container Status (`/nodes/{node}/lxc/{vmid}/status/{action}`)
|
||||
- `POST` - start/stop/restart/shutdown
|
||||
|
||||
### LXC Container Create (`/nodes/{node}/lxc`)
|
||||
- `POST` - создать новый контейнер
|
||||
|
||||
## Документация Proxmox VE API
|
||||
|
||||
Официальная документация: https://pve.proxmox.com/pve-docs/api-viewer/
|
||||
|
||||
Основные правила:
|
||||
1. **GET** - чтение данных
|
||||
2. **POST** - создание ресурсов, выполнение действий (start/stop)
|
||||
3. **PUT** - изменение существующих ресурсов
|
||||
4. **DELETE** - удаление ресурсов
|
||||
|
||||
## Тестирование
|
||||
|
||||
### Через curl:
|
||||
```bash
|
||||
# Получить конфигурацию (GET)
|
||||
curl -k -X GET \
|
||||
-H "Authorization: PVEAPIToken=user@pam!token=secret" \
|
||||
https://proxmox:8006/api2/json/nodes/nodename/lxc/100/config
|
||||
|
||||
# Изменить пароль (PUT)
|
||||
curl -k -X PUT \
|
||||
-H "Authorization: PVEAPIToken=user@pam!token=secret" \
|
||||
-H "Content-Type: application/x-www-form-urlencoded" \
|
||||
-d "password=NewPassword123" \
|
||||
https://proxmox:8006/api2/json/nodes/nodename/lxc/100/config
|
||||
```
|
||||
|
||||
### Через веб-интерфейс:
|
||||
1. Откройте панель управления сервером
|
||||
2. Вкладка "Настройки"
|
||||
3. Нажмите "Сменить root-пароль"
|
||||
4. Проверьте логи: `pm2 logs ospab-backend`
|
||||
|
||||
## Проверка прав API токена
|
||||
|
||||
Убедитесь, что API токен имеет права:
|
||||
```bash
|
||||
# В Proxmox WebUI
|
||||
# Datacenter → Permissions → API Tokens
|
||||
# Проверьте права токена:
|
||||
# - VM.Config.* (для изменения конфигурации)
|
||||
# - VM.PowerMgmt (для start/stop)
|
||||
```
|
||||
|
||||
Или через командную строку:
|
||||
```bash
|
||||
pveum user token permissions api-user@pve sv1-api-user
|
||||
```
|
||||
|
||||
## Fallback через SSH
|
||||
|
||||
Если API не работает, система автоматически использует SSH:
|
||||
```bash
|
||||
ssh root@proxmox "pct set {vmid} --password 'новый_пароль'"
|
||||
```
|
||||
|
||||
Для этого нужно:
|
||||
1. Настроить SSH ключи:
|
||||
```bash
|
||||
ssh-keygen -t rsa -b 4096
|
||||
ssh-copy-id root@proxmox_ip
|
||||
```
|
||||
|
||||
2. Проверить доступ:
|
||||
```bash
|
||||
ssh root@proxmox_ip "pct list"
|
||||
```
|
||||
|
||||
## Деплой исправления
|
||||
|
||||
```bash
|
||||
# На сервере
|
||||
cd /var/www/ospab-host/backend
|
||||
git pull
|
||||
npm run build
|
||||
pm2 restart ospab-backend
|
||||
|
||||
# Проверка логов
|
||||
pm2 logs ospab-backend --lines 50
|
||||
```
|
||||
|
||||
## Ожидаемые логи при успехе
|
||||
|
||||
```
|
||||
✅ Пароль успешно изменён для контейнера 105
|
||||
✅ Пароль успешно обновлён для сервера #17 (VMID: 105)
|
||||
```
|
||||
|
||||
## Ожидаемые логи при ошибке
|
||||
|
||||
```
|
||||
❌ Ошибка смены пароля через API: ...
|
||||
⚠️ Пробуем через SSH...
|
||||
✅ Пароль изменён через SSH для контейнера 105
|
||||
```
|
||||
|
||||
## Дополнительные ресурсы
|
||||
|
||||
- [Proxmox VE API Documentation](https://pve.proxmox.com/pve-docs/api-viewer/)
|
||||
- [Proxmox VE Administration Guide](https://pve.proxmox.com/pve-docs/pve-admin-guide.html)
|
||||
- [pct command reference](https://pve.proxmox.com/pve-docs/pct.1.html)
|
||||
Reference in New Issue
Block a user