Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

В консоли среди сервисов найдите EC2 uye kuyo.

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

Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

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

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

Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

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

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

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

Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

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

Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

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

Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

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

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

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

Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

Переходим к окну завершения создания ВМ, нажав кнопку Ukuphonononga kunye nokuQalisa

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

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

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

Cofa iqhosha Qalisa. Перед вами появится следующее окно:

Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

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

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

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

Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

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

Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

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

Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

Yenziwe!

Заходим на ВМ

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

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

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

Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

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

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

Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

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

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

Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

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

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

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

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

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

  • wget — утилита для загрузки файлов в linux. С помощью неё мы скачаем файлы сервера.
  • mc — консольный текстовый редактор. Отличается простотой и удобством в использовании для неподготовленного пользователя.
  • iptables — утилита для управления и настройки firewall’a, с помощью неё мы откроем порт для сервера на нашей ВМ.
  • java — на java работает minecraft, поэтому она необходима для работы сервера
  • wekhusi — оконный менеджер для 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, сохранив изменения.

Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

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

sudo systemctl enable iptables
sudo systemctl restart iptables

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

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

Kufuneka ufumane прямую ссылку на скачивание .jar файла сервера. Для примера, ссылка на файл сервера версии 1.15.2:

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

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

Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

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

sudo mcedit eula.txt

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

eula=true

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

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

online-mode=false

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

Ukuqala kweseva

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

screen

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

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

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

Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

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

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

Iseva ye-minecraft yasimahla kwi-AWS ngolwazi oluyi-zero lweLinux

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

isiphelo

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

umthombo: www.habr.com

Yongeza izimvo