Общие вопросы
Отправка писем по SMTP на VDS с панелью NetAngelsКак сбросить пароль root?Запуск образов VDS на локальном компьютереИспользование раздела Облачные VDS в панели управленияИспользование образа с панелью управления NetAngelsСпециальные образы VDS для быстрого развертывания (LAMP)Как клонировать виртуальные машиныГостевой агентПриватная сетьКак поправить настройки sshd?Как включить защиту от DDoS через CloudflareVDS как промежуточный сервер для выхода в интернетМонтирование диска в VDSУстановка сервера MinecraftЗащита от DDoS атакИнструкция по настройке исходящего SMTP для тарифов VDS StartСервер для веб-конференций, совещаний и онлайн лекцийВосстановление отдельных файлов в виде архиваНастройка сети на VDSУстановка Windows из ISO-образа на VDSSSH-доступ к хостинг-аккаунтуКак настроить отправку почты с сайтаАвтоматизация обновления SSL-сертификата через API NetAngelsВыпуск SSL сертификата на VDS c помощью утилиты dehydratedКак подключить SSL-сертификат для сайта на облачном VDS с панелью управления NetAngelsКонсольные команды. Работа с данными.Консольные команды. Работа с MySQL, создание и загрузка дампа.Консольные команды. Анализ состояния сервера
Установка и настройка сервера Minecraft

Установка и настройка сервера Minecraft

Minecraft (от англ. mine — «шахта; добывать» + craft — «ремесло; создавать») — игра в жанре песочницы, схожая с конструктором LEGO. Самая продаваемая компьютерная игра в мире.

В данной статье мы рассмотрим установку и настройку сервера Minecraft версии 1.21.1 на базе официального ядра на VDS.

1. Подготовка

Создаем облачный VDS. Мы рекомендуем выбрать тариф Medium или выше. В качестве образа мы будем использовать чистый Debian 12 Bookworm.

1.1. Получаем доступ к терминалу VDS через личный кабинет или по SSH, воспользовавшись любым удобным SSH-клиентом, и обновляем список пакетов:

apt update

2. Установка ПО

2.1. Устанавливаем утилиту screen ПО из стандартных репозиториев Debian (её назначение будет описываться позже):

apt install -y screen

2.2. Устанавилваем Java. Отметим важный момент, что Minecraft 1.21.1 поддерживает Java 21 и выше, однако в стандартных репозиториях Debian имеется только Java 17, поэтому нам потребуется добавить в систему дополнительный репозиторий, в котором имеется необходимая версия Java. Мы будем добавлять репозторий Adoptium по инструкции на их сайте. Из данной инструкции мы введем следующие команды:

apt install -y wget apt-transport-https gpg
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list
# в связи добавлением новых репозиториев нам потребуется обновить список пакетов снова:
apt update

2.3. После завершения работы этих команд нам будет доступен пакет temurin-21-jre, то есть Java 21. Устанавливаем его:

apt install -y temurin-21-jre

2.4. Проверяем версию Java:

java --version

Вывод этой команды должен быть примерно следующий:

