Как настроить RCON

Введение

RCON (Remote Console) позволяет управлять сервером Minecraft удалённо: выполнять команды, просматривать логи, перезагружать сервер без доступа к консоли панели управления. На выделенном сервере Ubuntu под управлением панели proxify.cloud (Proxmox) настройка требует действий на уровне ОС (файрвол), конфигурации серверного ядра (Paper/Spigot/Purpur) и проверки подключения.


1. Подготовка окружения на proxify.cloud

1.1. Подключение к серверу через SSH

В панели proxify.cloud перейдите в раздел «Серверы» → выберите ваш выделенный сервер → вкладка «Консоль» или используйте внешний SSH-клиент (Termius, PuTTY, OpenSSH).

ssh root@<IP_ВАШЕГО_СЕРВЕРА>

Если используется ключ: ssh -i ~/.ssh/id_rsa root@<IP>

1.2. Обновление системы и установка утилит

apt update && apt upgrade -y
apt install -y ufw netcat-openbsd jq curl
  • ufw — управление фаерволом Ubuntu.
  • netcat (nc) — для быстрой проверки TCP-порта.
  • jq — парсинг JSON (пригодится для тестов через API).

2. Настройка фаервола (UFW) на Ubuntu

По умолчанию на выделенных серверах proxify.cloud все входящие порты закрыты, кроме SSH (22). Нужно открыть порт RCON (по умолчанию 25575).

2.1. Разрешение порта RCON

ufw allow 25575/tcp comment "Minecraft RCON"

2.2. (Опционально) Ограничение доступа по IP

Если вы подключаетесь только с конкретного IP (например, домашний статический IP или IP панели мониторинга):

ufw allow from 203.0.113.50 to any port 25575 proto tcp comment "RCON Home IP"

Замените 203.0.113.50 на ваш реальный IP.

2.3. Активация и проверка

ufw enable
ufw status numbered

Ожидаемый вывод:

[ 1] 22/tcp      ALLOW IN    Anywhere
[ 2] 25575/tcp   ALLOW IN    Anywhere

3. Конфигурация server.properties

Файл конфигурации находится в директории экземпляра сервера. На proxify.cloud стандартный путь для панелей управления (Pterodactyl, Pelican, самописные) — /var/lib/pterodactyl/volumes/<UUID>/server.properties или /home/container/server.properties внутри контейнера.

3.1. Определение пути

Если вы управляете сервером вручную (systemd unit), путь обычно: /opt/minecraft/server.properties. Если через панель proxify.cloud (Pterodactyl) — зайдите в панель → Сервер → «Файловый менеджер» → server.properties.

3.2. Редактирование параметров

Откройте файл:

nano /path/to/server.properties

Найдите и измените следующие строки:

enable-rcon=true
rcon.port=25575
rcon.password=Str0ngP@ssw0rd_Here
rcon.bind=0.0.0.0
broadcast-rcon-to-ops=true

Пояснения:

  • enable-rcon=true — включает модуль.
  • rcon.port=25575 — порт (совпадает с UFW).
  • rcon.passwordсложный пароль (мин. 16 символов, спецсимволы). Никогда не используйте дефолтные.
  • rcon.bind=0.0.0.0 — слушает на всех интерфейсах (нужно для внешнего подключения). Для безопасности можно поставить внутренний IP (например, 10.0.0.5), если используется туннель.
  • broadcast-rcon-to-ops=true — команды RCON будут видны операторам в чате (аудит).

Сохраните: Ctrl+O, Enter, Ctrl+X.


4. Перезапуск сервера Minecraft

4.1. Через systemd (bare metal)

systemctl restart minecraft-server
# или
systemctl restart minecraft@<instance_name>

4.2. Через панель proxify.cloud (Pterodactyl/Pelican)

  1. Зайдите в панель proxify.cloud.
  2. Выберите сервер → кнопка «Restart» (перезапуск).
  3. Дождитесь статуса «Running».

4.3. Проверка логов на предмет ошибок RCON

journalctl -u minecraft-server -f --since "1 min ago"
# или внутри контейнера панели:
tail -f logs/latest.log | grep -i rcon

Успешный запуск выглядит так:

[Server thread/INFO]: RCON running on 0.0.0.0:25575

5. Проверка работоспособности RCON

5.1. Локальная проверка (с сервера)

Установите rcon-cli (Go-клиент) или используйте netcat для сырого теста.

Вариант А: rcon-cli (рекомендуется)

cd /tmp
wget https://github.com/gorcon/rcon-cli/releases/download/v0.10.3/rcon-cli_0.10.3_linux_amd64.tar.gz
tar -xzf rcon-cli_0.10.3_linux_amd64.tar.gz
chmod +x rcon-cli
./rcon-cli -a 127.0.0.1:25575 -p "Str0ngP@ssw0rd_Here" "list"

