291 lines
10 KiB
Markdown
291 lines
10 KiB
Markdown
# MY Network v2.0 - Deployment Guide
|
||
|
||
## 🎯 Обзор
|
||
|
||
MY Network v2.0 - это распределенная P2P сеть для репликации контента с Matrix-мониторингом и полной автоматизацией развертывания.
|
||
|
||
### Компоненты системы:
|
||
- **MY Network Core** - основной P2P протокол (порт 15100)
|
||
- **Web2 Client** - веб-интерфейс (порт 3000)
|
||
- **Converter Module** - модуль конвертации (порт 8080)
|
||
- **Telegram Bots** - клиентский и uploader боты (опционально)
|
||
|
||
## 🚀 Типы развертывания
|
||
|
||
### 1. Main Bootstrap Node (my-public-node-3.projscale.dev)
|
||
|
||
**Назначение:** Главная нода сети, к которой подключаются все остальные ноды.
|
||
|
||
**Скрипт:** [`deploy_main_bootstrap_node.sh`](deploy_main_bootstrap_node.sh)
|
||
|
||
**Выполнение:**
|
||
```bash
|
||
# На сервере my-public-node-3.projscale.dev как root:
|
||
chmod +x deploy_main_bootstrap_node.sh
|
||
./deploy_main_bootstrap_node.sh
|
||
```
|
||
|
||
**Что делает:**
|
||
- ✅ Устанавливает Docker + Docker Compose
|
||
- ✅ Настраивает UFW firewall (22, 80, 443, 15100)
|
||
- ✅ Настраивает Nginx reverse proxy
|
||
- ✅ Получает SSL сертификат Let's Encrypt
|
||
- ✅ Развертывает все компоненты (MY Network + Web Client + Converter)
|
||
- ✅ Создает systemd service
|
||
- ✅ Настраивает автообновление SSL
|
||
|
||
**Результат:**
|
||
- 🌐 **Web Interface:** https://my-public-node-3.projscale.dev/
|
||
- 🎛️ **Matrix Dashboard:** https://my-public-node-3.projscale.dev/monitor/
|
||
- ❤️ **Health Check:** https://my-public-node-3.projscale.dev/health
|
||
- 🔗 **Bootstrap API:** https://my-public-node-3.projscale.dev/api/bootstrap
|
||
- 🔌 **WebSocket:** wss://my-public-node-3.projscale.dev/ws/monitor
|
||
|
||
### 2. Regular Node (подключение к сети)
|
||
|
||
**Назначение:** Обычная нода, которая подключается к существующей сети.
|
||
|
||
**Скрипт:** [`deploy_regular_node.sh`](deploy_regular_node.sh)
|
||
|
||
**Выполнение:**
|
||
```bash
|
||
chmod +x deploy_regular_node.sh
|
||
./deploy_regular_node.sh
|
||
```
|
||
|
||
**Интерактивная настройка:**
|
||
1. **Node Name** - имя ноды (по умолчанию: my-node-timestamp)
|
||
2. **Public Domain** - публичный домен (опционально для приватных нод)
|
||
3. **Telegram Bot Token** - токен клиентского бота (опционально)
|
||
4. **Uploader Bot Token** - токен uploader бота (опционально)
|
||
|
||
**Типы нод:**
|
||
- **Public Regular Node** - с доменом, SSL, Nginx, веб-интерфейсом
|
||
- **Private Regular Node** - только локальный доступ, без публичного домена
|
||
|
||
**Что делает:**
|
||
- 🔍 Подключается к main bootstrap node
|
||
- 📡 Получает конфигурацию сети
|
||
- 🐳 Развертывает контейнеры согласно типу ноды
|
||
- 🌐 Настраивает публичный доступ (если указан домен)
|
||
- 🤖 Включает Telegram ботов (если указаны токены)
|
||
- 🔄 Инициирует синхронизацию с сетью
|
||
|
||
## 📋 Управление нодами
|
||
|
||
### Main Bootstrap Node
|
||
```bash
|
||
# Просмотр логов
|
||
docker-compose -f /opt/my-network-bootstrap/docker-compose.yml logs -f
|
||
|
||
# Перезапуск
|
||
systemctl restart my-network-main
|
||
|
||
# Статус
|
||
systemctl status my-network-main
|
||
|
||
# Контейнеры
|
||
docker-compose ps
|
||
```
|
||
|
||
### Regular Node
|
||
```bash
|
||
# Просмотр логов (замените NODE_NAME на имя вашей ноды)
|
||
docker-compose -f /opt/my-network-NODE_NAME/docker-compose.yml logs -f
|
||
|
||
# Перезапуск
|
||
systemctl restart my-network-NODE_NAME
|
||
|
||
# Статус
|
||
systemctl status my-network-NODE_NAME
|
||
```
|
||
|
||
## 🔧 Конфигурация
|
||
|
||
### Основные файлы:
|
||
- **`.env`** - переменные окружения
|
||
- **`bootstrap_main.json`** / **`bootstrap_regular.json`** - конфигурация ноды
|
||
- **`docker-compose.yml`** - конфигурация контейнеров
|
||
|
||
### Порты:
|
||
- **15100** - MY Network Protocol v2.0
|
||
- **3000** - Web2 Client (только для публичных нод)
|
||
- **8080** - Converter Module
|
||
- **80/443** - HTTP/HTTPS (Nginx)
|
||
|
||
### Firewall (UFW):
|
||
```bash
|
||
# Основные порты
|
||
ufw allow 22/tcp # SSH
|
||
ufw allow 80/tcp # HTTP
|
||
ufw allow 443/tcp # HTTPS
|
||
ufw allow 15100/tcp # MY Network
|
||
```
|
||
|
||
## 🌐 Сетевая архитектура
|
||
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ Main Bootstrap Node │
|
||
│ my-public-node-3.projscale.dev │
|
||
│ │
|
||
│ ┌─────────────┐ ┌─────────────┐ │
|
||
│ │ MY Network │ │ Web Client │ │
|
||
│ │ :15100 │ │ :3000 │ │
|
||
│ └─────────────┘ └─────────────┘ │
|
||
│ ┌─────────────┐ ┌─────────────┐ │
|
||
│ │ Converter │ │ Nginx+SSL │ │
|
||
│ │ :8080 │ │ :80/:443 │ │
|
||
│ └─────────────┘ └─────────────┘ │
|
||
└─────────────────────────────────────┘
|
||
│
|
||
│ Bootstrap API
|
||
│
|
||
┌─────────┼─────────┐
|
||
│ │ │
|
||
┌───▼───┐ ┌───▼───┐ ┌───▼───┐
|
||
│Regular│ │Regular│ │Regular│
|
||
│Node 1 │ │Node 2 │ │Node N │
|
||
│ │ │ │ │ │
|
||
│Public │ │Private│ │Public │
|
||
└───────┘ └───────┘ └───────┘
|
||
```
|
||
|
||
## 🔒 Безопасность
|
||
|
||
### SSL/TLS:
|
||
- Автоматическое получение сертификатов Let's Encrypt
|
||
- Автообновление сертификатов (cron job)
|
||
- HTTPS редирект для всех публичных нод
|
||
|
||
### Firewall:
|
||
- UFW настроен для минимального доступа
|
||
- Только необходимые порты открыты
|
||
- Защита от DDoS на уровне Nginx
|
||
|
||
### Аутентификация:
|
||
- JWT токены для API
|
||
- Шифрование P2P соединений
|
||
- Rate limiting для API endpoints
|
||
|
||
## 🤖 Telegram Боты
|
||
|
||
### Клиентский бот:
|
||
- Взаимодействие с пользователями
|
||
- Просмотр контента
|
||
- Управление аккаунтом
|
||
|
||
### Uploader бот:
|
||
- Загрузка контента в сеть
|
||
- Конвертация файлов
|
||
- Управление метаданными
|
||
|
||
### Настройка:
|
||
```bash
|
||
# В .env файле ноды:
|
||
TELEGRAM_BOT_TOKEN=your_client_bot_token
|
||
UPLOADER_BOT_TOKEN=your_uploader_bot_token
|
||
```
|
||
|
||
## 📊 Мониторинг
|
||
|
||
### Matrix Dashboard:
|
||
- Real-time статистика сети
|
||
- Информация о пирах
|
||
- Статус синхронизации
|
||
- WebSocket обновления
|
||
|
||
### Endpoints:
|
||
- **Health:** `/health`
|
||
- **Metrics:** `/api/metrics`
|
||
- **Dashboard:** `/api/my/monitor/`
|
||
- **WebSocket:** `/api/my/monitor/ws`
|
||
|
||
## 🔄 Синхронизация
|
||
|
||
### Процесс подключения новой ноды:
|
||
1. Подключение к bootstrap node
|
||
2. Получение списка активных пиров
|
||
3. Установка P2P соединений
|
||
4. Синхронизация данных
|
||
5. Регистрация в сети
|
||
|
||
### Интервалы:
|
||
- **Sync Interval:** 30 секунд (regular) / 15 секунд (main)
|
||
- **Discovery Interval:** 60 секунд (regular) / 30 секунд (main)
|
||
- **Connection Timeout:** 30 секунд
|
||
|
||
## 🛠️ Troubleshooting
|
||
|
||
### Проблемы с подключением:
|
||
```bash
|
||
# Проверка доступности bootstrap node
|
||
curl -f https://my-public-node-3.projscale.dev/health
|
||
|
||
# Проверка локального health check
|
||
curl -f http://localhost:15100/health
|
||
```
|
||
|
||
### Проблемы с SSL:
|
||
```bash
|
||
# Проверка сертификата
|
||
certbot certificates
|
||
|
||
# Обновление сертификата
|
||
certbot renew --dry-run
|
||
```
|
||
|
||
### Проблемы с Docker:
|
||
```bash
|
||
# Перезапуск контейнеров
|
||
docker-compose down && docker-compose up -d --build
|
||
|
||
# Просмотр логов
|
||
docker-compose logs -f
|
||
```
|
||
|
||
## 📁 Структура файлов
|
||
|
||
```
|
||
/opt/my-network-*/
|
||
├── .env # Переменные окружения
|
||
├── bootstrap_*.json # Конфигурация ноды
|
||
├── docker-compose.yml # Docker конфигурация
|
||
├── data/ # База данных
|
||
├── logs/ # Логи приложения
|
||
├── app/ # Исходный код
|
||
├── web2-client/ # Веб-клиент
|
||
└── converter-module/ # Модуль конвертации
|
||
```
|
||
|
||
## ✅ Проверка развертывания
|
||
|
||
### Main Bootstrap Node:
|
||
```bash
|
||
# Проверка всех endpoints
|
||
curl -f https://my-public-node-3.projscale.dev/health
|
||
curl -f https://my-public-node-3.projscale.dev/api/bootstrap
|
||
curl -f https://my-public-node-3.projscale.dev/monitor/
|
||
```
|
||
|
||
### Regular Node:
|
||
```bash
|
||
# Локальная проверка
|
||
curl -f http://localhost:15100/health
|
||
|
||
# Публичная проверка (если есть домен)
|
||
curl -f https://your-domain.com/health
|
||
```
|
||
|
||
## 🎉 Заключение
|
||
|
||
MY Network v2.0 предоставляет полную автоматизацию развертывания распределенной P2P сети с возможностью:
|
||
|
||
- ⚡ Быстрого развертывания main bootstrap node
|
||
- 🔧 Гибкой настройки regular нод
|
||
- 🤖 Опциональных Telegram ботов
|
||
- 🌐 Публичного и приватного доступа
|
||
- 🔒 Автоматической настройки SSL
|
||
- 📊 Real-time мониторинга
|
||
|
||
**Готово к production использованию!** |