Как установить Forge на сервер

1. Подготовка выделенного сервера в панели proxify.cloud

  1. Авторизуйтесь в панели управления proxify.cloud.
  2. Перейдите в раздел «Мои услуги» → «Выделенные серверы» и выберите нужный сервер.
  3. Убедитесь, что на сервере установлена Ubuntu 22.04 LTS или 24.04 LTS. При необходимости переустановите ОС через кнопку «Переустановить ОС» в панели управления сервером.
  4. Откройте консоль VNC (кнопка «Консоль VNC») или подключитесь по SSH с вашего компьютера:
    ssh root@<IP_АДРЕС_СЕРВЕРА>
    
    IP-адрес указан в деталях сервера в панели proxify.cloud.
  5. Обновите пакеты и установите базовые утилиты:
    apt update && apt upgrade -y
    apt install -y openjdk-21-jre-headless screen wget curl unzip git
    
    Forge 1.20.1+ требует Java 21. Для версий 1.18–1.20 используйте openjdk-17-jre-headless.

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

Не запускайте сервер от root. Создайте отдельного пользователя:

adduser --disabled-password --gecos "" mcuser
su - mcuser
mkdir -p ~/server/forge
cd ~/server/forge

Все дальнейшие команды выполняйте от имени mcuser в директории ~/server/forge.

3. Определение версии Forge и скачивание установщика

  1. Перейдите на официальный сайт files.minecraftforge.net.
  2. Выберите версию Minecraft (например, 1.20.1) и тип Recommended (стабильная) или Latest (последняя).
  3. Скопируйте ссылку на Installer (файл forge-<version>-installer.jar).

Пример для версии 1.20.1 (Recommended 47.2.0):

wget -O forge-installer.jar "https://maven.minecraftforge.net/net/minecraftforge/forge/1.20.1-47.2.0/forge-1.20.1-47.2.0-installer.jar"

Проверьте, что файл скачался:

ls -lh forge-installer.jar

4. Установка Forge сервера

Запустите установщик в режиме сервера (--installServer). Это создаст необходимые библиотеки, run.sh / run.bat и файл forge-<version>-universal.jar (или server.jar в новых версиях).

java -jar forge-installer.jar --installServer

Результат успешной установки:

The server installed successfully

После установки появится файл run.sh (скрипт запуска для Linux). Сделайте его исполняемым:

chmod +x run.sh

5. Принятие EULA и базовая настройка server.properties

  1. Примите лицензионное соглашение Mojang:
    echo "eula=true" > eula.txt
    
  2. Отредактируйте server.properties под ваши нужды. Минимальные изменения:
    cat > server.properties <<'EOF'
    server-port=25565
    server-ip=0.0.0.0
    motd=Forge Server on proxify.cloud
    max-players=20
    online-mode=true
    enable-command-block=true
    difficulty=normal
    gamemode=survival
    view-distance=10
    simulation-distance=10
    EOF
    
    Если у вас куплен домен и настроен SRV-запись, порт можно оставить 25565. В панели proxify.cloud убедитесь, что порт 25565/TCP открыт в файрволе (раздел «Сеть» → «Файрвол»).

6. Настройка параметров запуска (JVM Arguments)

Откройте run.sh и проверьте/отредактируйте параметры памяти. Для выделенного сервера с 16–32 ГБ RAM рекомендуется выделить 6–10 ГБ под кучу.

Пример содержимого run.sh:

#!/bin/sh
java -Xms6G -Xmx10G \
     -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 \
     -XX:+PerfDisableSharedMem \
     -XX:MaxTenuringThreshold=1 \
     -Dusing.aikars.flags=https://mcflags.emc.gs \
     -Daikars.new.flags=true \
     -jar forge-1.20.1-47.2.0-universal.jar nogui

Замените имя jar-файла на актуальный (посмотрите ls forge*.jar). Флаги выше — оптимизация по Aikar для G1GC.

7. Первый запуск и генерация модов/конфигов

Запустите сервер в screen, чтобы он продолжал работать после отключения SSH:

screen -S forge ./run.sh

Сервер запустится, сгенерирует папки mods, configs, world, defaultconfigs и остановится (если нет модов) или будет работать. Чтобы выйти из screen без остановки сервера: нажмите Ctrl+A, затем D.

Вернуться в консоль сервера:

