#!/bin/bash # MY Network Direct Setup - для работы с файлами в /home/service # Упрощенная версия без лишних проверок set -e echo "🚀 MY Network Direct Setup" echo "=========================" echo "Работаем с файлами в /home/service" echo "Домен: my-public-node-3.projscale.dev" echo "" # Проверка что мы root if [[ $EUID -ne 0 ]]; then echo "❌ Запустите от root: sudo bash setup_server_direct.sh" exit 1 fi DOMAIN="my-public-node-3.projscale.dev" EMAIL="admin@projscale.dev" # Переход в директорию проекта cd /home/service echo "📁 Содержимое /home/service:" ls -la # Обновление системы быстро echo "🔄 Быстрое обновление системы..." apt update # Установка только необходимого echo "📦 Установка базовых пакетов..." apt install -y \ python3 \ python3-pip \ python3-venv \ nginx \ ufw \ curl \ wget # Переход в my-uploader-bot если есть if [[ -d "my-uploader-bot" ]]; then cd my-uploader-bot echo "✅ Найдена директория my-uploader-bot" else echo "❌ Директория my-uploader-bot не найдена!" echo "Содержимое /home/service:" ls -la /home/service/ exit 1 fi # Создание Python venv echo "🐍 Создание Python окружения..." python3 -m venv venv source venv/bin/activate # Установка базовых пакетов Python echo "📦 Установка Python пакетов..." pip install --upgrade pip pip install fastapi uvicorn sanic requests python-dotenv # Создание минимального приложения MY Network echo "🏗️ Создание минимального MY Network приложения..." mkdir -p app/api # Простое FastAPI приложение cat > app/main.py << 'EOF' #!/usr/bin/env python3 """MY Network Bootstrap Node - Minimal Version""" import os import json from datetime import datetime from fastapi import FastAPI from fastapi.responses import JSONResponse, HTMLResponse from fastapi.middleware.cors import CORSMiddleware import uvicorn app = FastAPI( title="MY Network Bootstrap Node", description="MY Network v2.0 Bootstrap Node - Minimal", version="2.0.0" ) # CORS app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) NODE_ID = f"bootstrap-{int(datetime.now().timestamp())}" DOMAIN = "my-public-node-3.projscale.dev" @app.get("/") async def root(): return {"message": "MY Network Bootstrap Node v2.0", "status": "active"} @app.get("/api/my/health") async def health_check(): return JSONResponse({ "status": "healthy", "node_id": NODE_ID, "node_type": "bootstrap", "domain": DOMAIN, "timestamp": datetime.utcnow().isoformat(), "services": ["api", "monitor"], "version": "2.0.0" }) @app.get("/api/my/node/info") async def node_info(): return JSONResponse({ "node_id": NODE_ID, "node_type": "bootstrap", "domain": DOMAIN, "port": 443, "ssl": True, "public": True, "region": "eu-central", "capacity": "high", "services": ["api", "monitor"], "protocol_version": "2.0", "last_seen": datetime.utcnow().isoformat() }) @app.get("/api/my/bootstrap/config") async def bootstrap_config(): config = { "version": "2.0", "network_id": "my-network-main", "bootstrap_nodes": [ { "id": NODE_ID, "host": DOMAIN, "port": 443, "ssl": True, "public": True, "region": "eu-central", "capacity": "high", "services": ["api", "monitor"], "last_seen": datetime.utcnow().isoformat() } ], "network_config": { "protocol_version": "2.0", "max_peers": 100, "sync_interval": 300 }, "api_endpoints": { "base_url": f"https://{DOMAIN}", "health": "/api/my/health", "node_info": "/api/my/node/info", "bootstrap": "/api/my/bootstrap/config" } } return JSONResponse(config) @app.get("/api/my/monitor/") async def monitor_dashboard(): html = f"""
Node ID: {NODE_ID}
Domain: {DOMAIN}
Type: Bootstrap Primary
Version: 2.0.0
Services: API, Monitor
Last Update: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}
Protocol Version: 2.0
Max Peers: 100
Public Access: Enabled
SSL: Required