Безкоштовний сервер minecraft на AWS з нульовим знанням linux
Привіт, Хабре! Точніше, пройдисвіти, які шукають, як підняти minecraft сервер для гри з друзями.
Стаття розрахована на непрограмістів, несисадмінів загалом не на основну аудиторію Хабра. У статті - покрокова інструкція зі створення minecraft сервера з виділеним IP, адаптована для людей, далеких від ІТ. Якщо це не про вас – статтю краще пропустити.
Що таке сервер?
Отже, що таке сервер? Якщо спиратися на поняття "сервер" як на компонент програмного забезпечення, то сервер є програмою, яка може приймати, обробляти і передавати дані, що приймаються від користувачів (клієнтів), який до цього сервера підключені. На прикладі сайту сайт знаходиться на деякому веб-сервері, до якого ви отримуєте доступ через браузер. У нашому випадку сервер 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, що вимірює швидкість передачі пакетів з іншими містами.
У моєму випадку (м.Москва) мені підійшов ірландський дата-центр.
Настав час створити віртуальну машину. Для цього перейдіть на вкладку Запустити екземпляр
Почнемо конфігурування ВМ.
1) Виберемо образ операційної системи. Для підняття серверів дуже зручний linux, ми будемо використовувати дистрибутив CentOS7
Слід зазначити, що графічного середовища на віртуальній машині не буде, доступ до машини буде здійснюватися через консоль. Вона передбачає управління ВМ з допомогою команд, а чи не комп'ютерної миші. Не бійтеся цього: це не повинно зупинити вас вже зараз або відмовитися від ідеї підняття свого minecraft-сервера, тому що це "занадто складно". Працювати з машиною через консоль нескладно - скоро ви самі в цьому переконаєтесь.
2) Тепер визначимо технічну конфігурацію ВМ. Для безкоштовного використання Amazon пропонує конфігурацію t2.micro, обмаль для повноцінного великого minecraft сервера, але з друзями пограти достатньо.
3) Інші пункти налаштувань залишаємо за замовчуванням., але зупиняємось на вкладці Configure Security groups.
Тут нам потрібно налаштувати доступ до портів для сервера minecraft.
Якщо пояснювати простою мовою — порт — невід'ємне число, яке вказує, кому адресовані дані із зовнішнього світу. На ВМ може бути безліч різних сервісів і серверів, тому всі вхідні пакети даних зберігають у своєму заголовку порт (номер) адресата (сервісу, сервера) всередині ВМ.
Для minecraft серверів де-факто стандартом є використання порту 25565. Додамо правило, що вказує на те, що доступ до вашої ВМ через цей порт припустимо.
Переходимо до вікна завершення створення ВМ, натиснувши кнопку Перегляньте та запустіть
Налаштування пари ключів SSH для ВМ
Отже, підключення до машини здійснюватиметься за протоколом SSH.
Протокол SSH працює так: генерується пара ключів (відкритий і закритий), на ВМ зберігається відкритий ключ, на комп'ютері людини, що здійснює підключення до ВМ (клієнта) - закритий. При підключенні ВМ перевіряє наявність закритого ключа у клієнта.
Натисніть кнопку Запуск. Перед вами з'явиться наступне вікно:
Введіть назву пари ключів (для вашої зручності) та натисніть Download key pair. У вас має скачатися .pem файл, що містить у собі ваш закритий ключ. Натисніть кнопку Запуск екземплярів. Щойно ви створили віртуальну машину, на якій буде піднято сервер.
Отримуємо статичний IP
Тепер нам потрібно отримати та прив'язати статичний IP до нашої ВМ. Для цього меню знаходимо вкладку Еластичні IP -адреси та переходимо по ній. На вкладці натискаємо кнопку Allocate Elastic IP address та отримуємо статичний IP.
Тепер отриману IP-адресу треба прив'язати до нашої ВМ. Для цього виберемо її зі списку та в меню Дії оберемо Associate IP address
Далі, прив'яжемо ВМ до нашої IP-адреси
Готово!
Заходимо на ВМ
Тепер, коли ВМ налаштована та IP-адреса прив'язана, підключимося до неї та встановимо наш minecraft сервер.
Для підключення до ВМ з SSH скористаємося програмою PuTTY. Відразу встановіть PuTTYgen з цієї ж сторінки
Після встановлення PuTTY відкрийте його. Тепер потрібно налаштувати підключення.
У вкладці Session виберіть тип підключення SSH, порт 22. Вкажіть ім'я для підключення. Ім'я хоста для підключення по SSH являє собою рядок типу: имя_пользователя@публичный_dns.
Ім'я користувача в AWS для CentOS за замовчуванням CentOS. Ваш публічний DNS можна переглянути тут:
У вкладці SSH -> Auth вкажіть ваш закритий SSH-ключ. Він зберігається у файлі .pem, який ми завантажували раніше. Але PuTTY не вміє працювати з файлами .pemйому потрібен формат .ppk. Для конвертації скористаємося PuTTYgen. Інструкція з конвертації із сайту PuTTYgen. Отриманий файл .ppk Збережемо та вкажемо тут:
З'єднуємось із ВМ, відкривши з'єднання кнопкою відкритий.
Вітаю! Щойно ми підключилися до консолі вашої ВМ. Залишилося підняти її сервер.
Встановлення та налаштування minecraft сервера
Почнемо налаштування нашого сервера. Для початку потрібно встановити кілька пакетів на нашу ВМ.
sudo yum install -y wget mc iptables iptables-services java screen
Розберемося, навіщо потрібен кожен із пакетів.
Wget - Утиліта для завантаження файлів в linux. За допомогою неї ми завантажуємо файли сервера.
mc - Консольний текстовий редактор. Відрізняється простотою та зручністю у використанні для непідготовленого користувача.
Iptables - Утиліта для керування та налаштування firewall'a, за допомогою неї ми відкриємо порт для сервера на нашій ВМ.
Ява - на java працює minecraft, тому вона необхідна для роботи сервера
екран - Віконний менеджер для 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 і включимо його в автозавантаження:
Перегляньте вміст папки за допомогою команди ls, переконайтеся, що файли завантажені.
Запустимо файл сервера. Наразі сервер не працюватиме: він створить усі необхідні для роботи файли, і посвариться на те, що ви не погодилися з умовами ліцензії EULA. Приймемо умови, відкривши файл eula.txt
Настав час запускати сервер. Як я вже сказав, сервер запускається прямо з консолі, але якщо ми закриємо основну консоль - процес сервера буде зупинено. Тому створимо ще одну консоль:
Сервер запускається близько 45 секунд, не переривайте процес. Коли сервер буде ініціалізований і запущений, ви побачите щось на зразок:
Вітаю! Щойно ви підняли та запустили свій minecraft сервер. Тепер важливо правильно вийти з другої консолі, щоб вона продовжила роботу із запущеним сервером. Для цього натисніть Ctrl+A, Потім D. Ви повинні опинитися в основній консолі та побачити повідомлення типу [detached from 1551.pts-0.ip-172-31-37-146]. Якщо вам потрібно повернутися в консоль, в якій запущено сервер, використовуйте screen -r
Тепер ви можете відключатись від своєї ВМ. Ваш сервер буде доступний за статичною IP-адресою, яку ми отримували раніше, на порту 25565.
Виходить, адреса для входу на сервер буде <ваш_статический_IP>:25565.
Висновок
За цією інструкцією ви зможете підняти безкоштовний minecraft сервер з виділеним IP легко. Стаття була написана максимально простою мовою та розрахована на нефахівців. У зв'язку з цим цікаво почути коментарі захоплених, адже при спрощенні матеріалу можна припуститися фактичних помилок у термінології.