uploader-bot/MY_NETWORK_V2_DEPLOYMENT_GU...

291 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.

# 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 использованию!**