#!/bin/bash # MY Network User Setup - без sudo, только для пользователя service # Запуск MY Network в пользовательском пространстве set -e echo "🚀 MY Network User Setup (без sudo)" echo "===================================" echo "Пользователь: $(whoami)" echo "Директория: $(pwd)" echo "" # Переход в my-uploader-bot if [[ -d "my-uploader-bot" ]]; then cd my-uploader-bot echo "✅ Директория my-uploader-bot найдена" else echo "❌ Директория my-uploader-bot не найдена!" echo "Содержимое текущей директории:" ls -la exit 1 fi # Создание Python venv echo "🐍 Создание Python окружения..." python3 -m venv venv source venv/bin/activate # Обновление pip echo "📦 Обновление pip..." pip install --upgrade pip # Установка базовых пакетов echo "📦 Установка Python пакетов..." pip install fastapi uvicorn sanic requests python-dotenv # Создание директорий mkdir -p app/api mkdir -p logs # Создание упрощенного MY Network приложения echo "🏗️ Создание MY Network приложения..." cat > app/main.py << 'EOF' #!/usr/bin/env python3 """MY Network Bootstrap Node - User Space Version""" import os import json import asyncio from datetime import datetime from fastapi import FastAPI from fastapi.responses import JSONResponse, HTMLResponse from fastapi.middleware.cors import CORSMiddleware import uvicorn import logging # Настройка логирования logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler('logs/my-network.log'), logging.StreamHandler() ] ) logger = logging.getLogger("MY-Network") app = FastAPI( title="MY Network Bootstrap Node", description="MY Network v2.0 Bootstrap Node - User Space", version="2.0.0" ) # CORS app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) NODE_ID = f"bootstrap-user-{int(datetime.now().timestamp())}" DOMAIN = "my-public-node-3.projscale.dev" PORT = 15100 @app.on_event("startup") async def startup(): logger.info(f"🚀 MY Network Bootstrap Node запущен") logger.info(f"Node ID: {NODE_ID}") logger.info(f"Domain: {DOMAIN}") logger.info(f"Port: {PORT}") @app.get("/") async def root(): return {"message": "MY Network Bootstrap Node v2.0 - User Space", "status": "active"} @app.get("/api/my/health") async def health_check(): return JSONResponse({ "status": "healthy", "node_id": NODE_ID, "node_type": "bootstrap", "domain": DOMAIN, "port": PORT, "mode": "user-space", "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": PORT, "ssl": False, "public": True, "region": "eu-central", "capacity": "medium", "mode": "user-space", "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": PORT, "ssl": False, "public": True, "region": "eu-central", "capacity": "medium", "mode": "user-space", "services": ["api", "monitor"], "last_seen": datetime.utcnow().isoformat() } ], "network_config": { "protocol_version": "2.0", "max_peers": 50, "sync_interval": 300 }, "api_endpoints": { "base_url": f"http://{DOMAIN}:{PORT}", "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""" MY Network Bootstrap Monitor - User Space

🚀 MY Network Bootstrap Node Monitor

Node Status: ACTIVE (User Space)

Node ID: {NODE_ID}

Domain: {DOMAIN}

Port: {PORT}

Type: Bootstrap Primary

Version: 2.0.0

Mode: User Space

Services: API, Monitor

Last Update: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}

Network Configuration

Protocol Version: 2.0

Max Peers: 50

Public Access: Enabled

SSL: Disabled (User Space Mode)

⚠️ User Space Mode

Сервис запущен в пользовательском режиме

Для полной функциональности требуются root права

Доступ: http://{DOMAIN}:{PORT}

""" return HTMLResponse(content=html) if __name__ == "__main__": print(f"🚀 Starting MY Network Bootstrap Node - User Space") print(f"Domain: {DOMAIN}") print(f"Port: {PORT}") print(f"Node ID: {NODE_ID}") print(f"Mode: User Space (no root required)") print(f"Access: http://{DOMAIN}:{PORT}") print("") uvicorn.run(app, host="0.0.0.0", port=PORT) EOF # Создание скрипта запуска cat > start_my_network.sh << 'EOF' #!/bin/bash cd /home/service/my-uploader-bot source venv/bin/activate echo "🚀 Запуск MY Network Bootstrap Node (User Space)" echo "===============================================" echo "" # Создание директории для логов mkdir -p logs # Запуск приложения python app/main.py EOF chmod +x start_my_network.sh # Создание cron задачи для автозапуска echo "⏰ Создание задачи для автозапуска..." cat > run_my_network.sh << 'EOF' #!/bin/bash # Проверка, запущен ли MY Network if ! pgrep -f "python app/main.py" > /dev/null; then echo "$(date): Запуск MY Network" >> /home/service/my-uploader-bot/logs/cron.log cd /home/service/my-uploader-bot source venv/bin/activate nohup python app/main.py >> logs/app.log 2>&1 & else echo "$(date): MY Network уже запущен" >> /home/service/my-uploader-bot/logs/cron.log fi EOF chmod +x run_my_network.sh # Добавление в crontab echo "📅 Добавление в crontab..." (crontab -l 2>/dev/null; echo "*/5 * * * * /home/service/my-uploader-bot/run_my_network.sh") | crontab - echo "" echo "✅ MY Network Bootstrap Node установлен!" echo "=======================================" echo "" echo "🚀 Запуск вручную:" echo " cd /home/service/my-uploader-bot" echo " ./start_my_network.sh" echo "" echo "🚀 Запуск в фоне:" echo " ./run_my_network.sh" echo "" echo "🌐 Доступ:" echo " http://my-public-node-3.projscale.dev:15100" echo " http://my-public-node-3.projscale.dev:15100/api/my/health" echo " http://my-public-node-3.projscale.dev:15100/api/my/monitor/" echo "" echo "📝 Логи:" echo " tail -f logs/my-network.log" echo " tail -f logs/app.log" echo "" echo "⚠️ Примечание: Сервис работает в пользовательском режиме" echo " Для полной функциональности требуются root права" echo "" echo "🎯 MY Network Bootstrap Node готов к работе!"