Как запустить сервер Minecraft на VPS: пошаговая инструкция
Свой сервер Minecraft на VPS работает круглосуточно, не зависит от вашего компьютера и роутера и даёт полный контроль: любые плагины, моды, настройки и белый список игроков.
По сравнению с домашним сервером у VPS постоянный внешний IP, стабильный канал и не нужно пробрасывать порты на роутере. По сравнению с готовыми игровыми хостингами — root-доступ, никаких ограничений панели и возможность держать на том же сервере сайт, бота или Discord-бота.
В инструкции ставим Java Edition на ядре Paper — это самая популярная оптимизированная версия сервера с поддержкой плагинов. Команды для Ubuntu 22.04, 24.04 и 26.04.
Какой VPS нужен для сервера Minecraft
Minecraft требователен к памяти и к скорости одного ядра процессора: основной игровой цикл работает в одном потоке. Ориентиры для сервера на Paper:
- До 5 игроков, обычный мир и несколько плагинов — VPS с 4 ГБ RAM, серверу выделяем 3 ГБ.
- 10–20 игроков с плагинами — 8 ГБ RAM, серверу около 6,5 ГБ.
- Большие сборки модов (Forge, NeoForge, Fabric) — от 10–16 ГБ RAM.
Всегда оставляйте 1–1,5 ГБ системе: если отдать Java всю память, Linux начнёт убивать процесс сервера. Разработчики Paper рекомендуют выделять серверу 6–10 ГБ для лучшей работы сборщика мусора, но небольшой сервер для друзей нормально работает и на меньшем объёме.
Что ещё важно:
- Процессор с высокой частотой. Два быстрых ядра полезнее восьми медленных.
- NVMe-диск. Мир постоянно подгружается с диска, медленный диск даёт лаги при исследовании новых территорий.
- Локация рядом с игроками. Чем ближе сервер, тем ниже пинг.
- Подготовленный сервер: пользователь с sudo, вход по SSH-ключу, firewall. Если сервер новый, сначала пройдите базовую настройку VPS.
Актуальные версии Minecraft Java Edition (26.x) требуют Java 25. Со старой Java сервер не запустится.
Шаг 1. Установите Java 25
Разработчики Paper рекомендуют Amazon Corretto — бесплатную сборку OpenJDK с собственным репозиторием для Ubuntu и Debian. Установите нужные утилиты:
sudo apt update
sudo apt install -y ca-certificates apt-transport-https gnupg wget
Подключите репозиторий Corretto:
wget -O - https://apt.corretto.aws/corretto.key | sudo gpg --dearmor -o /usr/share/keyrings/corretto-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/corretto-keyring.gpg] https://apt.corretto.aws stable main" | sudo tee /etc/apt/sources.list.d/corretto.list
Установите Java 25:
sudo apt update
sudo apt install -y java-25-amazon-corretto-jdk libxi6 libxtst6 libxrender1
Проверьте версию:
java -version
Вывод должен начинаться с openjdk version "25. Не ставьте пакеты с -headless в названии: разработчики Paper предупреждают, что в них не хватает нужных серверу библиотек.
Шаг 2. Создайте пользователя и скачайте Paper
Сервер запускаем от отдельного пользователя без прав администратора. Если через уязвимый плагин взломают сервер Minecraft, злоумышленник не получит доступ ко всей системе.
sudo useradd -r -m -d /opt/minecraft -s /bin/bash minecraft
sudo -u minecraft mkdir -p /opt/minecraft/server /opt/minecraft/backups
Откройте страницу загрузок papermc.io/downloads/paper, выберите нужную версию Minecraft и скопируйте ссылку на последнюю сборку (правой кнопкой по кнопке загрузки → «Копировать адрес ссылки»). Скачайте файл на сервер:
cd /opt/minecraft/server
sudo -u minecraft wget -O paper.jar "ССЫЛКА_НА_СБОРКУ"
Версия сервера должна совпадать с версией клиента у игроков. Если друзья играют на определённой версии, скачайте Paper именно для неё.
Нужен «чистый» сервер без плагинов? Официальный server.jar лежит на странице minecraft.net/download/server. Остальные шаги те же, только вместо paper.jar будет server.jar.
Шаг 3. Первый запуск и настройка server.properties
Запустите сервер один раз, чтобы он создал файлы настроек:
sudo -u minecraft java -Xms2G -Xmx2G -jar paper.jar --nogui
Сервер сразу остановится и попросит принять лицензионное соглашение Minecraft (EULA). Примите его:
sudo -u minecraft sed -i 's/eula=false/eula=true/' eula.txt
Создайте пароль для RCON — удалённой консоли, через которую вы будете управлять сервером. Сохраните пароль, он понадобится дальше:
openssl rand -hex 16
Откройте настройки сервера:
sudo -u minecraft nano server.properties
Найдите и измените эти строки:
motd=Мой сервер Minecraft
max-players=20
online-mode=true
white-list=true
enforce-whitelist=true
view-distance=8
simulation-distance=6
enable-rcon=true
rcon.port=25575
rcon.password=ВАШ_ПАРОЛЬ_RCON
Что они делают:
online-mode=true— проверка лицензии Mojang. Сfalseлюбой может зайти под чужим ником, в том числе под ником администратора.white-listиenforce-whitelist— зайти смогут только игроки из белого списка. Для сервера с друзьями это лучшая защита от случайных гостей и ботов. Для публичного сервера поставьтеfalse.view-distanceиsimulation-distance— дальность прорисовки и обработки мира в чанках. Это главные настройки, влияющие на нагрузку.enable-rcon— удалённая консоль. Порт RCON мы не будем открывать в firewall, подключаться к нему можно только с самого сервера.
Шаг 4. Откройте порт в firewall
Minecraft Java Edition использует порт 25565/TCP. Откройте только его:
sudo ufw allow 25565/tcp
sudo ufw status
Порт RCON (25575) не открывайте. Через RCON можно выполнить любую команду на сервере, поэтому доступ к нему должен быть только локальный.
Если хотите пускать игроков с телефонов и консолей (Bedrock Edition) через плагин Geyser, дополнительно откройте 19132/udp.
Шаг 5. Настройте автозапуск и консоль
Скрипт запуска. Создайте файл с оптимизированными параметрами Java (флаги Aikar, их рекомендуют разработчики Paper):
sudo -u minecraft nano /opt/minecraft/server/start.sh
Вставьте две строки. Замените 3G на объём памяти для сервера по таблице выше:
#!/bin/bash
exec java -Xms3G -Xmx3G -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 paper.jar --nogui
Сделайте скрипт исполняемым:
sudo chmod +x /opt/minecraft/server/start.sh
Служба systemd. Она запускает сервер в фоне, перезапускает после сбоя и включает после перезагрузки VPS:
sudo nano /etc/systemd/system/minecraft.service
Вставьте содержимое:
[Unit]
Description=Minecraft Server
After=network-online.target
Wants=network-online.target
[Service]
User=minecraft
WorkingDirectory=/opt/minecraft/server
ExecStart=/opt/minecraft/server/start.sh
Restart=on-failure
RestartSec=10
SuccessExitStatus=0 1 143
TimeoutStopSec=120
[Install]
WantedBy=multi-user.target
TimeoutStopSec=120 даёт серверу две минуты, чтобы сохранить мир при остановке. Включите и запустите службу:
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo systemctl status minecraft
Логи сервера в реальном времени: sudo journalctl -u minecraft -f.
Консоль через RCON. Сервер работает в фоне, поэтому команды отправляем через утилиту mcrcon. Соберите её из исходников:
sudo apt install -y git build-essential
git clone https://github.com/Tiiffi/mcrcon.git /tmp/mcrcon
cd /tmp/mcrcon && make && sudo make install
Подключитесь к консоли сервера:
mcrcon -p ВАШ_ПАРОЛЬ_RCON -t
Добавьте себя в белый список и выдайте права оператора:
whitelist add ВАШ_НИК
op ВАШ_НИК
Выйти из консоли можно командой Q или сочетанием Ctrl+D. Теперь подключайтесь к серверу из Minecraft по IP вашего VPS.
Шаг 6. Настройте автоматические бэкапы мира
Мир могут испортить гриферы, неудачный плагин или обновление. Бэкап позволяет откатиться за минуты. Скрипт ниже временно отключает автосохранение, записывает мир на диск, архивирует папку сервера и хранит копии 7 дней.
Создайте скрипт:
sudo -u minecraft nano /opt/minecraft/backup.sh
Вставьте содержимое:
#!/bin/bash
export MCRCON_PASS="ВАШ_ПАРОЛЬ_RCON"
mcrcon "save-off" "save-all flush"
tar -czf /opt/minecraft/backups/server-$(date +%F-%H%M).tar.gz -C /opt/minecraft server
mcrcon "save-on"
find /opt/minecraft/backups -name 'server-*.tar.gz' -mtime +7 -delete
Ограничьте доступ к скрипту, ведь в нём пароль, и сделайте его исполняемым:
sudo chmod 700 /opt/minecraft/backup.sh
Добавьте ежедневный запуск в 4:00 в cron пользователя minecraft:
sudo crontab -u minecraft -e
0 4 * * * /opt/minecraft/backup.sh
Проверьте скрипт вручную: sudo -u minecraft /opt/minecraft/backup.sh, затем ls -lh /opt/minecraft/backups. Копируйте бэкапы и за пределы сервера: в S3-хранилище или на другой VPS.
Как убрать лаги на сервере
Главный показатель работы сервера — TPS (ticks per second). Норма — 20. Если TPS падает ниже 18, игроки замечают лаги.
- Уменьшите дальность прорисовки.
view-distance=8иsimulation-distance=6в server.properties сильно снижают нагрузку. Для слабого VPS подойдут6и4. - Сгенерируйте мир заранее. Генерация новых чанков — самая тяжёлая операция. Плагин Chunky создаёт мир заранее, пока никто не играет. Команды в консоли:
chunky radius 3000иchunky start. - Ограничьте размер мира. Команда
worldborder set 6000не даст игрокам улетать далеко и бесконечно генерировать новые территории. - Найдите причину лагов. Плагин spark показывает, что грузит сервер: команда
spark tpsвыводит TPS и нагрузку,spark profiler— отчёт по плагинам и механизмам. - Проверьте память. Если сервер падает или его убивает система, уменьшите
-Xmxв start.sh или перейдите на тариф с большим объёмом RAM.
Плагины скачивайте с проверенных площадок: Hangar от разработчиков Paper, Modrinth или SpigotMC. Файл .jar плагина кладётся в папку /opt/minecraft/server/plugins, после чего сервер нужно перезапустить.
Защита сервера Minecraft от DDoS и ботов
Игровые серверы атакуют чаще сайтов: обиженный игрок или конкурирующий сервер может заказать DDoS за несколько долларов. Для Minecraft есть два типа угроз.
Бот-атаки. Сотни ботов заходят на сервер одновременно, спамят в чат и перегружают его. Защита:
online-mode=true— боты без лицензии не зайдут.- Белый список для приватного сервера.
- Антибот-плагины для публичных серверов: они проверяют новых игроков и ограничивают число подключений с одного IP.
Сетевые DDoS-атаки. Трафик забивает канал сервера, и игроков выкидывает. Плагины и firewall внутри VPS здесь не помогают: канал забит до того, как трафик дойдёт до сервера. Защита нужна снаружи:
- Прокси для Minecraft. Специализированные сервисы (например, TCPShield) скрывают реальный IP сервера и фильтруют атаки. Бесплатный Cloudflare для Minecraft не подходит: он проксирует только сайты. Для игр у Cloudflare есть платный Spectrum.
Не публикуйте реальный IP сервера, если он скрыт за прокси. Подробнее о защите — в статье как защитить VPS от DDoS-атак.
Частые ошибки
UnsupportedClassVersionErrorпри запуске. Установлена старая Java. Для Minecraft 26.x нужна Java 25, проверьте:java -version.Failed to bind to port. Сервер уже запущен, например вручную и как служба одновременно. Оставьте только службу systemd.- «Connection timed out» у игроков. Порт 25565 закрыт. Проверьте
sudo ufw statusи что сервер запущен:sudo systemctl status minecraft. - «You are not white-listed on this server». Игрока нет в белом списке. Добавьте его через RCON:
whitelist add НИК. - Сервер внезапно выключается, в логах
Killed. Linux убил процесс из-за нехватки памяти. Уменьшите-Xmxв start.sh, оставив системе 1–1,5 ГБ. - «Outdated server» или «Outdated client». Версия сервера не совпадает с версией игры у игрока. Скачайте Paper для нужной версии.
Чек-лист
Частые вопросы
Сколько игроков выдержит сервер? Зависит от плагинов и активности, а не только от памяти. На VPS с 4 ГБ RAM комфортно играют 5–10 человек, с 8 ГБ — 20–40 на Paper.
Можно ли поставить моды вместо плагинов? Да, но вместо Paper нужен сервер Fabric, Forge или NeoForge. Моды должны быть одинаковыми у сервера и у всех игроков. Для больших сборок нужно больше памяти.
Как пустить игроков с телефонов и консолей? Установите плагины Geyser и Floodgate: они позволяют игрокам Bedrock Edition заходить на Java-сервер. Откройте в firewall порт 19132/udp.
Как обновить сервер до новой версии? Сделайте бэкап, остановите сервер (sudo systemctl stop minecraft), замените paper.jar новой сборкой и запустите снова. Перед обновлением проверьте, что ваши плагины поддерживают новую версию.
Как подключаться по домену вместо IP? Создайте A-запись, например mc.example.com, с IP сервера. Игроки будут вводить домен вместо цифр