16 KiB
16 KiB
MY Network v3.0 with FastAPI - Децентрализованная сеть контента
🚀 Автоматическая установка и запуск децентрализованной сети контента с FastAPI
🎯 Что нового в 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 версии:
curl -fsSL https://git.projscale.dev/my-dev/uploader-bot/raw/branch/main/start.sh | sudo bash
Настройки по умолчанию:
- ✅ FastAPI server на порту 8000
- ✅ Bootstrap нода (создание новой сети)
- ✅ Веб-клиент включен
- ✅ Ed25519 криптография
- ❌ SSL отключен (требует ручной настройки)
- ❌ Telegram боты отключены
🛠️ Интерактивная установка (с настройкой параметров):
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 Архитектура
🎯 Основные компоненты:
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)
# 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
# Content Operations
GET /content.view/{content_id}
POST /blockchain.sendNewContentMessage
POST /blockchain.sendPurchaseContentMessage
📁 File Storage (Chunked Uploads)
# 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)
# 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
# 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)
# Interactive Documentation
GET /docs # Swagger UI
GET /redoc # ReDoc
GET /openapi.json # OpenAPI schema
🚀 Запуск и управление
🔴 Запуск FastAPI приложения:
# 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
🎛️ Управление сервисом:
# 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:
# 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:
# 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:
# 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):
# 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:
# 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 не запускается:
# Проверить зависимости
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 не может аутентифицироваться:
# Проверить 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 не работает:
# Проверить Redis подключение
redis-cli ping
# Проверить storage endpoint
curl -X POST "http://localhost:8000/api/storage" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
4. Health check failed:
# Проверить все компоненты
curl http://localhost:8000/api/system/health/detailed
# Проверить базу данных
docker-compose exec postgres pg_isready
# Проверить Redis
docker-compose exec redis redis-cli ping
📊 Debug Information:
# 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:
# Если обновляетесь с 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 - Полный отчет о миграции
- RELEASE_NOTES.md - Что нового в FastAPI версии
- FASTAPI_MIGRATION_IMPLEMENTATION_REPORT.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=falsein 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_KEYandJWT_SECRET_KEY - Monitoring: Set up Prometheus metrics collection
- Backups: Configure database backup procedures
- Firewall: Configure UFW/iptables for security
🌐 Production Scripts:
# 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:
# 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
/docson your running instance - Health Diagnostics: Use
/api/system/health/detailedfor system status - Application Logs: Check Docker logs with
docker-compose logs -f
🐛 Reporting Issues:
- Repository: MY Network v3.0 Issues
- Documentation: Check
/docsfolder for detailed guides - Performance: Use
/api/system/metricsfor 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