Найти в Дзене
TehnoZet-2

Как создать свой сервер Minecraft.

Оглавление

Minecraft (Майнкрафт) - это строительная игра жанра «песочница» (Mine — «шахта; добывать» + Сraft — «ремесло; создавать»). Создана шведским программистом Маркусом Перссоном в 2009 году, а в конце 2011 года была выпущена стабильная версия для компьютеров Windows, Linux и macOS с распространением через официальный сайт. В 2017 году было выпущено кроссплатформенное обновление, объединившее различные версии Minecraft для разных устройств в единую мастер-версию — общую для Windows 10, iOS, Android и др. Движок новой объединённой версии игры и сама эта версия получили название Bedrock Edition, а позднее стала называться просто Minecraft без уточнений. Старая версия игры, работающая на Java, получила подзаголовок Java Edition. На момент написания статьи доступна версия 1.21.1, но в альтернативных раздачах она называется просто Minecraft.

Minecraft Java Edition  версия 1.21.1
Minecraft Java Edition версия 1.21.1

Миры, сохранения и моды из версии Bedrock Edition несовместимы с версией Java Edition.

Что такое Fabric

Fabric — это модульный, легкий загрузчик модов для Minecraft.

Ссылки

О операционной системе.

Сервер Майнкрафт можно установить на Linux, в свою очередь Linux может стоять на виртуальной машине или на реальной.

Установка на виртуальную машину проста, собственно разворачиваем виртуальную машину, на виртуальной машине устанавливаем соединение типа мост.

Так как мы запускаем сервер то и операционка будет серверная, и конечно это будет Linux, а именно Linux Ubuntu, еще точнее Ubuntu Server (ubuntu.com/server). Напомню о том, что Ubuntu ответвление ОС Debian.

Работа с терминалом.

Putty.

Можно воспользоваться Putty (Официальный сайт, на моем дискe Яндекс.Диск, Гугл.Диск). Про работу с SSH и Putty у меня было в множестве статей, вот они:

Статьи на моем канале

Терминал Windows.

А можно терминалом Windows, для этого нажмите Win+R наберите cmd и Enter

Нажмите Win+R наберите cmd
Нажмите Win+R наберите cmd

введите:

ssh [user]@[IP_adress]

Например вот так :

ssh linuxcraft@192.168.1.35

где "linuxcraft" - имя пользователя, а "192.168.1.35" - IP адрес компьютера.

ssh user@machine
ssh user@machine

Затем вводим пароль пользователя (сам пароль не отображается)

MobaXterm

Альтернатива выше названным программам MobaXterm. Мне надоело каждый раз вбивать пароли (MobaXterm сохраняет пароли хотя это не безопасно) и я перешел на эту программу, пока "на попробовать"

Сайт: mobaxterm.mobatek.net

MobaXterm (mobaxterm.mobatek.net)
MobaXterm (mobaxterm.mobatek.net)

Скачать можно тут: mobaxterm.mobatek.net/download.html, есть портативная и с установкой, но она платная. Есть бесплатная версия с ограниченны функционалом, для работы под SSH, telnet, а также посмотреть функционал вполне подойдёт, ну а так вы сами знаете об альтернативах.

MobaXterm - терминал
MobaXterm - терминал

Мне программа не очень понравилась, она с очень большим функционалом и для меня это плохо, мне бы, хотелось бы, что-то по принципу Putty, но с сохранение паролей и копированием - вставкой в одно нажатие. Пока я в поисках

Безопасность

Создаем пользователя ("Имя_пользователя"):

adduser имя_пользователя

Например:

adduser mineuser

и предоставляем ему права администратора

usermod -aG sudo имя_пользователя

Например:

usermod -aG sudo mineuser

и права удаленного доступа по SSH:

rsync --archive --chown=mineuser:mineuser ~/.ssh /home/mineuser

Например для пользователя linuxcraft все будет выглядеть вот так:

adduser linuxcraft
usermod -aG sudo linuxcraft
rsync --archive --chown=linuxcraft:linuxcraft ~/.ssh /home/linuxcraft

Напомню, что:

открыть оболочку root

sudo -s 

А сменить пользователя

su - имя_пользователя

Перезагрузить систему под обычным пользователем можно, выполнив команду:

systemctl

Под root

reboot

java

Серверная часть работает на java и она нам понадобится

Проверка установленной версии java:

java -version

Устанавливаем Java Development Kit командой:

sudo apt install default-jdk

Еще раз проверяем версию

java -version

Установка официальной версии сервера Minecraft Java Edition.

