BIG_UPDATE deleted vps, added s3 infrastructure.

This commit is contained in:
Georgiy Syralev
2025-11-23 14:35:16 +03:00
parent ae1f93a934
commit c4c2610480
173 changed files with 22684 additions and 5894 deletions

View File

@@ -0,0 +1,168 @@
# Тестирование смены root-пароля
## Как это работает
Система использует **3 метода** смены пароля с автоматическим fallback:
### Метод 1: Proxmox API (основной)
```
POST /api/nodes/{node}/lxc/{vmid}/config
Body: password=новый_пароль
```
- Самый быстрый и надёжный
- Работает через API токен
- Не требует SSH доступа
### Метод 2: SSH + pct set (fallback)
```bash
ssh root@proxmox "pct set {vmid} --password 'новый_пароль'"
```
- Запасной вариант если API не работает
- Требует SSH доступа от backend к Proxmox
- Настраивается через `.env`
### Метод 3: Exec внутри контейнера (последний fallback)
```
POST /api/nodes/{node}/lxc/{vmid}/exec
Body: { command: ["bash", "-c", "echo 'root:пароль' | chpasswd"] }
```
- Выполняет команду внутри контейнера
- Работает если контейнер запущен
- Не требует SSH
## Как протестировать
### 1. Через веб-интерфейс
1. Откройте панель управления сервером
2. Перейдите на вкладку "Настройки"
3. Нажмите кнопку "Сменить root-пароль"
4. Подтвердите действие
5. Новый пароль появится на вкладке "Обзор"
### 2. Через API (curl)
```bash
# Получить токен (замените email и password)
TOKEN=$(curl -X POST https://ospab.host:5000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com","password":"yourpassword"}' \
| jq -r '.token')
# Сменить пароль (замените {id} на ID сервера)
curl -X POST https://ospab.host:5000/api/server/{id}/password \
-H "Authorization: Bearer $TOKEN" \
| jq
```
### 3. Проверка нового пароля
#### Через noVNC консоль:
1. Откройте консоль сервера
2. Войдите как `root`
3. Введите новый пароль из панели
#### Через SSH:
```bash
ssh root@IP_СЕРВЕРА
# Введите новый пароль
```
## Логи и отладка
### Backend логи
```bash
# Просмотр логов в реальном времени
pm2 logs ospab-backend
# Или если запущен напрямую
tail -f /var/www/ospab-host/backend/logs/pm2-out.log
```
### Что искать в логах:
**Успешная смена:**
```
✅ Пароль успешно изменён для контейнера 123
✅ Пароль успешно обновлён для сервера #5 (VMID: 123)
```
**Ошибки:**
```
❌ Ошибка смены пароля через API: ...
⚠️ Основной метод не сработал, пробуем через exec...
❌ Ошибка смены пароля через SSH: ...
```
## Возможные проблемы
### Проблема 1: "Не удалось изменить пароль"
**Причина:** Нет доступа к Proxmox API или SSH
**Решение:**
```bash
# Проверьте переменные окружения
cat /var/www/ospab-host/backend/.env | grep PROXMOX
# Должны быть установлены:
PROXMOX_API_URL=https://IP:8006/api2/json
PROXMOX_TOKEN_ID=root@pam!your-token-name
PROXMOX_TOKEN_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
PROXMOX_NODE=proxmox
```
### Проблема 2: SSH метод не работает
**Причина:** Нет SSH ключей или доступа
**Решение:**
```bash
# Настройте SSH ключи (на сервере с backend)
ssh-keygen -t rsa -b 4096
ssh-copy-id root@PROXMOX_IP
# Проверьте доступ
ssh root@PROXMOX_IP "pct list"
```
### Проблема 3: Контейнер не запущен
**Причина:** Exec метод работает только для запущенных контейнеров
**Решение:**
1. Запустите контейнер
2. Подождите 30 секунд
3. Попробуйте снова сменить пароль
## Автоматическое скрытие пароля
Пароль автоматически скрывается через **30 минут** после:
- Создания сервера
- Смены пароля
### Как проверить:
1. Создайте сервер или смените пароль
2. Пароль виден на вкладке "Обзор"
3. Через 30 минут пароль будет заменён на "••••••••"
4. Кнопка "Показать пароль" перестанет работать
### Как показать снова:
Нажмите "Сменить root-пароль" - будет сгенерирован новый пароль и снова виден 30 минут.
## Частые вопросы
**Q: Как часто можно менять пароль?**
A: Без ограничений. Каждая смена генерирует новый случайный пароль.
**Q: Можно ли задать свой пароль?**
A: Нет, система генерирует случайный пароль 16 символов для безопасности.
**Q: Пароль сохраняется в базе?**
A: Да, в зашифрованном виде в таблице `server.rootPassword`.
**Q: Что если я потерял пароль?**
A: Просто нажмите "Сменить root-пароль" - будет сгенерирован новый.
**Q: Работает ли для KVM виртуалок?**
A: Эта реализация для LXC контейнеров. Для KVM нужна доработка.