Skip to content

Arma Reforger

Experience authentic Cold War combat and join friends in the struggle for a sprawling, 51 km² mid-Atlantic island — or take on the role of Game Master and create your very own scenarios for others to enjoy.

egg-arma-reforger.json

updated

Ports

Add an allocation on the node for each port.

  • Game 2001
  • A2S 17777
  • RCON 19999

Install

Installer image
ghcr.io/ptero-eggs/installers:debian
Steam app
1874900
Steam login
not required
Install script
68 lines

Image

  • SteamCMD, Debian ghcr.io/ptero-eggs/steamcmd:debian

Panel features

  • steam_disk_space

    The Panel tells the user when SteamCMD does not have enough disk space.

Startup

The Panel runs this command to start the server. It replaces each variable in the command with the value of that variable.

15 variables

Startup command

sed -i 's/"true"/true/g; s/"false"/false/g' config.json; ./ArmaReforgerServer -gproj ./addons/data/ArmaReforger.gproj -config ./config.json -profile ./profile -backendlog -nothrow -listScenarios -logStats $((0*1000)) -maxFPS 120 -addonTempDir ./tmp
  • Quickly checks for any server or mod updates on startup, and updates if necessary.

    AUTO_UPDATEUsers can edit

    boolean

  • Region listed in the server browser. ISO 3166-1 alpha-2 codes can be used in this field.

    REGIONUsers can edit

    required|string|in:AD,AE,AF,AG,AI,AL,AM,AO,AQ,AR,AS,AT,AU,AW,AX,AZ,BA,BB,BD,BE,BF,BG,BH,BI,BJ,BL,BM,BN,BO,BQ,BR,BS,BT,BV,BW,BY,BZ,CA,CC,CD,CF,CG,CH,CI,CK,CL,CM,CN,CO,CR,CU,CV,CW,CX,CY,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,EH,ER,ES,ET,EU,FI,FJ,FK,FM,FO,FR,GA,GB,GD,GE,GF,GG,GH,GI,GL,GM,GN,GP,GQ,GR,GS,GT,GU,GW,GY,HK,HM,HN,HR,HT,HU,ID,IE,IL,IM,IN,IO,IQ,IR,IS,IT,JE,JM,JO,JP,KE,KG,KH,KI,KM,KN,KP,KR,KW,KY,KZ,LA,LB,LC,LI,LK,LR,LS,LT,LU,LV,LY,MA,MC,MD,ME,MF,MG,MH,MK,ML,MM,MN,MO,MP,MQ,MR,MS,MT,MU,MV,MW,MX,MY,MZ,NA,NC,NE,NF,NG,NI,NL,NO,NP,NR,NU,NZ,OM,PA,PE,PF,PG,PH,PK,PL,PM,PN,PR,PS,PT,PW,PY,QA,RE,RO,RS,RU,RW,SA,SB,SC,SD,SE,SG,SH,SI,SJ,SK,SL,SM,SN,SO,SR,SS,ST,SV,SX,SY,SZ,TC,TD,TF,TG,TH,TJ,TK,TL,TM,TN,TO,TR,TT,TV,TW,TZ,UA,UG,UM,US,UY,UZ,VA,VC,VE,VG,VI,VN,VU,WF,WS,YE,YT,ZA,ZM,ZW

  • Name displayed in the server browser.

    SERVER_NAMEUsers can edit

    required|string|max:255

  • Maximum number of players allowed to join the server.

    MAX_PLAYERSUsers can edit

    required|integer|between:1,256

  • Password required for clients to enter before they can join the server. Leave empty to have no password.

    SERVER_PASSUsers can edit

    nullable|string|max:32

  • ADMIN_PASSUsers can edit

    nullable|string|max:32

  • ID of scenario to run/play. Valid IDs can be viewed in the console upon startup of the server.

    SCENARIO_IDUsers can edit

    required|string

  • Set if the session can be selected through the auto join feature.

    AUTO_JOINABLEUsers can edit

    required|string|in:true,false

  • Set the visibility of the server in the Server Browser.

    VISIBLEUsers can edit

    required|string|in:true,false

  • Enables the anti-cheat engine on the server and requires all clients to be running it.

    BATTLEYEUsers can edit

    required|string|in:true,false

  • DISABLE_THIRDUsers can edit

    required|string|in:true,false

  • Sets a maximum FPS limit for the server, saving performance in some cases. Leave empty for no limit.

    MAX_FPSUsers can edit

    nullable|integer|gt:0

  • How often (in seconds) to log the FPS and other debug stats to the console. Set to 0 to disable.

    LOG_INTERVALUsers can edit

    required|integer|min:0

  • "true" to enable; empty to disable. Validates all server files when Automatic Updates is enabled. Note: This will significantly increase server startup times, so it is recommended to only enable this when needed.

    VALIDATEUsers can edit

    nullable|string

  • Used for installation and updates. Rarely needs to be changed.

    SRCDS_APPIDUsers cannot see

    required|integer

