Как исправить ошибку «Outdated Server»

Введение

Ошибка «Outdated Server» (Устаревший сервер) появляется у игроков, когда версия клиента Minecraft не совпадает с версией сервера. На выделенном сервере Ubuntu под управлением панели proxify.cloud (Proxmox) это чаще всего означает, что после обновления клиента (или смены профиля в лаунчере) серверный jar-файл не был обновлен до соответствующей сборки. Инструкция ниже покрывает полный цикл: от диагностики версий до обновления через консоль и панель управления.


1. Диагностика версий клиента и сервера

  1. Запустите лаунчер Minecraft (Vanilla, Prism, MultiMC или другой).
  2. Откройте вкладку Installations (Установки) и посмотрите версию профиля, с которым вы пытаетесь зайти (например, 1.21.1 или release 1.20.4).
  3. Зайдите в панель proxify.cloud → выберите ваш узел (Node) → контейнер (CT) или виртуальную машину (VM) с сервером.
  4. Откройте Console (Консоль) в панели Proxmox или подключитесь по SSH:
    ssh root@<IP-адрес-сервера>
    
  5. Перейдите в директорию сервера (стандартный путь на proxify.cloud для контейнеров):
    cd /home/container
    # или, если вы используете кастомный путь:
    cd /opt/minecraft/server
    
  6. Проверьте текущую версию серверного файла. Для Paper/Spigot/Purpur:
    java -jar server.jar --version
    # Пример вывода: This server is running Paper version 1.21.1-123-master @ abcdef1 (2024-08-15T12:00:00Z)
    
    Для Vanilla/Fabric/Forge (если нет флага --version):
    strings server.jar | grep -i "minecraft.version" | head -1
    
  7. Сравните версию из консоли с версией в лаунчере. Если они отличаются (например, сервер 1.21.0, клиент 1.21.1) — переходите к обновлению.

2. Остановка сервера перед обновлением

Никогда не заменяйте jar-файл на работающем сервере — это приведет к повреждению миров и плагинов.

  1. В панели proxify.cloud (Proxmox) выберите контейнер/VM → кнопка Shutdown (Выключить) или Stop (Остановить) в интерфейсе игровой панели (если установлена Pterodactyl/Pelican внутри).
  2. Если управления через игровую панель нет, остановите процесс внутри консоли:
    # Найдите PID java-процесса
    pgrep -f "server.jar"
    # Корректно остановите (SIGTERM), дайте 10-15 секунд на сохранение
    pkill -TERM -f "server.jar"
    sleep 15
    # Если не помогло — принудительно
    pkill -KILL -f "server.jar"
    
  3. Убедитесь, что процесс исчез:
    pgrep -f "server.jar" || echo "Процесс остановлен"
    

3. Резервное копирование (обязательный шаг)

Перед любой манипуляцией с ядром создайте бэкап мира и конфигов.

  1. В панели proxify.cloud → вкладка Backup (Резервные копии) → нажмите Create Backup (Создать резервную копию). Дождитесь завершения.
  2. Альтернативно — вручную через консоль (быстрее для больших миров):
    cd /home/container
    # Создаем архив мира и плагинов, исключая старые бэкапы и логи
    tar -czf "backup_$(date +%F_%H-%M).tar.gz" \
        --exclude="*.tar.gz" \
        --exclude="logs/*" \
        --exclude="cache/*" \
        world/ plugins/ mods/ config/ server.properties spigot.yml paper.yml bukkit.yml 2>/dev/null
    ls -lh backup_*.tar.gz
    
  3. При необходимости скачайте архив по SFTP (FileZilla, WinSCP) на локальный ПК:
    # На локальной машине:
    sftp root@<IP-адрес>:/home/container/backup_*.tar.gz .
    

4. Обновление ядра сервера (Paper / Purpur / Spigot)

Вариант А: Через скачивание последней стабильной сборки (PaperMC API)

