Перейти к содержимому

Автозапуск сервера Minecraft через systemd

1 час назад · 4 мин чтения
12
Автозапуск сервера Minecraft через systemd

Автозапуск сервера Minecraft на Ubuntu правильно делать через systemd: создаёшь unit-файл с User, WorkingDirectory и ExecStart, включаешь его через systemctl enable — и сервер сам поднимается после перезагрузки и сам перезапускается при падении. screen и nohup для этого не годятся.

Почему screen и nohup — плохое решение для боевого сервера

Разбор причин, по которым служба не запускается
Служба не поднялась — разбор идёт по journalctl, а не наугад.

Запуск через nohup java -jar server.jar & держит процесс живым, только пока жива сессия и сама система, но никак не следит за тем, упал сервер или нет — если Java вылетит с ошибкой памяти, процесс просто исчезнет, а сервер останется недоступен, пока кто-то вручную не зайдёт и не перезапустит. screen решает проблему с отключением от терминала, но у него та же дыра: после перезагрузки машины никто не поднимет сессию screen автоматически, и после падения сервера внутри неё никто не перезапустит java. Оба варианта работают, пока всё стабильно, и оба молчат, когда что-то ломается ночью.

Unit-файл для systemd

Создай файл /etc/systemd/system/minecraft.service с правами root. Ниже рабочий пример — подставь свой путь к серверу и объём памяти.

[Unit]
Description=Minecraft Server
After=network.target

[Service]
Type=simple
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/java -Xmx2G -Xms1G -jar server.jar nogui
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

User=minecraft — сервер работает от имени того же непривилегированного пользователя, что создавали при установке, а не от root. WorkingDirectory — папка, где лежит server.jar и файлы мира. Restart=on-failure значит: если процесс завершится с ошибкой, systemd подождёт RestartSec и попробует поднять его снова — вручную ничего делать не нужно.

Включи и запусти сервис

sudo systemctl daemon-reload
sudo systemctl enable minecraft
sudo systemctl start minecraft
sudo systemctl status minecraft

daemon-reload нужен каждый раз после правки unit-файла, чтобы systemd подхватил изменения. enable добавляет сервис в автозагрузку — теперь он поднимется и после перезагрузки машины сам.

Как отправлять команды в консоль сервера

Тут есть честный компромисс. При запуске напрямую через ExecStart, как в примере выше, systemd не даёт удобного интерактивного доступа к stdin процесса — просто написать команду в консоль не получится. Два рабочих способа обойти это, и оба не идеальны:

  • RCON — включи enable-rcon=true, задай rcon.password и rcon.port в server.properties, и отправляй команды удалённо консольным rcon-клиентом. Плюс: сервер всё так же полностью управляется systemd, Restart работает штатно. Минус: нужен отдельный клиент и порт, который тоже стоит закрыть от внешнего доступа файрволом, оставив только localhost или доверенный IP
  • Запуск внутри tmux или screen, которые сам стартует ExecStart — тогда можно подключиться и печатать команды напрямую в консоль сервера, как раньше. Минус: получается двойной слой (systemd следит за оболочкой tmux, а не напрямую за java), это усложняет корректную остановку и слегка размывает то, о чём предупреждали выше про screen и nohup

Для боевого сервера честнее и надёжнее первый вариант — RCON. Он не ломает управление через systemd и остаётся рабочим способом отправлять команды типа save-all или stop без входа в саму систему.

Логи через journalctl

journalctl -u minecraft -f
journalctl -u minecraft --since "1 hour ago"

Флаг -f держит вывод в реальном времени, как tail -f — удобно смотреть, что происходит при старте или сразу после падения сервера.

Что почитать дальше: journalctl по-человечески · Служба не запускается: разбор по systemd.

Пример приложения под systemd
Тот же принцип автозапуска работает для любого приложения.
Есть бесплатный тариф

Хостинг Minecraft от 349 ₽ в месяц

Ryzen 9 7950X до 5,7 ГГц на ядро, бэкапы каждый день, моды и карты из панели.

Выбрать тариф
SystemdUbuntuАвтозапуск

Похожие статьи

Как открыть порт 25565 на VDS: ufw и iptables
Свой сервер

Как открыть порт 25565 на VDS: ufw и iptables

Почему сервер Minecraft на VDS не виден снаружи и как правильно открыть порт 25565 через ufw или iptables. Разбор частых ошибок с server-ip и файрволом.

1 день назад
132
Как установить сервер Minecraft на Ubuntu: пошагово
Свой сервер

Как установить сервер Minecraft на Ubuntu: пошагово

Ставим сервер Minecraft 1.21.x на Ubuntu 24.04 с нуля: правильная Java 21, отдельный пользователь, ядро сервера, eula.txt и первый запуск. Рабочие команды.

2 дня назад
198
Панель управления сервером на VDS: Pterodactyl или Crafty
Свой сервер

Панель управления сервером на VDS: Pterodactyl или Crafty

Поставил Minecraft на VDS через SSH и хочешь кнопки вместо консоли? Сравниваем Pterodactyl и Crafty — что сложнее, что проще и сколько памяти съедает сама панель.

3 дня назад
316
Не помогло?
Спроси у сообщества — отвечают игроки и админы серверов.
Задать вопрос

Комментарии 0

Войди, чтобы комментироватьВойти
Автозапуск сервера Minecraft через systemd · Millida Forum