# MY Network v2.0 - Distributed Content Protocol ## 🌐 Обзор MY Network - это распределенная система для управления и синхронизации контента между нодами. Протокол обеспечивает: - **P2P сеть** для обмена данными между нодами - **Автоматическую синхронизацию** контента - **Load balancing** на основе метрик нагрузки - **Веб-интерфейс мониторинга** в хакерском стиле - **Совместимость** с существующей инфраструктурой ## 🚀 Быстрый запуск ### Минимальный запуск для тестирования: ```bash # 1. Установить зависимости pip install -r requirements_new.txt # 2. Запустить минимальный сервер python start_my_network.py ``` Откройте http://localhost:8000/api/my/monitor/ для мониторинга. ### Запуск с существующей системой: ```bash # 1. Использовать совместимые файлы cp docker-compose.compatible.yml docker-compose.yml cp .env.compatible .env # 2. Запустить через Docker docker-compose up -d # 3. MY Network автоматически интегрируется ``` ## 🏗️ Продакшен развертывание ### Автоматическое развертывание: ```bash # Сохранить переменные окружения export DOMAIN="your-domain.com" export EMAIL="admin@your-domain.com" # Запустить скрипт развертывания (требует root) sudo bash deploy_my_network.sh ``` Скрипт автоматически установит: - ✅ Nginx с SSL (Let's Encrypt) - ✅ Docker и Docker Compose - ✅ Firewall и безопасность - ✅ Systemd сервисы - ✅ Мониторинг и health checks ### Ручное развертывание: ```bash # 1. Создать production .env cp .env.example .env.production # Отредактировать настройки # 2. Запустить продакшен контейнеры docker-compose -f docker-compose.prod.yml up -d # 3. Настроить nginx sudo cp nginx.conf /etc/nginx/sites-available/my-network sudo ln -s /etc/nginx/sites-available/my-network /etc/nginx/sites-enabled/ sudo systemctl restart nginx ``` ## 📊 Мониторинг и управление ### Веб-интерфейс: - **Основной мониторинг**: http://your-domain/api/my/monitor/ - **ASCII статус**: http://your-domain/api/my/monitor/ascii - **API документация**: http://your-domain/api/docs ### API эндпоинты: #### Информация о ноде: ```bash # Статус ноды curl http://localhost:8000/api/my/node/info # Подключенные пиры curl http://localhost:8000/api/my/node/peers # Статус синхронизации curl http://localhost:8000/api/my/sync/status ``` #### Управление пирами: ```bash # Подключиться к пиру curl -X POST http://localhost:8000/api/my/node/peers/connect \ -H "Content-Type: application/json" \ -d '{"address": "http://peer-node:8001"}' # Отключиться от пира curl -X DELETE http://localhost:8000/api/my/node/peers/PEER_ID ``` #### Синхронизация: ```bash # Запустить синхронизацию curl -X POST http://localhost:8000/api/my/sync/start # Реплицировать контент curl -X POST http://localhost:8000/api/my/content/HASH/replicate \ -H "Content-Type: application/json" \ -d '{"target_nodes": ["node1", "node2"]}' ``` ### Системные команды: ```bash # Управление сервисом sudo systemctl start my-network sudo systemctl stop my-network sudo systemctl restart my-network sudo systemctl status my-network # Просмотр логов sudo journalctl -u my-network -f tail -f /var/log/my-network/app.log # Проверка здоровья /opt/my-network/health_check.sh # Docker команды docker-compose logs -f my-network-app docker-compose ps ``` ## 🔧 Конфигурация ### Основные настройки (.env): ```env # MY Network Configuration MY_NETWORK_ENABLED=True MY_NETWORK_NODE_ID=unique-node-id MY_NETWORK_P2P_PORT=8001 MY_NETWORK_API_PORT=8000 # Bootstrap ноды (JSON массив) MY_NETWORK_BOOTSTRAP_NODES=["http://bootstrap1:8001", "http://bootstrap2:8001"] # Настройки синхронизации SYNC_MAX_CONCURRENT=5 SYNC_TIMEOUT=300 SYNC_RETRY_ATTEMPTS=3 # Настройки пиров PEER_HEALTH_CHECK_INTERVAL=60 PEER_CONNECTION_TIMEOUT=30 MAX_PEER_CONNECTIONS=50 ``` ### Bootstrap конфигурация (bootstrap.json): ```json { "version": "2.0", "network_id": "my-network-main", "bootstrap_nodes": [ { "node_id": "bootstrap-1", "address": "https://bootstrap1.my-network.com:8001", "public_key": "...", "trusted": true } ], "consensus": { "algorithm": "raft", "election_timeout": 5000, "heartbeat_interval": 1000 } } ``` ## 🌍 Архитектура сети ### Компоненты: 1. **Node Service** - основной сервис ноды 2. **Peer Manager** - управление подключениями 3. **Sync Manager** - синхронизация контента 4. **Bootstrap Manager** - управление bootstrap конфигурацией ### Протокол взаимодействия: ``` Нода A Нода B | | |--- Handshake ---------> | |<-- Auth Response ------- | | | |--- Content List ------> | |<-- Missing Content ---- | | | |--- File Transfer -----> | |<-- Confirmation ------- | ``` ### Состояния контента: - **Local** - только на текущей ноде - **Syncing** - в процессе синхронизации - **Replicated** - скопирован на другие ноды - **Verified** - проверена целостность ## 🔒 Безопасность ### Встроенные механизмы: - **TLS шифрование** для всех соединений - **Проверка хешей** для целостности файлов - **Аутентификация пиров** через public key - **Rate limiting** для предотвращения DDoS - **Firewall правила** для ограничения доступа ### Рекомендации: ```bash # Настроить firewall sudo ufw allow 8000:8010/tcp sudo ufw allow 8000:8010/udp # Включить fail2ban sudo systemctl enable fail2ban # Регулярные бэкапы 0 2 * * * /opt/my-network/backup.sh ``` ## 📈 Мониторинг и алерты ### Метрики: - **Количество подключенных пиров** - **Статус синхронизации** - **Использование ресурсов** - **Время отклика** - **Ошибки сети** ### Health checks: ```bash # HTTP health check curl -f http://localhost:8000/health # MY Network specific curl -f http://localhost:8000/api/my/health # Detailed status curl http://localhost:8000/api/my/network/stats ``` ### Prometheus интеграция: ```yaml # prometheus.yml scrape_configs: - job_name: 'my-network' static_configs: - targets: ['localhost:9090'] metrics_path: '/metrics' ``` ## 🐛 Устранение неисправностей ### Частые проблемы: #### 1. Нода не подключается к пирам: ```bash # Проверить сетевые соединения netstat -tulpn | grep 8001 # Проверить firewall sudo ufw status # Проверить логи tail -f /var/log/my-network/app.log ``` #### 2. Синхронизация не работает: ```bash # Проверить статус синхронизации curl http://localhost:8000/api/my/sync/status # Перезапустить синхронизацию curl -X POST http://localhost:8000/api/my/sync/start # Проверить доступность целевых нод curl http://target-node:8001/api/my/health ``` #### 3. Высокое использование ресурсов: ```bash # Проверить использование CPU/памяти docker stats my-network-app # Ограничить ресурсы docker update --memory=2g --cpus=2 my-network-app # Настроить параметры синхронизации echo "SYNC_MAX_CONCURRENT=2" >> .env ``` ### Диагностические команды: ```bash # Проверить все компоненты curl http://localhost:8000/api/my/health | jq # Список активных соединений curl http://localhost:8000/api/my/node/peers | jq # Статистика сети curl http://localhost:8000/api/my/network/stats | jq # ASCII статус (для консоли) curl http://localhost:8000/api/my/monitor/ascii ``` ## 🔄 Обновление системы ### Обновление без downtime: ```bash # 1. Подготовить новую версию git pull origin main # 2. Собрать новый образ docker-compose build my-network-app # 3. Rolling update docker-compose up -d --no-deps my-network-app # 4. Проверить статус curl http://localhost:8000/health ``` ### Миграция данных: ```bash # Экспорт данных docker exec my-network-db mysqldump -u root -p mymusic > backup.sql # Миграция схемы (если нужно) docker exec my-network-app python -m alembic upgrade head # Импорт данных docker exec -i my-network-db mysql -u root -p mymusic < backup.sql ``` ## 📚 Дополнительная документация - **MY_ARCHITECTURE.md** - детальная архитектура системы - **MY_PROTOCOL.md** - спецификация протокола - **MY_NODE_SPEC.md** - технические характеристики нод - **MY_MONITORING.md** - руководство по мониторингу ## 🤝 Вклад в проект ### Структура проекта: ``` my-uploader-bot/ ├── app/ │ ├── core/ │ │ └── my_network/ # MY Network компоненты │ │ ├── node_service.py │ │ ├── peer_manager.py │ │ ├── sync_manager.py │ │ └── bootstrap_manager.py │ ├── api/ │ │ └── routes/ # API маршруты │ │ ├── my_network_routes.py │ │ └── my_monitoring.py │ └── templates/ # Web интерфейс │ └── my_network_monitor.html ├── bootstrap.json # Bootstrap конфигурация ├── start_my_network.py # Быстрый запуск └── deploy_my_network.sh # Продакшен деплой ``` ### Development workflow: ```bash # 1. Создать ветку для фичи git checkout -b feature/my-feature # 2. Разработка с hot reload python start_my_network.py --debug # 3. Тестирование pytest tests/test_my_network.py # 4. Создать pull request git push origin feature/my-feature ``` ## 📞 Поддержка Если у вас возникли вопросы или проблемы: 1. Проверьте [Troubleshooting](#-устранение-неисправностей) 2. Посмотрите логи: `tail -f /var/log/my-network/app.log` 3. Проверьте health check: `curl http://localhost:8000/api/my/health` 4. Создайте issue с подробным описанием проблемы --- **MY Network v2.0** - Distributed Content Protocol *Decentralized content distribution made simple*