Играя в Minecraft в одиночку, всегда настаёт тот момент, когда хочется добавить к себе друзей в свой мир. Построить с ними вместе различные строения, отправиться в путешествие, вместе убить дракона или открыть новые миры. И тогда встаёт логичный вопрос: как создать свой сервер? До сего момента для игрищ использовал только сервера linux. А тут решил попробовать готовый сервер из Маркетплейса на Windows без графического интерфейса (чистый PowerShell). Мне кажется были собраны все грабли, которые только можно, но из битвы с Windows Server я вышел победителем.
Разворачиваем сервер
У меня есть некоторый опыт создания серверов Minecraft под linux, да и вообще администрирования linux, но совершенно не представлял как же быть с Windows. Возможно даже расскажу некоторые капитанские вещи, но для меня они были открытием. Самое большое откровение для меня был PowerShell. Даже не могу передать всех эмоций, использования Windows в консольном режиме. Microsoft сделало максимально неудобным всё. Почему нельзя было взять лучшее у *nix систем, внедрить у себя и улучшить? Почему нельзя сделать поддержку ssh, posix-совместимую систему команд, для чего этот велосипед?
Но спустя некоторое время даже начал получать некоторое удовольствие от интерфейса, и видеть даже какую-то логику. В общем, перейти с Windows на linux было сильно проще, чем сделать это обратно.
Итак, сервер я создавал в нашем Маркетплейсе:
После того, как на него клацаем, там есть небольшая инструкция, как его использовать. Но она оказалась недостаточной и во многом пришлось разбираться самому.
Моя практика создания серверов показала, что для Minecraft-сервера необходимо не менее двух ядер, лучше больше 4-х ГБ ОЗУ. В целом, всё может работать на одном ядре, даже с 2 ГБ ОЗУ, но при большом количестве объектов, могут быть тормоза и пропуски хода.
Лично я такое наблюдал на куриной ферме, когда количество куриц у меня было более нескольких сотен. Тогда сервер реально начинал тормозить.
Корпус для аккумулятора
После создания сервера, спустя несколько минут у нас будет IP-адресс сервера, его логин и пароль.
Дальше необходимо подключиться через удалённый доступ. Поскольку я прожжёный линуксойд, то опишу два варианта подключения.
Подключение к удалённому серверу из Windows
В Windows всё просто. Жмём «Пуск» → «Выполнить» и вводим mstsc. Вводим параметры нашего сервера.
Если мы хотим копировать данные на сервер и с сервера (а я хочу), то идём во вкладку «Локальные ресурсы», и там нажимаем клавишу «Подробнее».
И далее указываем какие жёсткие диски мы хотим подключить. Нам это будет необходимо, если мы захотим копировать различные моды или какой-то дополнительный софт на наш сервер.
После этого мы можем подключиться к нашему серверу и увидим одно единственное окно PowerShell.
Содержимое диска C: нашего компьютера будет доступно в сетевой папке:
\TSCLIENTc
Думаю тут всё очевидно, и проблем возникнуть не должно.
Подключение к удалённому серверу из Linux
Вот подключение из Linux немного коварнее и сложнее, а главное работает не очень стабильно (особенно монтирование удалённых дисков). Но деваться некуда, поэтому будем использовать его. Для того, чтобы подключаться к удалённому рабочему столу машины с Windows, нам нужно установить программу Remmina.
sudo apt-get update
sudo apt-get install libfreerdp-plugins-standard remmina remmina-plugin-rdp
После установки запускаем remmina, и конфигурируем подключение к удалённому серверу.
Обратите внимание на глубину цвета, если выбрать некорректную глубину цвета (большую, чем поддерживает сервер), будет ошибка подключения. Чтобы мы могли обмениваться файлами, необходимо выбрать общую папку. В моём случае это rdpfiles. В результате, наша папка на сервере будет доступна по адресу:
\TSCLIENTrdpfiles
Стартуем ванильный сервер
Для того, чтобы стартовать базовый сервер, не требуется каких-то высоких материй. Для начала нам необходимо согласиться с лицензионным соглашением. Делается это командой
Approve-MinecraftEULA
Всё, с этого момента сервер готов к работе. Мы можем его запустить командой
Start-Minecraft
И всё, ваш сервер готов к работе, он создаёт новый мир и идёт загрузка, но дьявол кроется в мелочах. Сам сервер очень старый, версии 1.15.2 (тогда как на момент написания этой статьи была версия Minecraft 1.16.4).
Но, продемонстрирую, что сервер в действительности работает. Надо только в лаунчере поставить запуск старой версии (1.15.2), и указать при сетевом подключении IP-адресс нашего сервера.
Подключение успешно состоялось.
Как же обновить сервер, спросите вы? Оказывается очень просто. Последняя версия сервера находится по следующему адресу. Там нужно будет скопировать ссылку на данный файл.
Все файлы этого Minecraft-сервера (кроме стартовых скриптов) обитают в папке C:Minecraft
. Поэтому переходим в неё, и все процедуры делаем в ней.
cd C:Minecraft
#удаляем старый сервер
rm C:Minecraftserver.jar
Для того, чтобы скачать файл, в PowerShell есть аналог wget.
Invoke-WebRequest -Uri "http://www.contoso.com" -OutFile "C:pathfile"
Поэтому копируем ссылку на наш файл, и подставляем в эту команду. У меня получилось вот так (обратите внимание, что в вашем случае будет другая ссылка, так как наверняка будет уже другая версия Майнкрафта).
Invoke-WebRequest -Uri "https://launcher.mojang.com/v1/objects/35139deedbd5182953cf1caa23835da59ca3d7cd/server.jar" -OutFile "./server.jar"
Всё, мы обновили наш ванильный сервер, и он готов к работе. Пробуем запустить.
Start-Minecraft
И видим, что у нас обновлённая версия сервера вполне себе работает.
Устанавливаем моды
Эта часть попила у меня чудовищное количество крови, и я с ней очень долго бодался, пытаясь понять что же не так. Для того, чтобы работали моды, необходимо установить дополнение 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) жмём ОК. И дожидаемся загрузки.
После окончания установки, будет выведено такое окно.
Успешность установки, можно проверить командой.
Start-Minecraft -Type Forge -LogFile "C:Minecraftstdout.txt" -MinecraftPath "C:Minecraft"
Если всё запускается без ошибок, всё, ваш сервер готов к запуску модов. Дальше вы можете моды скопировать в вашу сетевую папку, в моём случае rdpfiles и затем скопировать все моды в папку C:Minecraftmods (предварительно её создав).
mkdir C:Minecraftmods
cd \TSCLIENTrdpfiles
cp *.jar C:Minecraftmods
Для того, чтобы был создан новый мир, не забываем удалять предварительно старый.
rm C:Minecraftworld
Соглашаемся со всем, нажимая букву “А” на латинской клавиатуре. Всё, можем стартовать новый мир с модами.
Start-Minecraft -Type Forge -LogFile "C:Minecraftstdout.txt" -MinecraftPath "C:Minecraft"
Удалять моды можно точно так же удаляя файлы в папке C:Minecraftmods.
Белые списки и другие настройки сервера
Если вы создаёте сервер для друзей, не забывайте делать белые списки. А то бывают всякие неприятные ребятки, которые каким-то образом находят ваш тайный сервер и пакостят. У меня был случай, когда такой вот нехороший человек минировал наши дома. При чём несколько раз. На третий раз я психанул и разобрался с созданием белых списков для белых господ.
Белые списки можно включить через конфигурационный файл, но сильно проще их настроить прямо в консоли сервера. Для этого прямо в консоли пишем:
whitelist on
Можно даже попробовать зайти на сервер и убедиться, что никто теперь на него не зайдёт.
После этого можно добавить всех игроков, которые будут находиться на данном сервере. Добавлю пока только себя.
whitelist add dlinyj
Всё, теперь я могу заходить на данный сервер.
Для того, чтобы конфигурировать сервер, нужно править файл server.properties. Завершить работу сервера можно комбинацией ctrl-c. Далее можно открыть этот файл обычным блокнотом.
.notepad.exe C:Minecraftserver.properties
Расписывание всех полей конфигурации сервера выходит за рамки этой статьи, поэтому вы можете ознакомиться с этим самостоятельно вот тут. Некоторые параметры можно менять прямо в консоли сервера, и они автоматически сохраняться в файле server.properties. Пример такого параметра — это создание белых списков. Что-то можно менять вручную. Экспериментируйте.
Выводы
Для меня был интересный опыт работы с серверной виндой, после linux. И каждый раз сталкивался с тем, что каждую команду надо было искать заново. Например, чтобы перезагрузить сервер, будет команда:
Restart-Computer
Если случайно закрыть окно PowerShell, то запустить его можно комбинацией Ctrl-Shift-Esc. Затем там выполнить PowerShell.
В общем, открытий чудных Windows нам таила.
Можно много чего рассказать, и про установку Far-менеджера, и то где лежат настроечные скрипты. Но мне кажется, что эта статья даст понимание как же быстро и просто развернуть свой игровой сервер.
Автор: Сергей