Minecraft открывает большие возможностями для творчества. Вы можете реализовать креативные идеи, играть вместе с друзьями и создавать сообщество единомышленников. А будучи администратором сервера — получаете полный контроль над поведением игроков, можете поддерживать порядок в сообществе или сохранять изменения мира.

Посмотрим, как развернуть сервер Minecraft на операционной системе Ubuntu и создать бэкапы в объектное хранилище через утилиту s3fs. Подробности — под катом.

Содержание:

Как создать сервер Minecraft
Как приступить к игре
Как сделать бэкап сервера в объектное хранилище

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


Аппаратные требования


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

  • Многоядерный процессор с высокой тактовой частотой. Он обеспечит плавный игровой процесс и обработку большого количества запросов от игроков.
  • Оперативная память с объемом от 4 ГБ и выше, особенно если вы планируете хостить сервер с большим количеством игроков и использовать дополнительные модификации.
  • Место на жестком диске нужно рассчитывать для хранения игровых данных, текстур, модов и плагинов.
  • Стабильное высокоскоростное интернет-соединение.

В структуре Selectel вы можете арендовать выделенный сервер или сервер облачной платформы для развертывания сервера Minecraft. Если вам понадобится помощь в выборе сервера, наиболее подходящего для решения ваших целей, пишите нам на sales@selectel.ru или звоните 8 800 555 06 75 — изучим задачу и подберем подходящее решение.

Развертывание сервера


В данной статье мы рассмотрим процесс развертывания сервера на операционной системе Ubuntu. Для начала необходимо подключиться к серверу. Обычно подключение выполняется по SSH, также вы можете воспользоваться web-консолью, если она подключена к вашему серверу.

После подключения в терминале выполняем команду:

sudo apt-get update

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

Далее устанавливаем Java Development Kit (JDK). Это комплект разработчика для создания и запуска программ, созданных на языке программирования Java. Мы будем использовать JDK для запуска самого сервера, поскольку сервер Minecraft написан на Java.

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

sudo apt-get install openjdk-17-jdk

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

mkdir minecraft_server 
cd minecraft_server

Теперь скачиваем утилиту wget, с помощью которой мы сможем загрузить серверный JAR-файл с последней версией Minecraft:

sudo apt-get install wget

JAR-файл (Java Archive) является исполняемым файлом, он содержит необходимые компоненты для запуска сервера Minecraft. В нем лежат код и ресурсы, обеспечивающие работу сервера. Формат JAR является стандартным форматом для дистрибуции и запуска Java-приложений.

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


Скачиваем файл с помощью утилиты wget и скопированной ссылки:

wget https://piston-data.mojang.com/v1/objects/8dd1a28015f51b1803213892b50b7b4fc76e594d/server.jar

Настало время запустить установленный сервер и отправиться в путешествие по просторам виртуального мира! Запускаем сервер с помощью следующей команды:

java -Xmx1024M -Xms1024M -jar server.jar nogui

Упс! У вас тоже произошла ошибка?


Без паники. Ошибки возникли, потому что сервер не смог обнаружить файлы eula.txt (файл лицензионного соглашения конечного пользователя) и server.properties (файл конфигурации). Однако сервер уже автоматически создал их в текущей директории.

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

nano eula.txt

В открывшемся файле на первой строке представлена ссылка на пользовательское соглашение:

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://aka.ms/MinecraftEULA).

Ознакомьтесь с текстом по ссылке и замените в файле значение параметра eula с false на true. Таким образом вы принимаете условия пользовательского соглашения.

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

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

java -Xmx1024M -Xms1024M -jar server.jar nogui

Теперь сервер запустился успешно!




Как приступить к игре


Изменение параметра online-mode


Автоматически при установке сервера в конфигурационном файле выставлен параметр online-mode = true. Это значит, что сервер Minecraft будет проверять подлинность учетных записей игроков через официальные серверы Mojang перед разрешением доступа к игровому миру. Для отключения проверки нам необходимо изменить значение параметра на false.

Останавливаем наш сервер командой:

stop 

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

nano server.properties 

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


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

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

Снова запускаем наш сервер:

java -Xmx1024M -Xms1024M -jar server.jar nogui

Ограничение доступа


При необходимости вы можете ограничить доступ к вашему серверу, использовав оператор whitelist — от английского «белый список». Когда функция whitelist активирована, только игроки, чьи имена присутствуют в списке, смогут подключиться и играть на сервере.

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

whitelist on

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

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

Ознакомиться с другими командами для изменения параметров игры можно в разделе «Командные консоли» на Minecraft Wiki.

