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

Подготовка окружения на выделенном сервере proxify.cloud

  1. Подключитесь к серверу через SSH. В панели proxify.cloud (Proxmox VE) откройте консоль нужного контейнера (CT) или виртуальной машины (VM) с Ubuntu, либо используйте внешний SSH-клиент:

    ssh root@<IP_ВАШЕГО_СЕРВЕРА_PROXIFY>
    
  2. Обновите списки пакетов и установите необходимые зависимости: openjdk-21-jre-headless (Quilt 1.20.5+ требует Java 21), screen для фонового запуска, wget и jq для парсинга JSON:

    apt update && apt upgrade -y
    apt install -y openjdk-21-jre-headless screen wget jq
    
  3. Проверьте версию Java. Должна выводиться сборка 21.x.x:

    java -version
    # Ожидаемый вывод:
    # openjdk version "21.0.x" ...
    
  4. Создайте отдельного пользователя для безопасности (не запускайте сервер от root):

    adduser --disabled-password --gecos "" mcuser
    usermod -aG sudo mcuser
    
  5. Переключитесь на пользователя mcuser и создайте рабочую директорию:

    su - mcuser
    mkdir -p ~/quilt-server
    cd ~/quilt-server
    

Скачивание и установка Quilt Server

  1. Определите нужную версию Minecraft (например, 1.20.6) и загрузчик Quilt. Используйте официальный мета-API Quilt для получения актуальной ссылки на server.jar.

    Выполните команду, подставив версию игры:

    MC_VERSION="1.20.6"
    LOADER_VERSION=$(wget -qO- "https://meta.quiltmc.org/v3/versions/loader" | jq -r '.[0].version')
    INSTALLER_VERSION=$(wget -qO- "https://meta.quiltmc.org/v3/versions/installer" | jq -r '.[0].version')
    
    echo "Loader: ${LOADER_VERSION}"
    echo "Installer: ${INSTALLER_VERSION}"
    
  2. Скачайте установщик Quilt (quilt-installer.jar):

    wget -O quilt-installer.jar \
    "https://maven.quiltmc.org/repository/release/org/quiltmc/quilt-installer/${INSTALLER_VERSION}/quilt-installer-${INSTALLER_VERSION}.jar"
    
  3. Запустите установку серверной части в текущую папку (--install-dir=.):

    java -jar quilt-installer.jar install server ${MC_VERSION} ${LOADER_VERSION} --install-dir=.
    

    Ожидаемый результат: появятся файлы quilt-server-launch.jar, server.jar (vanilla), папки libraries, quilt-server-<version>.json.

  4. Примите EULA. Создайте файл eula.txt:

    echo "eula=true" > eula.txt
    

Настройка параметров запуска и systemd

  1. Создайте скрипт запуска start.sh с оптимальными флагами JVM для выделенного сервера на proxify.cloud (настройте -Xms и -Xmx под объем выделенной RAM, например, 6G из 8G):

    cat > start.sh << 'EOF'
    #!/bin/bash
    # Путь к Java (обычно не нужен, если в PATH)
    JAVA_EXEC="java"
    
    # Память: адаптируйте под тариф proxify.cloud
    HEAP_MIN="2G"
    HEAP_MAX="6G"
    
    # Флаги производительности (G1GC + оптимизации для Minecraft)
    JVM_FLAGS="-Xms${HEAP_MIN} -Xmx${HEAP_MAX} \
    -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"
    
    # Запуск
    exec ${JAVA_EXEC} ${JVM_FLAGS} -jar quilt-server-launch.jar nogui
    EOF
    chmod +x start.sh
    
  2. Протестируйте запуск вручную в screen:

    screen -S quilt
    ./start.sh
    

    Дождитесь строки Done (X.Xs)! For help, type "help". Остановите сервер командой stop. Выйдите из screen: Ctrl+A, затем D.

  3. Настройте автозапуск через systemd (выполняйте от root, выйдите из mcuser: exit):

    cat > /etc/systemd/system/quilt-server.service << 'EOF'
    [Unit]
    Description=Quilt Minecraft Server
    After=network.target
    Wants=network.target
    
    [Service]
    WorkingDirectory=/home/mcuser/quilt-server
    User=mcuser
    Group=mcuser
    ExecStart=/home/mcuser/quilt-server/start.sh
    Restart=on-failure
    RestartSec=10
    KillMode=process
    LimitNOFILE=100000
    StandardOutput=journal
    StandardError=journal
    SyslogIdentifier=quilt-server
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
  4. Включите и запустите сервис:

    systemctl daemon-reload
    systemctl enable quilt-server
    systemctl start quilt-server
    
  5. Проверьте статус и логи:

    systemctl status quilt-server
    journalctl -u quilt-server -f
    

