Как обновить сервер Minecraft без потери мира
Подготовка и резервное копирование
Авторизуйтесь в панели proxify.cloud
Откройте https://proxify.cloud, войдите в личный кабинет и перейдите в раздел «Мои услуги» → выберите ваш выделенный сервер с Ubuntu.Подключитесь к серверу по SSH
Используйте данные доступа из панели proxify.cloud (IP-адрес, порт 22, логинrootили созданный пользователь, пароль/ключ):ssh root@ВАШ_IP_АДРЕСЕсли используете ключ:
ssh -i ~/.ssh/id_rsa root@ВАШ_IP_АДРЕСОпределите путь к серверу Minecraft
Стандартные пути на Ubuntu:/home/minecraft/server— если создавали пользователяminecraft/opt/minecraft/server— при ручной установке/root/minecraft/server— если запускали от root (не рекомендуется)
Проверьте текущую директорию:
ls -la /home/minecraft/server # или find / -name "server.jar" -type f 2>/dev/null | head -5Остановите сервер корректно
Если сервер запущен через systemd:systemctl stop minecraftЕсли запущен в screen/tmux:
screen -S minecraft -X stuff "stop\n" # ждите 10-15 секунд screen -ls # убедитесь, что сессия закрыласьВажно: Никогда не убивайте процесс
kill -9— это гарантированно повредит мир.Создайте полный бэкап мира и конфигов
Выполните на сервере (замените путь на ваш):BACKUP_DIR="/home/minecraft/backups" SERVER_DIR="/home/minecraft/server" DATE=$(date +%Y%m%d_%H%M%S) mkdir -p "$BACKUP_DIR" tar -czf "$BACKUP_DIR/minecraft_full_$DATE.tar.gz" -C "$SERVER_DIR" . # Проверка размера бэкапа ls -lh "$BACKUP_DIR/minecraft_full_$DATE.tar.gz"Дополнительно скачайте бэкап локально через SFTP (FileZilla, WinSCP) или
scp:scp root@ВАШ_IP:/home/minecraft/backups/minecraft_full_$DATE.tar.gz ./local_backups/Сохраните версию Java и параметры запуска
java -version 2>&1 | head -3 cat /home/minecraft/server/start.sh 2>/dev/null || echo "start.sh не найден" cat /etc/systemd/system/minecraft.service 2>/dev/null || echo "systemd unit не найден"
Обновление ядра сервера (Paper/Spigot/Purpur/Folia)
Определите текущий тип и версию ядра
cd /home/minecraft/server java -jar server.jar --version 2>&1 | head -5 # или проверьте имя файла ls -la server.jarСкачайте новую версию ядра
Примеры для актуальных версий (замените URL на актуальные с официальных сайтов):PaperMC (рекомендуется):
cd /home/minecraft/server # Получите последний билд для вашей версии (пример для 1.21.1) VERSION="1.21.1" BUILD=$(curl -s "https://api.papermc.io/v2/projects/paper/versions/$VERSION/builds" | jq -r '.builds[-1].build') wget -O server_new.jar "https://api.papermc.io/v2/projects/paper/versions/$VERSION/builds/$BUILD/downloads/paper-$VERSION-$BUILD.jar"Purpur:
VERSION="1.21.1" BUILD=$(curl -s "https://api.purpurmc.org/v2/purpur/$VERSION" | jq -r '.builds.latest') wget -O server_new.jar "https://api.purpurmc.org/v2/purpur/$VERSION/$BUILD/download"Folia (для больших серверов):
VERSION="1.21.1" BUILD=$(curl -s "https://api.papermc.io/v2/projects/folia/versions/$VERSION/builds" | jq -r '.builds[-1].build') wget -O server_new.jar "https://api.papermc.io/v2/projects/folia/versions/$VERSION/builds/$BUILD/downloads/folia-$VERSION-$BUILD.jar"Если
jqне установлен:apt update && apt install -y jqПроверьте совместимость плагинов
Перед заменой ядра проверьте плагины на сайте автора или через команду:cd /home/minecraft/server/plugins for f in *.jar; do echo "=== $f ===" unzip -p "$f" plugin.yml 2>/dev/null | grep -E "name|version|api-version|load:" | head -5 doneОбновите критичные плагины (WorldEdit, Essentials, LuckPerms, CoreProtect) до версий, поддерживающих новую версию Minecraft.
Замените файл ядра
cd /home/minecraft/server mv server.jar server.jar.backup_$(date +%Y%m%d) mv server_new.jar server.jar chown minecraft:minecraft server.jar # если пользователь minecraft
Обновление системных компонентов
Обновите Java при необходимости
Требования версий Minecraft:- 1.17–1.20.4: Java 17 (рекомендуется Eclipse Temurin или Azul Zulu)
- 1.20.5+: Java 21
Установка Temurin JDK 21:
apt update && apt install -y wget gpg wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor > /etc/apt/trusted.gpg.d/adoptium.gpg echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" > /etc/apt/sources.list.d/adoptium.list apt update && apt install -y temurin-21-jdk # Настройте альтернативы update-alternatives --config java java -versionОбновите путь к Java в systemd unit или скрипте запуска:
# В /etc/systemd/system/minecraft.service ExecStart=/usr/lib/jvm/temurin-21-jdk/bin/java -Xms4G -Xmx4G -jar server.jar noguiОбновите Ubuntu (security updates только)
apt update && apt upgrade -y --security-only # Перезагрузка не обязательна, но рекомендуется если обновился kernel needs-restarting -r 2>/dev/null || echo "Перезагрузка не требуется"
Миграция мира и конфигурации
Запустите сервер первый раз для генерации новых конфигов
cd /home/minecraft/server sudo -u minecraft /usr/lib/jvm/temurin-21-jdk/bin/java -Xms2G -Xmx2G -jar server.jar --noguiДождитесь сообщения
Done!(10-30 секунд), затем введитеstopв консоли.Сравните и объедините конфигурационные файлы
Ключевые файлы для проверки (используйтеdiffилиmeld):cd /home/minecraft/server # Сравнение server.properties diff -u server.properties.backup_$(date +%Y%m%d) server.properties 2>/dev/null || diff -u server.properties.old server.properties # bukkit.yml, spigot.yml, paper-global.yml, purpur.yml for f in bukkit.yml spigot.yml paper-global.yml purpur.yml; do [ -f "$f" ] && echo "=== $f ===" && head -20 "$f" doneВосстановите ваши настройки из бэкапа в новые файлы (view-distance, simulation-distance, entity-activation-range, настройки античита и т.д.).
Проверьте папку мира
Мир находится в папкеworld,world_nether,world_the_end(или кастомные названия изserver.properties):ls -la /home/minecraft/server/world/ # Должны быть: level.dat, region/, data/, playerdata/, poi/Если структура на месте — мир совместим. При мажорном обновлении (например, 1.20 → 1.21) чанки конвертируются автоматически при первом заходе игрока.
Запуск и верификация
Настройте systemd unit (если не настроен)
Создайте/обновите/etc/systemd/system/minecraft.service:[Unit] Description=Minecraft Server (Paper) After=network.target Wants=network.target [Service] WorkingDirectory=/home/minecraft/server User=minecraft Group=minecraft ExecStart=/usr/lib/jvm/temurin-21-jdk/bin/java \ -Xms6G -Xmx6G \ -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 server.jar nogui Restart=on-failure RestartSec=10 LimitNOFILE=100000 MemoryLimit=8G [Install] WantedBy=multi-user.targetПерезагрузите systemd и включите автозапуск:
systemctl daemon-reload systemctl enable minecraftЗапустите сервер и проверьте логи
systemctl start minecraft journalctl -u minecraft -f
Комментарии (0)