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

  • Tutorial

Привет, Хабр! Точнее, проходимцы, которые ищут, как поднять 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 и зарегестрируйтесь. Затем перейдите в консоль управления.



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


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



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


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



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


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


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


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



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



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


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

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




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


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


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


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

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



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


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


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



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



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



Готово!


Заходим на ВМ


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


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


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



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

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



У меня получилась строка centos@ec2-54-246-186-12.eu-west-1.compute.amazonaws.com


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


  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, сохранив изменения.



Теперь запустим 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, убедитесь, что файлы скачаны.



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


sudo mcedit eula.txt

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


eula=true

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


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


online-mode=false

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


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


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


screen

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


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

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



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


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



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


Заключение


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

Комментарии 18

    +1
    Действительно не сложно.
      0
      Майнкрафт на 1 GB ОЗУ? Очень сомнительно.
        0

        Вы правы, это немного.
        Суть этого поста — показать, как сделать бесплатно, соблюдая все принципы 24/7 сервера с выделенным IP. Как показывает практика, на нескольких друзей хватает вполне. Безусловно, с такой ОЗУ полноценный "общественный" сервер не выйдет.

          0

          Не хватает. Любой геймплей, кроме "зашли на спавне побегали", превращается в ад. Единственное, что можно сделать что бы хоть как то улучшить — сделать прегенерацию мира. На 2 человека тогда хватит.

        0
        Интересно, если искать платную виртуалку для сервера майнкрафт, во сколько это обойдется в месяц и сколько должно быть памяти у сервера, чтобы это было похоже на стандартных масштабов общественный сервер?
        Думаю, может дети заинтересовались бы администрированием майнкрафт-сервера, вместо просмотра ютуба.
          0

          Я считаю, что под серьезный Minecraft сервер нужна конфигурация 2CPU, 4GB RAM, ~60GB SSD. Зависит, конечно, от масштабов, но для игрового сервера на 100-200 человек сойдёт. Стоит это в районе 800-900 руб/мес. Могу в ЛС подсказать vps-хостинг (чтобы не было рекламы))

            0

            То же но 40 гб взял за 450
            Как раз в докере майнкрафт запустил)
            Разбираюсь что это такое и как с ним дружить

              0
              Это если ванила и то сильно сомневаюсь, что хотя бы 50 клиентов потянет.
              Важен размер кэша и частота ЦП (чем больше, тем лучше, конечно). Количество ядер не влияет, т.к. minecraft работает в одном потоке (моды могут работать в отдельном потоке, емнип). ОЗУ лучше тоже побольше выделить. Для более или менее нормальной игры это всё обойдётся в $30-50/мес…
            0
            ИМХО, лучше с помощью несложных манипуляций сделать из майнкрафта сервис и запускать его штатными средствами системы. Тогда не нужен будет скрин, чтобы держать запущенным майнкрафт.

            У меня персональный сервер майнкрафта живет на виртуалке в DO с 2 гб оперативной памяти. Почти вся оперативная память занята майнкрафтом, но работает нормально ( в масштабах 2 человек онлайн).
              0
              А сейчас на AWS не блочат аккаунт сразу после регистрации? Пару лет назад был на курсах, все в группе создали учетки и всех заблочили. Нужно было прислать им какой-нибудь скан, подтверждающий почтовый адрес. Я отправил скан квитанции ЖКХ, на следующий день учетку разблокировали.
                0

                Последний раз создавал аккаунт на AWS три недели назад. Даже без верификации почты создал ВМ.

                0
                Делал то же самое, что и автор, года 4 назад. Пока ребёнку было интересно помайнкрафтить с друзьями.
                Не знаю, как бы это работало на 100 человек, но указанной конфигурации в 1Gb
                вполне себе хватало для таких побегушек в несколько знакомых.

                Как только они там построили полностью свою школу, так интерес угас :)
                  –1

                  Всё вполне понятно изложено. Но зачем mc называть текстовым редактором? Это полноценный псевдографический файловый менеджер. И лично я поставил бы на его место в статье nano. Но тут уж дело вкуса.


                  И да, такой сервер Minecraft не потянет, вы действительно указали только пример. Более того, сервер Minecraft умудряется подтормаживать и на Raspberry Pi 4 (версия с 4GB, Ubuntu 20.04, личные эксперименты)

                    –1

                    mc оскорбил, признаю. В контексте статьи он использовался исключительно как текстовый редактор. Да, обычно для этих целей используют nano, для себя я бы ставил именно его. Но статья рассчитана на людей, далёких от IT, и интуитивно разобраться в mcedit человеку, который ни разу не видел консоль, на мой взгляд, проще, чем в nano.


                    alexey_c уточнил, что на несколько знакомых такого сервера хватает. Целью было описать, как сделать такой сервер для себя/для друзей, под эти цели его вполне хватает.

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

                    Только если вы используете пиратские клиенты.

                      0

                      На Google Cloud нет ограничения в 1 год на бесплатную виртуалку. Но, возможно, она там меньше.

                        +1
                        unsstrennen, расскажите, пожалуйста, на что хватило этого сервера в итоге? Сколько онлайн-пользователей тянуло, какие моды?
                          0

                          Извините за столь долгий ответ. Вдвоем грать можно — больше — не очень, может лечь. Но это на официальном лаунчере. На неофициальном — нормально работает.

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое