Как использовать консоль сервера

1. Вход в панель управления proxify.cloud

  1. Откройте браузер и перейдите по адресу: https://panel.proxify.cloud (или используйте прямую ссылку, полученную при заказе услуги).
  2. Введите логин и пароль от аккаунта хостинга.
  3. В списке услуг найдите ваш выделенный сервер (Dedicated Server) с установленным Ubuntu. Обычно он помечен тегом Proxmox VE или Game Server.
  4. Нажмите на название сервера, чтобы открыть карточку управления.

2. Доступ к консоли через веб-интерфейс Proxmox (noVNC / xtermjs)

Это основной способ взаимодействия с Ubuntu, если SSH недоступен или требуется работа с загрузчиком (GRUB), BIOS UEFI, или перезагрузка ядра.

  1. В карточке сервера на панели proxify.cloud нажмите кнопку Console (Консоль) в верхнем меню или в сайдбаре слева.
  2. Выберите тип консоли:
    • noVNC — графическая оболочка (если установлен GUI, редко для MC).
    • xtermjs — текстовая консоль (рекомендуется для Ubuntu Server).
  3. При открывшемся окне нажмите Enter или любую клавишу, чтобы "пробудить" терминал.
  4. Войдите в систему:
    Ubuntu 22.04.4 LTS server-hostname tty1
    
    server-hostname login: root
    Password: ••••••••••••
    
    Пароль root высылается на email при установке ОС или задается вами при переустановке через панель proxify.cloud (кнопка Reinstall OS). Ввод пароля не отображается на экране.

3. SSH-подключение (основной рабочий метод)

Для комфортной работы, копирования логов и использования скриптов используйте SSH.

3.1. Получение IP-адреса

  1. В панели proxify.cloud перейдите во вкладку Network (Сеть) или IP Configuration.
  2. Скопируйте Main IPv4 Address (основной публичный IP).

3.2. Подключение из Windows (PowerShell / Terminal / PuTTY)

ssh root@ВАШ_IP_АДРЕС

При первом подключении подтвердите отпечаток ключа: введите yes и нажмите Enter. Введите пароль root.

3.3. Подключение из Linux / macOS / WSL

ssh root@ВАШ_IP_АДРЕС

3.4. Настройка SSH-ключей (обязательно для безопасности)

  1. На локальном компьютере сгенерируйте ключ (если нет):
    ssh-keygen -t ed25519 -C "minecraft-server-admin"
    
  2. Скопируйте публичный ключ на сервер:
    ssh-copy-id root@ВАШ_IP_АДРЕС
    
  3. Отключите вход по паролю (редактирование на сервере):
    nano /etc/ssh/sshd_config
    
    Найдите и раскомментируйте/измените:
    PermitRootLogin prohibit-password
    PasswordAuthentication no
    PubkeyAuthentication yes
    
  4. Перезапустите SSH:
    systemctl reload sshd
    
    Не закрывайте текущую сессию, пока не проверите новый вход в новом окне терминала.

4. Работа с Minecraft-сервером через systemd (systemctl)

На выделенных серверах proxify.cloud рекомендуется запускать сервер как системный сервис. Это гарантирует автозапуск после перезагрузки хоста (например, после обновлений Proxmox хостера) и корректное логирование в journald.

4.1. Создание юнит-файла

Предположим, файлы сервера лежат в /opt/minecraft/survival.

  1. Создайте файл сервиса:
    nano /etc/systemd/system/minecraft-survival.service
    
  2. Вставьте конфигурацию (подставьте свои пути и версию Java):
    [Unit]
    Description=Minecraft Survival Server
    After=network.target
    Wants=network-online.target
    
    [Service]
    WorkingDirectory=/opt/minecraft/survival
    User=minecraft
    Group=minecraft
    
    # Путь к Java 21 (проверьте: ls /usr/lib/jvm/)
    Environment="JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64"
    Environment="PATH=$JAVA_HOME/bin:/usr/bin:/bin"
    
    # Xms = Xms для предотвращения фрагментации кучи
    ExecStart=/usr/lib/jvm/java-21-openjdk-amd64/bin/java \
      -Xms8G -Xmx8G \
      -XX:+UseG1GC \
      -XX:+ParallelRefProcEnabled \
      -XX:MaxGCPauseMillis=200 \
      -XX:+UnlockExperimentalVMOptions \
      -XX:+DisableExplicitGC \
      -XX:+AlwaysPreTouch \
      -XX:G1NewSizePercent=30 \
      -XX:G1MaxNewSizePercent=40 \
      -XX:G1HeapRegionSize=8M \
      -XX:G1ReservePercent=20 \
      -XX:G1HeapWastePercent=5 \
      -XX:G1MixedGCCountTarget=4 \
      -XX:InitiatingHeapOccupancyPercent=15 \
      -XX:G1MixedGCLiveThresholdPercent=90 \
      -XX:G1RSetUpdatingPauseTimePercent=5 \
      -XX:SurvivorRatio=32 \
      -Dusing.aikars.flags=https://mcflags.emc.gs \
      -Daikars.new.flags=true \
      -jar paper-1.20.6-123.jar nogui
    
    # Перезапуск при краше, но не чаще 5 раз за 10 минут
    Restart=on-failure
    RestartSec=10
    StartLimitInterval=600
    StartLimitBurst=5
    
    # Безопасность
    PrivateTmp=true
    NoNewPrivileges=true
    ProtectSystem=full
    ProtectHome=true
    ReadWritePaths=/opt/minecraft/survival
    
    # Лимиты ресурсов
    LimitNOFILE=100000
    LimitNPROC=100000
    
    [Install]
    WantedBy=multi-user.target
    