Мы можем установить официальный сервер Minecraft: Java Edition, то у меня связка клиент и сервер не заработала по очень простой причине, для последнего сервера нужна последняя программа клиент (обычный Minecraft в который вы играете на своем компьютере) , а где его взять? Понятно что можно купить, но мы не ищем легких путей, а с альтернативными путями можно взять только более раннюю версию игры, но на последнем официальном сервере она не заработает, а где найти официальный сервер прошлых версий я так и не нашел. Поэтому я скачал альтернативный сервер PaperMC который как пишут даже лучше официального, о нем будет ниже, а настройку и скачку официального сервера я привожу ниже просто что бы было. Итак, кто хочет настроить все как надо читайте "сервер PaperMC" ниже.

Для установки официальной версии сервера Minecraft Java Edition создаем директорию, в которой будет располагаться сервер Minecraft:

mkdir minecraft_server

И переходим в неё:

cd minecraft_server

Переходим на официальный сайт Minecraft и копируем ссылку при помощи правой кнопки мыши на актуальный файл JAR.

wget <Ваша ссылка> или вот так

wget https://piston-data.mojang.com/v1/objects/4707d00eb834b446575d89a61a11b5d548d8c001/server.jar

Запускаем сервер Minecraft с помощью следующей команды:

java -Xmx1024M -Xms1024M -jar server.jar nogui

Параметры Xmx1024M, Xms1024M задают минимальный и максимальный объем оперативной памяти, который будет использован сервером. Параметр nogui означает, что программа будет запущена без графического интерфейса.

Открываем eula.txt с помощью редактора nano:

nano eula.txt

Заменяем в файле значение параметра eula с false на true тем самым принимая пользовательское соглашение. Далее выходим из редактора сочетанием клавиш Ctrl + X. Соглашаемся на сохранение файла, нажав на клавишу Y. И подтверждаем сохранение изменений в eula.txt клавишей Enter.

Открываем конфигурационный файл server.properties через редактор nano:

nano server.properties

На 23 строчке документа находим параметр online-mode и выставляем ему значение false

Дополнительную информацию о параметрах, представленных в файле server.properties, вы можете узнать на Minecraft Wiki.

Снова пробуем запустить наш сервер командой:

java -Xmx1024M -Xms1024M -jar server.jar nogui

На этом все.

Сервер PaperMC

Paper — игровой сервер Minecraft на базе Spigot.

Сервер Paper (papermc.io)
Сервер Paper (papermc.io)

Для меня важно, что можно скачать сборку на не самый новый Майнкрафт.

На самом деле существует несколько альтернативных реализаций сервера, один из самых популярных Paper (papermc.io). Актуальная, самая последняя версия: https://papermc.io/downloads/paper. Старые сборки можно скачать вот тут: https://papermc.io/downloads/all они подходят для не новых клиентов которые Вы затем установите на свой компьютер, для меня это оказалось очень важно так как я пользуюсь клиентом версии 1.21.1

Minecraft Java Edition  версия 1.21.1
Minecraft Java Edition версия 1.21.1

Установка Paper

Создаем директорию, в которой будет располагаться сервер Minecraft paper (minecraft_server_paper):

mkdir minecraft_server_paper

И переходим в нее:

cd minecraft_server_paper

wget <Ваша ссылка> или вот так

Ссылка отсюда, старые сборки доступны по этому адресу: https://papermc.io/downloads/all

wget https://api.papermc.io/v2/projects/paper/versions/1.21.1/builds/132/downloads/paper-1.21.1-132.jar

Создадим файл eula.txt

touch eula.txt

Теперь отредактируем его

nano eula.txt

Внесем туда данные, сохраним его и закроем

eula=true

Теперь запустим игровой сервер:

java -jar paper-1.21.1-132.jar --nogui

Ключ --nogui запрещает запускать графическую оболочку, у нас же сервер!

Отредактировать файл конфигурации (для выключение проверки на официальном сервере):

nano server.properties

Поменять значение true на false

online-mode=false

Настройка

Помимо настройки "online-mode=false" возможны другие настройки, опять открываем файл конфигурации:

nano server.properties

где

motd=Название вашего сервера

enable-status=false Будет показывать, что сервер offlain, но он будет работает как обычно.

Остальные настройки Вы можете узнать на Minecraft Wiki или вот тут

Для включения функции whitelist выполняем команду:

  • whitelist on

Добавить игрока можно по команде:

whitelist add <имя_игрока>

Сервер виден в игре Minecraft
Сервер виден в игре Minecraft

Быстрый запуск сервера

Для старта сервера мы должны попасть в каталог: "minecraft_server_paper", где хранится наш сервера , именно наш "paper", например во так:

cd minecraft_server_paper

или вот так:

cd /home/mineuser/minecraft_server_paper

или индивидуально для Вас, куда Вы сохранили свой сервер.

И ввести:

java -jar paper-1.21.1-132.jar --nogui

