All checks were successful
continuous-integration/drone/push Build is passing
196 lines
6.2 KiB
Markdown
196 lines
6.2 KiB
Markdown
# MC Panel Daemon
|
||
|
||
Удаленный демон для управления серверами Minecraft. Устанавливается на отдельные физические серверы и подключается к основной панели управления.
|
||
|
||
## Установка
|
||
|
||
### Windows
|
||
|
||
1. Установите Python 3.8 или выше
|
||
2. Скопируйте папку `daemon` на удаленный сервер
|
||
3. Откройте командную строку в папке daemon
|
||
4. Запустите установку зависимостей:
|
||
```
|
||
install.bat
|
||
```
|
||
|
||
### Linux
|
||
|
||
1. Установите Python 3.8 или выше
|
||
2. Скопируйте папку `daemon` на удаленный сервер
|
||
3. Установите зависимости:
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
## Настройка
|
||
|
||
1. Скопируйте `.env.example` в `.env`:
|
||
```
|
||
copy .env.example .env
|
||
```
|
||
|
||
2. Отредактируйте `.env` файл:
|
||
```env
|
||
DAEMON_ID=daemon-1
|
||
DAEMON_NAME=Main Server
|
||
DAEMON_PORT=24444
|
||
DAEMON_KEY=your-secret-key-here
|
||
SERVERS_DIR=./servers
|
||
```
|
||
|
||
- `DAEMON_ID` - уникальный ID демона
|
||
- `DAEMON_NAME` - отображаемое имя демона
|
||
- `DAEMON_PORT` - порт для API (по умолчанию 24444)
|
||
- `DAEMON_KEY` - секретный ключ для аутентификации
|
||
- `SERVERS_DIR` - директория для серверов
|
||
|
||
3. Создайте секретный ключ:
|
||
```python
|
||
import secrets
|
||
print(secrets.token_urlsafe(32))
|
||
```
|
||
|
||
## Запуск
|
||
|
||
### Windows
|
||
```
|
||
start.bat
|
||
```
|
||
|
||
### Linux
|
||
```bash
|
||
python main.py
|
||
```
|
||
|
||
### Как сервис (Linux)
|
||
|
||
Создайте файл `/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
|
||
```
|
||
|
||
Запустите сервис:
|
||
```bash
|
||
sudo systemctl enable mcpanel-daemon
|
||
sudo systemctl start mcpanel-daemon
|
||
sudo systemctl status mcpanel-daemon
|
||
```
|
||
|
||
## Подключение к панели
|
||
|
||
1. Откройте основную панель управления
|
||
2. Перейдите в раздел "Демоны"
|
||
3. Нажмите "Добавить демон"
|
||
4. Заполните данные:
|
||
- **Название**: Main Server
|
||
- **IP адрес**: IP адрес сервера с демоном
|
||
- **Порт**: 24444 (или ваш порт)
|
||
- **Ключ демона**: ваш DAEMON_KEY из .env
|
||
5. Нажмите "Добавить"
|
||
|
||
## 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` - Статистика сервера
|
||
|
||
## Безопасность
|
||
|
||
1. **Используйте сильный ключ** - генерируйте случайный ключ длиной минимум 32 символа
|
||
2. **Настройте файрвол** - разрешите доступ к порту демона только с IP основной панели
|
||
3. **Используйте HTTPS** - в продакшене используйте reverse proxy (nginx) с SSL
|
||
4. **Регулярно обновляйте** - следите за обновлениями и устанавливайте их
|
||
|
||
## Пример конфигурации 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;
|
||
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 для сервера
|
||
|
||
```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
|
||
- Проверьте права доступа к файлам
|
||
- Проверьте логи сервера
|
||
|
||
## Поддержка
|
||
|
||
Если у вас возникли проблемы, создайте тикет в системе поддержки панели.
|