Любите детективы? Пройдите квест «В поисках пропавших ссылок»! Регистрируйтесь на сайте и попробуйте себя в роли сыщика: найдите на страницах Selectel спрятанные ссылки и первыми дойдите до финала. Выиграйте эксклюзивный мерч и промокод на сервисы Selectel.



Установка лаунчера и запуск игры


На локальный компьютер скачиваем лаунчер — это программа для запуска других приложений.

Открываем лаунчер и внизу появившегося окна указываем имя, с которым будет запущена игра, а также актуальную версию игры — 1.20.4. Нажимаем кнопку Установить:


В открывшемся окне выбираем режим Multiplayer:


Добавляем наш сервер по кнопке Add Server:


Указываем наименование сервера в поле Server Name и адрес подключения в поле Server Address, после добавляем сервер по кнопке Done:


Замените <IP-адрес> на IP-адрес вашего сервера, на котором развернут и запущен Minecraft.

Наш сервер добавлен и теперь будет отображаться в разделе Multiplayer. Подключиться к запущенному серверу можно по кнопке Join Server:


Как сделать бэкап сервера в объектное хранилище


Бэкапы позволяют предотвратить потерю информации при неисправности оборудования, атаках вредоносного ПО, случайном удалении данных или ошибках по неосторожности. Если у вас есть резервная копия, вы можете восстановить данные и продолжить работу.

Почему объектное хранилище?


Создание бэкапа в объектное хранилище Selectel имеет несколько преимуществ.
  • Масштабируемость. У вас нет ограничения на объем сохраняемых данных. Можете легко добавлять и удалять объекты из хранилища без значительного влияния на производительность.
  • Вариативность доступа. Для работы с объектным хранилищем есть множество консольных и графических инструментов. Можно обращаться к объектам по разным уникальным идентификаторам и получать доступ к ним через API, что упрощает автоматизацию и интеграцию с другими системами.
  • Отказоустойчивость. Каждый объект сохраняется в трех копиях, которые размещаются на отдельных серверах и располагаются в различных стойках. Такая система обеспечивает высокий уровень надежности хранения данных. В случае возникновения проблем с одним сервером или даже поломки всей стойки ваши данные будут в порядке.
  • Стоимость. Плата списывается только за фактически использованное место.
    Это может быть экономически выгодным вариантом по сравнению с традиционными решениями хранения данных. Стоимость хранения 1ГБ составит 2,29 ₽/мес.

Что нам понадобится


  • Контейнер в Объектном хранилище.
  • Сервисный пользователь.
  • S3 ключи для авторизации.

Создание контейнера


Авторизуемся в панели управления my.selectel.ru и переходим в раздел Объектное хранилище. Затем кликаем по кнопке Создать контейнер.



Указываем параметры контейнера:

  • Имя: наименование контейнера латинскими буквами с нижним регистром.
  • Тип: Публичный.
  • Класс хранения: Холодное хранение.
  • Адресация: Virtual-Hosted адресация позволяет использовать CORS. Если она включена, ее больше нельзя отключить. Включается на ваше усмотрение.

И кликаем по кнопке Создать контейнер.


Создание сервисного пользователя


Сервисный пользователь — это пользователь с учетной записью для программного доступа к продукту через API и другие инструменты автоматизации.

Для создания сервисного пользователя переходим на страницу настроек профиля, кликнув по кнопке из выпадающего списка Профиль и настройки.


В разделе Управление пользователями переходим во вкладку Сервисные пользователи и нажимаем на кнопку Добавить пользователя.


В параметрах при добавлении пользователя указываем роль Администратор объектного хранилища и проект облачной платформы, в котором находится наш контейнер. В завершение создаем пользователя по кнопке Добавить пользователя.


Выдача S3 ключа


Переходим в карточку пользователя, нажав на его имя. В нашем случае Стив.


Для выдачи S3 ключа нажимаем кнопку Добавить ключ в разделе S3 ключи.


Указываем наименование ключа и проект, которому он будет привязан. Для создания нажимаем кнопку Сгенерировать.


В открывшемся окне вы увидите значения:

  • Access key — Access Key ID, идентификатор ключа;
  • Secret key — Secret Access Key, секретный ключ.

Обязательно сохраните значения созданного ключа, потому что после закрытия окна вы не сможете больше увидеть значение Secret key. В рамках панели управления будет отображаться только наименование ключа, проект, которому он принадлежит, и значение Access key.

Бэкап мира через утилиту s3fs


Рассмотрим создание бэкапа в объектное хранилище через утилиту s3fs. Это удобный инструмент для монтирования объектного хранилища в виде файловой системы.

