Быстрое разворачивание Minecraft-сервера

st4opzp9wvvcjuy9ow1des08h5g.png

Играя в Minecraft в одиночку, всегда настаёт тот момент, когда хочется добавить к себе друзей в свой мир. Построить с ними вместе различные строения, отправиться в путешествие, вместе убить дракона или открыть новые миры. И тогда встаёт логичный вопрос: как создать свой сервер? До сего момента для игрищ использовал только сервера linux. А тут решил попробовать готовый сервер из Маркетплейса на Windows без графического интерфейса (чистый PowerShell). Мне кажется были собраны все грабли, которые только можно, но из битвы с Windows Server я вышел победителем.

Разворачиваем сервер


У меня есть некоторый опыт создания серверов Minecraft под linux, да и вообще администрирования linux, но совершенно не представлял как же быть с Windows. Возможно даже расскажу некоторые капитанские вещи, но для меня они были открытием. Самое большое откровение для меня был PowerShell. Даже не могу передать всех эмоций, использования Windows в консольном режиме. Microsoft сделало максимально неудобным всё. Почему нельзя было взять лучшее у *nix систем, внедрить у себя и улучшить? Почему нельзя сделать поддержку ssh, posix-совместимую систему команд, для чего этот велосипед?
Но спустя некоторое время даже начал получать некоторое удовольствие от интерфейса, и видеть даже какую-то логику. В общем, перейти с Windows на linux было сильно проще, чем сделать это обратно.
Итак, сервер я создавал в нашем Маркетплейсе:

dma9zgr95qfzjs1xrxb4yommgl4.png

После того, как на него клацаем, там есть небольшая инструкция, как его использовать. Но она оказалась недостаточной и во многом пришлось разбираться самому.

hnyasdbzjrz0_t_vlel143hfalo.png

Моя практика создания серверов показала, что для Minecraft-сервера необходимо не менее двух ядер, лучше больше 4-х ГБ ОЗУ. В целом, всё может работать на одном ядре, даже с 2 ГБ ОЗУ, но при большом количестве объектов, могут быть тормоза и пропуски хода.
Лично я такое наблюдал на куриной ферме, когда количество куриц у меня было более нескольких сотен. Тогда сервер реально начинал тормозить.

trr3uho5nmhgqu6ns2p6bhktpcq.png


Корпус для аккумулятора

После создания сервера, спустя несколько минут у нас будет IP-адресс сервера, его логин и пароль.

csdzlbk-evcia4q2z6jart-gcxk.png

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

Подключение к удалённому серверу из Windows


В Windows всё просто. Жмём «Пуск»→«Выполнить» и вводим mstsc. Вводим параметры нашего сервера.

mrk6jfnkw1c5u-okned_e58zas8.png

Если мы хотим копировать данные на сервер и с сервера (а я хочу), то идём во вкладку «Локальные ресурсы», и там нажимаем клавишу «Подробнее».

z6w5sk0fimpoopkjo3xoijz1qdw.png

И далее указываем какие жёсткие диски мы хотим подключить. Нам это будет необходимо, если мы захотим копировать различные моды или какой-то дополнительный софт на наш сервер.

rs_hbchesbvtrglxmgb3-ov08m4.png

После этого мы можем подключиться к нашему серверу и увидим одно единственное окно PowerShell.

bdlrzsenkwoyhq85wiwjbnas9bm.png

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

\\TSCLIENT\c


j8eqgpce_s5lf96wlgfgqxrcctm.png

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

Подключение к удалённому серверу из Linux


Вот подключение из Linux немного коварнее и сложнее, а главное работает не очень стабильно (особенно монтирование удалённых дисков). Но деваться некуда, поэтому будем использовать его. Для того, чтобы подключаться к удалённому рабочему столу машины с Windows, нам нужно установить программу Remmina.

sudo apt-get update
sudo apt-get install libfreerdp-plugins-standard remmina remmina-plugin-rdp


После установки запускаем remmina, и конфигурируем подключение к удалённому серверу.

trvrkoruqeobyink07qit3bnshi.png

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

\\TSCLIENT\rdpfiles


xfjszyzd3q0jhjoe5ykgujklezi.png

Стартуем ванильный сервер


Для того, чтобы стартовать базовый сервер, не требуется каких-то высоких материй. Для начала нам необходимо согласиться с лицензионным соглашением. Делается это командой

Approve-MinecraftEULA


esg9zhmc0xe2tdkx4o9hfppnozi.png

Всё, с этого момента сервер готов к работе. Мы можем его запустить командой

Start-Minecraft


И всё, ваш сервер готов к работе, он создаёт новый мир и идёт загрузка, но дьявол кроется в мелочах. Сам сервер очень старый, версии 1.15.2 (тогда как на момент написания этой статьи была версия Minecraft 1.16.4).

toprlwub5ly6vfo9-gc0vl45uiw.png

Но, продемонстрирую, что сервер в действительности работает. Надо только в лаунчере поставить запуск старой версии (1.15.2), и указать при сетевом подключении IP-адресс нашего сервера.

fbbvvibb4nkdwlfaj8arh2xw0mu.png


Подключение успешно состоялось.

Как же обновить сервер, спросите вы? Оказывается очень просто. Последняя версия сервера находится по следующему адресу. Там нужно будет скопировать ссылку на данный файл.
Все файлы этого Minecraft-сервера (кроме стартовых скриптов) обитают в папке C:\Minecraft\ . Поэтому переходим в неё, и все процедуры делаем в ней.

cd C:\Minecraft\
#удаляем старый сервер
rm C:\Minecraft\server.jar


Для того, чтобы скачать файл, в PowerShell есть аналог wget.

