# Настройка системы демонов MC Panel ## Что такое демоны? Демоны (Daemons) - это удаленные серверы, на которых можно запускать Minecraft серверы. Система демонов позволяет: - Распределять серверы по разным физическим машинам - Масштабировать инфраструктуру - Управлять серверами на разных локациях из одной панели - Балансировать нагрузку между серверами ## Быстрый старт ### 1. Установка демона на удаленный сервер #### Windows: ```bash # 1. Скопируйте папку daemon на удаленный сервер # 2. Откройте командную строку в папке daemon # 3. Установите зависимости install.bat # 4. Настройте .env файл copy .env.example .env notepad .env # 5. Запустите демон start.bat ``` #### Linux: ```bash # 1. Скопируйте папку daemon на удаленный сервер # 2. Установите зависимости cd daemon pip install -r requirements.txt # 3. Настройте .env файл cp .env.example .env nano .env # 4. Запустите демон python main.py ``` ### 2. Настройка .env файла демона ```env # Уникальный ID демона DAEMON_ID=daemon-1 # Отображаемое имя DAEMON_NAME=Main Server # Порт для API DAEMON_PORT=24444 # Секретный ключ (сгенерируйте случайный) DAEMON_KEY=your-secret-key-here # Директория для серверов SERVERS_DIR=./servers ``` **Важно:** Сгенерируйте надежный ключ: ```python import secrets print(secrets.token_urlsafe(32)) ``` ### 3. Подключение демона к панели 1. Откройте основную панель управления 2. Войдите как владелец (owner) или администратор (admin) 3. В боковом меню нажмите "Демоны" (иконка сервера) 4. Нажмите "Добавить демон" 5. Заполните форму: - **Название**: Main Server (или любое другое) - **IP адрес**: IP адрес сервера с демоном - **Порт**: 24444 (или ваш порт из .env) - **Ключ демона**: ваш DAEMON_KEY из .env - **Примечания**: дополнительная информация (необязательно) 6. Нажмите "Добавить" ### 4. Проверка подключения После добавления демон должен отображаться со статусом "Онлайн" (зеленый индикатор). Вы увидите: - Статус демона (онлайн/оффлайн) - Использование CPU, ОЗУ и диска - Количество серверов на демоне ## Архитектура ``` ┌─────────────────┐ │ Основная панель │ (порт 8000) │ (Frontend + │ │ Backend) │ └────────┬─────────┘ │ │ HTTP API │ ┌────┴────┬────────┬────────┐ │ │ │ │ ┌───▼───┐ ┌──▼───┐ ┌──▼───┐ ┌──▼───┐ │Daemon1│ │Daemon2│ │Daemon3│ │... │ │(24444)│ │(24444)│ │(24444)│ │ │ └───┬───┘ └──┬───┘ └──┬───┘ └──────┘ │ │ │ ┌───▼───┐ ┌──▼───┐ ┌──▼───┐ │Server1│ │Server2│ │Server3│ │Server2│ │Server3│ │Server4│ └───────┘ └──────┘ └──────┘ ``` ## Безопасность ### 1. Файрвол Настройте файрвол, чтобы разрешить доступ к порту демона только с IP основной панели: #### Windows (PowerShell): ```powershell New-NetFirewallRule -DisplayName "MC Panel Daemon" -Direction Inbound -LocalPort 24444 -Protocol TCP -Action Allow -RemoteAddress "IP_ПАНЕЛИ" ``` #### Linux (ufw): ```bash sudo ufw allow from IP_ПАНЕЛИ to any port 24444 ``` #### Linux (iptables): ```bash sudo iptables -A INPUT -p tcp -s IP_ПАНЕЛИ --dport 24444 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 24444 -j DROP ``` ### 2. HTTPS (рекомендуется для продакшена) Используйте reverse proxy (nginx) с SSL сертификатом: ```nginx server { listen 443 ssl http2; server_name daemon.example.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://127.0.0.1:24444; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` ### 3. Сильные ключи - Используйте случайные ключи длиной минимум 32 символа - Не используйте одинаковые ключи для разных демонов - Храните ключи в безопасности ## Запуск как сервис ### Linux (systemd) 1. Создайте файл `/etc/systemd/system/mcpanel-daemon.service`: ```ini [Unit] Description=MC Panel Daemon After=network.target [Service] Type=simple User=mcpanel WorkingDirectory=/path/to/daemon ExecStart=/usr/bin/python3 /path/to/daemon/main.py Restart=always RestartSec=10 [Install] WantedBy=multi-user.target ``` 2. Запустите сервис: ```bash sudo systemctl enable mcpanel-daemon sudo systemctl start mcpanel-daemon sudo systemctl status mcpanel-daemon ``` ### Windows (NSSM) 1. Скачайте NSSM: https://nssm.cc/download 2. Установите сервис: ```cmd nssm install MCPanelDaemon "C:\Python\python.exe" "C:\path\to\daemon\main.py" nssm set MCPanelDaemon AppDirectory "C:\path\to\daemon" nssm start MCPanelDaemon ``` ## Управление серверами на демонах После подключения демона вы можете: 1. **Создавать серверы** - при создании сервера можно будет выбрать демон 2. **Просматривать статистику** - CPU, ОЗУ, диск каждого демона 3. **Управлять серверами** - запуск, остановка, консоль, файлы 4. **Мониторить состояние** - статус демонов обновляется автоматически ## Troubleshooting ### Демон показывает статус "Оффлайн" 1. Проверьте, что демон запущен на удаленном сервере 2. Проверьте файрвол и порты 3. Проверьте, что ключ в панели совпадает с DAEMON_KEY 4. Проверьте IP адрес и порт 5. Проверьте логи демона ### Ошибка "Connection error" - Проверьте сетевое подключение между панелью и демоном - Проверьте, что порт не заблокирован файрволом - Попробуйте подключиться вручную: `curl http://IP:24444/api/status` ### Ошибка "Invalid daemon key" - Проверьте, что ключ в панели точно совпадает с DAEMON_KEY в .env - Убедитесь, что нет лишних пробелов или символов - Перезапустите демон после изменения .env ## Мониторинг Демоны автоматически отправляют информацию о: - Использовании CPU - Использовании ОЗУ - Использовании диска - Количестве серверов - Количестве запущенных серверов Эта информация обновляется каждые 10 секунд в интерфейсе панели. ## Масштабирование Вы можете добавить неограниченное количество демонов: 1. Установите демон на новый сервер 2. Используйте уникальный DAEMON_ID для каждого демона 3. Добавьте демон в панель 4. Распределяйте серверы между демонами ## Поддержка Если у вас возникли проблемы: 1. Проверьте логи демона 2. Проверьте логи основной панели 3. Создайте тикет в системе поддержки