uploader-bot/MY_NETWORK_V2_DEPLOYMENT_GU...

10 KiB
Raw Blame History

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

Результат:

2. Regular Node (подключение к сети)

Назначение: Обычная нода, которая подключается к существующей сети.

Скрипт: deploy_regular_node.sh

Выполнение:

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

# Просмотр логов
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

🔄 Синхронизация

Процесс подключения новой ноды:

  1. Подключение к bootstrap node
  2. Получение списка активных пиров
  3. Установка P2P соединений
  4. Синхронизация данных
  5. Регистрация в сети

Интервалы:

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