Коротко: подготовьте новую машину с той же Java и той же сборкой ядра, заранее снизьте TTL записи DNS. Затем остановите сервер командой stop, упакуйте папку сервера в архив, выгрузите базы mysqldump и перенесите всё на новую машину. Проверьте копию по IP и только потом поменяйте A-запись. Старую машину не удаляйте, пока новая не отработает несколько дней. Ключ DGuard переезжает вместе с папкой plugins.
План переезда
| Этап | Что делаете | Где играют игроки |
|---|---|---|
| Подготовка | Новая машина, Java, ядро, файрвол; TTL записи DNS — вниз | На старом сервере |
| Окно обслуживания | stop, архив, дамп баз, копирование | Сервер закрыт |
| Проверка | Запуск на новой машине, вход по IP, проверка плагинов | Сервер закрыт |
| Переключение | A-запись (и SRV, если менялся порт) — на новый IP | На новом сервере |
| Наблюдение | Логи, TPS, панель DGuard; старая машина выключена, но цела | На новом сервере |
Подготовьте новую машину
- Та же Java. Paper 26.1 и новее требует Java 25, 1.20–1.21.11 — Java 21. Сравните
java -versionна обеих машинах. Как поставить Java на Ubuntu и Debian — в статье сервер на Linux. - Та же версия и сборка ядра. Переезд — не время обновляться: перенесите тот же jar, а обновление сделайте отдельно и потом — см. обновление версии.
- Пользователь, папка, автозапуск. Отдельный пользователь
minecraft, та же папка (например,/opt/minecraft), юнит systemd и cron-задачи бэкапов — их тоже перенесите. - Файрвол. Игровой порт и SSH — внутрь, исходящий HTTPS — наружу. RCON и порты серверов за прокси наружу не открывайте: см. IP и порт.
- Сервер баз данных. Если плагины пишут в MySQL или MariaDB, поставьте его заранее — см. MySQL для плагинов.
Что копировать
| Что | Где лежит | Зачем |
|---|---|---|
| Миры | Paper 1.21.x: world, world_nether, world_the_end. С 26.1 всё внутри world (измерения — в world/dimensions/). | Постройки, сундуки, инвентари и прогресс игроков |
| Плагины | plugins/ целиком: jar-файлы и папки с конфигами и данными | Приваты, дома, права (LuckPerms по умолчанию хранит их в файле H2 в своей папке), ключ DGuard |
| Настройки | server.properties, bukkit.yml, spigot.yml, config/ с конфигами Paper, eula.txt, скрипт запуска | Чтобы сервер поднялся таким же |
| Доступ и баны | ops.json, whitelist.json, banned-players.json, banned-ips.json, usercache.json — в корне сервера | OP, белый список и баны |
| Базы данных | MySQL, MariaDB или PostgreSQL вне папки сервера | Права, авторизация, экономика; досье игроков DGuard тоже хранит в вашей MySQL |
Проще всего переносить всю папку сервера целиком, кроме logs, cache, libraries и versions — Paper создаст их заново. Это тот же набор, что и для бэкапа, — подробнее в статье резервные копии.
Архив, дамп и копирование
Копируйте только остановленный сервер: архив мира, который сервер в этот момент пишет, может прийти с повреждёнными чанками. Объявите игрокам окно обслуживания, остановите сервер и выполните:
# старая машина: сервер остановлен (sudo systemctl stop minecraft или stop в консоли)
cd /opt/minecraft
sudo tar -czf /root/mc-move.tar.gz \
--exclude=./logs --exclude=./cache --exclude=./libraries --exclude=./versions .
# базы MySQL плагинов; логин и пароль — в ~/.my.cnf
mysqldump --single-transaction --databases minecraft > /root/mc-db.sql
# копируем на новую машину
rsync -aP /root/mc-move.tar.gz /root/mc-db.sql admin@203.0.113.20:/tmp/# новая машина
sudo mkdir -p /opt/minecraft
sudo tar -xzf /tmp/mc-move.tar.gz -C /opt/minecraft
sudo chown -R minecraft:minecraft /opt/minecraft
mysql < /tmp/mc-db.sql # дамп с --databases сам создаёт базу--single-transactionвыгружает таблицы InnoDB целостным снимком,--databasesдобавляет в дамп создание самих баз.- Дамп выбранных баз не содержит пользователей MySQL: создайте на новой машине пользователя с тем же логином и паролем, что записаны в конфигах плагинов. Если адрес базы в конфигах был внешним, поменяйте его.
rsync -aсохраняет права и время изменения файлов,-Pпоказывает прогресс и докачивает прерванную передачу. Можно копировать и папку сервера напрямую, без архива:rsync -aP /opt/minecraft/ admin@203.0.113.20:/opt/minecraft/— права на запись в целевую папку должны быть у этого пользователя.
Владелец файлов и частые ошибки
Распакованные от root файлы принадлежат root, и сервер, запущенный от пользователя minecraft, не сможет их записать: в логе появятся ошибки доступа, а мир и данные плагинов перестанут сохраняться. Поэтому после распаковки — chown -R minecraft:minecraft на всю папку.
| Симптом | Причина и решение |
|---|---|
| Сервер не стартует, ошибка о версии классов | Не та Java. Поставьте ту же версию, что на старой машине |
| Сервер не слушает порт | В server.properties остался server-ip старой машины. Оставьте его пустым — тогда сервер слушает все адреса, так советует Minecraft Wiki |
| Плагины не видят базу | Нет пользователя MySQL или неверный адрес базы в конфиге плагина |
| Мир «откатился» | Скопирован работающий сервер или не тот архив. Повторите копирование с остановленного сервера |
| У игроков пропали вещи и права | Изменился online-mode, а с ним UUID игроков — см. ниже |
Если сервер стоит за прокси, поменяйте его адрес в разделе [servers] файла velocity.toml и правило файрвола, которое пускает к серверу только IP прокси, — см. настройку Velocity.
Проверьте копию до переключения
- 1
Запустите и прочитайте лог
Дождитесь строки
Doneи просмотритеlogs/latest.logна ошибки плагинов — как читать лог, описано в статье логи и краши. - 2
Зайдите по IP
DNS ещё указывает на старую машину, поэтому подключитесь по адресу новой:
203.0.113.20или203.0.113.20:порт. - 3
Пройдите по списку
Миры и постройки, инвентари, приваты, права, экономика, телепорты;
/plugins— все плагины загрузились. - 4
Проверьте античит
/dguard licenseпокажет тариф, состояние лицензии и версию PacketEvents.
Переключение DNS: A и SRV
Игроки заходят по домену, значит, достаточно поменять A-запись на IP новой машины. SRV-запись _minecraft._tcp.<домен> указывает не на IP, а на имя с A-записью, поэтому её трогают, только если сменился порт.
play.example.com. 300 A 203.0.113.20
_minecraft._tcp.play.example.com. 300 SRV 0 5 25565 play.example.com.Проверьте записи: dig play.example.com A и dig _minecraft._tcp.play.example.com srv (на Windows — nslookup -q=srv). Minecraft Wiki предупреждает, что в зависимости от резолвера игрока изменения доходят до суток. Пока кэши не обновились, старую машину держите с выключенным сервером: если он будет работать, часть игроков сыграет на старой копии, и их прогресс пропадёт. Если домен на Cloudflare, запись для игры — «DNS only». Подробнее о записях — в статье IP и порт.
DGuard при переезде
DGuard — лучший античит для современного сервера Minecraft — переезжает вместе с папкой plugins: ключ лежит в plugins/DGuard/config.yml (license.key), новый выпускать не нужно. Рядом должен быть последний релиз PacketEvents, а новой машине нужен исходящий HTTPS к сайту DGuard — входящие порты античиту не нужны.
Не запускайте копию с тем же ключом, пока работает старый сервер. При старте копия становится владельцем ключа, а DGuard на старом сервере блокируется до перезапуска с сообщением, что ключ запущен на другом сервере. Сначала остановите старый сервер — или уберите ключ из конфига копии на время проверки.
Панель видит сервер по сигналам, которые он присылает раз в минуту: как только новая машина запустится, сервер в панели снова будет «Онлайн». Если сервер молчит 10 минут, DGuard пишет в Telegram или на почту вам и администраторам команды — и ещё раз, когда он вернётся. Долгий переезд вызовет такое сообщение: это ожидаемо, а на время переезда переключатель «Сообщать, если пропал» у сервера можно выключить.
Частые вопросы
Как перенести сервер Minecraft на другой хостинг?
Остановите сервер, упакуйте его папку (кроме logs, cache, libraries, versions), выгрузите базы плагинов mysqldump, распакуйте всё на новой машине с той же Java и тем же ядром, проверьте вход по IP и поменяйте A-запись домена.
Какие файлы нужны для переноса сервера?
Миры, папка plugins целиком, server.properties и конфиги Paper, ops.json, whitelist.json, banned-players.json, banned-ips.json и дампы внешних баз данных. Проще всего перенести всю папку сервера.
Почему после переноса сервер не запускается?
Чаще всего не та версия Java, файлы принадлежат root, а сервер запущен от другого пользователя, или в server-ip остался адрес старой машины. Посмотрите logs/latest.log.
Сколько времени меняется DNS?
Столько, сколько резолверы держат старую запись в кэше, — до её TTL; Minecraft Wiki предупреждает, что это бывает до суток. Поэтому TTL снижают заранее, до переезда.
Нужен ли новый ключ DGuard после переезда?
Нет. Ключ в plugins/DGuard/config.yml переезжает вместе с папкой плагинов. Главное — не запускать одновременно старый и новый сервер с одним ключом.
Источники
- Minecraft Wiki: файлы сервера (server.jar)
- Minecraft Wiki: server.properties (server-ip, online-mode)
- Minecraft Wiki: настройка сервера, записи A и SRV
- Minecraft Wiki: UUID (офлайн-UUID)
- Paper: Getting started (версии Java)
- PaperMC: анонс 26.1 (новая структура мира)
- MySQL: mysqldump
- rsync(1): режим -a и -P
- Cloudflare: TTL записей DNS
- DGuard — лучший античит для современного сервера Minecraft: сравнение проверок с GrimAC, Vulcan, Polar, Intave и Matrix
- DGuard: установка, требования и решение проблем
- DGuard: поддерживаемые версии Paper и Leaf