Как устроен GameAP

GameAP состоит из двух приложений: панели, с которой работает администратор, и демона, который запущен на каждом выделенном сервере и управляет игровыми серверами.

Схема архитектуры GameAP: панель, демоны на выделенных серверах и игровые серверы

Три уровня

Панель — одно приложение со встроенным веб-интерфейсом. Хранит все данные: пользователей, выделенные серверы, игры, игровые серверы, задачи. Сама игровые серверы не запускает и файлов их не трогает — она только отдаёт команды демонам.

GameAP Daemon — работает на каждом выделенном сервере. Запускает и останавливает игровые серверы, следит за их состоянием, устанавливает и обновляет их, работает с файлами, собирает метрики.

Игровые серверы — процессы, которыми управляет демон через менеджер процессов: systemd, Docker, Podman, tmux и другие.

Панель и демон можно установить на один сервер — тогда все три уровня окажутся на одной машине.

Кто к кому подключается

Соединение всегда устанавливает демон: он сам подключается к панели и держит одно постоянное соединение, по которому идёт весь обмен.

Панель к демону не подключается. На выделенном сервере не нужно открывать входящие порты и не нужен внешний IP-адрес — достаточно исходящего доступа к панели.

Это отличается от GameAP 3, где к демону подключалась панель.

Направление Порт по умолчанию Протокол Переменная
Браузер администратора → панель 8025 HTTP HTTP_PORT
Браузер администратора → панель 443 HTTPS HTTPS_PORT
Демон → панель 31718 gRPC GRPC_PORT
Панель → игровой сервер порт игры Query, RCON

Это три отдельных слушателя, а не один порт с разбором протокола. HTTPS поднимается только при настроенном сертификате, см. HTTPS и сертификаты.

Запросы Query и RCON к игровым серверам панель выполняет сама, напрямую — они не идут через демона.

Что происходит при запуске сервера

  1. Администратор нажимает кнопку в панели.
  2. Панель создаёт задание и кладёт его в базу.
  3. Задание уходит демону по установленному соединению.
  4. Демон запускает игровой сервер через менеджер процессов.
  5. Демон присылает ход выполнения и вывод команды, панель показывает их в реальном времени по WebSocket.
  6. Дальше демон регулярно сообщает состояние сервера и метрики.

Если связь с панелью прервалась, игровые серверы продолжают работать — недоступно только управление из панели. После восстановления связи демон переподключается и получает от панели полное текущее состояние.

Что где хранится

Данные Где
Пользователи, серверы, игры, задачи База данных панели
Сертификаты gRPC, данные ACME Файловое хранилище панели
Сессии, счётчики, ключ установки Кэш панели
Конфигурация панели config.env
Файлы игровых серверов Выделенный сервер, в рабочем каталоге демона
Конфигурация демона gameap-daemon.yaml на выделенном сервере
Метрики Оперативная память демона, не дольше часа

Файлы игровых серверов в панель не копируются: файловый менеджер работает с ними через демона.

Расширение

Плагины выполняются внутри панели в песочнице WebAssembly. Они добавляют страницы, вкладки и интеграции, но собственного доступа к системе не имеют — только через контролируемый интерфейс панели. См. Плагины.

API — всё, что делает интерфейс, доступно через HTTP API; сам интерфейс работает через него же. См. API и токены.

Дальше