518 lines
16 KiB
Markdown
518 lines
16 KiB
Markdown
# MY Network v3.0 with FastAPI - Децентрализованная сеть контента
|
||
|
||
**🚀 Автоматическая установка и запуск децентрализованной сети контента с FastAPI**
|
||
|
||
[](https://fastapi.tiangolo.com)
|
||
[](https://www.python.org)
|
||
[](https://www.docker.com)
|
||
[](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* |