10 KiB
10 KiB
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
Выполнение:
# На сервере 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
Выполнение:
chmod +x deploy_regular_node.sh
./deploy_regular_node.sh
Интерактивная настройка:
- Node Name - имя ноды (по умолчанию: my-node-timestamp)
- Public Domain - публичный домен (опционально для приватных нод)
- Telegram Bot Token - токен клиентского бота (опционально)
- Uploader Bot Token - токен uploader бота (опционально)
Типы нод:
- Public Regular Node - с доменом, SSL, Nginx, веб-интерфейсом
- Private Regular Node - только локальный доступ, без публичного домена
Что делает:
- 🔍 Подключается к main bootstrap node
- 📡 Получает конфигурацию сети
- 🐳 Развертывает контейнеры согласно типу ноды
- 🌐 Настраивает публичный доступ (если указан домен)
- 🤖 Включает Telegram ботов (если указаны токены)
- 🔄 Инициирует синхронизацию с сетью
📋 Управление нодами
Main Bootstrap Node
# Просмотр логов
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
# Просмотр логов (замените 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):
# Основные порты
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 бот:
- Загрузка контента в сеть
- Конвертация файлов
- Управление метаданными
Настройка:
# В .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
🔄 Синхронизация
Процесс подключения новой ноды:
- Подключение к bootstrap node
- Получение списка активных пиров
- Установка P2P соединений
- Синхронизация данных
- Регистрация в сети
Интервалы:
- Sync Interval: 30 секунд (regular) / 15 секунд (main)
- Discovery Interval: 60 секунд (regular) / 30 секунд (main)
- Connection Timeout: 30 секунд
🛠️ Troubleshooting
Проблемы с подключением:
# Проверка доступности bootstrap node
curl -f https://my-public-node-3.projscale.dev/health
# Проверка локального health check
curl -f http://localhost:15100/health
Проблемы с SSL:
# Проверка сертификата
certbot certificates
# Обновление сертификата
certbot renew --dry-run
Проблемы с Docker:
# Перезапуск контейнеров
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:
# Проверка всех 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:
# Локальная проверка
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 использованию!