Invoke-WebRequest -Uri "http://www.contoso.com" -OutFile "C:\path\file"


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

Invoke-WebRequest -Uri "https://launcher.mojang.com/v1/objects/35139deedbd5182953cf1caa23835da59ca3d7cd/server.jar" -OutFile "./server.jar"


Всё, мы обновили наш ванильный сервер, и он готов к работе. Пробуем запустить.

Start-Minecraft


И видим, что у нас обновлённая версия сервера вполне себе работает.

gkccb4tr2z7vo4joeiosyk281vm.png

Устанавливаем моды


Эта часть попила у меня чудовищное количество крови, и я с ней очень долго бодался, пытаясь понять что же не так. Для того, чтобы работали моды, необходимо установить дополнение Forge. Не смотря на то, что скрипт запуска Forge есть на данном сервере, сам Forge не установлен! И это главная беда.
Обращаю ваше внимание, что для каждого мода требуется своя версия Forge! Поэтому ищите детальное описание на вашу модификацию, и подбирайте совместимость версии Forge и версии мода. Поскольку у меня не хватило терпения на этот квест подбора соответствующих модулей, то рассказываю основной принцип. Нет, forge с модулями завёлся, но не совсем так как от него ожидалось.
Нам необходимо скачать нужную версию Minecraft Forge (выбирайте подходящую версию под ваш мод). Для этого создадим временую папку C:\tmp:

mkdir c:\tmp 
cd c:\tmp
#скачиваем forge
Invoke-WebRequest -Uri "https://files.minecraftforge.net/maven/net/minecraftforge/forge/1.16.3-34.1.0/forge-1.16.3-34.1.0-launcher.jar" -OutFile "forge-1.16.3-34.1.0-launcher.jar"
#запускаем инсталятор
.\forge-installer.jar

Выбираем «Install server» и выбираем папку куда ставить (C:\Minecraft) жмём ОК. И дожидаемся загрузки.

fvc5v_yybsxsfijdhb5mai8uuwc.png

После окончания установки, будет выведено такое окно.

1irxiiv5thygm-4z3j_kpwyz5le.png

Успешность установки, можно проверить командой.

Start-Minecraft -Type Forge -LogFile "C:\Minecraft\stdout.txt" -MinecraftPath "C:\Minecraft"

Если всё запускается без ошибок, всё, ваш сервер готов к запуску модов. Дальше вы можете моды скопировать в вашу сетевую папку, в моём случае rdpfiles и затем скопировать все моды в папку C:\Minecraft\mods\ (предварительно её создав).

mkdir C:\Minecraft\mods\
cd \\TSCLIENT\rdpfiles
cp *.jar C:\Minecraft\mods\


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

rm C:\Minecraft\world\ 


Соглашаемся со всем, нажимая букву «А» на латинской клавиатуре. Всё, можем стартовать новый мир с модами.

Start-Minecraft -Type Forge -LogFile "C:\Minecraft\stdout.txt" -MinecraftPath "C:\Minecraft"


Удалять моды можно точно так же удаляя файлы в папке C:\Minecraft\mods\.

Белые списки и другие настройки сервера


Если вы создаёте сервер для друзей, не забывайте делать белые списки. А то бывают всякие неприятные ребятки, которые каким-то образом находят ваш тайный сервер и пакостят. У меня был случай, когда такой вот нехороший человек минировал наши дома. При чём несколько раз. На третий раз я психанул и разобрался с созданием белых списков для белых господ.
Белые списки можно включить через конфигурационный файл, но сильно проще их настроить прямо в консоли сервера. Для этого прямо в консоли пишем:

whitelist on


cebaqqpxg6ji1qfjdftvu4pqhji.png

Можно даже попробовать зайти на сервер и убедиться, что никто теперь на него не зайдёт.

x0fy438acleq81zkq-n0rp2aj3g.png

После этого можно добавить всех игроков, которые будут находиться на данном сервере. Добавлю пока только себя.

whitelist add dlinyj 


tjh3jnqcjwafdcswhrgrzkmojwy.png

Всё, теперь я могу заходить на данный сервер.

Для того, чтобы конфигурировать сервер, нужно править файл server.properties. Завершить работу сервера можно комбинацией ctrl-c. Далее можно открыть этот файл обычным блокнотом.

.\notepad.exe C:\Minecraft\server.properties


87cucfsjimm2feowyj95k1xz_pw.png

Расписывание всех полей конфигурации сервера выходит за рамки этой статьи, поэтому вы можете ознакомиться с этим самостоятельно вот тут. Некоторые параметры можно менять прямо в консоли сервера, и они автоматически сохраняться в файле server.properties. Пример такого параметра — это создание белых списков. Что-то можно менять вручную. Экспериментируйте.

Выводы


Для меня был интересный опыт работы с серверной виндой, после linux. И каждый раз сталкивался с тем, что каждую команду надо было искать заново. Например, чтобы перезагрузить сервер, будет команда:

Restart-Computer 


Если случайно закрыть окно PowerShell, то запустить его можно комбинацией Ctrl-Shift-Esc. Затем там выполнить PowerShell.

xp9-b60-wwzumxto5fepog-mvjs.png
dmk_egzl1yiqovic2wfu6fd2isw.png

В общем, открытий чудных Windows нам таила.
Можно много чего рассказать, и про установку Far-менеджера, и то где лежат настроечные скрипты. Но мне кажется, что эта статья даст понимание как же быстро и просто развернуть свой игровой сервер.

oug5kh6sjydt9llengsiebnp40w.png

3piw1j3wd_cgmzq9sefgferaumu.png

© Habrahabr.ru