Wings

Stop command
^C (SIGINT)
Running when the console shows
Starting RPL server

Files Wings edits

Wings sets these values in these files before each start.

config.json json

bindAddress
0.0.0.0
bindPort
{{server.build.default.port}}
publicAddress
{{server.build.default.ip}}
publicPort
{{server.build.default.port}}
game.name
{{server.build.env.SERVER_NAME}}
game.password
{{server.build.env.SERVER_PASS}}
game.passwordAdmin
{{server.build.env.ADMIN_PASS}}
game.scenarioId
{{server.build.env.SCENARIO_ID}}
game.maxPlayers
{{server.build.env.MAX_PLAYERS}}
game.visible
{{server.build.env.VISIBLE}}
game.gameProperties.disableThirdPerson
{{server.build.env.DISABLE_THIRD}}
game.gameProperties.fastValidation
true
game.gameProperties.battlEye
{{server.build.env.BATTLEYE}}

Readme

Arma Reforger

Server version currently marked as early access by the Arma developers! Check back often for egg updates as more features are added to the server software.


Authors / Contributors


Game Description

From Bohemia Interactive's Website:

Experience authentic Cold War combat and join friends in the struggle for a sprawling, 51 km² mid-Atlantic island — or take on the role of Game Master and create your very own scenarios for others to enjoy.


Egg Capabilities

  • Configurable to automatically check for server updates on start via SteamCMD. Forcing validation is also configurable.
  • Able to download and load Arma Reforger Workshop mods on startup (requires manual editing of the config.json file).
  • Configuration of multiple common settings in the config.json file via Startup Parameters:
    • Server Name, Passwords, Scenario ID, Disable Third Person, Max FPS, and more...
  • Max Players is configurable and able to be host enforced (*see Recommended Egg Modifications).
  • WHMCS compatible.

Server Ports

Port Default Protocol Required Notes
Game 2001 UDP Yes Primary port in Panel
A2S 17777 UDP No Steam Query / Requires additional configuration in config.json
RCON 19999 UDP No Requires additional configuration in config.json

Installation/System Requirements