Но это долго и нудно поэтому создадим файл с расширением .sh. Такие файлы, использующие расширение SH, содержат код скриптов, которые могут быть использованы оболочкой Bash, а соответственно сами скрипты, написаны на языке Bash. Создаем файл:

touch start.sh

Отредактируем его через текстовый редактор "nano"

nano start.sh

Внесем туда данные (а как сохранять вы помните)

#!/bin/bash
clear
echo -e "\033[32m Start server paper!"
echo -e "\033[0m"
java -jar paper-1.21.1-132.jar --nogui

Где:

  • #!/bin/bash (или #!/bin/sh) — это обязательная строка указывает где расположен интерпретатор языка bash (это интерпретатор командной строки, или shell (shell значит оболочка) эта та программа, которая принимает команды от пользователя и исполняет их, есть много подвидов какая у вас установлена можно узнать если ввести: echo $SHELL), все комментарии начинаются с символа #, но кроме вот этой самой первой строки. Она еще может быть: "#!/bin/sh", иными словами "#!/bin/bash" = "#!/bin/sh"
  • clear - очистим экран терминала.
  • echo - надпись на экране терминала
  • -e "\033[32m" - пишем зелененькими буквами
  • -e "\033[0m" - сбрасываем цвет на дефолтный серый цвет.

Назначим ему права, позволяющие ему исполнять задачу которая заложена в него:

chmod +x start.sh

Запустим его

./start.sh
Код запуска сервреа
Код запуска сервреа

Вообще запустить можно одним из следующих способов.

  • ./имя_файла.sh
  • sh имя_файла.sh
  • bash имя-скрипта-здесь.sh

Остановка сервера производится по команде:

stop

Итак, что бы запустить сервер нужно нажать

sh /home/mineuser/minecraft_server_paper/start.sh

Автозагрузка

В автозагрузку мы будем добавлять с помощью демона cron, что это такое и зачем читайте далее.

cron

cron - от анг. chronos, по греческий время, специальная программа работающая в фоновом режиме без прямого взаимодействие с пользователем (такие программы в среде UNIX называются демон(ы)), использующийся для периодического выполнения заданий в определённое время.

Набираем:

crontab -e

При первом запуске спросит какой использовать текстовый редактор:

Выбор текстового редактора
Выбор текстового редактора

Далее следуют настройка конфигурационного файла, при новом вызове команды:

crontab -e

уже не будет настройки текстового редактора, но мы попадём в конфигурационный файл.

* * * * * [Команда]

или

[Минуты] [Часы] [Дни] [Месяцы] [Дни недели] [Имя пользователя] [Команда]

где:

  • [Имя пользователя] - может быть упущено.
  • [Команда] - выполнимая команда.

Например:

0 12 * * 1-5 /usr/local/my_script.sh

выполнять заданную команду или скрипт каждый будний день (с понедельника по пятницу) в 12:00.

есть отдельные команды вот такие:

  • @reboot — команда выполнится один раз при перезагрузке системы;
  • @yearly — задание будет выполняться один раз в год;
  • @annually — вариация команды @yearly, делает то же самое, но в Новый год;
  • @monthly — ежемесячное выполнение задания;
  • @weekly — скрипт будет срабатывать раз в неделю;
  • @daily — ежедневное выполнение;
  • @midnight — срабатывание раз в день в полночь;
  • @hourly — скрипт выполняется ежечасно.

А теперь перейдем к содержимому файла:

# as usual, comments start with '#'

# use /bin/sh as the shell

# crontab -e

# Preliminary setup

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

#### The task starts here

# Minecraft server start

@reboot cd /home/mineuser/minecraft_server_paper/;sh ./start.sh;

#End

Очень важна предпоследняя строчка с "@reboot" она самая главная и в точности должна быть такая до точки, естественно вы ставите свой путь и название файла.

Возможно вам придется поменять права доступа, но у меня все и так работало.

Права доступа выставлены вот так (смотрим: ls -l /home/mineuser/minecraft_server_paper/paper-1.21.1-132.jar)

Права доступа rw- rw- r--
Права доступа rw- rw- r--

Мне пришлось изменить права доступа и поставить для владельца вот так:

chmod -R 764 /home/mineuser/minecraft_server_paper/paper-1.21.1-132.jar

И получилось вот так:

Права доступа rwx rw- r--
Права доступа rwx rw- r--

Резервирование

Мир на сервере хранится в папке "world", а нижний мир и верхний мир в каталогах соответственно в "world_nether", "world_the_end". Обычный мир хранится одинаково для серверов в папке "world", как сказано выше. А вот с сохранением Nether и End есть различия и если обычный сервер - Vanilla Nethe хранит в /world/DIM-1, а End хранит в /world/DIM1. То Paper то же самое, но /world_nether/DIM-1 и /world_the_end/DIM1