Настройка сервера (server.properties, моды, бэкапы)

  1. Отредактируйте server.properties под ваши нужды:

    nano /home/mcuser/quilt-server/server.properties
    

    Ключевые параметры:

    server-port=25565
    server-ip=0.0.0.0
    max-players=20
    view-distance=10
    simulation-distance=10
    motd=Quilt Server on proxify.cloud
    enforce-whitelist=true
    enable-command-block=true
    sync-chunk-writes=true
    
  2. Установка модов Quilt. Моды кладите в папку mods (создайте, если нет):

    mkdir -p /home/mcuser/quilt-server/mods
    # Пример скачивания мода (замените URL на актуальный с Modrinth/CurseForge)
    # wget -P /home/mcuser/quilt-server/mods "https://cdn.modrinth.com/data/xxx/versions/yyy/fabric-mod-version.jar"
    

    Важно: Убедитесь, что моды под Quilt/Fabric и под версию Minecraft + версию Loader (quilt-loader).

  3. Настройте бэкапы. Простой скрипт backup.sh (кладьте в /home/mcuser/scripts/backup.sh), запускаемый по cron:

    mkdir -p /home/mcuser/scripts /home/mcuser/backups
    cat > /home/mcuser/scripts/backup.sh << 'EOF'
    #!/bin/bash
    DATE=$(date +%F_%H-%M)
    SRC="/home/mcuser/quilt-server"
    DST="/home/mcuser/backups"
    WORLD="world"
    tar -czf "${DST}/quilt_backup_${DATE}.tar.gz" -C "${SRC}" "${WORLD}" server.properties eula.txt mods/
    # Удаляем бэкапы старше 7 дней
    find "${DST}" -name "quilt_backup_*.tar.gz" -mtime +7 -delete
    EOF
    chmod +x /home/mcuser/scripts/backup.sh
    

    Добавьте в crontab -u mcuser -e:

    0 4 * * * /home/mcuser/scripts/backup.sh >> /home/mcuser/scripts/backup.log 2>&1
    

Сетевая настройка и безопасность на proxify.cloud

  1. Настройте файрвол (UFW) на Ubuntu. Откройте только SSH и порт игры:

    # Выполняйте от root
    ufw allow OpenSSH
    ufw allow 25565/tcp comment 'Minecraft Quilt'
    ufw enable
    ufw status verbose
    
  2. В панели proxify.cloud (Proxmox VE) проверьте настройки сети контейнера/VM:

    • Убедитесь, что у контейнера (CT) включен Bridge (vmbr0) и получен публичный IPv4 или настроен проброс портов (NAT), если используется внутренняя сеть.
    • Если используется VM с Cloud-init: проверьте, что порт 25565 не блокируется файрволом хоста (Datacenter -> Firewall).
  3. (Рекомендуется) Настройте защиту от DDoS и проксирование через TCPShield или Cloudflare Spectrum, указав IP сервера proxify.cloud как бэкенд. Это скроет реальный IP и защитит от атак.

Обновление Quilt и модов

  1. Для обновления загрузчика на новую версию Minecraft (например, 1.20.6 -> 1.21):

    • Остановите сервер: systemctl stop quilt-server.
    • Сделайте бэкап папки world и mods.
    • Удалите старые jar-файлы загрузчика (quilt-server-launch.jar, quilt-server-*.json, папку libraries/net/quiltmc).
    • Повторите шаги 6-8 с новой переменной MC_VERSION.
    • Проверьте совместимость модов (часто требуют обновления).
    • Запустите: systemctl start quilt-server.
  2. Автоматизация обновлений модов: используйте modrinth-cli или packwiz для управления модпаками, если сервер сложный.


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

1. Ошибка Unsupported class file major version 65 / java.lang.UnsupportedClassVersionError Причина: Используется Java 17/18 вместо требуемой Java 21 (для MC 1.20.5+). Решение: Убедитесь, что java -version показывает 21. В start.sh укажите полный путь: /usr/lib/jvm/java-21-openjdk-amd64/bin/java. Проверьте update-alternatives --config java.

2. Сервер падает с OutOfMemoryError: Metaspace или Java heap space Причина: Мало RAM выделено в `-