# Установка панели управления игровым сервером Pterodactyl

Pterodactyl — это платформа управления сервером. Она запускает игровые серверы в изолированных контейнерах Docker, чтобы можно их можно было гибко настраивать. Например, управлять серверами Minecraft. Если вы ещё не создали свой сервер Minecraft, смотрите пошаговую инструкцию по его созданию здесь.

# Установка платформы и демонов

Pterodactyl имеет две составляющие:

  • платформа управления — на ней находится веб-интерфейс, который взаимодействует со второй составляющей;
  • демоны — они размещены на хост-серверах и нужны для установления соединения между приложениями клиентов и сервером хоста через сокет.

Вы можете установить платформу на VPS или на один из хост-серверов вместе с демоном. Инструкцию по установке Pterodactyl смотрите на официальном сайте (opens new window). Если в двух словах, то вам нужно будет установить стек LAMP на VPS и настроить базу данных MySQL для взаимодействия с Pterodactyl.

Далее вам нужно будет установить демон на каждом узле хоста. Он нужен для управления контейнерами Docker, внутри которых работают серверы.

Примечание

В файле Docker сохраняются зависимости и код, который нужен для запуска приложения. Если вам нужно будет создать несколько копий главного образа игрового сервера и для каждого из них прописать свои настройки, то вы можете быстро сделать это с помощью Docker. Устанавливать Java нужно будет только один раз.

В процессе установки демона вам понадобится:

  • установить Docker и NodeJS (серверную платформу для работы с JavaScript);
  • запустить LetsEncrypt’s certbot для защиты соединения между панелью управления и демоном с помощью сертификата SSL.

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

Создайте теги Location на вкладке Locations в меню слева:

01

Затем создайте Node (узел) на вкладке Nodes также в меню слева:

02

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

В разделе Configuration можно изменить следующие данные:

  • каталог файлов демона (если вы используете OVH, вместо /srv/) будет /home/daemon-data);
  • общий объём памяти и дискового пространства, доступного для новых серверов.

03

Далее нажмите Create Node, вы получите доступ к файлу JSON. В него нужно будет вставить строку:

/srv/daemon/config/core.json

Теперь вы можете запустить демон с помощью команды sudo npm start. Также можно использовать systemd — для этого создайте файл wings.service в каталоге /etc/systemd/system/ со следующим содержимым:

[Unit]
Description=Pterodactyl Wings Daemon
After=docker.service

[Service]
User=root
#Group=some_group
WorkingDirectory=/srv/daemon
LimitNOFILE=4096
PIDFile=/var/run/wings/daemon.pid
ExecStart=/usr/bin/node /srv/daemon/src/index.js
Restart=on-failure
StartLimitInterval=600

[Install]
WantedBy=multi-user.target

Далее введите команду:

systemctl enable --now wings

Узел для демона создан. Если обнаружились какие-либо проблемы, проверьте настройки брандмауэра.

Итоговый этап — назначение выделенных IP-адресов для новых серверов. Для одного сервера можно указать несколько портов.

Чтобы назначить выделенные IP-адреса, перейдите на вкладку Allocation:

04

# Настройка конфигурации сервера

В первую очередь редактируется параметр Egg (яйца) — именно в них хранится большая часть переменных. Они также выбирают определённый образ Docker для работы платформы.

Eggs распределяются по Nests (гнёздам) в зависимости от игры, например:

05

В настройках каждого параметра Egg есть раздел Configuration, в котором можно изменить образ Docker и команды запуска:

06

Создание собственных образов Docker позволяет получить полную свободу в управлении серверами. Можно использовать коллекцию готовых картинок платформы, редактировать файл entrypoint.sh, чтобы настроить процесс запуска под себя. Например, если нужно выполнить предварительные действия перед запуском двоичного файла сервера.

Для обычного запуска сервера отредактируйте данные на вкладке Variables:

07

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

# Создание сервера

Выберите в меню слева раздел Servers и создайте новый сервер. Введите его название, описание, а в поле Server Owner выберите себя, иначе может возникнуть ошибка.

Выберите, на каком узле будет работать сервер и на каких портах. Можно прописать дополнительные порты для RCON.

08

Ниже можно установить ограничения на память, диск и CPU. Обычно игровые серверы работают в режиме однопоточности, при решении сложных задач может возникнуть перегрузка CPU. От этого может нарушиться стабильность работы других служб в системе.

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

09

Теперь вам потребуется выбрать нужные Nest и Egg. Здесь можно настроить отключение образа Docker, переопределение всех переменных сервера в Egg. Также может понадобиться указать порты, чтобы они соответствовали выделенным.

10

Итак, мы разобрались со всеми настройками, осталось нажать кнопку Create. Платформа отправит запрос демону и создаст новый сервер. На это уйдёт несколько минут, а затем вы сразу сможете просмотреть выходные данные сервера — для этого перейдите в раздел Console в меню слева:

11

В левом боковом меню также есть File Management для работы с файлами, а также Subusers — здесь прописывается имя пользователя, привязанное к контейнеру Docker, для подключения через FTP. Также на сервер можно приглашать друзей и создавать расписания для перезапуска сервера и прочих сценариев (Schedules).

Через раздел Configuration можно управлять переменными сервера, контейнером Docker. Эти функции полезны для пользователей, которые редактируют файл entrypoint.cs.