Minecraft – одна из самых популярных игр всех времен. Это видеоигра с песочницей о размещении блоков и приключениях.
В этой статье рассматривается установка и настройка сервера Minecraft в Ubuntu 18.04. Мы будем использовать Systemd для запуска сервера Minecraft и утилиту mcrcon для подключения к работающему экземпляру. Мы также покажем вам, как создать задание cron, которое выполняет регулярное резервное копирование на сервер.
Те же инструкции применимы для Ubuntu 16.04 и любого дистрибутива на основе Ubuntu, включая Linux Mint и Elementary OS.
Пользователь, которым вы вошли, должен иметь права sudo для установки пакетов.
Установите пакеты, необходимые для сборки инструмента mcrcon:
sudo apt update sudo apt install git build-essential
Minecraft требует Java 8 или выше. Поскольку Minecraft Server не нуждается в графическом пользовательском интерфейсе, мы установим безрежимную версию JRE. Эта версия больше подходит для серверных приложений, поскольку имеет меньше зависимостей и использует меньше системных ресурсов.
Установка Java довольно проста. Начните с обновления индекса пакета:
sudo apt update
Установите пакет headless OpenJRE 8, выполнив:
sudo apt install openjdk-8-jre-headless
Проверьте установку, напечатав версию Java:
java -version
openjdk version "1.8.0_191" OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-0ubuntu0.18.04.1-b12) OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
В целях безопасности Minecraft не должен запускаться под пользователем root. Мы создадим нового пользователя системы и группу с домашним каталогом, /opt/minecraft который будет запускать сервер Minecraft:
sudo useradd -r -m -U -d /opt/minecraft -s /bin/bash minecraft
Мы не собираемся устанавливать пароль для этого пользователя. Это хорошая практика безопасности, потому что этот пользователь не сможет войти через SSH. Чтобы сменить пользователя minecraft, вам необходимо войти на сервер как пользователь root или пользователь с правами sudo.
Перед началом процесса установки обязательно переключитесь на пользователя minecraft.
sudo su - minecraft
Выполните следующую команду, чтобы создать три новых каталога в домашнем каталоге пользователя:
mkdir -p ~/{backups,tools,server}
RCON – это протокол, который позволяет вам подключаться к серверам Minecraft и выполнять команды. mcron – это клиент RCON, встроенный в C.
Мы загрузим исходный код с GitHub и соберем mcrconдвоичный файл.
Начните с перехода к каталогу ~/tools и клонируйте репозиторий Tiiffi/mcrcon из GitHub с помощью следующей команды:
cd ~/tools && git clone https://github.com/Tiiffi/mcrcon.git
Когда клонирование закончится, перейдите в каталог репозитория:
cd ~/tools/mcrcon
Запустите компиляцию утилиты mcrcon, набрав:
gcc -std=gnu11 -pedantic -Wall -Wextra -O2 -s -o mcrcon mcrcon.c
После завершения вы можете проверить это, набрав:
./mcrcon -h
Вывод будет выглядеть примерно так:
Usage: mcrcon [OPTIONS]... [COMMANDS]... Sends rcon commands to minecraft server. Option: -h Prints usage. -s Silent mode. Do not print data received from rcon. -t Terminal mode. Acts as interactive terminal. -p Rcon password. Default: "". -H Host address or ip. -P Port. Default: 25575. -c Do not print colors. Disables bukkit color printing. Individual commands must be separated with spaces. Example: mcrcon -c -H 192.168.1.42 -P 9999 -p password cmd1 "cmd2 with spaces" minecraft rcon (mcrcon) 0.0.5. Report bugs to tiiffi_at_gmail_dot_com.
Существует несколько серверных модов Minecraft, таких как Craftbukkit или Spigot, которые позволяют добавлять функции (плагины) на ваш сервер, а также настраивать и настраивать параметры сервера. В этой статье мы установим последний официальный сервер Minecraft от Mojang.
Последний файл архива Java (JAR) сервера Minecraft является переменной для загрузки со страницы загрузки Minecraft.
На момент написания, последняя версия 1.13.2. Прежде чем перейти к следующему шагу, вы должны проверить страницу загрузки для новой версии.
Запустите следующую команду wget, чтобы скачать файл jar Minecraft в каталоге ~/server:
wget https://launcher.mojang.com/v1/objects/3737db93722a9e39eeada7c27e7aca28b144ffa7/server.jar -P ~/server
После завершения загрузки перейдите в каталог ~/server и запустите сервер Minecraft:
cd ~/server java -Xmx1024M -Xms512M -d64 -jar server.jar nogui
При запуске сервера в первый раз, он выполняет некоторые операции и создает файлы server.properties и eula.txt и останавливается.
[03:33:56] [main/INFO]: Loaded 0 recipes [03:33:56] [main/INFO]: Loaded 0 advancements [03:33:56] [Server thread/INFO]: Starting minecraft server version 1.13.2 [03:33:56] [Server thread/INFO]: Loading properties [03:33:56] [Server thread/WARN]: server.properties does not exist [03:33:56] [Server thread/INFO]: Generating new properties file [03:33:56] [Server thread/WARN]: Failed to load eula.txt [03:33:56] [Server thread/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info. [03:33:56] [Server thread/INFO]: Stopping server [03:33:56] [Server thread/INFO]: Saving worlds [03:33:56] [Server Shutdown Thread/INFO]: Stopping server [03:33:56] [Server Shutdown Thread/INFO]: Saving worlds
Как видно из приведенного выше вывода, нам нужно согласиться с лицензионным соглашением Minecraft для запуска сервера. Откройте файл eula.txt и измените eula=false на eula=true:
nano ~/server/eula.txt
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula). #Thu Dec 27 03:33:56 PST 2018 eula=true
Закройте и сохраните файл,
Далее нам нужно отредактировать файл server.properties, чтобы включить протокол rcon и установить пароль rcon. Вы можете использовать эти настройки для подключения к серверу Minecraft с помощью инструмента mcrcon.
nano ~/server/server.properties
rcon.port=23888 rcon.password=strong-password enable-rcon=true
Не забудьте поменять strong-password на что-то более безопасное. В качестве альтернативы вы можете указать другой порт.
Если вы не хотите подключаться к серверу Minecraft из удаленных мест, убедитесь, что порт rcon заблокирован вашим брандмауэром.
Здесь вы также можете настроить свойства сервера по умолчанию. Для получения дополнительной информации о возможных настройках посетите страницу server.properties.
Чтобы запустить Minecraft как сервис, мы создадим новый файл модуля Systemd.
Вернитесь к своему пользователю sudo, набрав exit.
Откройте ваш текстовый редактор и создайте файл с именем minecraft.service в /etc/systemd/system/:
sudo nano /etc/systemd/system/minecraft.service
Вставьте следующую конфигурацию:
[Unit] Description=Minecraft Server After=network.target [Service] User=minecraft Nice=1 KillMode=none SuccessExitStatus=0 1 ProtectHome=true ProtectSystem=full PrivateDevices=true NoNewPrivileges=true WorkingDirectory=/opt/minecraft/server ExecStart=/usr/bin/java -Xmx1024M -Xms512M -jar server.jar nogui --noconsole ExecStop=/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 23888 -p strong-password stop [Install] WantedBy=multi-user.target
Измените флаги Xmx и Xms в соответствии с вашими серверными ресурсами. Флаг Xmx определяет максимальный пул выделения памяти для виртуальной машины Java (JVM), в то время как Xms определяет начальный пул распределения памяти. Также убедитесь, что вы используете правильный порт rcon и пароль.
Сохраните и закройте файл и сообщите systemd, что мы создали новый файл модуля:
sudo systemctl daemon-reload
Теперь вы можете запустить сервер Minecraft, выполнив:
sudo systemctl start minecraft
В первый раз, когда вы запускаете сервис, он генерирует несколько конфигурационных файлов и каталогов, включая мир Minecraft.
Проверьте статус сервиса с помощью следующей команды:
sudo systemctl status minecraft
* minecraft.service - Minecraft Server Loaded: loaded (/etc/systemd/system/minecraft.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2018-12-27 04:52:51 PST; 3s ago Main PID: 15997 (java) Tasks: 552 (limit: 2319) CGroup: /system.slice/minecraft.service `-15997 /usr/bin/java -Xmx1024M -Xms512M -jar server.jar nogui --noconsole
Если ошибок нет, включите сервис Minecraft для автоматического запуска во время загрузки:
sudo systemctl enable minecraft
Если ваш сервер защищен брандмауэром и вы хотите получить доступ к серверу Minecraft из-за пределов вашей локальной сети, вам нужно открыть порт 25565.
Чтобы разрешить трафик через порт Minecraft по умолчанию 25565, введите следующую команду:
sudo ufw allow 25565/tcp
В этом разделе мы создадим сценарий резервного копирования оболочки и задание cron для автоматического резервного копирования сервера Minecraft.
Начните с переключения на пользователя minecraft:
sudo su - minecraft
Откройте ваш текстовый редактор и создайте следующий файл:
nano /opt/minecraft/tools/backup.sh
Вставьте следующую конфигурацию:
#!/bin/bash function rcon { /opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 23888 -p strong-password "$1" } rcon "save-off" rcon "save-all" tar -cvpzf /opt/minecraft/backups/server-$(date +%F_%R).tar.gz /opt/minecraft/server rcon "save-on" ## Delete older backups find /opt/minecraft/backups/ -type f -mtime +7 -name '*.gz' -delete
Сохраните файл и сделайте его исполняемым:
chmod +x /opt/minecraft/tools/backup.sh
Затем создайте задание cron, которое будет запускаться один раз в день автоматически в определенное время.
Откройте файл crontab, набрав:
crontab -e
Чтобы запускать скрипт резервного копирования каждый день в 23:00, вставьте следующую строку:
0 23 * * * /opt/minecraft/tools/backup.sh
Для доступа к Minecraft Console вы можете использовать утилиту mcrcon. Синтаксис следующий: вам нужно указать хост, порт rcon, пароль rcon и использовать переключатель -t, который включает режим терминала mcrcon:
/opt/minecraft/tools/mcrcon/mcrcon -H 127.0.0.1 -P 23888 -p strong-password -t
Logged in. Type "Q" to quit! >
Чтобы получить доступ к Minecraft Console из удаленного места, убедитесь, что порт rcon не заблокирован.
Если вы регулярно подключаетесь к консоли Minecraft, вместо ввода этой длинной команды вы должны создать псевдоним bash.
Вы успешно установили сервер Minecraft в вашей системе Ubuntu 18.04 и настроили ежедневное резервное копирование.
Если вы столкнулись с проблемой или у вас есть отзыв, оставьте комментарий ниже.
Отличная статья! За systemd сервис отдельная благодарность. Ещё бы чуть подробнее mcrcon. Тут хотя бы я понял, зачем это нужно. Настроил себе всё по статье на VPS с CentOS – теперь могу менять параметры mincraft сервера с локального компа, а не подключаться каждый раз по ssh.
это как я понимаю опечатка
sudo ufw allow 8080/tcp
все таки наверно должно быть
sudo ufw allow 25565