All checks were successful
continuous-integration/drone/push Build is passing
265 lines
9.0 KiB
Markdown
265 lines
9.0 KiB
Markdown
# Настройка системы демонов 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. Создайте тикет в системе поддержки
|