GameAP Daemon
GameAP Daemon — фоновое приложение, которое работает на выделенном сервере и управляет игровыми серверами: устанавливает, удаляет, запускает, останавливает, следит за их состоянием и выполняет команды панели.
Демон сам подключается к панели по gRPC и держит постоянное соединение. Панель к демону не подключается, входящих портов на выделенном сервере он не открывает.
Установка
Автоматически через панель
В панели перейдите на страницу «Администрирование» → «Выделенные серверы» → «Создать», скопируйте команду и выполните её на выделенном сервере.

Полное описание установки, включая Windows, ручную регистрацию и разбор ошибок — на странице Выделенные серверы.
Менеджер процессов
Менеджер процессов — системная утилита, которая запускает, останавливает и перезапускает игровые серверы и следит за их состоянием. Выбрать его можно при установке, в блоке «Дополнительные настройки».
Если менеджер не указан, демон определяет его сам: в Linux — systemd, а если systemd недоступен
или демон работает в контейнере, то запасной вариант; в Windows — Shawl;
в macOS — tmux.
Подробности — Менеджеры процессов.
Конфигурация
Файл конфигурации в формате YAML:
- Linux —
/etc/gameap-daemon/gameap-daemon.yaml - Windows —
C:\gameap\daemon\gameap-daemon.yaml
Путь можно задать явно флагом --config (-c). Если флаг не указан, демон ищет файл по списку
путей: сначала в текущем каталоге, затем в /etc/gameap-daemon/, /etc/gameap/, затем
/etc/gameap-daemon.yaml и домашний каталог пользователя. Берётся первый найденный.
В списке поиска остались имена с расширением
.cfg— от GameAP 3. Такой файл будет найден, но разбирается только YAML: демон завершится с ошибкой о неподдерживаемом формате. Используйте.yamlили.yml.
Неизвестные ключи в файле игнорируются. Относительные пути к файлам сертификатов отсчитываются от каталога, в котором лежит сам файл конфигурации.
Обязательные параметры
| Параметр | Тип | Описание |
|---|---|---|
ds_id |
число | Идентификатор выделенного сервера в панели |
api_key |
строка | Ключ доступа к API панели |
grpc.address |
строка | Адрес панели в виде хост:порт |
Все три заполняются автоматически при регистрации демона.
Если grpc.address не задан, адрес выводится из устаревшего параметра api_host: берётся имя
хоста, порт заменяется на 31718. Задавать grpc.address явно надёжнее — api_host оставлен
только для совместимости.
Подключение к панели
| Параметр | По умолчанию | Описание |
|---|---|---|
grpc.address |
— | Адрес панели хост:порт |
grpc.insecure |
false |
Отключить TLS. Только для отладки |
grpc.heartbeat_interval |
30s |
Период отправки heartbeat |
grpc.connect_timeout |
30s |
Таймаут установки соединения |
grpc.initial_reconnect_delay |
1s |
Начальная пауза перед переподключением |
grpc.max_reconnect_delay |
60s |
Предельная пауза перед переподключением |
Подробнее о протоколе, переподключении и взаимной аутентификации — GRPC API.
Сертификаты
Соединение с панелью защищено TLS, демон предъявляет клиентский сертификат. Все три файла выдаёт панель при регистрации.
| Параметр | Описание |
|---|---|
ca_certificate_file |
Путь к сертификату центра сертификации панели |
certificate_chain_file |
Путь к сертификату демона |
private_key_file |
Путь к приватному ключу демона |
private_key_password |
Пароль от приватного ключа, если он зашифрован |
ca_certificate |
Сертификат центра сертификации прямо в файле конфигурации |
certificate_chain |
Сертификат демона прямо в файле конфигурации |
private_key |
Приватный ключ прямо в файле конфигурации |
Для каждого из трёх сертификатов нужно задать либо путь к файлу, либо содержимое — значение
в файле конфигурации имеет приоритет. При grpc.insecure: true сертификаты не требуются.
Пути
| Параметр | По умолчанию | Описание |
|---|---|---|
work_path |
— | Рабочий каталог. В его подкаталогах лежат файлы игровых серверов |
tools_path |
{work_path}/tools |
Каталог вспомогательных утилит |
steamcmd_path |
— | Каталог с SteamCMD |
path_7zip |
— | Путь к 7-Zip. Только Windows |
path_starter |
— | Путь к программе запуска. Только Windows |
Значения по умолчанию при установке: work_path — /srv/gameap в Linux и C:\gameap в Windows,
steamcmd_path — /srv/gameap/steamcmd и C:\gameap\steamcmd соответственно.
Журналирование
| Параметр | По умолчанию | Описание |
|---|---|---|
log_level |
info |
debug, info, warn, error |
output_log |
— | Файл журнала обычных сообщений |
error_log |
— | Файл журнала ошибок |
При установке журнал пишется в /var/log/gameap-daemon/output.log в Linux и
C:\gameap\daemon\logs\output.log в Windows.
Сбор метрик
| Параметр | По умолчанию | Описание |
|---|---|---|
metrics.enabled |
true |
Сбор метрик |
metrics.collection_interval |
5s |
Период съёма показаний, не меньше 1s |
metrics.retention_duration |
10m |
Сколько хранить показания. Допустимо от 10m до 60m |
if_list |
— | Сетевые интерфейсы, по которым собирать метрики |
drives_list |
— | Диски, по которым собирать метрики |
Значения retention_duration вне допустимого диапазона приводятся к его границам.
Выполнение задач
| Параметр | По умолчанию | Описание |
|---|---|---|
task_manager.run_task_period |
10ms |
Период опроса очереди задач |
task_manager.task_timeout |
2h |
Предельное время выполнения одной задачи |
task_manager.workers_count |
— | Число одновременно выполняемых задач |
Менеджер процессов
| Параметр | По умолчанию | Описание |
|---|---|---|
process_manager.name |
определяется автоматически | Название менеджера процессов |
process_manager.config |
— | Дополнительные параметры менеджера |
Единственный поддерживаемый дополнительный параметр — scope со значением system или user,
и только для systemd. Для остальных менеджеров он вызовет ошибку при запуске.
process_manager:
name: systemd
config:
scope: user
Учётная запись Steam
Многие игровые серверы нельзя скачать через SteamCMD анонимно — нужен аккаунт с приобретённой копией игры.
steam_config:
login: ваш_логин
password: ваш_пароль
group: gameap
Параметр group задаёт общую группу для каталога SteamCMD, чтобы игровые серверы, работающие
под собственными пользователями, могли обновлять SteamCMD. Если не задан, берётся основная группа
пользователя сервера.
На используемой учётной записи Steam должна быть отключена двухфакторная аутентификация — иначе демон не сможет войти в SteamCMD.
Поэтому заводите отдельную учётную запись только для скачивания серверных файлов, не свою основную: пароль хранится в файле конфигурации открытым текстом, а отключённая двухфакторная аутентификация делает такую запись заметно уязвимее.
Файл конфигурации содержит пароли и ключ доступа к панели. Держите его доступным для чтения только
пользователю, от которого работает демон, и не включайте в незашифрованные резервные копии
и в отправляемые куда-либо журналы. При регистрации демон создаёт файл с правами 0600 — при
правке вручную сохраните их.
Замена адресов репозиториев
Позволяет подменить хост, с которого скачиваются файлы игровых серверов, — например на зеркало поближе.
remote_repository_replacements:
files.gameap.ru: cdn.gameap.com
files.gameap.com:
- cdn1.gameap.com
- replace: cdn2.gameap.com
priority: 10
Первая строка — самый частый случай: адрес files.gameap.ru устарел, и записи игр, заведённые
до его отключения, продолжают на него ссылаться. Такая замена чинит их без правки каждой игры.
Значением может быть один адрес или список. У элементов списка можно указать priority — чем
больше число, тем выше приоритет.
Параметры Windows
| Параметр | По умолчанию | Описание |
|---|---|---|
use_network_service_user |
false |
Запускать игровые серверы под NT AUTHORITY\NETWORK SERVICE |
users |
— | Пароли пользователей, под которыми запускаются игровые серверы |
При use_network_service_user: true серверы работают от системной учётной записи с ограниченными
правами — это выбор по умолчанию при установке через gameapctl. Иначе используются учётные записи
из блока users:
users:
gameap_user1: пароль
gameap_user2: base64:cGFyb2xi
Пароль можно записать в кодировке base64 с префиксом base64:.
base64:— это кодирование, а не шифрование. Такое значение восстанавливается в исходный пароль одной командой и от чтения файла не защищает. Префикс нужен лишь для паролей со спецсимволами, которые ломают разбор YAML. Защита здесь одна — права на файл.
Пример файла конфигурации
ds_id: 1
api_key: ваш_ключ
grpc:
address: panel.example.com:31718
ca_certificate_file: /etc/gameap-daemon/certs/ca.crt
certificate_chain_file: /etc/gameap-daemon/certs/server.crt
private_key_file: /etc/gameap-daemon/certs/server.key
work_path: /srv/gameap
steamcmd_path: /srv/gameap/steamcmd
if_list: []
drives_list: []
log_level: info
Именно такой файл создаёт команда регистрации. Полный пример со всеми параметрами и комментариями есть в репозитории демона.
Управление службой
Linux
systemctl start gameap-daemon
systemctl stop gameap-daemon
systemctl restart gameap-daemon
systemctl status gameap-daemon
Обновление:
gameapctl daemon upgrade
Windows
Демон работает как служба GameAP Daemon. Управлять ею можно через gameapctl.exe или
стандартными средствами Windows.