Go to file
user 18a76ccc02 new startup script 2025-08-15 19:28:14 +03:00
alembic relayers 2025-07-02 19:25:20 +03:00
app fixes global 2025-08-08 09:14:18 +03:00
config relayers 2025-07-02 19:25:20 +03:00
data upd 2025-07-11 06:46:33 +03:00
deployment fixes global 2025-08-08 09:14:18 +03:00
docs fixes global 2025-08-08 09:14:18 +03:00
locale/en/LC_MESSAGES dowload & selectWallet & fixes & auth me 2025-03-17 13:40:37 +03:00
monitoring relayers 2025-07-02 19:25:20 +03:00
scripts fixes global 2025-08-08 09:14:18 +03:00
tests fixes global 2025-08-08 09:14:18 +03:00
.ch REFACTORING DIRECTORIES 2025-07-05 20:02:00 +03:00
.dockerignore upd 2025-07-11 06:46:33 +03:00
.env.compatible relayers 2025-07-02 19:25:20 +03:00
.env.example REFACTORING DIRECTORIES 2025-07-05 20:02:00 +03:00
.gitignore upd 2025-07-11 06:46:33 +03:00
Dockerfile update 2025-07-28 08:46:32 +03:00
Dockerfile.simple fix 2025-07-05 20:46:32 +03:00
LICENSE Initial commit 2024-02-16 13:23:45 +00:00
MY_NETWORK_V2_DEPLOYMENT_GUIDE.md edit scripts 2025-07-14 22:22:21 +03:00
MY_NETWORK_V2_DEPLOYMENT_SUMMARY.md upd 2025-07-11 06:46:33 +03:00
README.md fixes global 2025-08-08 09:14:18 +03:00
bootstrap.json upd 2025-07-11 06:46:33 +03:00
check_app_status.sh йй 2025-07-05 20:42:58 +03:00
deploy_local_production.sh edit scripts 2025-07-14 22:22:21 +03:00
deploy_main_bootstrap_node.sh docs / script 2025-07-25 15:36:24 +03:00
deploy_production_my_network.sh upd 2025-07-11 06:46:33 +03:00
deploy_regular_node.sh edit scripts 2025-07-14 22:22:21 +03:00
docker-compose.yml update 2025-07-28 08:46:32 +03:00
emergency_nginx_fix.sh fix 2025-07-05 20:39:52 +03:00
fix_app_restart.sh new fixes 2025-07-07 07:33:07 +03:00
fix_docker_container.sh fixes 2025-07-07 08:24:25 +03:00
fix_docker_no_sudo.sh upd 2025-07-11 06:46:33 +03:00
fix_nginx_now.sh new shs 2025-07-05 20:33:07 +03:00
pyproject.toml relayers 2025-07-02 19:25:20 +03:00
requirements.txt fix reqs 2025-07-28 09:12:35 +03:00
setup_ssl_for_domain.sh fix 2025-07-05 20:46:32 +03:00
start.sh new startup script 2025-08-15 19:28:14 +03:00
start_my_network.py upd 2025-07-11 06:46:33 +03:00
universal_installer.sh upd 2025-07-11 06:46:33 +03:00

README.md

MY Network v3.0 with FastAPI - Децентрализованная сеть контента

🚀 Автоматическая установка и запуск децентрализованной сети контента с FastAPI

FastAPI Python Docker 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 версии:

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:

🔗 Полезные ссылки:


🎯 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:

# 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 /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
  • 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