Коротко: поставьте Java (25 для Paper 26.x, 21 для 1.21.x), создайте пользователя minecraft, положите Paper в /opt/minecraft, запустите его один раз и примите EULA. Дальше держите консоль в tmux, а автозапуск поручите systemd — так сервер переживёт перезагрузку машины и выключится через stop, без потери несохранённого мира. Последний шаг — открыть игровой порт в файрволе.
Что понадобится
- VPS или выделенный сервер с Ubuntu или Debian и доступ по SSH с правами
sudo. Как выбрать машину — в статье хостинг или VPS. - Свободный TCP-порт для игры — по умолчанию 25565 — и порт SSH.
- Понимание, сколько памяти отдать серверу: Paper советует оставлять системе запас около 1–1,5 ГБ, подробнее — сколько памяти нужно.
Шаг 1. Система и отдельный пользователь
Обновите пакеты и заведите системного пользователя под сервер. Сервер, запущенный от root, получает права на всю машину — а вместе с ним и каждый плагин. Отдельный пользователь ограничивает ущерб, если плагин окажется вредоносным или уязвимым.
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y tmux curl jq
sudo adduser --system --group --home /opt/minecraft minecraftШаг 2. Java
Документация Paper ставит Java из репозитория Amazon Corretto. Для Paper 26.1 и новее нужна Java 25, для 1.20–1.21.11 — Java 21. Пакеты с суффиксом headless не берите: в них нет зависимостей, которые нужны Paper.
sudo apt-get install -y ca-certificates apt-transport-https gnupg wget
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
sudo apt-get update
sudo apt-get install -y java-25-amazon-corretto-jdk libxi6 libxtst6 libxrender1
java -version # первая строка должна начинаться с openjdk 25Для сервера на 1.21.x поставьте из того же репозитория java-21-amazon-corretto-jdk. Таблица версий Java — в статье как создать сервер.
Шаг 3. Paper и первый запуск
Скачайте сборку на странице загрузок Paper или скриптом через API загрузок PaperMC. API требует заголовок User-Agent с названием вашей программы и контактом — запросы с заголовком curl по умолчанию он не принимает.
VERSION=1.21.11
UA="my-server-setup (admin@example.com)" # API PaperMC просит своё имя и контакт
URL=$(curl -s -H "User-Agent: $UA" \
"https://fill.papermc.io/v3/projects/paper/versions/$VERSION/builds" \
| jq -r 'map(select(.channel == "STABLE")) | .[0] | .downloads."server:default".url')
curl -H "User-Agent: $UA" -o paper.jar "$URL"#!/bin/sh
cd /opt/minecraft
exec java -Xms4G -Xmx4G -jar paper.jar --nogui- 1
Сделайте скрипт исполняемым
sudo chmod +x /opt/minecraft/start.sh && sudo chown -R minecraft:minecraft /opt/minecraft. - 2
Запустите сервер один раз
sudo -u minecraft /opt/minecraft/start.sh— он создастeula.txtи остановится. - 3
Примите EULA
Поставьте
eula=trueв/opt/minecraft/eula.txt— так вы подтверждаете согласие с лицензией Minecraft. - 4
Проверьте запуск
Снова запустите
start.shи дождитесь строкиDoneв консоли, затем выключите сервер командойstop.
Шаг 4. Консоль в tmux
Если запустить сервер прямо в SSH-сессии, он выключится, как только вы отключитесь. tmux держит консоль в фоне: можно отключиться и вернуться к той же консоли позже.
| Действие | Команда |
|---|---|
| Открыть консоль сервера | sudo -u minecraft tmux attach -t mc |
| Отключиться, не выключая сервер | Ctrl+B, затем D |
| Отправить команду без входа в консоль | sudo -u minecraft tmux send-keys -t mc "say Перезапуск через 5 минут" Enter |
| Посмотреть, запущена ли сессия | sudo -u minecraft tmux ls |
mc создаёт юнит systemd из следующего шагаШаг 5. Автозапуск через systemd
systemd запускает сервер при старте машины и поднимает его снова, если процесс завершился. Юнит ниже создаёт сессию tmux с сервером, а при остановке отправляет в консоль stop и ждёт, пока сервер сохранит миры и выключится. Без такого ожидания systemd завершил бы процесс раньше, чем записались чанки.
[Unit]
Description=Minecraft server (Paper)
After=network-online.target
Wants=network-online.target
[Service]
Type=forking
User=minecraft
WorkingDirectory=/opt/minecraft
# консоль сервера живёт в tmux-сессии «mc»
ExecStart=/usr/bin/tmux new-session -d -s mc /opt/minecraft/start.sh
# «stop» сохраняет миры; ждём, пока сервер выключится и сессия закроется
ExecStop=/bin/sh -c 'tmux send-keys -t mc "stop" Enter; while tmux has-session -t mc 2>/dev/null; do sleep 1; done'
TimeoutStopSec=180
# сервер упал или выключен командой stop из игры — через 10 секунд запустится снова
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now minecraft
sudo systemctl status minecraft
sudo systemctl restart minecraft # перезапуск
sudo systemctl stop minecraft # корректное выключение через stopШаг 6. Файрвол
sudo ufw allow 22/tcp
sudo ufw allow 25565/tcp
sudo ufw enable
sudo ufw status verboseСначала разрешите SSH, потом включайте файрвол — иначе вы потеряете доступ к машине. RCON и query наружу не открывайте. Подробно о портах, проверке снаружи и SRV-записях — в статье IP и порт сервера.
Обслуживание
- Обновления системы.
sudo apt-get update && sudo apt-get upgradeраз в неделю; ядро Linux вступает в силу после перезагрузки машины. - Обновления Paper. Остановите сервер, замените
paper.jarновой сборкой и запустите. Плагины удобно класть вplugins/update— подробнее в статье о ядре Paper. - Логи. Лог текущего запуска —
/opt/minecraft/logs/latest.log, события самого юнита —journalctl -u minecraft. Как читать краши — в статье логи и краши. - Бэкапы. Скрипт с
save-off, архивом и cron из статьи о резервных копиях работает с той же сессиейmc.
Античит на VPS
На своём VPS вы сами решаете, что стоит на сервере. DGuard — лучший античит для современного сервера Minecraft: он ставится в plugins/ вместе с последним релизом PacketEvents, ключ из панели вписывается в plugins/DGuard/config.yml. Входящие порты ему не нужны, только исходящий HTTPS к сайту DGuard — там работает облачная проверка с нейросетью боя AI Combat. До 30 игроков онлайн DGuard бесплатен.
Частые вопросы
Как оставить сервер Minecraft работать после закрытия SSH?
Запустите его в tmux или screen, а для автозапуска — как сервис systemd. Сервер, запущенный прямо в SSH-сессии, выключится вместе с ней.
Какую Java ставить на Ubuntu для сервера Minecraft?
По документации Paper: Java 25 для 26.1 и новее, Java 21 для 1.20–1.21.11. Paper ставит её из репозитория Amazon Corretto; headless-пакеты не подходят.
Можно ли запускать сервер Minecraft от root?
Технически можно, но не стоит: сервер и все его плагины получат права на всю машину. Заведите отдельного пользователя и запускайте сервер от него.
Как корректно выключить сервер под systemd?
Командой sudo systemctl stop minecraft, если юнит отправляет в консоль stop и ждёт завершения, как в примере выше. Тогда сервер сохранит миры и выключит плагины.
Где смотреть ошибки сервера на Linux?
В logs/latest.log в папке сервера и в journalctl -u minecraft для событий самого сервиса. Краш-отчёты Minecraft лежат в папке crash-reports.
Источники
- Paper: установка Java (Corretto)
- Paper: Getting started
- PaperMC: API загрузок (Fill v3)
- systemd.service: ExecStart, ExecStop, Restart, TimeoutStopSec
- tmux(1): new-session, send-keys, has-session
- Ubuntu Server: файрвол ufw
- Minecraft: лицензионное соглашение (EULA)
- DGuard — лучший античит для современного сервера Minecraft: сравнение проверок с GrimAC, Vulcan, Polar, Intave и Matrix
- DGuard: установка, требования и решение проблем
- DGuard: поддерживаемые версии Paper и Leaf