All checks were successful
continuous-integration/drone/push Build is passing
6.2 KiB
6.2 KiB
MC Panel Daemon
Удаленный демон для управления серверами Minecraft. Устанавливается на отдельные физические серверы и подключается к основной панели управления.
Установка
Windows
- Установите Python 3.8 или выше
- Скопируйте папку
daemonна удаленный сервер - Откройте командную строку в папке daemon
- Запустите установку зависимостей:
install.bat
Linux
- Установите Python 3.8 или выше
- Скопируйте папку
daemonна удаленный сервер - Установите зависимости:
pip install -r requirements.txt
Настройка
-
Скопируйте
.env.exampleв.env:copy .env.example .env -
Отредактируйте
.envфайл:DAEMON_ID=daemon-1 DAEMON_NAME=Main Server DAEMON_PORT=24444 DAEMON_KEY=your-secret-key-here SERVERS_DIR=./serversDAEMON_ID- уникальный ID демонаDAEMON_NAME- отображаемое имя демонаDAEMON_PORT- порт для API (по умолчанию 24444)DAEMON_KEY- секретный ключ для аутентификацииSERVERS_DIR- директория для серверов
-
Создайте секретный ключ:
import secrets print(secrets.token_urlsafe(32))
Запуск
Windows
start.bat
Linux
python main.py
Как сервис (Linux)
Создайте файл /etc/systemd/system/mcpanel-daemon.service:
[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
Запустите сервис:
sudo systemctl enable mcpanel-daemon
sudo systemctl start mcpanel-daemon
sudo systemctl status mcpanel-daemon
Подключение к панели
- Откройте основную панель управления
- Перейдите в раздел "Демоны"
- Нажмите "Добавить демон"
- Заполните данные:
- Название: Main Server
- IP адрес: IP адрес сервера с демоном
- Порт: 24444 (или ваш порт)
- Ключ демона: ваш DAEMON_KEY из .env
- Нажмите "Добавить"
API Endpoints
Демон предоставляет следующие API endpoints:
GET /- Информация о демонеGET /api/status- Статус демона и системыGET /api/servers- Список серверовPOST /api/servers/{name}/start- Запустить серверPOST /api/servers/{name}/stop- Остановить серверPOST /api/servers/{name}/command- Отправить командуGET /api/servers/{name}/stats- Статистика сервера
Безопасность
- Используйте сильный ключ - генерируйте случайный ключ длиной минимум 32 символа
- Настройте файрвол - разрешите доступ к порту демона только с IP основной панели
- Используйте HTTPS - в продакшене используйте reverse proxy (nginx) с SSL
- Регулярно обновляйте - следите за обновлениями и устанавливайте их
Пример конфигурации nginx (с SSL)
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;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Структура директорий
daemon/
├── main.py # Основной файл демона
├── requirements.txt # Зависимости Python
├── .env # Конфигурация (создайте из .env.example)
├── .env.example # Пример конфигурации
├── install.bat # Скрипт установки (Windows)
├── start.bat # Скрипт запуска (Windows)
├── README.md # Эта документация
└── servers/ # Директория с серверами
├── server1/
│ ├── config.json
│ └── ...
└── server2/
├── config.json
└── ...
Формат config.json для сервера
{
"name": "server1",
"displayName": "My Minecraft Server",
"startCommand": "java -Xmx2G -Xms1G -jar server.jar nogui"
}
Troubleshooting
Демон не запускается
- Проверьте, что Python установлен:
python --version - Проверьте, что все зависимости установлены:
pip list - Проверьте логи в консоли
Панель не может подключиться к демону
- Проверьте, что демон запущен
- Проверьте файрвол и порты
- Проверьте, что ключ в панели совпадает с DAEMON_KEY
- Проверьте IP адрес и порт
Сервер не запускается
- Проверьте startCommand в config.json
- Проверьте права доступа к файлам
- Проверьте логи сервера
Поддержка
Если у вас возникли проблемы, создайте тикет в системе поддержки панели.