Для начала устанавливаем утилиту s3fs командой:

sudo apt-get update

sudo apt-get install s3fs

Далее создаем файл с данными для авторизации в домашней директории:

echo "<accessKeyId>:<secretAccessKey>" > .passwd-s3fs

Замените accessKeyId и secretAccessKey на ваши данные для авторизации, которые мы получали ранее через панель управления.

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

chmod 600 ~/.passwd-s3fs

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

mkdir ~/minecraft_backup

Теперь монтируем контейнер командой:

s3fs <наименование_контейнера> <путь_к_каталогу монтирования> -o passwd_file=<путь_файлу_с_данными_авторизации> -o use_path_request_style -o endpoint=ru-1 -o url=https://s3.ru-1.storage.selcloud.ru

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

s3fs <наименование_контейнера> ~/minecraft_backup -o passwd_file=~/.passwd-s3fs -o use_path_request_style -o endpoint=ru-1 -o url=https://s3.ru-1.storage.selcloud.ru

Переносим все данные из директории, где хранятся данные нашего сервера minecraft_server, в примонтированный контейнер minecraft_backup через утилиту cp:

cp ~/minecraft_server ~/minecraft_backup

Готово! Теперь вы умеете разворачивать сервер Minecraft и создавать его резервную копию. Играйте и не думайте о последствиях, ведь сервер всегда можно восстановить из резервной копии! Если, конечно, сохранить…

