Как устроен 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 к игровым серверам панель выполняет сама, напрямую — они не идут через демона.
Что происходит при запуске сервера
- Администратор нажимает кнопку в панели.
- Панель создаёт задание и кладёт его в базу.
- Задание уходит демону по установленному соединению.
- Демон запускает игровой сервер через менеджер процессов.
- Демон присылает ход выполнения и вывод команды, панель показывает их в реальном времени по WebSocket.
- Дальше демон регулярно сообщает состояние сервера и метрики.
Если связь с панелью прервалась, игровые серверы продолжают работать — недоступно только управление из панели. После восстановления связи демон переподключается и получает от панели полное текущее состояние.
Что где хранится
| Данные | Где |
|---|---|
| Пользователи, серверы, игры, задачи | База данных панели |
| Сертификаты gRPC, данные ACME | Файловое хранилище панели |
| Сессии, счётчики, ключ установки | Кэш панели |
| Конфигурация панели | config.env |
| Файлы игровых серверов | Выделенный сервер, в рабочем каталоге демона |
| Конфигурация демона | gameap-daemon.yaml на выделенном сервере |
| Метрики | Оперативная память демона, не дольше часа |
Файлы игровых серверов в панель не копируются: файловый менеджер работает с ними через демона.
Расширение
Плагины выполняются внутри панели в песочнице WebAssembly. Они добавляют страницы, вкладки и интеграции, но собственного доступа к системе не имеют — только через контролируемый интерфейс панели. См. Плагины.
API — всё, что делает интерфейс, доступно через HTTP API; сам интерфейс работает через него же. См. API и токены.
Дальше
- Требования — что нужно для установки
- Начало работы — установка панели и первого выделенного сервера
- GRPC API — подробности канала связи панели и демона
- Несколько экземпляров панели — отказоустойчивая установка