Бесплатный minecraft сервер на AWS с нулевым знанием linux

Привет, Хабр! Точнее, проходимцы, которые ищут, как поднять minecraft сервер для игры с друзьями.

Статья рассчитана на непрограммистов, несисадминов, в общем, не на основную аудиторию Хабра. В статье — пошаговая инструкция по созданию minecraft сервера с выделенным IP, адаптированная для людей, далёких от IT. Если это не про вас — статью лучше пропустить.

Что такое сервер?

Итак, что такое сервер? Если опираться на понятие "сервер" как на компонент программного обеспечения, то сервер представляет из себя программу, которая может принимать, обрабатывать и передавать данные, принимаемые от пользователей (клиентов), который к этому серверу подключены. На примере сайта — сайт находится на некотором веб-сервере, к которому вы получаете доступ через браузер. В нашем случае — сервер minecraft генерирует мир, к которому подключаются игроки (клиенты), которые могут ходить, ломать блоки и т.д. За подключение игроков и любые их действия отвечает minecraft сервер.

Очевидно, что сервер должен быть запущен на компьютере (машине). Можно поднять сервер на своём домашнем компьютере, но в таком случае:

  • Вы ставите под угрозу безопасность собственного компьютера, открывая на нём порты
  • Сервер будет нагружать ваш компьютер, что может мешать работе с ним
  • Вы не можете поддерживать домашний компьютер в рабочем состоянии 24/7: иногда вы его выключаете, иногда ваш компьютер теряет подключение к интернету и т.д.
  • Для доступа к вашему серверу из внешнего мира придётся обращаться к компьютеру по IP-адресу, который у "домашних" интернет-провайдеров является динамическим, то есть он может изменяться каждые 2-3 дня по причинам, от вас не зависящим.

И как мы решим эти проблемы?

Решением всех перечисленных проблем является использование виртуальной машины со статическим, то есть неизменяемым IP-адресом.

Сложная терминология? Давайте разбираться.
Обратимся к Википедии.

Виртуальная машина (VM, от англ. virtual machine) — программная и/или аппаратная система, эмулирующая аппаратное обеспечение некоторой платформы...

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

Где мы её возьмём?

Ответ прост — AWS. Это такая платформа, которая предоставляет много разных облачных сервисов, полезных для всех, кто работает с вебом и не только. Для создания сервера minecraft отлично подойдет один из продуктов AWS — Amazon EC2 — облачная виртуальная машина, которая доступна 24/7. AWS предлагает минимальную виртуальную машину (10GB SSD, 1GB RAM) бесплатно на год, к тому же, даёт возможность привязать бесплатный выделенный (статический) IP-адрес для постоянного доступа к вашей ВМ (виртуальной машине) по одному и тому же адресу.

Создаём и настраиваем ВМ

Перейдите на сайт AWS и зарегестрируйтесь. Затем перейдите в консоль управления.

Бесплатный minecraft сервер на AWS с нулевым знанием linux

В консоли среди сервисов найдите EC2 и перейдите к нему.

Важно выбрать дата-центр, проще говоря, место, где находятся сервера amazon. Выбирать следует в зависимости от вашего местоположения, ведь скорость общения в сети интернет разная, и выбирать следует дата-центр, с которым общение из вашего города будет максимально быстрым.

Бесплатный minecraft сервер на AWS с нулевым знанием linux

Для выбора дата-центра рекомендую воспользоваться сервисом WonderNetwork, измеряющем скорость передачи пакетов с другими городами.
В моём случае (г.Москва) мне подошёл ирландский дата-центр.

Пришло время создать виртуальную машину. Для этого перейдите на вкладку Launch instance

Бесплатный minecraft сервер на AWS с нулевым знанием linux

Начнём конфигурирование ВМ.

1) Выберем образ операционной системы. Для поднятия серверов очень удобен linux, мы будем использовать дистрибутив CentOS7

Следует отметить, что графической среды на вашей виртуальной машине не будет, доступ к машине будет осуществляться через консоль. Она предполагает управление ВМ при помощи команд, а не компьютерной мыши. Не бойтесь этого: это не должно остановить вас уже сейчас или отказаться от идеи поднятия своего minecraft-сервера, так как это "слишком сложно". Работать с машиной через консоль несложно — скоро вы сами в этом убедитесь.

Бесплатный minecraft сервер на AWS с нулевым знанием linux

