![](https://habrastorage.org/webt/d8/2p/er/d82pervspatxhxaex5xjqnylzva.png)
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.
![](https://habrastorage.org/getpro/habr/post_images/9e0/1e3/56b/9e01e356b0f25e5e9d2a0241119b43fa.png)
Скачиваем файл с помощью утилиты wget и скопированной ссылки:
wget https://piston-data.mojang.com/v1/objects/8dd1a28015f51b1803213892b50b7b4fc76e594d/server.jar
Настало время запустить установленный сервер и отправиться в путешествие по просторам виртуального мира! Запускаем сервер с помощью следующей команды:
java -Xmx1024M -Xms1024M -jar server.jar nogui
Упс! У вас тоже произошла ошибка?
![](https://habrastorage.org/getpro/habr/post_images/71a/ac6/120/71aac61206dadd73bd6adabb896aaccc.png)
Без паники. Ошибки возникли, потому что сервер не смог обнаружить файлы 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
Теперь сервер запустился успешно!
![](https://habrastorage.org/getpro/habr/post_images/d0c/5cd/e9c/d0c5cde9cd9fb9b1d8f3c0a7ea772ee6.png)
![](https://habrastorage.org/webt/nb/lo/t_/nblot_ve1t3hcw5bluwc_-did08.png)
Как приступить к игре
Изменение параметра online-mode
Автоматически при установке сервера в конфигурационном файле выставлен параметр online-mode = true. Это значит, что сервер Minecraft будет проверять подлинность учетных записей игроков через официальные серверы Mojang перед разрешением доступа к игровому миру. Для отключения проверки нам необходимо изменить значение параметра на false.
Останавливаем наш сервер командой:
stop
Открываем конфигурационный файл server.properties через редактор nano:
nano server.properties
На 23 строчке документа находим параметр online-mode и выставляем ему значение false:
![](https://habrastorage.org/getpro/habr/post_images/d17/15a/b58/d1715ab585e222b237b1ca83bdd2a3ee.png)
Дополнительную информацию о параметрах, представленных в файле 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. Нажимаем кнопку Установить:
![](https://habrastorage.org/getpro/habr/post_images/d02/e3d/79b/d02e3d79b3975fb9615e5100cffb6615.png)
В открывшемся окне выбираем режим Multiplayer:
![](https://habrastorage.org/getpro/habr/post_images/ab8/820/590/ab88205900573aeb88e77c7d689a44f1.png)
Добавляем наш сервер по кнопке Add Server:
![](https://habrastorage.org/getpro/habr/post_images/9c7/387/3a3/9c73873a38b083f5db9a6b1595631a33.png)
Указываем наименование сервера в поле Server Name и адрес подключения в поле Server Address, после добавляем сервер по кнопке Done:
![](https://habrastorage.org/getpro/habr/post_images/21a/2ea/a42/21a2eaa42cc62d90a8ec419160250552.png)
Замените <IP-адрес> на IP-адрес вашего сервера, на котором развернут и запущен Minecraft.
Наш сервер добавлен и теперь будет отображаться в разделе Multiplayer. Подключиться к запущенному серверу можно по кнопке Join Server:
![](https://habrastorage.org/getpro/habr/post_images/570/f99/e4f/570f99e4f80f377a15cc8f545e170bb5.png)
Как сделать бэкап сервера в объектное хранилище
Бэкапы позволяют предотвратить потерю информации при неисправности оборудования, атаках вредоносного ПО, случайном удалении данных или ошибках по неосторожности. Если у вас есть резервная копия, вы можете восстановить данные и продолжить работу.
Почему объектное хранилище?
Создание бэкапа в объектное хранилище Selectel имеет несколько преимуществ.
- Масштабируемость. У вас нет ограничения на объем сохраняемых данных. Можете легко добавлять и удалять объекты из хранилища без значительного влияния на производительность.
- Вариативность доступа. Для работы с объектным хранилищем есть множество консольных и графических инструментов. Можно обращаться к объектам по разным уникальным идентификаторам и получать доступ к ним через API, что упрощает автоматизацию и интеграцию с другими системами.
- Отказоустойчивость. Каждый объект сохраняется в трех копиях, которые размещаются на отдельных серверах и располагаются в различных стойках. Такая система обеспечивает высокий уровень надежности хранения данных. В случае возникновения проблем с одним сервером или даже поломки всей стойки ваши данные будут в порядке.
-
Стоимость. Плата списывается только за фактически использованное место.
Это может быть экономически выгодным вариантом по сравнению с традиционными решениями хранения данных. Стоимость хранения 1ГБ составит 2,29 ₽/мес.
Что нам понадобится
- Контейнер в Объектном хранилище.
- Сервисный пользователь.
- S3 ключи для авторизации.
Создание контейнера
Авторизуемся в панели управления my.selectel.ru и переходим в раздел Объектное хранилище. Затем кликаем по кнопке Создать контейнер.
![](https://habrastorage.org/getpro/habr/post_images/cb3/250/fe4/cb3250fe428fbfdf6d517a13b17e1b53.png)
Указываем параметры контейнера:
- Имя: наименование контейнера латинскими буквами с нижним регистром.
- Тип: Публичный.
- Класс хранения: Холодное хранение.
- Адресация: Virtual-Hosted адресация позволяет использовать CORS. Если она включена, ее больше нельзя отключить. Включается на ваше усмотрение.
И кликаем по кнопке Создать контейнер.
![](https://habrastorage.org/getpro/habr/post_images/793/58d/2e3/79358d2e33f682494837b102d19ccf31.png)
Создание сервисного пользователя
Сервисный пользователь — это пользователь с учетной записью для программного доступа к продукту через API и другие инструменты автоматизации.
Для создания сервисного пользователя переходим на страницу настроек профиля, кликнув по кнопке из выпадающего списка Профиль и настройки.
![](https://habrastorage.org/getpro/habr/post_images/996/7ab/9d1/9967ab9d12b9c5080b047d8da9ff9935.png)
В разделе Управление пользователями переходим во вкладку Сервисные пользователи и нажимаем на кнопку Добавить пользователя.
![](https://habrastorage.org/getpro/habr/post_images/be1/adf/3a5/be1adf3a54857565a57aef0de3381cdd.png)
В параметрах при добавлении пользователя указываем роль Администратор объектного хранилища и проект облачной платформы, в котором находится наш контейнер. В завершение создаем пользователя по кнопке Добавить пользователя.
![](https://habrastorage.org/getpro/habr/post_images/63c/3e5/1be/63c3e51be79307d2e5cce05a0bdb63fd.png)
Выдача S3 ключа
Переходим в карточку пользователя, нажав на его имя. В нашем случае Стив.
![](https://habrastorage.org/getpro/habr/post_images/3e8/9bc/3b8/3e89bc3b8ccb639e940aeba0457911aa.png)
Для выдачи S3 ключа нажимаем кнопку Добавить ключ в разделе S3 ключи.
![](https://habrastorage.org/getpro/habr/post_images/9ec/f30/b5b/9ecf30b5b855fa91a97caceb54fbc5e6.png)
Указываем наименование ключа и проект, которому он будет привязан. Для создания нажимаем кнопку Сгенерировать.
![](https://habrastorage.org/getpro/habr/post_images/bfb/54f/dc0/bfb54fdc00256e438328b06bab4bb847.png)
В открывшемся окне вы увидите значения:
- 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)
GritsanY
01.04.2024 11:01+7Отключив аутентификацию учётных записей на серверах Mojang, ваш сервер неизбежно подвергнется набегу гриферов, не спасёт ни смена порта, ни "белый список".
Рекомендую всё-таки потратиться на лицензию (ваша статья хоть и не говорит об этом на прямую, но подталкивает использовать пиратскую версию игры - тут и Tlauncher, и отключение online mode), или уж на крайний случай перевести сервер на Paper или подобный ему и поставить плагин аутентификации.
Ну и, конечно, традиционно для подобных статей нужно упомянуть docker образ itzg/minecraft https://github.com/itzg/docker-minecraft-server, который если оседлать, сильно облегчает процесс запуска, обновления, бекапа сервера и добавления модов/плагинов.
andrey_nado
01.04.2024 11:01потратиться на лицензию
Недоступно из России.
GritsanY
01.04.2024 11:01+3Справедливо. Но Хабр ≠ Россия, да и в общем тема пиратства довольно важна в контексте статьи. Тот же TLauncher довольно мутный и рекомендовать его можно только в случае, если лицензии нет, как и возможности её купить.
v_chaplyak
01.04.2024 11:01Сам обладатель лицензии. Но ко многим серверам не подключится - нужно ставить клиент тот что дают(хотя там модов никаких нету). Дома с сыном по сети не получилось сыграть, с двух ПК с одной лицензией низя. Себе ставил TLauncher
anrewcpp
01.04.2024 11:01А можете, пожалуйста, рассказать, почему белый список не спасёт от гриферов? Есть какие-то подводные камни?
GritsanY
01.04.2024 11:01Я не знаю подробностей, но судя по всему, есть какая-то недокументированная (а может и документированная) возможность получить этот список с сервера или сбрутфорсить именя пользователей из списка, потому что мой сервер закрытый whitelist-ом и с отключенным online mode, был неоднократно вандализирован гриферами. Если вы знаете имя пользователя из whitelist-а, тот же TLauncher позволяет задать любое имя при запуске Minecraft в offline режиме и вы можете легко подключиться к серверу.
Если у вас сервер с мод-паком, то он в меньшей опасности, так как гриферам нужно ещё и подключаться с сответствующими модами и их версиями, ведь сервер даёт отлуп при несовпадении. По крайней мере мои сервера с мод-паками месяцами торчат наружу и никто их не трогает (в отличие от ванильных).
M_AJ
01.04.2024 11:01+1Рекомендую всё-таки потратиться на лицензию (ваша статья хоть и не
говорит об этом на прямую, но подталкивает использовать пиратскую версию
игрыЭтот вариант предполагает убедить всех играющих так же потратиться на лицензию. Если все, с кем вы играете имеют лицензионную версию, то это замечательно, но есть ненулевая вероятность, что так повезет не всем.
Как обходной вариант, можно закрыться фаерволом и написать простейшее веб-приложение, которое будет добавлять ip авторизовавшегося пользователя в белый фаервола на сутки. Это защитит от случайных посетителей.
anrewcpp
01.04.2024 11:01+1Как раз недавно поднимал модовую сборку 1.19.2. Для сервера взял Spigot. Расчёт был на не супер большое количество модов и на одновременную игру не более 5-ти человек. Собирал и тестировал всё локально и потом просто запушил на хост - это намного, имхо, удобнее.
По поводу TLauncher - поправьте, если не прав, но его репутация оставляет желать лучшего...Stam_emg
01.04.2024 11:01+1Хотел бы внести ясность, тк недавно сам запутался с TLauncher-ами.
Текущий TLauncher - мутный, но изначальный проект под тем же именем, который потом переименовался - назывался TLauncher Legacy, а ныне - Legacy Launcher. И в отличие от текущего "мутного" TLauncher - он вполне вменяемый.
Sazonov
01.04.2024 11:01Был у нас когда-то свой сервер на работе, году эдак в 2012, с небольшим но удачным подбором модов. Там зверушки были (оборотни, змеи, големы), industrial craft, build craft, какие-то chests / pipes / solar panels и главное - с полным набором текстур и картой по типу google maps. Я пробовал готовое что-то похожее искать на всяких curseforge но не нашел. Либо модов 100500 штук, либо текстур нет, либо всякие несовместимости.
Может посоветуете какой-нибудь сервак с клиентом для самостоятельного разворачивания?
GritsanY
01.04.2024 11:01+1Ну если вам нужен конкретный набор модов, вам или долго искать модпак на curseforge (там их так много, что скорее всего нужный вам в списке найдётся), либо там же искать конкретные моды и самому собирать модпак.
Можно тот же itzg/minecraft-docker-server использовать для поднятия сервера и указать persistent volume, куда сложить моды. Для клиента можно использовать Prism launcher/ATLauncher и собрать аналогичный клиентский модпак.
Кстати, на curseforge свет клином не сошёлся и много интересного есть на modrinth, куда уехали многие недовольные площадкой curseforge модописатели.
Sazonov
01.04.2024 11:01У меня основная проблема была - это текстуры собрать ко всем модам. Очень раздражает когда 50% того что видишь идёт со стандартными текстурами. Хочется хотя бы минимальный апскеил. Спасибо, поковыряюсь. Хотелось что-то готовое из коробки.
d3n4k
01.04.2024 11:01+2Для майнкрафта важна частота процессора, а вот количество ядер не столь критична.
begin_end
01.04.2024 11:01Да, обычный непереписанный моно-сервер (без разделения на подсервера банжой) хоть и на Spigot практически всю обработку выполняет в 1 потоке. Все большие сервера (от 1к онлайна/подсервер) часто имеют переделку ПО на многопоточность).
Breathe_the_pressure
Сколько пользователей нормально могут играть на 4 Гб? У меня сынуля запускает сервак на своём ноуте, так на 11 интеле и 8 Гб он нормально ресурсов отжирает. Ну на 5-7 человек хватает, а дальше наврядли.
VadimBoev
существуют разные ядра серверов, обычный от mojang он не оптимизирован
К примеру есть ядра: Paper, Pufferfish, Purpur (Spigot)
Haze27
Хостил сборку на 50+ модов, было 4гб и 1 ядро, использовали Mohist как ядро, по итогу - играли месяц 2-6 рыл, исследовали много чанков. А если без модов, то есть ещё более оптимизированные ядра вроде Spigot или PaperSpigot
M_AJ
Зависит еще от самих модов, есть более прожорливые, есть менее.
begin_end
Для справки, на версии Spigot 1.12.2 + bungee сервер с 32Гб памяти держал до 200 игроков онлайна с падением тикрейта до 5 на наиболее наполненном подсервере (6 подсерверов, основные из которых обвешаны десятками плагинов, правда многие из которых были оптимизированы или выполняли функции оптимизации). Процессор 4790k и 200Мбит подключение. Дальнейшее наполнение игроками лимитировалось сетью (подключения начинали дропаться).