infra-edge-lab · v0.1.0
0028. The game server runs as the user fxserver
- Status: accepted
- Date: 2026-10-22
Context
The game server role of luminare.gameserver runs the server as a system user, and two roles of
this repository depend on that name: deploy_target runs its deploy service as that user and
gives its group the spool directory, and docker refuses hosts of the game server group. The
first draft of plan 09 named the user after the game platform. Identifiers in these repositories
carry no platform or vendor brand, and the three repositories must agree on one name, because a
mismatch only shows up on a real host (a missing user, files the service cannot read).
Considered options
- A user named after the game platform, as in the first draft.
- One neutral name for the user, the group, the inventory group and the paths, the same in both
collections and here:
fxserver. - No default: every inventory names the user.
Decision
Chosen option: 2.
- User and group
fxserver, home and base directory/opt/fxserver, unitfxserver.service(created byluminare.gameserver.fxserver), and the inventory groupfxserverof thehostsoutput (ADR 0021). deploy_targetdefaults todeploy_target_run_user: fxserver,deploy_target_run_group: fxserveranddeploy_target_release_root: /opt/fxserver/releases; the spool directory isdeploy:fxserverwith mode2770(ADR 0020).dockerrefuses hosts indocker_forbidden_groups, by default["fxserver"], so Docker never runs on a game server host (ADR 0019).- A unit test keeps the defaults of
deploy_targetanddockeron this name.
Consequences
- Good: the roles of the collections and of this repository fit together without extra
inventory values, and
task e2e:localruns them together on one host. - Bad: a host that already runs a game server under another user needs
deploy_target_run_useranddeploy_target_run_groupset in its inventory.
docs/adr/0028-the-game-server-user-fxserver.md on GitHub
Licensed under Apache-2.0. Source: luminare-dev/infra-edge-lab at v0.1.0.