Files
DLE/md/WEBSSH_SETUP_GUIDE.md

293 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Руководство по настройке WEB SSH
## Обзор
Система WEB SSH позволяет автоматически публиковать локальное Vue.js приложение в интернете через SSH-туннель и NGINX на удаленном сервере.
## Архитектура
```
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ Vue.js Frontend │───▶│ WebSSH Agent │───▶│ VPS Server │
│ (localhost:5173) │ │ (localhost:12345) │ │ (ваш сервер) │
└─────────────────────┘ └─────────────────────┘ └─────────────────────┘
│ │
│ ▼
│ ┌─────────────────────┐
│ │ NGINX + SSL │
│ │ (порт 80/443) │
│ └─────────────────────┘
│ │
│ ▼
│ ┌─────────────────────┐
└─────────────▶│ SSH Reverse Tunnel │
│ (порт 9000) │
└─────────────────────┘
```
## Требования
### Локальная машина
- ✅ Node.js 16+
- ✅ SSH клиент
- ✅ Docker и Docker Compose
- ✅ Yarn
### Удаленный сервер (VPS)
- ✅ Ubuntu/Debian или CentOS/RHEL
- ✅ SSH доступ с правами sudo/root
- ✅ Открытые порты 80, 443, 22
- ✅ Домен, указывающий на IP сервера
## Установка и настройка
### 1. Запуск основного приложения
```bash
# Клонируйте проект
git clone <your-repo-url>
cd DApp-for-Business
# Запустите приложение
docker-compose up -d
# Убедитесь, что фронтенд доступен
curl http://localhost:5173
```
### 2. Установка WebSSH Agent
```bash
# Перейдите в директорию агента
cd webssh-agent
# Установите зависимости
npm install
# Запустите агент
npm start
# или в фоновом режиме:
nohup node agent.js > agent.log 2>&1 &
```
### 3. Проверка работы агента
```bash
# Проверьте статус агента
curl http://localhost:12345/health
# Ожидаемый ответ:
# {"status":"ok","timestamp":"2025-07-06T18:08:57.789Z","version":"1.0.0","tunnelConnected":false}
```
## Использование
### 1. Подготовка SSH ключей
```bash
# Создайте SSH ключ (если еще нет)
ssh-keygen -t rsa -b 4096 -C "webssh@yourdomain.com"
# Скопируйте публичный ключ на сервер
ssh-copy-id -i ~/.ssh/id_rsa.pub user@your-server.com
# Проверьте подключение
ssh -i ~/.ssh/id_rsa user@your-server.com
```
### 2. Настройка через веб-интерфейс
1. Откройте приложение: `http://localhost:5173`
2. Перейдите в **Настройки****WEB SSH**
3. Заполните форму:
#### Обязательные поля:
- **Домен**: `example.com` (ваш домен)
- **Email для SSL**: `admin@example.com` (для Let's Encrypt)
- **SSH Host/IP**: `192.168.1.100` или `server.example.com`
- **SSH Пользователь**: `root` или ваш пользователь
- **SSH Приватный ключ**: содержимое файла `~/.ssh/id_rsa`
#### Дополнительные настройки (заполняются автоматически):
- **Локальный порт**: `5173` (порт Vue.js приложения)
- **Порт сервера**: `9000` (порт для SSH туннеля)
- **SSH порт**: `22` (стандартный SSH порт)
4. Нажмите **"Опубликовать"**
### 3. Процесс публикации
После нажатия "Опубликовать" агент автоматически:
1. ✅ Подключается к вашему серверу по SSH
2. ✅ Устанавливает NGINX и certbot (если не установлены)
3. ✅ Создает конфигурацию NGINX для вашего домена
4. ✅ Перезапускает NGINX
5. ✅ Получает SSL сертификат через Let's Encrypt
6. ✅ Создает SSH reverse-туннель
7. ✅ Ваше приложение становится доступным по адресу `https://yourdomain.com`
## Управление туннелем
### Через веб-интерфейс
- **Статус**: отображается в верхней части страницы
- **Отключить**: кнопка "Отключить" при активном туннеле
- **Логи**: отображаются в нижней части страницы
### Через API
```bash
# Статус туннеля
curl http://localhost:12345/tunnel/status
# Создание туннеля
curl -X POST http://localhost:12345/tunnel/create \
-H "Content-Type: application/json" \
-d '{
"domain": "example.com",
"email": "admin@example.com",
"sshHost": "192.168.1.100",
"sshUser": "root",
"sshKey": "-----BEGIN OPENSSH PRIVATE KEY-----\n...",
"localPort": 5173,
"serverPort": 9000,
"sshPort": 22
}'
# Отключение туннеля
curl -X POST http://localhost:12345/tunnel/disconnect
```
## Безопасность
### Локальная безопасность
- ✅ Агент принимает соединения только с localhost
- ✅ SSH ключи хранятся временно и удаляются после отключения
-Все операции логируются
### Серверная безопасность
- ✅ Используется HTTPS с автоматическими SSL сертификатами
- ✅ NGINX настроен с безопасными заголовками
- ✅ SSH туннель использует приватные ключи
## Устранение неполадок
### Агент не запускается
```bash
# Проверьте порт
netstat -tulpn | grep 12345
# Проверьте логи
tail -f webssh-agent/agent.log
# Убейте процесс и перезапустите
pkill -f "node agent.js"
nohup node agent.js > agent.log 2>&1 &
```
### SSH соединение не устанавливается
```bash
# Проверьте SSH ключ
ssh -i ~/.ssh/id_rsa user@server
# Проверьте доступность сервера
ping your-server.com
# Проверьте SSH порт
telnet your-server.com 22
```
### NGINX не настраивается
```bash
# На сервере проверьте NGINX
sudo nginx -t
sudo systemctl status nginx
# Проверьте логи
sudo tail -f /var/log/nginx/error.log
```
### SSL сертификат не получается
```bash
# Проверьте DNS
nslookup your-domain.com
# Проверьте доступность домена
curl -I http://your-domain.com
# На сервере проверьте certbot
sudo certbot certificates
sudo tail -f /var/log/letsencrypt/letsencrypt.log
```
### Туннель не работает
```bash
# Проверьте процесс SSH
ps aux | grep ssh
# Проверьте порты на сервере
sudo netstat -tulpn | grep 9000
# Проверьте логи агента
tail -f webssh-agent/agent.log
```
## Примеры использования
### Разработка
```bash
# Запустите локальное приложение
docker-compose up -d
# Запустите агент
cd webssh-agent && npm start
# Настройте туннель через веб-интерфейс
# Ваше приложение доступно по https://yourdomain.com
```
### Демонстрация клиентам
```bash
# Быстрая публикация для демо
# 1. Заполните форму в веб-интерфейсе
# 2. Нажмите "Опубликовать"
# 3. Отправьте клиенту ссылку https://yourdomain.com
```
### Тестирование на мобильных устройствах
```bash
# Опубликуйте приложение
# Теперь можете тестировать на любых устройствах
# через https://yourdomain.com
```
## Файловая структура
```
DApp-for-Business/
├── webssh-agent/ # Локальный агент
│ ├── agent.js # Основной файл агента
│ ├── package.json # Зависимости
│ ├── install.sh # Установочный скрипт
│ └── README.md # Документация агента
├── frontend/ # Vue.js приложение
│ ├── src/
│ │ ├── views/settings/
│ │ │ └── WebSshSettingsView.vue # Страница настроек
│ │ └── services/
│ │ └── webSshService.js # Сервис для работы с агентом
│ └── ...
└── docker-compose.yml # Конфигурация Docker
```
## Поддержка
Если у вас возникли проблемы:
1. Проверьте этот документ
2. Посмотрите логи агента: `tail -f webssh-agent/agent.log`
3. Проверьте статус: `curl http://localhost:12345/health`
4. Создайте Issue в репозитории проекта
## Лицензия
MIT License