Files
NeveTimePanel/DAEMON_SETUP.md
arkonsadter d188cec1f0
All checks were successful
continuous-integration/drone/push Build is passing
Added Daemon system and fixed interface
2026-01-16 18:56:21 +06:00

265 lines
9.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Настройка системы демонов 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. Создайте тикет в системе поддержки