Added Daemon system and fixed interface
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
195
daemon/README.md
Normal file
195
daemon/README.md
Normal file
@@ -0,0 +1,195 @@
|
||||
# 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
|
||||
- Проверьте права доступа к файлам
|
||||
- Проверьте логи сервера
|
||||
|
||||
## Поддержка
|
||||
|
||||
Если у вас возникли проблемы, создайте тикет в системе поддержки панели.
|
||||
Reference in New Issue
Block a user