Табличка

Табличка пути хранения мира
Табличка пути хранения мира

Подробнее вот тут: docs.papermc.io/paper/migration

Скачать миры можно например с помощью WinSCP, а посмотреть удобнее с Midnight Commander (mc).

WinSCP

WinSCP (официальный сайт: https://winscp.net, на моем дискe Яндекс.Диск, Гугл.Диск) Вот тут в статье об этом: "Установка дополнительных программ для комфортной работы с роутером" очень подробно расписано что такое WinSCP и как им пользоваться.

Установка сервера

sudo apt update
sudo apt upgrade
sudo apt install openssh-sftp-server

Но это не понадобится так как сервер sftp уже установлен по умолчанию.

Устанавливаем Midnight Commander (mc)

Установка дополнительных программ для комфортной работы с роутером

sudo apt update
sudo apt upgrade
sudo apt install mc

Теперь набираем

mc

И вот она магия.

mc без псевдографики
mc без псевдографики

Putty плохо по умолчанию воспроизводит псевдографику, нужно настраивать.

Можно автоматизировать процесс.

Создание резервной копии миров, команда CP

Для копирования файлов подойдёт команда "cp", вот как она будет выглядеть:

cp -r /папка1/папка1/Исходная_папка1/* /папка2/Конечная_папкапапка2/Конечная_папка2

Где:

Исходная_папка - папка с файлами откуда копируется

Конечная_папка - папка куда копируются.

-a -копируется включая все ссылки и учитывая все права доступа, используйте опцию

или

-r - копирует вместе с каталогами

-f - копирование с заменой существующих файлов

Например пусть полный путь до папок с мирами:

/home/mineuser/minecraft_server_paper/world/

/home/mineuser/minecraft_server_paper/world_nether/

/home/mineuser/minecraft_server_paper/world_the_end/

А путь сохранения:

/mnt/satawd/samba/public/backup/minecraft_world/world

/mnt/satawd/samba/public/backup/minecraft_world/world_nether

/mnt/satawd/samba/public/backup/minecraft_world/world_the_end

Все вместе будет выглядеть так:

cp -a /home/mineuser/minecraft_server_paper/world/* /mnt/satawd/samba/public/backup/minecraft_world/world
cp -a /home/mineuser/minecraft_server_paper/world_nether/* /mnt/satawd/samba/public/backup/minecraft_world/world_nether
cp -a /home/mineuser/minecraft_server_paper/world_the_end/* /mnt/satawd/samba/public/backup/minecraft_world/world_the_end

Скрипт копирования (backup.sh)

Теперь напишем скрипт, создадим файл с расширением .sh. Такие файлы могут быть использованы оболочкой Bash. Создаем файл:

touch backup.sh

Отредактируем его через "nano"

nano backup.sh

Внесем туда данные

#!/bin/bash
# Backup world minecraft
clear
echo -e "\033[32m --- Start backup! ---"
cp -r -f /home/mineuser/minecraft_server_paper/world/* /mnt/satawd/samba/public/backup/minecraft_world/world
cp -r -f /home/mineuser/minecraft_server_paper/world_nether/* /mnt/satawd/samba/public/backup/minecraft_world/world_nether
cp -r -f /home/mineuser/minecraft_server_paper/world_the_end/* /mnt/satawd/samba/public/backup/minecraft_world/world_the_end
echo -e " --- End backup! ---"
echo -e "\033[0m"
#End

Назначим ему права, позволяющие ему исполнять задачу которая заложена в него:

chmod +x backup.sh

Запустим его

cd /home/mineuser/minecraft_server_paper
./backup.sh

Отлично, вручную мы можем сохранять миры, но теперь напишем автоматизацию для cron

Автоматизацию для cron

Запускаем конфигурационный файл

crontab -e

Добавим строчки (мы создавали файл выше)

# Backup of worlds minecraft

* */2 * * * cd /home/mineuser/minecraft_server_paper/;sh ./backup.sh;

Будем запускать резервирование каждые 2 часа

Локальный компьютер

Ничего сложного нет, скачиваем Minecraft, Minecraft официальный сайт, устанавливаем. Добавляем наш сервер по кнопке "Add Server" или "Добавить":

 Добавляем сервер
Добавляем сервер

И подключаемся

Подключаемся к серверу
Подключаемся к серверу

Вот и всё, но как только новая информация появится я дополняю статью, поэтому как всегда...

Продолжение следует...

Подписывайтесь на мой канал TehnoZet-2, там много интересного! Мы только развиваемся! Понравилась статья, хотите продолжения - ставьте лайк, жмите палец вверх!

Пользуйтесь рубрикатором по каналу, там все по разделам: "Страничка путеводитель по каналу TehnoZet-2"

Подборки

Статьи по теме