Настройка сервера Minecraft

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


Так как у вас есть статический выделенный IP-адрес, то будет удобно привязать какой-нибудь ваш домен к этому IP и давать своим пользователям именно домен, а не адрес. Ведь намного удобнее запомнить что-нибудь вроде super-minecraft.ru, чем набор из 4 цифр.


Для привязки домена к IP нужен в первую очередь сам домен. Домены обычно покупаются у регистраторов. Обратите внимание на стоимость. По различным промоакциям вы можете найти домены меньше, чем за доллар в год, но продление аренды такого имени может внезапно стоить все $30.


У регистраторов есть возможность использовать для домена их DNS-серверы. По умолчанию домен настроен именно на них. В панели регистратора вам нужной перейти к управлению DNS-записями и создать для домена A-запись вида "ваш_домен. A ваш_ip", примерно так: super-minecraft.ru. A 185.49.70.81
Спустя короткое время (до 24 часов), ваш домен станет смотреть на ваш IP-адрес.


ВНИМАНИЕ! Доступ можете получить не только вы, но и любой человек. Плохая идея использовать стандартные имена пользователей и пароли. К примеру, Admin\admin. Так же напоминаем, что в идеале программное обеспечение скачивается только с официальных сайтов. Качая "суперпак программ Васи-разрывателя", или тыкая какие попало ссылки выдачи в гугле, вы можете вместе с нужным софтом установить еще и совсем нежелательный. Не уверены, какой из сайтов официальный? Поищите описание программы на wikipedia.org. К примеру, из статьи https://ru.wikipedia.org/wiki/Minecraft можно узнать, что официальный сайт - minecraft.net


Предполагаем, что вы уже имеете клиент minecraft, установили его и умеете умеете заходить на чужие серверы. Так же у вас должен быть установлен пакет Java (с сайта java.com), который позволяет работать клиенту minecraft.
Теперь вам необходимо скачать серверную часть игры со страницы: https://minecraft.net/ru-ru/download/server


После первого запуска вокруг вашей серверной части "вырастет" еще куча файлов. Поэтому лучше всего завести для него отдельный каталог. Допустим это будет C:\minecraft. Соответственно исполняемый файл будет находиться по пути C:\minecraft\minecraft_server.1.12.1.jar


Теперь, чтобы каждый раз не вводить команду на запуск сервера, создайте в каталоге файл с именем "start.bat", и внесите в него строку:
java -Xmx1024M -Xms1024M -jar C:\minecraft\minecraft_server.1.12.1.jar
Вы создали командный файл (батник). Именно его нужно будет запускать. Вы можете создать ярлык на него на рабочем столе для удобства.


Запускайте!
На несколько секунд появляется черное окошко и затем выключается. Что же происходит?
Происходит ошибка, которую мы не видим, так как окно закрывается сразу же после завершения последней команды. Чтобы успеть прочесть ошибку, отредктируйте свой start.bat. Добавьте вторую строку с единственной командой:
pause
и запустите сервер снова, чтобы увидеть ошибку:


Всё сразу станет понятно для тех, кто знает английский. Для остальных поясним - сервер отказывается запускаться, пока вы не примете лицензионное соглашение. Чтобы узнать, как его принять, перейдите в свой каталог C:\minecraft. А здесь уже целая куча файлов, в том числе и eula.txt.
Открываем файл eula.txt в блокноте и читаем, что если мы согласны с соглашением по ссылке, то должны поменять строку
eula=false
на строку
eula=true
Меняем, сохраняем, запускаем заново. Завелось!


Что же мы видим и что с этим делать?
Верхнее чёрное окно называется консолью, куда сервер пишет сообщения. Если в start.bat внести параметр nogui (нет графическому интерфейсу), как рекомендует официальный сайт, то вы увидите только эту консоль.
Нижнее окно - графический интерфейс сервера, разделённый на 3 области:
Stats - использование сервером оперативной памяти и т.д.;
Players - список подключенных к вашему серверу игроков;
Log and Chat - дублирует все сообщения из консоли, а так же пзволяет вводить команды, такие как "/ban читак". Узнать список всех команд можно командой /help N, где N от 1 до 10. Подробное описание команд выходит за рамки этого руководства, ищите на профильных ресурсах.


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


Теперь перейдите в свой каталог C:\minecraft\ и откройте для редактирования файл server.properties:
Этот файл используется для задания различных параметров работы сервера. Изучите документацию, чтобы знать зачем они нужны.
Сейчас же нас интересуют 3 параметра:
server-port=25565
server-ip=
online-mode=true


server-port=25565 - оставляем как есть. Это стандартный порт minecraft. Если вы его смените на другой, то вам придется сообщать своим пользователям не только IP\домен, но и номер порта, что создаст дополнительные неудобства.


server-ip= - пропишите сюда свой ВНУТРЕННИЙ ip-адрес (он так и называется в биллинге). Выглядеть будет примерно так:
server-ip=10.8.0.5


online-mode=true - замените эту строку на:
online-mode=false
чтобы разрешить подключение к вашему серверу "пиратских" клиентов, т.е. тех, кто не покупал игру.


Следующий шаг - разрешите входящие соединения на порт 25565 в своём брандмауэре, а так же внесите изменения в панели биллнга, где укажите в форме перенаправления портов: 25565/tcp
Подробнее о том, как это сделать, смотрите в инструкции по настройке RDP.


Теперь пора проверить доступность игры из сети. Запустите OpenVPN и сервер игры на своём компьютере и попросите друга зайти на ваш сервер. В качестве адреса входа сообщите ему свой домен или свой ВНЕШНИЙ ip-адрес (в нашем примере 185.49.70.81)


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



Наш пользователь успешно подключился и написал "приветик" в чат. В окне сервера мы видим это сообщение:



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