Pterodactyl: установка, настройка и создание игровых серверов
Быстрые ссылки
- Установка Pterodactyl и демона
- Настройка конфигурации сервера
- Создание сервера

Введение
Pterodactyl — это платформа управления серверами, использующая контейнеры Docker для изоляции экземпляров приложений. Изначально ориентирована на игровые серверы (например, Minecraft, Rust и др.), но подходит и для других headless-сервисов. Панель управления (Control Panel) предоставляет веб-интерфейс и API; демоны (Wings) работают на хостах и выполняют контейнеры.
Краткое определение: Docker — инструмент контейнеризации, который упаковывает зависимости и код приложения в образ, пригодный для многократного развертывания.
Важно: в Pterodactyl есть чёткое разделение ролей — панель управляет, демоны исполняют. Это даёт масштабируемость и удобство управления несколькими узлами.
Установка Pterodactyl и демона
Перед началом
- Минимальные требования: VPS или выделенный сервер для панели, одна или несколько машин для демонов.
- Базовые пакеты: Docker, Node.js (для Wings), база данных MySQL/MariaDB, PHP и веб-сервер для панели (обычно Nginx). Установка панели требует LAMP/LEMP-подобного стека.
- Настройте резервные копии базы данных и файлов панели перед обновлениями.
Обзор процесса
- Установить панель (Control Panel) на VPS: настроить веб-сервер, PHP, SSL и базу данных.
- На каждом хосте установить Wings (демон): Docker + Node.js + certbot для TLS.
- Зарегистрировать узлы (Nodes) в панели и привязать конфигурацию демона через сгенерированный JSON.
Примечание: полный пошаговый мануал по установке панели хранится в официальной документации Pterodactyl и регулярно обновляется. Здесь — практическое руководство и рекомендации.
Детали установки демона
Демон управляет контейнерами Docker. Он отвечает за запуск, остановку, мониторинг и аллокацию ресурсов для игровых серверов.
Основные шаги:
- Установите Docker (официальная инструкция Docker для вашей ОС).
- Установите Node.js (совместимая версия для Wings).
- Получите SSL-сертификат с помощью certbot, если планируется защищённое соединение панели и демона.
- Скопируйте сгенерированный JSON-конфиг в файл демона и запустите Wings.
Пример: файл конфигурации демона нужно поместить в
/srv/daemon/config/core.jsonЗапуск демона можно выполнить через sudo npm start, но для надёжности рекомендуется создать systemd-сервис.
[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Сохраните это как wings.service в /etc/systemd/system/, затем выполните:
systemctl enable --now wingsЕсли узел не прикреплён к панели, проверьте настройки брандмауэра и открытые порты (обычно 8080/2022/8443 или настроенные вами порты), а также корректность TLS-сертификата.
Совет: на OVH папка расположена не в /srv/, а часто в /home/daemon-data. Укажите корректную директорию при настройке узла.

Регистрация узла в панели
- В панели создайте теги локаций (Locations) — это метки для организации узлов (например, eu-west, us-east). Требуется хотя бы одна.
- Перейдите в Nodes → Create Node. Введите имя, описание и доменное имя, по которому будет доступен демон.
- Укажите директорию демона и лимиты ресурсов узла (память, диск). Эти значения действуют в пределах всей ноды.
- Нажмите Create — система выдаст JSON. Этот JSON нужно вставить в
/srv/daemon/config/core.jsonна хосте и перезапустить Wings.

Если всё настроено верно, узел будет в статусе “online” в панели.
Настройка конфигурации серверов — Eggs и Nests
Понимание терминов:
- Nest — категория игр/приложений (например, Minecraft).
- Egg — конкретная конфигурация запуска внутри Nests (vanilla, Paper, Forge и т.д.).
Egg содержит набор переменных, Docker-образ и команду запуска. Изменение Egg — продвинутая задача, но она даёт максимальный контроль.

Что можно менять в Egg
- Docker-образ (image) — указывает, какой образ будет использоваться для контейнера.
- Команда запуска (startup) — строка запуска сервера.
- Переменные (Variables) — шаблонные параметры, которые передаются в командную строку.

Рекомендуется:
- Форкать и хранить свои образы в приватном реестре или GitHub Packages / Docker Hub с версионированием.
- В entrypoint.sh добавлять предварительные шаги: загрузка билдов, применение конфигураций, переключение веток.
- Использовать переменные Egg для конфигурации per-server, вместо постоянного изменения образа.

Практика: у меня entrypoint обновляет ветку сервера с CI-сервера (TeamCity/GitLab CI), затем запускает основную бинарную/Java-команду.
Создание сервера в панели
Пошагово:
- Servers → Create Server.
- Укажите имя, описание и назначьте владельца (Server Owner) — иначе возникнет ошибка.
- Выберите Node и Allocation (IP/порт). Добавьте дополнительные allocations для RCON/UDP при необходимости.

- Настройте лимиты ресурсов: память, диск, CPU. Если ставите значения в 0 — ограничения отключены и система не ограничивает потребление.

- Выберите Nest и Egg; при необходимости переопределите переменные и укажите номера портов, соответствующие allocations.

Нажмите Create. Платформа отправит запрос демону; первый запуск занимает несколько минут, так как происходит подтягивание образа и первичная установка.
После готовности открывайте Console → просматривайте логи и выполняйте команды.

В консоли также доступны: файловый менеджер (FTP с chroot в контейнер), учётные записи FTP для доступа к файлам, пользователи сервера и расписания задач (schedules) — например, ежедневные рестарты.
В разделе Configuration можно редактировать переменные сервера и триггерить Rebuild Docker Container. Rebuild не удаляет данные, но пересобирает контейнер, поэтому необходим после правки entrypoint или образа.
Безопасность и надёжность
Рекомендации по защите инфраструктуры:
- TLS: всегда используйте HTTPS/SSL между панелью и демонами.
- Сегментация сети: панель в отдельной сети/подсети, доступ к ней через VPN или ограниченный список IP.
- Минимизация прав: запускайте Wings под непривилегированным пользователем, если это возможно.
- Мониторинг: интегрируйте метрики (Prometheus/Grafana) и логирование (ELK/Graylog).
- Бэкапы: регулярные резервные копии базы данных и конфигураций. Храните бэкапы отдельно от рабочих узлов.
- Обновления образов: используйте подписанные/проверенные образы и регулярно обновляйте их.
- Защита Docker: используйте cgroups, seccomp, AppArmor/SELinux и ограничивайте привилегии контейнеров.
Совет: для FTP доступа включайте chroot и используйте отдельные учётные записи с ограниченными правами.
Шаблон SOP для добавления новой ноды (короткая процедура)
- Подготовить машину: установить Docker, Node.js, открыть необходимые порты.
- На панели создать Location и Node с корректными параметрами.
- Скопировать JSON-конфиг из панели и поместить в
/srv/daemon/config/core.jsonна хосте. - Установить и включить wings.service через systemd.
- Проверить статус в панели и выполнить тестовый запуск контейнера.
- Добавить мониторинг и бэкап-политику.
Роль‑ориентированные чеклисты
Администратор (DevOps)
- Настроить SSL и брандмауэр.
- Обновить ОС и Docker.
- Настроить systemd для Wings.
- Настроить мониторинг и алертинг.
Разработчик/Инженер сборки
- Подготовить Dockerfile и entrypoint.sh.
- Организовать CI/CD (сборка образов и публикация в реестр).
- Протестировать поведение entrypoint при рестарте.
Оператор игрового сервера
- Создать сервер в панели, проверить выделение портов.
- Настроить переменные Egg и расписание (рестарт, бэкап).
- Проверять логи и отвечать на инциденты.
Критерии приёмки
- Сервер в панели в состоянии “online” и отвечает в консоли.
- Контейнер запущен без ошибок в логах 5 минут после старта.
- Резервная копия базы данных настроена и проверена.
- Порты и SSL корректно работают, проверено соединение между панелью и демоном.
Типичные проблемы и способы устранения
Проблема: нода не прикрепляется к панели
- Проверьте JSON-конфиг и правильность домена.
- Убедитесь, что certbot сгенерировал корректный сертификат.
- Проверьте брандмауэр, откройте порты, используемые Wings.
Проблема: контейнер постоянно рестартует
- Откройте Console и просмотрите ошибки в логах.
- Проверьте правильность переменных в Egg и команду запуска.
- Убедитесь, что образ содержит все зависимости.
Проблема: нехватка ресурсов на ноде
- Установите лимиты в панели или добавьте дополнительные узлы.
- Проверьте процессы на хосте: используют ли они swap или перегружают CPU.
Модели зрелости инфраструктуры (уровни)
- Уровень 1 — Один сервер, панель и демон на одном хосте. Подходит для тестов и локальной разработки.
- Уровень 2 — Панель на отдельном VPS; один или несколько демонов на выделенных хостах. Резервные копии настроены.
- Уровень 3 — Множественные ноды в разных регионах, автоматизированный CI/CD для образов, мониторинг и алертинг, изолированные сети.
Решение при миграции узла на новый хост
- Создайте новый узел в панели и настройте ресурсы.
- На новом хосте установите Docker и Wings.
- Скопируйте конфигурации и данные (например, игровые миры) из старого контейнера в хранилище.
- Тестируйте на новом узле, затем переключите allocation или обновите DNS.
- Убедитесь в целостности бэкапов и сохраните старый узел как «канарейку» на случай отката.
Примеры полезных сниппетов
Systemd unit уже приведён выше — сохраните как /etc/systemd/system/wings.service и включите автозапуск.
Пример простого entrypoint.sh (контролируемая последовательность действий):
#!/bin/sh
set -e
# Обновление сервера или получение билда
# git pull origin main || true
# placeholder: загрузка артефактов из CI
# Запуск основного процесса (замените на свою команду)
exec java -Xmx${MEMORY} -jar server.jar noguiИспользуйте переменные окружения, определённые в Egg, для динамической подстановки.
Decision tree: выбрать, где ставить панель и демоны
flowchart TD
A[Начало] --> B{Нужна ли высокая доступность?}
B -- Да --> C[Панель на отдельном VPS с бэкапом и HA'mysql']
B -- Нет --> D[Панель и демон на одном VPS для тестов]
C --> E{Сколько регионов?}
E -- Много --> F[Несколько демонов в регионах]
E -- Один --> G[Один демон, масштабирование по ресурсам]
D --> GГлоссарий (1‑строчные определения)
- Панель — веб-интерфейс Pterodactyl для управления серверами.
- Wings — демон Pterodactyl, запускающий Docker-контейнеры.
- Egg — шаблон сервера: образ, переменные и команда запуска.
- Nest — категория яиц, объединяющая похожие серверы.
- Allocation — привязка IP/порта к серверу.
Заключение
Pterodactyl предоставляет мощную и гибкую платформу для управления игровыми серверами на основе Docker. Ключевые задачи — корректная настройка панели и демонов, формирование надежных Docker-образов и контроль доступа. Для продуктивной эксплуатации уделите внимание безопасности, мониторингу и автоматизации CI/CD для образов.
Important: начните с тестовой среды, затем постепенно добавляйте узлы и автоматизацию.
Краткое резюме в конце статьи приведено ниже.
Сводка
- Pterodactyl разделяет управление (панель) и исполнение (демоны).
- Eggs и Nests дают гибкость в конфигурации серверов.
- Используйте TLS, мониторинг и резервные копии.
- Документируйте SOP и тестируйте миграции заранее.
Похожие материалы
Троян Herodotus: как он действует и как защититься
Включить новое меню «Пуск» в Windows 11
Панель полей PivotTable в Excel — руководство
Включить новый Пуск в Windows 11 — инструкция
Как убрать дубликаты Диспетчера задач Windows 11