Running an Arma Reforger server on Pterodactyl
Pterodactyl is the most common hosting panel for Arma Reforger dedicated servers, self-hosted or rented. This guide covers what an admin needs to operate the server from there and, optionally, connect it to an external administration panel.
Ports: three allocations
A Reforger server uses three UDP ports, and in Pterodactyl each must be an allocation assigned to the server:
| Use | Convention | Where it is set |
|---|---|---|
| Game | 2001 | bindPort / publicPort in config.json (the primary allocation) |
| Steam Query (A2S) | 17777 | a2s block in config.json; this is what the server browser and status tools query |
| RCON | 19999 | rcon block; see how to enable RCON |
If the egg only ships the game allocation, the node administrator adds the other two (Admin → Servers → Build → Allocations) and you then put them in config.json. The classic "RCON does not answer" on Pterodactyl is a port in the JSON that is not assigned to the server.
Where config.json lives
It depends on the egg. Usually the file is in the container root (/home/container/config.json) or in the profile folder (/home/container/profile/). To know for sure, look at the egg's startup variable: the start command carries -config <path>. Edit it from the Files tab; changes are read on restart.
The important secrets live there: game.passwordAdmin (the in-game #login) and rcon.password. Anyone with Files access sees them; limit Pterodactyl sub-users to what they actually need.
Restarting and stopping
Pterodactyl's Start / Restart / Stop / Kill buttons act on the process. Differences that matter:
- Pterodactyl Restart kills the process and starts it again: it reloads
config.jsonand mods. It takes as long as the server takes to boot (a minute or two with mods). #restartover RCON restarts the match without stopping the process: it does not reloadconfig.json. Faster, and good for "cleaning" the scenario.#shutdownover RCON stops the process; on Pterodactyl with auto-restart (crash detection) it comes back on its own.
The client API
Pterodactyl has a per-user API that can do everything the interface does: read state, send power signals, read and write files. You generate a key under Account → API Credentials. The key belongs to your account, inherits your permissions and can be revoked any time. The server identifier is the 8-character short code in the URL (/server/a1b2c3d4).
With those two plus the panel URL, an external tool can restart the server, read config.json and apply changes without you opening Pterodactyl. Reforger Ops uses exactly that: restart and shutdown from the panel, validated config.json editing with a backup of the previous file (a broken JSON leaves the server unable to boot), the mod list with names and sizes from the Workshop, and one-click installation of the companion mod into the profile. The key is stored encrypted and never shown back.
Typical problems
- The server does not show in the server browser: A2S port with no allocation, or
publicAddress/publicPortpointing elsewhere. - Restart loop after editing config.json: invalid JSON (a stray comma). Go back to the previous copy.
- Mods that do not load: the ID is mistyped or the mod was blocked/removed from the Workshop. Dependencies are not the problem: the server resolves and downloads them by itself, there is no need to list them in
game.mods.