2) Теперь определим техническую конфигурацию ВМ. Для бесплатного использования Amazon предлагает конфигурацию t2.micro, маловато для полноценного большого minecraft сервера, но с друзьями поиграть достаточно.

Бесплатный minecraft сервер на AWS с нулевым знанием linux

3) Остальные пункты настроек оставляем по умолчанию., но останавливаемся на вкладке Configure Security groups.

Бесплатный minecraft сервер на AWS с нулевым знанием linux

Здесь нам необходимо настроить доступ к портам для сервера minecraft.

Если объяснять простым языком — порт — неотрицательное число, указывающее, кому адресованы входящие данные из внешнего мира. На ВМ может находиться множество разных сервисов и серверов, поэтому все входящие пакеты данных хранят в своём заголовке порт (номер) адресата (сервиса, сервера) внутри ВМ.

Для minecraft серверов де-факто стандартом является использование порта 25565. Добавим правило, указывающее, что доступ к вашей ВМ через этот порт допустим.

Бесплатный minecraft сервер на AWS с нулевым знанием linux

Бесплатный minecraft сервер на AWS с нулевым знанием linux

Переходим к окну завершения создания ВМ, нажав кнопку Review and Launch

Настройка пары ключей SSH для ВМ

Итак, подключение к машине будет осуществляться по протоколу SSH.

Протокол SSH работает следующим образом: генерируется пара ключей (открытый и закрытый), на ВМ хранится открытый ключ, на компьютере человека, осуществляющего подключение к ВМ (клиента) — закрытый. При подключении ВМ проверяет наличие подходящего закрытого ключа у клиента.

Нажмите кнопку Launch. Перед вами появится следующее окно:

Бесплатный minecraft сервер на AWS с нулевым знанием linux

Введите название пары ключей (для вашего удобства) и нажмите Download key pair. У вас должен скачаться .pem файл, содержащий в себе ваш закрытый ключ. Нажмите кнопку Launch instances. Только что вы создали виртуальную машину, на которой будет поднят сервер.

Получаем статический IP

Теперь нам нужно получить и привязать статический IP к нашей ВМ. Для этого меню находим вкладку Elastic IPs и переходим по ней. На вкладке нажимаем кнопку Allocate Elastic IP address и получаем статический IP.

Бесплатный minecraft сервер на AWS с нулевым знанием linux

Теперь полученный IP-адрес надо привязать к нашей ВМ. Для этого выберем её из списка и в меню Actions выберем Associate IP address

Бесплатный minecraft сервер на AWS с нулевым знанием linux

Далее, привяжем ВМ к нашему IP-адресу

Бесплатный minecraft сервер на AWS с нулевым знанием linux

Готово!

Заходим на ВМ

Теперь, когда ВМ настроена и IP-адрес привязан, подключимся к ней и установим наш minecraft сервер.

Для подключения к ВМ по SSH воспользуемся программой PuTTY. Сразу установите PuTTYgen с этой же страницы

После установки PuTTY откройте его. Теперь необходимо настроить подключение.

Бесплатный minecraft сервер на AWS с нулевым знанием linux

  1. Во вкладке Session выберете тип подключения SSH, порт 22. Укажите имя для подключения. Имя хоста для подключения по SSH представляет из себя строку типа: имя_пользователя@публичный_dns.

Имя пользователя в AWS для CentOS по умолчанию — centos. Ваш публичный DNS можно посмотреть здесь:

Бесплатный minecraft сервер на AWS с нулевым знанием linux

У меня получилась строка [email protected]

  1. Во вкладке SSH -> Auth укажите ваш закрытый SSH-ключ. Он хранится в файле .pem, который мы скачивали ранее. Но PuTTY не умеет работать с файлами .pem, ему нужен формат .ppk. Для конвертации воспользуемся PuTTYgen. Инструкция по конвертации с сайта PuTTYgen. Полученный файл .ppk Сохраним и укажем здесь:

Бесплатный minecraft сервер на AWS с нулевым знанием linux

  1. Соединяемся с ВМ, открыв соединение кнопкой Open.
    Поздравляю! Только что мы подключились к консоли вашей ВМ. Осталось поднять на неё наш сервер.

Установка и настройка minecraft сервера

Начнём настройку нашего сервера. Для начала, нужно установить несколько пакетов на нашу ВМ.

sudo yum install -y wget mc iptables iptables-services java screen

