153 lines
8.1 KiB
Markdown
153 lines
8.1 KiB
Markdown
# Задача: Простая настройка VDS с автоматической установкой Ubuntu
|
||
|
||
## 🎯 **Описание задачи:**
|
||
|
||
### **Цель:**
|
||
Создать простую форму для автоматической настройки VDS сервера с установкой Ubuntu и деплоем DLE приложения.
|
||
|
||
### **Проблема:**
|
||
Нужно вручную настраивать VDS сервер, устанавливать Ubuntu и необходимые компоненты для работы DLE приложения.
|
||
|
||
### **Решение:**
|
||
Автоматическая очистка VDS, установка Ubuntu, создание пользователя и деплой DLE приложения через локальную форму.
|
||
|
||
## 📋 **Требования:**
|
||
|
||
### **1. Входные данные (9 полей):**
|
||
- **VDS IP** - IP адрес сервера
|
||
- **Домен** - например `example.com` (должен указывать на IP VDS)
|
||
- **Email** - для SSL сертификата
|
||
- **Логин Ubuntu** - пользователь для VDS (по умолчанию `ubuntu`)
|
||
- **Пароль Ubuntu** - пароль для пользователя VDS
|
||
- **Логин Docker** - пользователь для Docker (по умолчанию `docker`)
|
||
- **Пароль Docker** - пароль для пользователя Docker
|
||
- **SSH пользователь** - обычно `root`
|
||
- **SSH ключ** - приватный ключ для подключения
|
||
- **Ключ шифрования** - автоматически загружается с локальной машины
|
||
|
||
### **1.1. Требования к домену:**
|
||
- **A запись** `example.com` → IP VDS сервера
|
||
- **CNAME запись** `www.example.com` → `example.com` (опционально)
|
||
- **Домен должен быть активен** и доступен
|
||
- **DNS записи должны распространиться** (проверка перед настройкой)
|
||
|
||
### **2. Что должно происходить:**
|
||
1. **Проверка DNS** - валидация A записи домена
|
||
2. **Подключение** к VDS по SSH
|
||
3. **Очистка** всего содержимого на VDS
|
||
4. **Установка** Ubuntu
|
||
5. **Создание пользователя Ubuntu** с паролем
|
||
6. **Создание пользователя Docker** с паролем
|
||
7. **Установка** Docker, Docker Compose, nginx
|
||
8. **Настройка** nginx для продакшн приложения
|
||
9. **Получение** SSL сертификата
|
||
10. **Миграция** Docker образов с локальной машины
|
||
11. **Передача ключей** (шифрования и RSA) на VDS
|
||
12. **Обновление переменных** в БД VDS
|
||
13. **Запуск** DLE приложения в Docker
|
||
|
||
### **3. Результат:**
|
||
- **VDS полностью очищена** и переустановлена
|
||
- **Ubuntu установлена** с пользователями Ubuntu и Docker
|
||
- **Docker образы** мигрированы с локальной машины
|
||
- **Ключи переданы** с локальной машины на VDS
|
||
- **Переменные обновлены** в БД VDS
|
||
- **DLE приложение** работает в Docker на VDS
|
||
- **Домен работает** с SSL
|
||
- **Приложение работает** автономно на VDS
|
||
|
||
## 🏗️ **Архитектура:**
|
||
|
||
```
|
||
Продакшн режим:
|
||
Интернет → VDS nginx (домен) → VDS Docker приложение (автономно)
|
||
|
||
Настройка:
|
||
Локальная машина → SSH → VDS сервер → Очистка + Ubuntu + Docker миграция
|
||
```
|
||
|
||
### **Компоненты:**
|
||
1. **Веб-форма** - настройка VDS (7 полей)
|
||
2. **WebSSH сервис** - SSH команды к VDS
|
||
3. **SSH агент** - подключение к VDS
|
||
4. **VDS сервер** - Ubuntu + Docker + nginx + SSL
|
||
5. **Docker образы** - мигрированы с локальной машины
|
||
6. **Переменные окружения** - настроены для продакшн
|
||
|
||
## 🚀 **Процесс работы:**
|
||
|
||
### **1. Первоначальная настройка:**
|
||
- Заходит на `http://localhost:5173/settings/interface/webssh`
|
||
- Заполняет форму с данными VDS (9 полей)
|
||
- Нажимает "Настроить VDS"
|
||
|
||
### **2. Система настраивает VDS:**
|
||
- **Проверяет DNS** записи домена
|
||
- **Предупреждает** если домен не готов
|
||
- Подключается к VDS по SSH
|
||
- **Очищает** все содержимое на VDS
|
||
- **Устанавливает** Ubuntu
|
||
- **Создает пользователя Ubuntu** с паролем
|
||
- **Создает пользователя Docker** с паролем
|
||
- Устанавливает Docker, Docker Compose, nginx
|
||
- Настраивает nginx для продакшн
|
||
- Получает SSL сертификат
|
||
- **Мигрирует** Docker образы с локальной машины
|
||
- **Передает ключи** (шифрования и RSA) на VDS
|
||
- **Обновляет переменные** в БД VDS
|
||
- **Запускает** DLE приложение в Docker
|
||
|
||
### **3. Результат:**
|
||
- **VDS полностью готова** для работы
|
||
- **Пользователи Ubuntu и Docker** созданы
|
||
- **Docker образы** мигрированы и запущены
|
||
- **Ключи переданы** с локальной машины на VDS
|
||
- **Переменные обновлены** в БД VDS
|
||
- **DLE приложение** работает автономно в Docker
|
||
- **Домен доступен** с SSL
|
||
|
||
## 📁 **Файлы проекта:**
|
||
|
||
### **Frontend:**
|
||
- `frontend/src/components/WebSshForm.vue` - форма управления
|
||
- `frontend/src/services/webSshService.js` - SSH команды к VDS
|
||
|
||
### **Backend:**
|
||
- `backend/routes/vds-management.js` - API для управления VDS
|
||
- `backend/services/sshManager.js` - SSH команды
|
||
- `backend/services/encryptionManager.js` - управление шифрованием
|
||
|
||
### **Scripts:**
|
||
- `scripts/setup-vds.sh` - очистка VDS и установка Ubuntu
|
||
- `scripts/migrate-docker.sh` - миграция Docker образов на VDS
|
||
- `scripts/configure-vds.sh` - настройка переменных окружения
|
||
- `scripts/transfer-keys.sh` - передача ключей на VDS
|
||
- `scripts/update-variables.sh` - обновление переменных в БД
|
||
- `scripts/install-ubuntu.sh` - автоматическая установка Ubuntu
|
||
|
||
## ✅ **Статус:**
|
||
|
||
### **Готово:**
|
||
- ✅ Форма WebSSH упрощена
|
||
- ✅ WebSSH сервис обновлен
|
||
- ✅ DNS проверка добавлена
|
||
- ✅ Инструкции по настройке DNS созданы
|
||
- ✅ Поле VDS IP добавлено в форму
|
||
|
||
### **Нужно доработать:**
|
||
- 🔄 SSH агент для очистки и установки Ubuntu
|
||
- 🔄 API для управления VDS
|
||
- 🔄 Миграция Docker образов на VDS
|
||
- 🔄 Передача ключей (шифрования и RSA) на VDS
|
||
- 🔄 Обновление переменных в БД VDS
|
||
- 🔄 Автоматическая загрузка ключа шифрования в форму
|
||
|
||
## 🎯 **Следующие шаги:**
|
||
|
||
1. **Создать SSH агент** для очистки и установки Ubuntu
|
||
2. **Добавить API** для управления VDS
|
||
3. **Реализовать миграцию** Docker образов на VDS
|
||
4. **Создать скрипты** для передачи ключей на VDS
|
||
5. **Реализовать обновление** переменных в БД VDS
|
||
6. **Добавить автоматическую загрузку** ключа шифрования в форму
|
||
7. **Протестировать** на реальной VDS |