Рекомендуемый способ для Paper/Purpur — использование официального API для получения актуального билда.

  1. Определите целевую версию (из шага 1). Допустим, 1.21.1.
  2. Выполните команды в консоли контейнера:
    cd /home/container
    TARGET_VERSION="1.21.1"
    PROJECT="paper"  # или "purpur"
    
    # Получаем номер последнего билда
    LATEST_BUILD=$(curl -s "https://api.papermc.io/v2/projects/${PROJECT}/versions/${TARGET_VERSION}" | jq -r '.builds[-1]')
    
    # Формируем URL и скачиваем
    DOWNLOAD_URL="https://api.papermc.io/v2/projects/${PROJECT}/versions/${TARGET_VERSION}/builds/${LATEST_BUILD}/downloads/${PROJECT}-${TARGET_VERSION}-${LATEST_BUILD}.jar"
    
    echo "Скачиваем ${PROJECT} ${TARGET_VERSION} build ${LATEST_BUILD}..."
    curl -o server.jar.new -L "$DOWNLOAD_URL"
    
    # Проверка целостности (файл не пустой, это jar)
    if [[ -s server.jar.new ]] && file server.jar.new | grep -q "Java archive"; then
        mv server.jar.new server.jar
        echo "Обновление успешно: $(java -jar server.jar --version 2>/dev/null | head -1)"
    else
        echo "Ошибка скачивания, файл поврежден или версия не найдена"
        rm -f server.jar.new
        exit 1
    fi
    
    Требуется установленный jq и curl: apt update && apt install -y jq curl.

Вариант Б: Ручное обновление через SFTP (если нет доступа к консоли или нужен кастомный билд)

  1. Скачайте нужный .jar на ПК с официальных сайтов:
    • Paper: https://papermc.io/downloads/paper
    • Purpur: https://purpurmc.org/downloads
    • Spigot: https://getbukkit.org/download/spigot (требует BuildTools)
    • Vanilla: https://mcversions.net/
  2. В панели proxify.cloud откройте Console → кнопка File Manager (Файловый менеджер) или подключитесь по SFTP (порт 22, логин root, пароль от контейнера).
  3. Перейдите в /home/container (или ваш кастомный путь).
  4. Переименуйте старый файл: server.jarserver.jar.old_$(date +%F).
  5. Загрузите новый файл под именем server.jar.
  6. Выставьте права (обычно не требуется для root, но для чистоты):
    chown container:container /home/container/server.jar 2>/dev/null || true
    chmod 644 /home/container/server.jar
    

Вариант В: Обновление Forge / Fabric / NeoForge (моддинг)

Для модовых серверов обновите установщик (installer), запустите его, чтобы сгенерировать новый server.jar.

  1. Скачайте установщик нужной версии (например, forge-1.21.1-52.0.0-installer.jar).
  2. Загрузите в /home/container.
  3. Запустите установку серверной части:
    cd /home/container
    java -jar forge-*-installer.jar --installServer
    # После завершения появится/обновится forge-*.jar или server.jar (зависит от версии)
    # Убедитесь, что стартовый скрипт указывает на правильный файл (forge-*.jar)
    
  4. Для Fabric/NeoForge аналогично: запустите .jar установщика с флагом server.

5. Проверка совместимости плагинов и модов (важно при мажорных обновлениях)

Если вы переходите, например, с 1.20.x на 1.21.x:

  1. Плагины (Paper/Spigot):
    • Проверьте plugins/ на наличие устаревших jar-файлов.
    • Посетите SpigotMC / Modrinth / Hangar и скачайте версии, поддерживающие новую версию API.
    • Удалите или отключите (добавив .disabled к расширению) плагины, у которых нет обновлений.
  2. Моды (Forge/Fabric):
    • Обновите моды через Modrinth / CurseForge до версий под целевую версию Minecraft + загрузчик.
    • Удалите несовместимые моды (часто вызывают краш при старте).
  3. Конфиги:
    • Новые версии ядра могут вводить новые параметры в paper.yml, spigot.yml, server.properties. Сравните свои конфиги с дефолтными (можно временно переименовать свой, дать серверу сгенерировать новый, затем перенести настройки вручную).

6. Запуск сервера и верификация

  1. В панели proxify.cloud нажмите Start (Запустить) для контейнера/VM, либо запустите стартовый скрипт в консоли:
    cd /home/container
    # Пример для Paper с оптимизацией памяти (настройте -Xms/-Xmx под ваш тариф)
    java -Xms4G -Xmx4G -XX:+UseG1GC -XX:+ParallelRefProcEnabled \
         -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions \
         -XX:+DisableExplicitGC -XX:+AlwaysPreTouch \
         -jar server.jar --nogui
    
  2. Следите за логами в консоли Proxmox или в файле logs/latest.log.
  3. Дождитесь сообщения:
    [Server thread/INFO]: Done (12.345s)! For help, type "help"
    
  4. Зайдите в игру с клиента правильной версии. Ошибка «Outdated Server» должна исчезнуть.

7. Автоматизация обновлений (опционально, для админов)

Чтобы не делать это вручную каждый раз, настройте cron или systemd-таймер для ночной проверки.

  1. Создайте скрипт /home/container/update_paper.sh:
    cat > /home/container/update_paper.sh << 'EOF'
    #!/bin/bash
    cd /home/container
    TARGET_VERSION="1.21.1"  # Меняйте при мажорном апдейте