screen -r forge

Остановить сервер корректно: в консоли screen введите stop и нажмите Enter.

8. Установка модов

  1. Скачайте моды (.jar файлы) строго под версию Forge и Minecraft (например, с CurseForge или Modrinth).
  2. Загрузите их в папку mods на сервере. Через SCP (с вашего ПК):
    scp /путь/к/моду/*.jar mcuser@<IP_СЕРВЕРА>:~/server/forge/mods/
    
    Или через wget прямо на сервере, если есть прямые ссылки.
  3. Убедитесь, что на клиенте установлены те же версии модов.
  4. Перезапустите сервер (stop в консоли -> ./run.sh в screen).

9. Автозапуск через systemd (рекомендуется для выделенных серверов)

Создайте сервис, чтобы сервер запускался при включении питания и перезапускался при краше.

  1. Выйдите из пользователя mcuser (exit) и вернитесь к root.

  2. Создайте файл юнита:

    cat > /etc/systemd/system/mc-forge.service <<'EOF'
    [Unit]
    Description=Minecraft Forge Server
    After=network.target
    
    [Service]
    WorkingDirectory=/home/mcuser/server/forge
    User=mcuser
    Group=mcuser
    Restart=on-failure
    RestartSec=10
    ExecStart=/home/mcuser/server/forge/run.sh
    ExecStop=/bin/sh -c 'screen -S forge -p 0 -X stuff "stop\n"'
    KillMode=none
    Type=forking
    GuessMainPID=no
    TimeoutStartSec=120
    TimeoutStopSec=30
    
    [Install]
    WantedBy=multi-user.target
    EOF
    

    Примечание: Type=forking и GuessMainPID=no используются, так как run.sh запускает java в фоне внутри screen. Если вы уберете screen из run.sh и запускаете java напрямую, используйте Type=simple и уберите ExecStop через screen.

  3. Перезагрузите systemd и включите автозапуск:

    systemctl daemon-reload
    systemctl enable mc-forge.service
    systemctl start mc-forge.service
    
  4. Проверьте статус и логи:

    systemctl status mc-forge.service
    journalctl -u mc-forge.service -f
    

10. Настройка бэкапов (простой скрипт + cron)

Создайте скрипт бэкапа мира и конфигов:

su - mcuser
cat > ~/backup.sh <<'EOF'
#!/bin/bash
DATE=$(date +%F_%H-%M)
SRC="/home/mcuser/server/forge"
DST="/home/mcuser/backups"
mkdir -p "$DST"
tar -czf "$DST/forge_backup_$DATE.tar.gz" -C "$SRC" world mods config defaultconfigs server.properties eula.txt
find "$DST" -name "forge_backup_*.tar.gz" -mtime +7 -delete
EOF
chmod +x ~/backup.sh

Добавьте в crontab (ежедневно в 04:00):

crontab -e
# Добавьте строку:
0 4 * * * /home/mcuser/backup.sh >> /home/mcuser/backup.log 2>&1

11. Подключение к серверу

  1. В клиенте Minecraft установите такую же версию Forge и те же моды.
  2. В меню «Мультиплеер» → «Добавить сервер» укажите:
    • Адрес сервера: IP вашего выделенного сервера proxify.cloud (или домен, если настроен A/AAAA запись).
    • Порт: 25565 (стандартный, если не меняли в server.properties).

Возможные проблемы и решения

1. Ошибка Unsupported class file major version 65 / major version 61

Причина: Несоответствие версии Java и Forge/Minecraft. Решение:

  • Minecraft 1.20.5+ (Forge 48+) → Java 21 (openjdk-21-jre-headless).
  • Minecraft 1.18–1.20.1 (Forge 40–47) → Java 17 (openjdk-17-jre-headless).
  • Minecraft 1.17 → Java 16.
  • Minecraft 1.16.5 и ниже → Java 8. Проверьте версию: java -version. Установите нужную и обновите альтернативы: update-alternatives --config java.

2. Сервер запускается, но сразу падает (Crash) / java.lang.OutOfMemoryError

Причина: Недостаточно выделенной RAM (-Xmx) или утечка памяти в моде. Решение:

  • Увеличьте -Xmx в run.sh (не более 75% физической RAM).
  • Добавьте флаг -XX:+HeapDumpOnOutOfMemoryError для анализа