#!/bin/bash # MY Network - Установка сервиса (Шаг 1 из 2) # Устанавливает базовый сервис без защиты # Для защиты используйте: bash secure_service.sh set -e echo "🚀 MY Network - Установка сервиса" echo "=================================" # Проверка прав root if [[ $EUID -ne 0 ]]; then echo "❌ Этот скрипт должен запускаться от root" echo "Используйте: sudo bash install_service.sh" exit 1 fi # Получение домена read -p "🌐 Введите домен (например: my-network.example.com): " DOMAIN if [[ -z "$DOMAIN" ]]; then echo "❌ Домен обязателен!" exit 1 fi # Получение email для SSL read -p "📧 Введите email для SSL сертификата: " EMAIL if [[ -z "$EMAIL" ]]; then echo "❌ Email обязателен для SSL!" exit 1 fi echo "📋 Настройки:" echo " Домен: $DOMAIN" echo " Email: $EMAIL" echo " Порт: 15100" echo "" # Обновление системы echo "🔄 Обновление системы..." apt update && apt upgrade -y # Установка основных пакетов echo "📦 Установка пакетов..." apt install -y \ docker.io \ docker-compose \ git \ curl \ wget \ unzip \ python3 \ python3-pip \ python3-venv \ htop \ tree \ nano \ ufw # Запуск Docker systemctl enable docker systemctl start docker # Добавление пользователя в группу docker usermod -aG docker $USER # Создание директории проекта PROJECT_DIR="/opt/my-network" mkdir -p $PROJECT_DIR cd $PROJECT_DIR # Клонирование или копирование проекта if [[ -d "my-uploader-bot" ]]; then echo "📁 Проект уже существует, обновляем..." cd my-uploader-bot git pull 2>/dev/null || echo "Git pull failed, продолжаем..." cd .. else echo "📥 Копирование проекта..." # Если запускается из директории проекта, копируем if [[ -f "../pyproject.toml" ]]; then cp -r ../ ./my-uploader-bot/ else echo "❌ Не найден файл проекта. Убедитесь что скрипт запускается из директории проекта." exit 1 fi fi cd my-uploader-bot # Создание .env файла echo "📝 Создание конфигурации..." cat > .env << EOF # MY Network Configuration NODE_ID=node-$(date +%s) NODE_PORT=15100 DOMAIN=$DOMAIN EMAIL=$EMAIL # Database DB_HOST=localhost DB_PORT=3306 DB_NAME=my_network DB_USER=my_network_user DB_PASSWORD=$(openssl rand -base64 32) # Redis REDIS_HOST=localhost REDIS_PORT=6379 REDIS_PASSWORD=$(openssl rand -base64 32) # Security SECRET_KEY=$(openssl rand -base64 64) JWT_SECRET=$(openssl rand -base64 32) # Paths STORAGE_PATH=/opt/storage LOG_PATH=/opt/logs # Network BOOTSTRAP_NODES=[] SYNC_INTERVAL=300 MAX_PEERS=10 EOF # Создание директорий echo "📁 Создание директорий..." mkdir -p /opt/storage /opt/logs chmod 755 /opt/storage /opt/logs # Установка Python зависимостей echo "🐍 Установка Python зависимостей..." python3 -m venv venv source venv/bin/activate pip install --upgrade pip pip install -r requirements_new.txt # Создание systemd сервиса echo "⚙️ Создание systemd сервиса..." cat > /etc/systemd/system/my-network.service << EOF [Unit] Description=MY Network Service After=network.target docker.service Requires=docker.service [Service] Type=forking User=root WorkingDirectory=$PROJECT_DIR/my-uploader-bot Environment=PATH=$PROJECT_DIR/my-uploader-bot/venv/bin ExecStart=/bin/bash -c 'source venv/bin/activate && python app/main.py' ExecStop=/bin/kill -TERM \$MAINPID Restart=always RestartSec=10 [Install] WantedBy=multi-user.target EOF # Запуск Docker Compose echo "🐳 Запуск Docker сервисов..." docker-compose -f docker-compose.new.yml up -d # Активация сервиса echo "🔧 Активация сервиса..." systemctl daemon-reload systemctl enable my-network systemctl start my-network # Проверка статуса sleep 5 echo "📊 Проверка статуса..." systemctl status my-network --no-pager # Проверка портов echo "🌐 Проверка портов..." netstat -tlnp | grep :15100 || echo "⚠️ Порт 15100 не слушается" # Сохранение конфигурации echo "💾 Сохранение конфигурации..." cat > /opt/my-network-config.txt << EOF MY Network Service - Конфигурация =============================== Домен: $DOMAIN Email: $EMAIL Порт: 15100 Директория: $PROJECT_DIR Логи: /opt/logs Хранилище: /opt/storage Статус сервиса: systemctl status my-network Логи сервиса: journalctl -u my-network -f Перезапуск: systemctl restart my-network Для защиты сервера запустите: sudo bash secure_service.sh EOF echo "" echo "✅ MY Network сервис установлен!" echo "================================" echo "📍 Конфигурация сохранена в: /opt/my-network-config.txt" echo "🌐 Домен: $DOMAIN" echo "🔌 Порт: 15100" echo "📁 Директория: $PROJECT_DIR" echo "" echo "🔍 Проверка работы:" echo " curl http://localhost:15100/api/my/health" echo " systemctl status my-network" echo "" echo "⚠️ ВАЖНО: Для защиты сервера выполните:" echo " sudo bash secure_service.sh" echo "" echo "📚 Документация: /opt/my-network/my-uploader-bot/MY_NETWORK_README.md"