# MY Network v3.0 with FastAPI - Децентрализованная сеть контента **🚀 Автоматическая установка и запуск децентрализованной сети контента с FastAPI** [![FastAPI](https://img.shields.io/badge/FastAPI-0.104.1-009688.svg?style=flat&logo=FastAPI)](https://fastapi.tiangolo.com) [![Python](https://img.shields.io/badge/Python-3.11+-3776ab.svg?style=flat&logo=python)](https://www.python.org) [![Docker](https://img.shields.io/badge/Docker-Ready-2496ed.svg?style=flat&logo=docker)](https://www.docker.com) [![MY Network](https://img.shields.io/badge/MY%20Network-v3.0-ff6b35.svg?style=flat)](https://github.com/my-network) --- ## 🎯 Что нового в FastAPI версии ### ⚡ FastAPI Migration Complete Полная миграция от Sanic к FastAPI для лучшей производительности, типобезопасности и современных стандартов разработки. ### ✨ Ключевые улучшения: - 🔥 **Better Performance**: Полностью асинхронная архитектура FastAPI - 🛡️ **Type Safety**: Автоматическая валидация через Pydantic - 📚 **Auto Documentation**: Интерактивная API документация (`/docs`, `/redoc`) - 🔒 **Enhanced Security**: Ed25519 криптография + JWT токены - 📊 **Built-in Monitoring**: Prometheus метрики + health checks - 🌐 **100% Web2-Client Compatible**: Полная совместимость с существующими клиентами --- ## 🚀 Быстрая установка ### 🔥 Автоматическая установка FastAPI версии: ```bash curl -fsSL https://git.projscale.dev/my-dev/uploader-bot/raw/branch/main/start.sh | sudo bash ``` **Настройки по умолчанию:** - ✅ FastAPI server на порту 8000 - ✅ Bootstrap нода (создание новой сети) - ✅ Веб-клиент включен - ✅ Ed25519 криптография - ❌ SSL отключен (требует ручной настройки) - ❌ Telegram боты отключены ### 🛠️ Интерактивная установка (с настройкой параметров): ```bash wget https://git.projscale.dev/my-dev/uploader-bot/raw/branch/main/start.sh chmod +x start.sh sudo ./start.sh ``` **Интерактивный режим позволяет настроить:** - Тип сети (Bootstrap или подключение к существующей) - Тип ноды (публичная/приватная) - SSL сертификат с доменом - Telegram API ключи - Путь к docker.sock --- ## 📋 FastAPI Компоненты Скрипт `start.sh` автоматически установит: ### 1. **FastAPI Application Stack:** - **FastAPI 0.104.1** - современный async веб-фреймворк - **Uvicorn** - ASGI сервер для производительности - **Pydantic** - валидация данных и сериализация - **SQLAlchemy 2.0** - современный async ORM ### 2. **Автоматически клонируемые репозитории:** - `uploader-bot` - основное FastAPI приложение - `web2-client` - веб-интерфейс управления нодой - `converter-module` - модуль конвертации медиа - `contracts` - блокчейн контракты ### 3. **Инфраструктура:** - **PostgreSQL** - основная база данных - **Redis** - кеширование и rate limiting - **Nginx** - reverse proxy с chunked upload до 10GB - **Docker** - контейнеризация всех сервисов ### 4. **Системы безопасности:** - **Ed25519** - криптографические подписи между нодами - **JWT Tokens** - современная аутентификация - **Rate Limiting** - защита от DDoS через Redis - **SSL/TLS** - автоматические сертификаты Let's Encrypt --- ## 🔧 FastAPI Архитектура ### 🎯 Основные компоненты: ```mermaid graph TB Client[Web2-Client] --> Nginx[Nginx Reverse Proxy] Nginx --> FastAPI[FastAPI Application :8000] FastAPI --> Auth[Authentication Layer] FastAPI --> Middleware[Middleware Stack] FastAPI --> Routes[API Routes] Auth --> JWT[JWT Tokens] Auth --> Ed25519[Ed25519 Crypto] Routes --> Storage[File Storage] Routes --> Content[Content Management] Routes --> Node[Node Communication] Routes --> System[System Management] FastAPI --> DB[(PostgreSQL)] FastAPI --> Redis[(Redis Cache)] FastAPI --> MyNetwork[MY Network v3.0] ``` ### 📁 Структура FastAPI приложения: ``` app/ ├── fastapi_main.py # Главное FastAPI приложение ├── api/ │ ├── fastapi_auth_routes.py # JWT аутентификация │ ├── fastapi_content_routes.py # Управление контентом │ ├── fastapi_storage_routes.py # Chunked file uploads │ ├── fastapi_node_routes.py # MY Network коммуникация │ ├── fastapi_system_routes.py # Health checks & metrics │ └── fastapi_middleware.py # Security & rate limiting ├── core/ │ ├── security.py # JWT & authentication │ ├── database.py # Async database connections │ └── crypto/ │ └── ed25519_manager.py # Ed25519 signatures └── models/ # SQLAlchemy модели ``` --- ## 🌐 FastAPI Endpoints ### 🔐 Authentication (Web2-Client Compatible) ```bash # Telegram WebApp Authentication POST /auth.twa POST /auth.selectWallet # Standard Authentication POST /api/v1/auth/register POST /api/v1/auth/login POST /api/v1/auth/refresh GET /api/v1/auth/me ``` ### 📄 Content Management ```bash # Content Operations GET /content.view/{content_id} POST /blockchain.sendNewContentMessage POST /blockchain.sendPurchaseContentMessage ``` ### 📁 File Storage (Chunked Uploads) ```bash # File Upload with Progress Tracking POST /api/storage GET /upload/{upload_id}/status DELETE /upload/{upload_id} GET /api/v1/storage/quota ``` ### 🌐 MY Network v3.0 (Node Communication) ```bash # Ed25519 Signed Inter-Node Communication POST /api/node/handshake POST /api/node/content/sync POST /api/node/network/ping GET /api/node/network/status POST /api/node/network/discover ``` ### 📊 System & Monitoring ```bash # Health Checks (Kubernetes Ready) GET /api/system/health GET /api/system/health/detailed GET /api/system/ready GET /api/system/live # Monitoring & Metrics GET /api/system/metrics # Prometheus format GET /api/system/info GET /api/system/stats POST /api/system/maintenance ``` ### 📚 API Documentation (Development Mode) ```bash # Interactive Documentation GET /docs # Swagger UI GET /redoc # ReDoc GET /openapi.json # OpenAPI schema ``` --- ## 🚀 Запуск и управление ### 🔴 Запуск FastAPI приложения: ```bash # Development mode uvicorn app.fastapi_main:app --host 0.0.0.0 --port 8000 --reload # Production mode uvicorn app.fastapi_main:app --host 0.0.0.0 --port 8000 --workers 4 # Docker mode docker-compose up -d --build ``` ### 🎛️ Управление сервисом: ```bash # Systemd service systemctl start my-network systemctl stop my-network systemctl restart my-network systemctl status my-network # Docker containers docker-compose -f /opt/my-network/my-network/docker-compose.yml logs -f docker-compose -f /opt/my-network/my-network/docker-compose.yml ps ``` ### 📡 Доступ к системе: | Сервис | URL | Описание | |--------|-----|----------| | **FastAPI API** | `http://localhost:8000` | Основное API | | **Веб-интерфейс** | `http://localhost` | Nginx → Web2-Client | | **API Docs** | `http://localhost:8000/docs` | Swagger UI (dev mode) | | **Health Check** | `http://localhost:8000/api/system/health` | System status | | **Metrics** | `http://localhost:8000/api/system/metrics` | Prometheus | --- ## 🔍 Мониторинг FastAPI ### 📊 Health Checks: ```bash # Basic health check curl http://localhost:8000/api/system/health # Detailed system diagnostics curl http://localhost:8000/api/system/health/detailed # Kubernetes probes curl http://localhost:8000/api/system/ready curl http://localhost:8000/api/system/live ``` ### 📈 Metrics & Statistics: ```bash # Prometheus metrics curl http://localhost:8000/api/system/metrics # System information curl http://localhost:8000/api/system/info | jq # Node status (MY Network) curl http://localhost:8000/api/node/network/status | jq # System statistics curl http://localhost:8000/api/system/stats | jq ``` ### 🔐 Authentication Testing: ```bash # Test Telegram WebApp auth curl -X POST "http://localhost:8000/auth.twa" \ -H "Content-Type: application/json" \ -d '{"twa_data": "test_data", "ton_proof": null}' # Test protected endpoint with JWT curl -H "Authorization: Bearer YOUR_JWT_TOKEN" \ http://localhost:8000/api/v1/auth/me ``` --- ## 🏗️ MY Network v3.0 Features ### ✨ Децентрализованная архитектура: - ✅ **No Consensus** - каждая нода принимает решения независимо - ✅ **Peer-to-Peer** - прямые подписанные соединения между нодами - ✅ **Ed25519 Signatures** - криптографическая проверка всех сообщений - ✅ **Instant Broadcast** - мгновенная трансляция без расшифровки - ✅ **Content Sync** - автоматическая синхронизация между нодами ### 🔒 FastAPI Security Features: - ✅ **JWT Authentication** - access & refresh токены - ✅ **Rate Limiting** - Redis-based DDoS protection - ✅ **Input Validation** - Pydantic schemas для всех endpoints - ✅ **Security Headers** - автоматические security headers - ✅ **CORS Configuration** - правильная настройка для web2-client ### 📁 Enhanced File Handling: - ✅ **Chunked Uploads** - поддержка файлов до 10GB - ✅ **Progress Tracking** - real-time отслеживание прогресса - ✅ **Resume Support** - продолжение прерванных загрузок - ✅ **Base64 Compatibility** - совместимость с web2-client форматом --- ## 🔧 Конфигурация ### ⚙️ Environment Variables (.env): ```bash # FastAPI Configuration UVICORN_HOST=0.0.0.0 UVICORN_PORT=8000 FASTAPI_HOST=0.0.0.0 FASTAPI_PORT=8000 # Database DATABASE_URL=postgresql://user:pass@postgres:5432/mynetwork # Redis Cache REDIS_URL=redis://redis:6379/0 # Security SECRET_KEY=your-secret-key JWT_SECRET_KEY=your-jwt-secret # MY Network v3.0 NODE_ID=auto-generated NODE_TYPE=bootstrap NETWORK_MODE=main-node ``` ### 🐳 Docker Configuration: ```yaml # docker-compose.yml services: app: build: . ports: - "8000:8000" command: ["uvicorn", "app.fastapi_main:app", "--host", "0.0.0.0", "--port", "8000"] environment: - DATABASE_URL=postgresql://myuser:password@postgres:5432/mynetwork - REDIS_URL=redis://redis:6379/0 ``` --- ## 🆘 FastAPI Troubleshooting ### 🔧 Общие проблемы: **1. FastAPI не запускается:** ```bash # Проверить зависимости pip install -r requirements.txt # Проверить конфигурацию python -c "from app.fastapi_main import app; print('FastAPI OK')" # Запустить с debug логами uvicorn app.fastapi_main:app --host 0.0.0.0 --port 8000 --log-level debug ``` **2. Web2-Client не может аутентифицироваться:** ```bash # Проверить JWT endpoint curl -X POST "http://localhost:8000/auth.twa" \ -H "Content-Type: application/json" \ -d '{"twa_data": "test", "ton_proof": null}' # Должен вернуть JWT token ``` **3. Chunked upload не работает:** ```bash # Проверить Redis подключение redis-cli ping # Проверить storage endpoint curl -X POST "http://localhost:8000/api/storage" \ -H "Authorization: Bearer YOUR_JWT_TOKEN" ``` **4. Health check failed:** ```bash # Проверить все компоненты curl http://localhost:8000/api/system/health/detailed # Проверить базу данных docker-compose exec postgres pg_isready # Проверить Redis docker-compose exec redis redis-cli ping ``` ### 📊 Debug Information: ```bash # FastAPI application logs docker-compose logs app # System metrics curl http://localhost:8000/api/system/metrics # Database connection test docker-compose exec app python -c " from app.core.database import db_manager import asyncio asyncio.run(db_manager.test_connection()) " ``` ### 🔄 Migration from Sanic: ```bash # Если обновляетесь с Sanic версии: # 1. Backup data docker-compose exec postgres pg_dump mynetwork > backup.sql # 2. Stop old version systemctl stop my-network # 3. Update codebase git pull origin main # 4. Install FastAPI dependencies pip install -r requirements.txt # 5. Start FastAPI version uvicorn app.fastapi_main:app --host 0.0.0.0 --port 8000 ``` --- ## 📖 Documentation ### 📚 FastAPI Documentation: - **[MIGRATION_COMPLETION_REPORT.md](MIGRATION_COMPLETION_REPORT.md)** - Полный отчет о миграции - **[RELEASE_NOTES.md](RELEASE_NOTES.md)** - Что нового в FastAPI версии - **[FASTAPI_MIGRATION_IMPLEMENTATION_REPORT.md](docs/FASTAPI_MIGRATION_IMPLEMENTATION_REPORT.md)** - Технические детали - **[COMPATIBILITY_FIXES_SUMMARY.md](COMPATIBILITY_FIXES_SUMMARY.md)** - Исправления совместимости ### 🔗 Полезные ссылки: - **FastAPI Documentation**: https://fastapi.tiangolo.com/ - **Uvicorn Documentation**: https://www.uvicorn.org/ - **Pydantic Documentation**: https://pydantic-docs.helpmanual.io/ - **MY Network Repository**: https://git.projscale.dev/my-dev/uploader-bot --- ## 🎯 Production Deployment ### 🚀 Production Checklist: - [ ] **Environment**: Set `DEBUG=false` in production - [ ] **Database**: Use real PostgreSQL (not SQLite) - [ ] **Redis**: Use real Redis instance (not MockRedis) - [ ] **SSL**: Configure SSL certificates with Let's Encrypt - [ ] **Security**: Generate strong `SECRET_KEY` and `JWT_SECRET_KEY` - [ ] **Monitoring**: Set up Prometheus metrics collection - [ ] **Backups**: Configure database backup procedures - [ ] **Firewall**: Configure UFW/iptables for security ### 🌐 Production Scripts: ```bash # Full production deployment ./deploy_production_my_network.sh # Universal installer for any server ./universal_installer.sh # MY Network v3.0 installer ./start.sh ``` ### 📊 Production Monitoring: ```bash # Health monitoring endpoint curl https://your-domain.com/api/system/health # Prometheus metrics for monitoring stack curl https://your-domain.com/api/system/metrics # System statistics curl https://your-domain.com/api/system/stats ``` --- ## 📞 Support & Community ### 🆘 Getting Help: - **Interactive API Docs**: Visit `/docs` on your running instance - **Health Diagnostics**: Use `/api/system/health/detailed` for system status - **Application Logs**: Check Docker logs with `docker-compose logs -f` ### 🐛 Reporting Issues: - **Repository**: [MY Network v3.0 Issues](https://git.projscale.dev/my-dev/uploader-bot/issues) - **Documentation**: Check `/docs` folder for detailed guides - **Performance**: Use `/api/system/metrics` for performance data ### 🤝 Contributing: - **FastAPI Improvements**: Submit PRs for FastAPI enhancements - **MY Network Features**: Contribute to decentralized features - **Documentation**: Help improve documentation and guides --- ## 📝 License MY Network v3.0 with FastAPI - Open Source Project --- **🚀 MY Network v3.0 with FastAPI - Производительная, безопасная и современная платформа для децентрализованного контента!** *Built with ❤️ using FastAPI, Modern Python, and Decentralized Technologies*