openjdk 21.0.4 2024-07-16 LTS
OpenJDK Runtime Environment Temurin-21.0.4+7 (build 21.0.4+7-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.4+7 (build 21.0.4+7-LTS, mixed mode, sharing)

Установка Java в систему завершена.

3. Настройка окружения

3.1. Создаем пользователя. В целях безопасности мы будем запускать сервер под отдельным непривилегированным пользователем. Называем его minecraft и в качестве домашней директории указываем ему /srv/minecraft:

adduser minecraft --gecos "" --home=/srv/minecraft

Указываем пароль и нажимаем Enter, после чего создание пользователя завершится.

3.2. Входим в систему как пользователь minecraft:

su - minecraft

3.3. В домашней директории данного пользователя создаем дополнительную директорию нашего сервера, где будут размещаться его файлы (ядро, игровой мир, конфигурация), называем её, например, server, затем переходим в нее:

mkdir ~/server
cd ~/server

3.4. По ссылке, взятой на странице официального сайта Minecraft, скачиваем ядро, в нашем случае это ядро для сервера Minecraft версии 1.21.1:

wget https://piston-data.mojang.com/v1/objects/59353fb40c36d304f2035d51e7d6e6baa98dc05c/server.jar

4. Первый запуск

Теперь можно запустить сервер. Это необходимо для генерации структуры сервера: стандартных конфигов и игрового мира, а также некоторых технических файлов.

4.1. Стартуем:

java -Xmx1024M -Xms1024M -jar server.jar nogui

При первом запуске мы можем столкнуться со следующей ошибкой в самом низу вывода команды:

[10:18:24] [ServerMain/WARN]: Failed to load eula.txt
[10:18:24] [ServerMain/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

Это нормально. Нас просят принять соглашение EULA. Для нас уже создали файл eula.txt, где нам достаточно изменить значение с eula=false на eula=true. Перезаписываем данный файл, отправив в него строку eula=true:

echo 'eula=true' > eula.txt

Теперь запускаем сервер еще раз. Вывод должен быть примерно следующим:

Starting net.minecraft.server.Main
[10:34:59] [ServerMain/INFO]: Environment: Environment[sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD]
[10:35:00] [ServerMain/INFO]: No existing world data, creating new world
[10:35:01] [ServerMain/INFO]: Loaded 1290 recipes
[10:35:02] [ServerMain/INFO]: Loaded 1399 advancements
[10:35:02] [Server thread/INFO]: Starting minecraft server version 1.21.1
[10:35:02] [Server thread/INFO]: Loading properties
[10:35:02] [Server thread/INFO]: Default game type: SURVIVAL
[10:35:02] [Server thread/INFO]: Generating keypair
[10:35:02] [Server thread/INFO]: Starting Minecraft server on *:25565
[10:35:03] [Server thread/INFO]: Using epoll channel type
[10:35:03] [Server thread/INFO]: Preparing level "world"
[10:35:10] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld
[10:35:10] [Worker-Main-1/INFO]: Preparing spawn area: 2%
[10:35:10] [Worker-Main-3/INFO]: Preparing spawn area: 2%
[10:35:11] [Worker-Main-1/INFO]: Preparing spawn area: 2%
[10:35:11] [Worker-Main-1/INFO]: Preparing spawn area: 2%
[10:35:12] [Worker-Main-3/INFO]: Preparing spawn area: 18%
[10:35:12] [Worker-Main-3/INFO]: Preparing spawn area: 18%
[10:35:13] [Worker-Main-2/INFO]: Preparing spawn area: 26%
[10:35:13] [Worker-Main-1/INFO]: Preparing spawn area: 51%
[10:35:14] [Worker-Main-2/INFO]: Preparing spawn area: 51%
[10:35:14] [Worker-Main-1/INFO]: Preparing spawn area: 51%
[10:35:15] [Server thread/INFO]: Time elapsed: 4752 ms
[10:35:15] [Server thread/INFO]: Done (11.882s)! For help, type "help"

Здесь мы загрузились в интерактивную командную оболочку сервера Minecraft, в ней мы можем вводить команды. Посмотреть список доступных команд можно, введя команду help:

help
[10:37:21] [Server thread/INFO]: /advancement (grant|revoke)
[10:37:21] [Server thread/INFO]: /attribute <target> <attribute> (get|base|modifier)
[10:37:21] [Server thread/INFO]: /execute (run|if|unless|as|at|store|positioned|rotated|facing|align|anchored|in|summon|on)
[10:37:21] [Server thread/INFO]: /bossbar (add|remove|list|set|get)
[10:37:21] [Server thread/INFO]: /clear [<targets>]
[10:37:21] [Server thread/INFO]: /clone (<begin>|from)
[10:37:21] [Server thread/INFO]: /damage <target> <amount> [<damageType>]
[10:37:21] [Server thread/INFO]: /data (merge|get|remove|modify)
[10:37:21] [Server thread/INFO]: /datapack (enable|disable|list)
[10:37:21] [Server thread/INFO]: /debug (start|stop|function)
[10:37:21] [Server thread/INFO]: /defaultgamemode <gamemode>
...

Прямо из этой оболочки мы можем, например, включить дождь в игровом мире командой weather rain или установить игроку статус оператора командой op <никнейм_игрока>. Более детальное описание на русском языке всех доступных команд, а также их синтаксис, можно посмотреть на сайте Minecraft.wiki.

Теперь мы можем остановить сервер, введя команду stop. Вывод ее будет примерно следующий:

stop
[10:42:49] [Server thread/INFO]: Stopping the server
[10:42:49] [Server thread/INFO]: Stopping server
[10:42:49] [Server thread/INFO]: Saving players
[10:42:49] [Server thread/INFO]: Saving worlds
[10:42:50] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:overworld
[10:42:50] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_end
[10:42:50] [Server thread/INFO]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_nether
[10:42:50] [Server thread/INFO]: ThreadedAnvilChunkStorage (world): All chunks are saved
[10:42:50] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved
[10:42:50] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved
[10:42:50] [Server thread/INFO]: ThreadedAnvilChunkStorage: All dimensions are saved

После того, как мы убедились, что все работает, нам следует разобраться, как сделать так, чтобы сервер оставался запущенным, даже если мы закроем терминал, то есть оборвем интерактивную сессию с командной оболочкой VDS. Чтобы сервер продолжал работать в фоновом режиме без необходимости держать терминал открытым, но при этом была доступна интрекативная командная оболочка сервера Minecraft, нам потребуется воспользоваться утилитой screen.

4.2. Создаем сессию screen и называем её server:

screen -S server

Эта команда также забросит нас в только что созданную сессию. Теперь запускаем сервер также, как мы делали это ранее. Как можно заметить, визуально все примерно также. Однако теперь мы можем выйти из интерактивной сессии сервера Minecraft, не выключая его, для этого нужно нажать клавиши CTRL+A, затем D.

4.3. Чтобы вернуться в интерактивную сессию сервера Minecraft, потребуется ввести следующую команду:

screen -x server

С запуском сервера Minecraft в фоновом режиме мы разобрались.

5. Настройка автозапуска сервера

Чтобы сервер Minecraft запускался автоматически при запуске VDS, нам потребуется настроить сервис systemd.

5.1. Сначала удаляем созданную ранее сессию screen:

screen -X -S server quit

5.2. Теперь выходим из оболочки пользователя minecraft:

exit

После чего нас должно вернуть в оболочку пользователя root.

5.3. Создаем файл сервиса systemd, называем его minecraft@.service и записываем в нем директивы соответствующим образом. Сделать это можно, введя в терминал следующее:

cat > /etc/systemd/system/minecraft@.service << EOF
[Unit]
Description=A Minecraft server
After=network.target

[Service]
Type=simple
User=minecraft
Group=minecraft
WorkingDirectory=/srv/minecraft/%i
ExecStart=/usr/bin/screen -DmS %i /usr/bin/java -Xmx1024M -Xms1024M -jar /srv/minecraft/%i/server.jar nogui
ExecStop=/usr/bin/screen -S %i -X eval 'stuff "stop\015"'
SuccessExitStatus=143
Restart=always
RestartSec=5

ProtectHome=yes
ProtectSystem=full
PrivateDevices=yes
PrivateTmp=yes

[Install]
WantedBy=multi-user.target
EOF

Эта команда создаст файл и запишет в него содержимое, заключенное между двумя EOF.

5.4. Включаем автоматический старт данного сервиса и запускаем его:

systemctl enable minecraft@server
systemctl start minecraft@server

В течение нескольких секунд сервер Minecraft должен запуститься.

5.5. Теперь мы можем войти в интерактивную сессию сервера Minecraft, которая была создана сервисом systemd. Для этого снова заходим в оболочку пользователя minecraft:

su - minecraft

И входим в сессию screen:

screen -x server

6. Подключение

6.1. Сейчас вы можете попробовать подключиться к серверу Minecraft. Для этого следует зайти в клиент Minecraft, нажать на кнопку Сетевая игра -> Прямое подключение, затем вставить в поле IP-адрес нашей VDS и нажать Подключиться.

6.2. Если при подключении вместо загрузки мира вы видите текст, связанный с аутентификацией или недействительной сессией, то, скорее всего, ваш клиент нелицензионный. Для решения ситуации на сервере следует разрешить вход с нелицензионных клиентов, сделать это можно, заменив в файле /srv/minecraft/server/server.properties строку online-mode=true на online-mode=false. Выходим из сессии screen и производим замену следующей командой:

sed -i 's/^online-mode=true/online-mode=false/' /srv/minecraft/server/server.properties

6.3. Затем перезапускаем сервер Minecraft, снова войдя в его интерактивную оболочку через screen -x server и введя в ней команду stop. Согласно директиве RestartSec=5 в файле описанного выше сервиса, сервер будет автоматически запущен через 5 секунд. После истечения данного времени вы можете попробовать подключиться к серверу снова.

7. Остановка и отключение автозапуска

7.1. Чтобы корректно остановить сервер, от пользователя root потребуется ввести следующую команду:

systemctl stop minecraft@server

7.2. А для отключения автозапуска:

systemctl disable minecraft@server

Готово! Настройка сервера Minecraft на VDS завершена. Приглашайте друзей для совместной игры и приятного времяпрепровождения!

Облачные VDS
Облачные VDS
Облачные VDS
Масштабируются под любые задачи: от размещения сайта до IT-инфраструктуры
С 2003 года
Надежность.
Нам доверяют десятки тысяч компаний и разработчиков
20 лет
Предоставляем услуги профессионального хостинга
35 000
Клиентов доверяют нам размещение своих сайтов
99.99%
Подтвержденный uptime
наших серверов хостинга
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
ВК49865