GameAP Daemon

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

Демон сам подключается к панели по gRPC и держит постоянное соединение. Панель к демону не подключается, входящих портов на выделенном сервере он не открывает.

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

Установка

Автоматически через панель

В панели перейдите на страницу «Администрирование»«Выделенные серверы»«Создать», скопируйте команду и выполните её на выделенном сервере.

Окно автоматической установки GameAP Daemon с командой для выделенного сервера

Полное описание установки, включая 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.