Ожидаемый ответ: There are 0/20 players online:

Вариант Б: netcat (сырой протокол)

printf "\x0e\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00Str0ngP@ssw0rd_Here\x00\x00" | nc -w 2 127.0.0.1 25575 | xxd

Сложнее для парсинга, но подтверждает открытость порта.

5.2. Внешняя проверка (с вашего ПК)

Используйте любой RCON-клиент: mcrcon, Rcon.io (веб), CoreRCON (Android/iOS), MCRCON (CLI).

Пример с mcrcon (Windows/Linux/macOS):

mcrcon -H <IP_СЕРВЕРА_PROXIFY> -P 25575 -p "Str0ngP@ssw0rd_Here" "list"

Скачать: https://github.com/Tiiffi/mcrcon/releases

Пример с веб-клиентом rcon.io:

  1. Откройте https://rcon.io
  2. Host: <IP_СЕРВЕРА_PROXIFY>
  3. Port: 25575
  4. Password: Str0ngP@ssw0rd_Here
  5. Command: list → нажмите «Send».

6. Безопасность и лучшие практики

6.1. Смена пароля через переменные окружения (панель proxify.cloud)

В панели proxify.cloud (Pterodactyl) перейдите: Сервер → «Startup» → «Environment Variables». Добавьте:

  • Key: RCON_PASSWORD
  • Value: NewSuperSecretPass123!

В server.properties используйте плейсхолдер (если ядро поддерживает, например, через стартовый скрипт) или генерацию файла при старте. Пример стартового скрипта (start.sh):

#!/bin/bash
sed -i "s/rcon.password=.*/rcon.password=${RCON_PASSWORD}/" server.properties
java -Xms4G -Xmx4G -jar paper.jar nogui

Сделайте исполняемым: chmod +x start.sh. В панели укажите команду запуска: ./start.sh.

6.2. Использование SSH-туннеля вместо открытия порта

Максимально безопасно: не открывать 25575 в UFW, а подключаться через туннель.

На клиенте (ваш ПК):

ssh -L 25575:127.0.0.1:25575 root@<IP_СЕРВЕРА_PROXIFY> -N -f

Теперь в RCON-клиенте указывайте Host: 127.0.0.1, Port: 25575. Трафик пойдёт зашифрованным внутри SSH.

6.3. Fail2Ban для RCON (защита от брутфорса)

apt install -y fail2ban
cat > /etc/fail2ban/jail.d/minecraft-rcon.conf << 'EOF'
[minecraft-rcon]
enabled = true
port = 25575
filter = minecraft-rcon
logpath = /opt/minecraft/logs/latest.log
maxretry = 3
bantime = 3600
findtime = 600
action = iptables-multiport[name=minecraft-rcon, port="25575", protocol=tcp]
EOF

cat > /etc/fail2ban/filter.d/minecraft-rcon.conf << 'EOF'
[Definition]
failregex = ^.*Rcon connection attempt from <HOST> failed: Invalid password.*
ignoreregex =
EOF

systemctl restart fail2ban
fail2ban-client status minecraft-rcon

Путь к логам (logpath) скорректируйте под вашу установку.


7. Автоматизация: бэкап и команды через Cron + RCON

Пример ежедневного бэкапа мира через RCON (save-off → save-all → tar → save-on).

Создайте скрипт /opt/scripts/backup_mc.sh:

#!/bin/bash
set -e
RCON_HOST="127.0.0.1"
RCON_PORT="25575"
RCON_PASS="Str0ngP@ssw0rd_Here"
WORLD_DIR="/opt/minecraft/world"
BACKUP_DIR="/opt/backups/minecraft"
DATE=$(date +%F_%H-%M)

# 1. Сохраняем и блокируем запись
/usr/local/bin/mcrcon -H $RCON_HOST -P $RCON_PORT -p $RCON_PASS "say §eНачинается бэкап, лаги возможны..."
/usr/local/bin/mcrcon -H $RCON_HOST -P $RCON_PORT -p $RCON_PASS "save-off"
/usr/local/bin/mcrcon -H $RCON_HOST -P $RCON_PORT -p $RCON_PASS "save-all"
sleep 5

# 2. Архивируем
mkdir -p $BACKUP_DIR
tar -czf "${BACKUP_DIR}/world_${DATE}.tar.gz" -C $(dirname $WORLD_DIR) $(basename $WORLD_DIR)

# 3. Разблокируем
/usr/local/bin/mcrcon -H $RCON_HOST -P $RCON_PORT -p $