Комментарии (20)


  1. Breathe_the_pressure
    01.04.2024 11:01

    Сколько пользователей нормально могут играть на 4 Гб? У меня сынуля запускает сервак на своём ноуте, так на 11 интеле и 8 Гб он нормально ресурсов отжирает. Ну на 5-7 человек хватает, а дальше наврядли.


    1. VadimBoev
      01.04.2024 11:01
      +2

      существуют разные ядра серверов, обычный от mojang он не оптимизирован
      К примеру есть ядра: Paper, Pufferfish, Purpur (Spigot)


    1. Haze27
      01.04.2024 11:01
      +1

      Хостил сборку на 50+ модов, было 4гб и 1 ядро, использовали Mohist как ядро, по итогу - играли месяц 2-6 рыл, исследовали много чанков. А если без модов, то есть ещё более оптимизированные ядра вроде Spigot или PaperSpigot


      1. M_AJ
        01.04.2024 11:01

        Зависит еще от самих модов, есть более прожорливые, есть менее.


    1. begin_end
      01.04.2024 11:01

      Для справки, на версии Spigot 1.12.2 + bungee сервер с 32Гб памяти держал до 200 игроков онлайна с падением тикрейта до 5 на наиболее наполненном подсервере (6 подсерверов, основные из которых обвешаны десятками плагинов, правда многие из которых были оптимизированы или выполняли функции оптимизации). Процессор 4790k и 200Мбит подключение. Дальнейшее наполнение игроками лимитировалось сетью (подключения начинали дропаться).


  1. GritsanY
    01.04.2024 11:01
    +7

    Отключив аутентификацию учётных записей на серверах Mojang, ваш сервер неизбежно подвергнется набегу гриферов, не спасёт ни смена порта, ни "белый список".

    Рекомендую всё-таки потратиться на лицензию (ваша статья хоть и не говорит об этом на прямую, но подталкивает использовать пиратскую версию игры - тут и Tlauncher, и отключение online mode), или уж на крайний случай перевести сервер на Paper или подобный ему и поставить плагин аутентификации.

    Ну и, конечно, традиционно для подобных статей нужно упомянуть docker образ itzg/minecraft https://github.com/itzg/docker-minecraft-server, который если оседлать, сильно облегчает процесс запуска, обновления, бекапа сервера и добавления модов/плагинов.


    1. andrey_nado
      01.04.2024 11:01

      потратиться на лицензию

      Недоступно из России.


      1. GritsanY
        01.04.2024 11:01
        +3

        Справедливо. Но Хабр ≠ Россия, да и в общем тема пиратства довольно важна в контексте статьи. Тот же TLauncher довольно мутный и рекомендовать его можно только в случае, если лицензии нет, как и возможности её купить.


        1. v_chaplyak
          01.04.2024 11:01

          Сам обладатель лицензии. Но ко многим серверам не подключится - нужно ставить клиент тот что дают(хотя там модов никаких нету). Дома с сыном по сети не получилось сыграть, с двух ПК с одной лицензией низя. Себе ставил TLauncher


      1. kin4stat
        01.04.2024 11:01

        Турецкие ключи прекрасно покупаются на неназываемых площадках


    1. anrewcpp
      01.04.2024 11:01

      А можете, пожалуйста, рассказать, почему белый список не спасёт от гриферов? Есть какие-то подводные камни?


      1. GritsanY
        01.04.2024 11:01

        Я не знаю подробностей, но судя по всему, есть какая-то недокументированная (а может и документированная) возможность получить этот список с сервера или сбрутфорсить именя пользователей из списка, потому что мой сервер закрытый whitelist-ом и с отключенным online mode, был неоднократно вандализирован гриферами. Если вы знаете имя пользователя из whitelist-а, тот же TLauncher позволяет задать любое имя при запуске Minecraft в offline режиме и вы можете легко подключиться к серверу.

        Если у вас сервер с мод-паком, то он в меньшей опасности, так как гриферам нужно ещё и подключаться с сответствующими модами и их версиями, ведь сервер даёт отлуп при несовпадении. По крайней мере мои сервера с мод-паками месяцами торчат наружу и никто их не трогает (в отличие от ванильных).


    1. M_AJ
      01.04.2024 11:01
      +1

      Рекомендую всё-таки потратиться на лицензию (ваша статья хоть и не
      говорит об этом на прямую, но подталкивает использовать пиратскую версию
      игры

      Этот вариант предполагает убедить всех играющих так же потратиться на лицензию. Если все, с кем вы играете имеют лицензионную версию, то это замечательно, но есть ненулевая вероятность, что так повезет не всем.

      Как обходной вариант, можно закрыться фаерволом и написать простейшее веб-приложение, которое будет добавлять ip авторизовавшегося пользователя в белый фаервола на сутки. Это защитит от случайных посетителей.


  1. anrewcpp
    01.04.2024 11:01
    +1

    Как раз недавно поднимал модовую сборку 1.19.2. Для сервера взял Spigot. Расчёт был на не супер большое количество модов и на одновременную игру не более 5-ти человек. Собирал и тестировал всё локально и потом просто запушил на хост - это намного, имхо, удобнее.
    По поводу TLauncher - поправьте, если не прав, но его репутация оставляет желать лучшего...


    1. Stam_emg
      01.04.2024 11:01
      +1

      Хотел бы внести ясность, тк недавно сам запутался с TLauncher-ами.

      Текущий TLauncher  - мутный, но изначальный проект под тем же именем, который потом переименовался - назывался TLauncher Legacy, а ныне - Legacy Launcher. И в отличие от текущего "мутного" TLauncher - он вполне вменяемый.


  1. Sazonov
    01.04.2024 11:01

    Был у нас когда-то свой сервер на работе, году эдак в 2012, с небольшим но удачным подбором модов. Там зверушки были (оборотни, змеи, големы), industrial craft, build craft, какие-то chests / pipes / solar panels и главное - с полным набором текстур и картой по типу google maps. Я пробовал готовое что-то похожее искать на всяких curseforge но не нашел. Либо модов 100500 штук, либо текстур нет, либо всякие несовместимости.

    Может посоветуете какой-нибудь сервак с клиентом для самостоятельного разворачивания?


    1. GritsanY
      01.04.2024 11:01
      +1

      Ну если вам нужен конкретный набор модов, вам или долго искать модпак на curseforge (там их так много, что скорее всего нужный вам в списке найдётся), либо там же искать конкретные моды и самому собирать модпак.

      Можно тот же itzg/minecraft-docker-server использовать для поднятия сервера и указать persistent volume, куда сложить моды. Для клиента можно использовать Prism launcher/ATLauncher и собрать аналогичный клиентский модпак.

      Кстати, на curseforge свет клином не сошёлся и много интересного есть на modrinth, куда уехали многие недовольные площадкой curseforge модописатели.


      1. Sazonov
        01.04.2024 11:01

        У меня основная проблема была - это текстуры собрать ко всем модам. Очень раздражает когда 50% того что видишь идёт со стандартными текстурами. Хочется хотя бы минимальный апскеил. Спасибо, поковыряюсь. Хотелось что-то готовое из коробки.


  1. d3n4k
    01.04.2024 11:01
    +2

    Для майнкрафта важна частота процессора, а вот количество ядер не столь критична.


    1. begin_end
      01.04.2024 11:01

      Да, обычный непереписанный моно-сервер (без разделения на подсервера банжой) хоть и на Spigot практически всю обработку выполняет в 1 потоке. Все большие сервера (от 1к онлайна/подсервер) часто имеют переделку ПО на многопоточность).