4.2. Создание пользователя и прав

useradd -r -m -d /opt/minecraft -s /bin/bash minecraft
chown -R minecraft:minecraft /opt/minecraft/survival

4.3. Управление сервисом

# Перезагрузка демона systemd после создания файла
systemctl daemon-reload

# Включение автозапуска
systemctl enable minecraft-survival

# Запуск
systemctl start minecraft-survival

# Статус (активен ли, PID, память)
systemctl status minecraft-survival

# Остановка (мягкая, отправляет сигнал SIGTERM -> stop в консоль MC)
systemctl stop minecraft-survival

# Перезапуск
systemctl restart minecraft-survival

5. Взаимодействие с консолью сервера (stdin/stdout)

Так как сервер работает в фоне (systemd), прямого ввода команд (save-all, kick, op) через systemctl status невозможно. Используйте один из методов ниже.

5.1. Метод RCON (Рекомендуемый, стандартный)

Включите RCON в server.properties:

enable-rcon=true
rcon.port=25575
rcon.password=СложныйПароль123!
rcon.bind=0.0.0.0

В панели proxify.cloud во вкладке Firewall / Network убедитесь, что порт 25575 открыт (или лучше — доступен только с вашего IP через iptables/ufw).

Клиенты для RCON:

  • mcrcon (CLI, ставится на сервер или локально):
    # Установка на Ubuntu
    apt update && apt install git build-essential -y
    cd /tmp && git clone https://github.com/Tiiffi/mcrcon.git
    cd mcrcon && make && cp mcrcon /usr/local/bin/
    
    # Использование
    mcrcon -H 127.0.0.1 -P 25575 -p СложныйПароль123! "say Сервер перезагрузится через 5 минут"
    mcrcon -H 127.0.0.1 -P 25575 -p СложныйПароль123! "save-all"
    
  • Rcon-cli (Go, кроссплатформенно) или GUI-клиенты (MCRCON, CoreRCON).

5.2. Метод Screen / Tmux (Если запускаете вручную, без systemd)

Не рекомендуется для продакшена на выделенке, но полезно для отладки.

  1. Установите: apt install screen -y.
  2. Запуск сессии от пользователя minecraft:
    su - minecraft
    screen -S mc-survival
    # Внутри screen запустите java -jar ...
    # Отсоединиться: Ctrl+A, затем D
    
  3. Подключиться к консоли:
    screen -r mc-survival
    
  4. Список сессий: screen -ls.

5.3. Метод systemd + systemd-tty-ask (Продвинутый)

Можно подключиться к stdin сервиса через systemd-tty-ask-password-agent, но это сложно и хрупко. Лучше использовать RCON.

6. Чтение логов

6.1. Через journalctl (systemd) — основной источник

# Следить за логами в реальном времени (как tail -f)
journalctl -u minecraft-survival -f

# Последние 200 строк
journalctl -u minecraft-survival -n 200 --no-pager

# Логи за сегодня
journalctl -u minecraft-survival --since today

# Логи конкретного запуска (после перезагрузки)
journalctl -u minecraft-survival -b -1

6.2. Файловые логи сервера (logs/latest.log)

Paper/Spigot пишут логи в папку сервера.

tail -f /opt/minecraft/survival/logs/latest.log

Настройте log4j2.xml для ротации логов, чтобы не забить диск.

7. Резервное копирование через консоль

Скрипт для крона (выполняется от root или minecraft через systemd-run).

Создайте /usr/local/bin/mc-backup.sh:

#!/bin/bash
set -e

SERVER_DIR="/opt/minecraft/survival"
BACKUP_DIR="/opt/backups/minecraft"
DATE=$(date +"%Y-%m-%d_%H-%M")
SERVICE="minecraft-survival"

# 1. Сообщение игрокам
/usr/local/bin/mcrcon -H 127.0.0.1 -P 25575 -p СложныйПароль123! "say §e[Backup] Начинается резервное копирование..."
/usr/local/bin/m