Bare Minimum Recommended
Processor Recent x86/64 (AMD/Intel) processor. No ARM support. Can use up to 300-600% CPU under load with uncapped FPS (set Max FPS to prevent).
RAM 3328 MiB 6144-8192 MiB
Storage 5 GB 7-10 GB (or more, depending on number of mods downloaded)
Network If node is behind a NAT, will require Egg Modification (*see Define Host Registered Bind Address Wings Node is not behind a NAT
Game Ownership Not required to start or download mods. ----

How to Add Mods

Currently, adding mods to your server is tricky because there is very little documentation and it is difficult to find mod IDs. Hopefully this will change in the future, but following these steps will get it to work:

  1. Open up a client copy of Arma Reforger and subscribe/download any mods you want to add to the server (at this time, I do not know of a way to find mod IDs without requiring use of the game).
  2. Once done, close the game and navigate to this folder on your computer: My Documents\My Games\ArmaReforger\addons\
  3. Aimlessly open each folder to find which mods you want to add and open each of their ServerData.json files in a text editor.
  4. Then, on your server panel, open the config.json file for editing.
  5. Find "mods": [] and replace it with the following:
"mods": [
	{
		"modId": "591AF5BDA9F7CE8B",
		"name": "Capture & Hold",
		"version": "1.0.0"
	},
	{
		"modId": "9A51598BACFBFDE7",
		"name": "Explosive Goats Beta",
		"version": "0.5.42"
	}
]
  1. Change modId to equal the id value found at the top of the ServerData.json file you found.
  2. Change name to equal the name value found at the top of the ServerData.json file you found.
  3. Change version to equal the version value found at the top of the ServerData.json file you found.
  4. Repeat for each mod you want to add by copy/pasting the {} sections like shown above. Make sure each {} section has a , after it, except for the last item.

The server will automatically download and run the mods you specify on startup. For mods that add scenarios, you can find the Scenario IDs listed as gameId in the ServerData.json file. Lastly, if a mod updates, you will likely have to change the version value to match it's new version. You may also have to delete the mod folder in the addons/ directory to have it re-download (reports on this have been mixed).


Recommended Egg Modifications

The following are highly recommended variable modifications you can make to the egg after importing it to your panel.

Define Host Registered Bind Address

Due to a current behavior of the Panel, SERVER_IP will not return the node's public IP address if it is behind a NAT; it will return its private IP address. Unfortunately at this time, Arma Reforger requires the server's public IP address to be strictly defined within config.json. If you know your node is behind a NAT (or you are finding your node's private IP address being added to config.json), you will need to edit this egg after importing it by following these steps:

  1. As a panel admin, find and open the egg within your Nests tab.
  2. On the first tab "Configuration", find the "Configuration Files" box under the "Process Management" section.
  3. Carefully (as to not touch anything else), find {{server.build.default.ip}} and replace it with your node's public IP address. If done correctly, the line should now look something like this:
"publicAddress": "123.4.56.789",

Restrict Max Players

If you would like to restrict the maximum number of players that can join your client's server, you can change the permissions of the "Max Players" variable so that clients can only view this value (and not edit it). It's default value can also be changed, or the value can be changed on a server-by-server basis as desired.

Changes

  1. SteamCMD + Other fixes

    · yesBad · edbf925

  2. Add steamcmd based eggs

    · Daniel Barton · 60ef9fb

All changes on GitHub

Problem with this egg?

Open an issue on GitHub. Include your Panel and Wings versions.

Install script 68 lines /bin/bash in ghcr.io/ptero-eggs/installers:debian Show
#!/bin/bash

## File: Pterodactyl Arma Reforger Egg - egg-pterodactyl-arma-reforger.json
## Author: David Wolfe (Red-Thirten)
## Date: 2024/07/03
## License: MIT License
## Image to install with is 'ghcr.io/ptero-eggs/installers:debian'

## Download and install SteamCMD
export HOME=/mnt/server
cd /tmp
mkdir -p $HOME/steamcmd $HOME/steamapps
curl -sSL -o steamcmd.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xzvf steamcmd.tar.gz -C $HOME/steamcmd
cd $HOME/steamcmd

# SteamCMD fails otherwise for some reason, even running as root.
chown -R root:root /mnt

# Install/Verify game server using SteamCMD
./steamcmd.sh +force_install_dir $HOME +login anonymous $( [[ "${WINDOWS_INSTALL}" == "1" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} +app_update 1007 $( [[ -z ${SRCDS_BETAID} ]] || printf %s "-beta ${SRCDS_BETAID}" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s "-betapassword ${SRCDS_BETAPASS}" ) validate +quit

# Set up 32 and 64 bit libraries
mkdir -p /mnt/server/.steam/sdk{32,64}
cp -v linux32/steamclient.so /mnt/server/.steam/sdk32/steamclient.so
cp -v linux64/steamclient.so /mnt/server/.steam/sdk64/steamclient.so

## Arma Reforger setup
# Check for successful installation
if [[ ! -f $HOME/ArmaReforgerServer ]]; then
    echo -e "\n\nSteamCMD failed to install the Arma Reforger Dedicated Server!"
    echo -e "\tTry reinstalling the server again.\n"
    exit 1
fi

mkdir -p $HOME/profile $HOME/tmp

echo -e 'Creating default "config.json" configuration file...'
cat > $HOME/config.json << EOF
{
	"bindAddress": "0.0.0.0",
	"bindPort": ${SERVER_PORT},
	"publicAddress": "${SERVER_IP}",
	"publicPort": ${SERVER_PORT},
	"game": {
		"name": "${SERVER_NAME}",
		"password": "${SERVER_PASS}",
		"passwordAdmin": "${ADMIN_PASS}",
		"admins" : [],
		"scenarioId": "${SCENARIO_ID}",
		"maxPlayers": ${MAX_PLAYERS},
		"visible": ${VISIBLE},
		"gameProperties": {
			"serverMaxViewDistance": 2500,
			"serverMinGrassDistance": 50,
			"networkViewDistance": 1000,
			"disableThirdPerson": ${DISABLE_THIRD},
			"fastValidation": true,
			"battlEye": ${BATTLEYE},
			"VONDisableUI": false,
			"VONDisableDirectSpeechUI": false
		},
		"mods": []
	}
}
EOF

echo -e "\nArma Reforger Dedicated Server successfully installed!\n"