uploader-bot/README.md

518 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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*