Разберёмся, для чего нужен каждый из пакетов.

  • wget — утилита для загрузки файлов в linux. С помощью неё мы скачаем файлы сервера.
  • mc — консольный текстовый редактор. Отличается простотой и удобством в использовании для неподготовленного пользователя.
  • iptables — утилита для управления и настройки firewall’a, с помощью неё мы откроем порт для сервера на нашей ВМ.
  • java — на java работает minecraft, поэтому она необходима для работы сервера
  • screen — оконный менеджер для linux. Он позволит продублировать нашу консоль для поднятия сервера. Дело в том, что сервер должен быть запущен через консоль, если вы отключитесь от своей ВМ, то процесс сервера будет остановлен. Поэтому мы будем запускать его в отдельном окне консоли.

Теперь настроим firewall.

Межсетевой экран (firewall) — программный или программно-аппаратный элемент компьютерной сети, осуществляющий контроль и фильтрацию проходящего через него сетевого трафика в соответствии с заданными правилами. (Wikipedia)

Объясняя простым языком: представьте себе город-крепость. Его всё время атакуют извне, при этом в городе течёт обычная жизнь. Для доступа в город в стене крепости есть ворота, у которых стоят охранники и проверяют по спискам, можно ли пустить этого человека в крепость. Роль стены и ворот в компьютерных сетях выполняет firewall.

sudo mcedit /etc/sysconfig/iptables

Только что мы создали и файл конфигурации firewall’a. Заполним его стандартными данными конфигурации, включив туда правило для порта 25565, являющегося стандартным портом для сервера minecraft.

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 25565 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Закроем файл нажатием F10, сохранив изменения.

Бесплатный minecraft сервер на AWS с нулевым знанием linux

Теперь запустим firewall и включим его в автозагрузку:

sudo systemctl enable iptables
sudo systemctl restart iptables

Файлы сервера будем хранить в отдельной папке, создадим её, перейдём в неё и скачаем файлы сервера. Для этого следует использовать wget

mkdir minecraft
cd minecraft
wget <ссылка_на_jar>

Необходимо найти прямую ссылку на скачивание .jar файла сервера. Для примера, ссылка на файл сервера версии 1.15.2:

wget https://launcher.mojang.com/v1/objects/bb2b6b1aefcd70dfd1892149ac3a215f6c636b07/server.jar

Просмотрите содержимое папки при помощи команды ls, убедитесь, что файлы скачаны.

Бесплатный minecraft сервер на AWS с нулевым знанием linux

Запустим файл сервера. Сейчас сервер не будет работать: он создаст все необходимые для работы файлы, и поругается на то, что вы не согласились с условиями лицензии EULA. Примем условия, открыв файл eula.txt

sudo mcedit eula.txt

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

eula=true

Откройте файл server.properties: это файл конфигурации вашего сервера. Подробнее о настройках сервера

В него обязательно нужно внести следующее изменение:

online-mode=false

Остальные настройки — на ваше усмотрение.

Запуск сервера

Пришло время запускать сервер. Как я уже сказал, сервер запускается прямо из консоли, но если мы закроем основную консоль — процесс сервера будет остановлен. Поэтому создадим ещё одну консоль:

screen

В этой консоли запустим сервер:

 sudo java -Xms512M -Xmx1024M -jar <название_файла_сервера>.jar --nogui

Сервер запускается около 45 секунд, не прерывайте процесс. Когда сервер будет инициализирован и запущен, вы увидите что-то вроде:

Бесплатный minecraft сервер на AWS с нулевым знанием linux

Поздравляю! Только что вы подняли и запустили свой minecraft сервер. Теперь важно правильно выйти из второй консоли, чтобы она продолжила работу с запущенным сервером. Для этого нажмите Ctrl+A, затем D. Вы должны оказаться в основной консоли и увидеть сообщение типа [detached from 1551.pts-0.ip-172-31-37-146]. Если вам потребуется вернуться в консоль, в которой запущен сервер, используйте screen -r

Теперь вы можете отключаться от своей ВМ. Ваш сервер будет доступен по статическому IP-адресу, который мы получали ранее, на порту 25565.

Бесплатный minecraft сервер на AWS с нулевым знанием linux

Получается, адрес для входа на сервер будет <ваш_статический_IP>:25565.

Заключение

По этой инструкции вы сможете поднять бесплатный minecraft сервер с выделенным IP без труда. Статья была написана максимально простым языком и рассчитана на неспециалистов. В связи с этим, интересно услышать комментарии захабренных, ведь при упрощении материала можно допустить фактические ошибки в терминологии.

Источник: habr.com