Egg Repository

Pterodactyl Community Egg Repository

Arma 3

Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PC's premier military game. Authentic, diverse, open - Arma 3 sends you to war.

Read Me

Arma 3

Updating your Egg? Please see How to Update Egg to avoid any issues!


Authors / Contributors


Red-Thirten

💻

Aussie Server Hosts

💻 💡

IAmSilK

💻 💡

Daave

💻 💤

Game Description

From Bohemia Interactive's Website:

Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PC’s premier military game. Authentic, diverse, open - Arma 3 sends you to war.


Egg Capabilities

  • Configurable to run 32 or 64-bit versions of the server
  • Max Players is configurable and able to be host enforced (*see Recommended Egg Modifications)
  • Able to download server updates on startup
  • Able to download, update, and load Steam Workshop mods on startup (*see Installation Requirements)
    • Accepts uploaded HTML modlist files exported from the Arma 3 Launcher to define mods to load on the server.
    • Also accepts manually listed mods, CDLCs, and server-side only mods.
    • Checks for mod updates against their Steam Workshop page's last update for quick and efficient update checks.
    • Automatically moves mod .bikey's to the /keys/ directory.
  • Configurable to download Creator DLCs
  • Configurable to run Beta/Performance binaries of the server (if desired; advanced users only)
  • Additional Arma 3 startup parameters can be added to fine-tune performance
  • Configurable to run up to 5 Headless Clients in parallel with the main server (may require additional performance overhead)
  • WHMCS compatible (*see Recommended Egg Modifications)

Installation Requirements

  • A valid, real Steam account, with Steam Guard turned off, is required to install the server (default "anonymous" login cannot be used). This account does not need to own Arma 3. For security reasons it is recommended by Valve that you create a new Steam account just for your dedicated servers.
  • For automatic Steam Workshop mod downloading to work, the Steam account does need to own Arma 3. However, this is optional functionality, and mods can be manually uploaded to the server if desired. Hosts may feel free to change the "Disable Mod Downloads/Updates" variable to 1 if they would not like to offer it's functionality to clients.

Server Ports

Default server ports are listed below, but the Main port can be any port. There are three more ports after the Main port that are relative to the Main port (For example: The BattlEye port is always 4 ports higher than the Main port). All four ports are required for normal server behavior. It is recommended that each server be 100 ports separate from each other.

PortDefault (UDP)
Arma 3 Game & VON (Main)2302
Steam Query (+1)2303
Steam Port (+2)2304
BattleEye (+4)2306

Installation/System Requirements

Bare MinimumRecommended
ProcessorRecent x86/64 (AMD/Intel) processor. No ARM support.ARMA 3 is mainly CPU intensive. Contrary to popular belief, the server binary can run on multiple cores/threads. However, it's ability to manage asynchronous tasks and hyperthread is very limited, meaning additional cores/threads reach diminishing returns very quickly. In addition, it's ability to utilize all of the CPU allotted to it for AI processing seems to be limited as well. Therefore, a Headless Client and a properly written mission file are highly recommended if large amounts of AI units will be used.
RAM2048 MiB3072 MiB (If used, every Headless Client uses an additional 2048 MB of RAM as well)
Storage10 GB50+ GB (depends on how many mods are installed)
Network0.512 Mbit/s/player1-5 Mbit/s/player
Host OSMost stable Linux OS branches should workUsing the latest kernel version for your installed OS can prevent some edge-case installation/boot issues.

RCON

External/Compatible RCON clients can be used to connect to the server if the following requirements are met:

  1. An extra port is forwarded and assigned to the server in Pterodactyl. It is recommended to use the +5 port from the Main port (ie. if Main port is 2032, RCON port would be 2037). The +3 port cannot be used as it is reserved.
  2. server.cfg has BattlEye = 1;. Unfortunately, RCON cannot be used with BattlEye off.
  3. A beserver_x64.cfg file (or beserver.cfg if using 32-bit) is added to /home/container/battleye/launch with the following content:
RConPassword your_rcon_password
RConPort your_rcon_port

Mounting Workshop Mods

Server hosts may wish to save space and avoid download issues by mounting large and/or common mods. Unfortunately, Arma only allows mods to be loaded from directories down-stream of the server binary (ie. /home/container/*. Docker limitations disallow Pterodactyl from mounting mounts into /home/container/*. The only way around this that I can think of is to create a symlink with a destination that is outside of this location. If anyone knows a way around this, please open an Issue to let us know.


Recommended Egg Modifications

The following are highly recommended variable modifications you can make to the egg after importing it to your panel. While viewing this egg, simply go to the "Variables" tab of the egg editor to make these changes.

Default Steam Username & Password

  • To make deploying servers easy (or if you are using WHMCS), it is recommended to edit the default values of "Steam Username" and "Steam Password" to your Steam account dedicated for hosting. This will make all newly installed servers use these credentials. DO NOT make these fields visible to the end user so that they can use their own Steam accounts; the panel will save their Steam credentials in plain text, which is a BIG NO NO for security and privacy.

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.

How to Update Egg

If you already have an Arma 3 egg installed on your panel, there are a couple things to consider before updating to this egg:

  • The Startup Command has changed, but Pterodactyl currently does not update this across all your existing servers. Servers will still boot with their old Startup Command, but the new HTML Modlist feature will not work, and depreciated variables for config files will be used. Servers will have to be manually updated to the new Startup Command via the Startup tab.
  • Startup Variables have been completely rehauled. While most important existing variables have retained their Environment Variable names, a lot of their titles and order have been adjusted. Simply updating your existing egg with this egg may lead to Startup Variables being terribly out of order and cluttered. Therefore, the following steps are recommended to avoid this:
    1. Change the name of your existing Arma 3 egg to "Arma 3 (Old)".
    2. Install this updated egg as a new egg in your nest.
    3. Make any egg modifications you would like. (*see Recommended Egg Modifications)
    4. Change all existing Arma 3 servers to the new egg via the Startup tab.
    5. Delete the old egg.
Yolks
NameTag
ghcr.io/ptero-eggs/games:arma3ghcr.io/ptero-eggs/games:arma3
Variables and Startup

Startup Command

./{{SERVER_BINARY}} -ip=0.0.0.0 -port={{SERVER_PORT}} -profiles=./serverprofile -bepath=./ -cfg=basic.cfg -config=server.cfg -mod=\"{{CLIENT_MODS}}\" -serverMod=\"{{SERVERMODS}}\" \"{{STARTUP_PARAMS}}\"

Variables

[REQUIRED] Steam Username

Used for installation and updates. Account does not need to own Arma 3, but MUST BE a VALID Steam account (anonymous login cannot be used). For security reasons it is recommended that you create a new Steam account just for your dedicated servers. *This info is not visible to the server owner.*

Environment Variable: STEAM_USER
Default Value: your_steam_username
User Viewable:
User Editable:
[REQUIRED] Steam Password

Used for installation and updates. Steam Guard MUST be completely TURNED OFF for install to complete successfully. *This info is not visible to the server owner, BUT IS stored in PLAIN TEXT. It is NOT advised to use a personal account; best to use a dummy account.*

Environment Variable: STEAM_PASS
Default Value: your_steam_password
User Viewable:
User Editable:
Number of SteamCMD Retry Attempts

How many times SteamCMD should retry downloading a server or mod after a recoverable error. (ie. A particularly large mod like CUP or RHS download times out)

Environment Variable: STEAMCMD_ATTEMPTS
Default Value: 3
User Viewable:
User Editable:
Server Binary

Server binary to call on server start. (32-bit: arma3server | 64-bit: arma3server_x64)

Environment Variable: SERVER_BINARY
Default Value: arma3server_x64
User Viewable:
User Editable:
Extra Startup Parameters

See https://community.bistudio.com/wiki/Arma_3_Startup_Parameters for more info on valid flags for this field. "-noLogs" is recommended to prevent console rate-limit warnings.

Environment Variable: STARTUP_PARAMS
Default Value: -noLogs
User Viewable:
User Editable:
Max Players

Maximum number of players allowed to join the server.

Environment Variable: MAX_PLAYERS
Default Value: 32
User Viewable:
User Editable:
Server Password

Password required to join the server. Leave blank to have no password.

Environment Variable: SERVER_PASSWORD
Default Value:
User Viewable:
User Editable:
Automatic Updates

Quickly checks for any server or mod updates on startup, and updates if necessary. (1 Enable | 0 Disable)

Environment Variable: UPDATE_SERVER
Default Value: 1
User Viewable:
User Editable:
Disable Mod Downloads/Updates

If the Steam account does not own the base Arma 3 game, Steam Workshop mod downloads/updates will not work. If so, this setting allows disabling of this feature to avoid errors. (1 Disable | 0 Enable)

Environment Variable: DISABLE_MOD_UPDATES
Default Value: 0
User Viewable:
User Editable:
Download Creator DLCs

Downloads/Updates all the mod files required to run any CDLC during the next Automatic Update. DLCs can be enabled by adding their mod folder name to the Additional Mods startup variable. For example, add "vn;" to load the Prairie Fire CDLC. (1 Yes | 0 No)

Environment Variable: CDLC
Default Value: 0
User Viewable:
User Editable:
Modlist File (Exported from A3 Launcher)

Filename for an exported modlist. This file will be parsed for mod installation and loading. Upload your HTML file to the root directory (eg. /home/container/modlist.html). Leave blank to disable loading mods from a modlist.

Environment Variable: MOD_FILE
Default Value: modlist.html
User Viewable:
User Editable:
Additional Mods

A semicolon-separated list of additional mod folders to load. Useful for loading CDLCs or manually uploaded mods. This mod list will be loaded in addition to the Modlist File (if used). Any mods in this list that are in "@workshopID" form will also be included in Automatic Updates (if enabled). NO capital letters, spaces, or folders starting with a number! (ex. myMod;vn;@123456789;@987654321;etc;)

Environment Variable: MODIFICATIONS
Default Value:
User Viewable:
User Editable:
[Repair] Make Mod Files Lowercase

Every mod that is set to be loaded will have its folder and files changed to lowercase (to prevent errors). It is recommended to enable this for one server boot after copying a mod from a Windows machine to the server, or if mods seem to not be loading. (1 Enable | 0 Disable)

Environment Variable: MODS_LOWERCASE
Default Value: 0
User Viewable:
User Editable:
[Repair] Validate Server Files

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. (1 Enable | 0 Disable)

Environment Variable: VALIDATE_SERVER
Default Value: 0
User Viewable:
User Editable:
[Advanced] Server-Side Only Mods

Mod folders to be used with the "-serverMods" startup option. They only run server-side and are not required by clients if "verifySignatures" is enabled. Any mods in this list that are in "@workshopID" form will also be included in Automatic Updates (if enabled). NO capital letters, spaces, or folders starting with a number! Each folder must be followed with a semicolon (ex. @123456789;@987654321;etc;)

Environment Variable: SERVERMODS
Default Value:
User Viewable:
User Editable:
[Advanced] Optional Client-Side Mods

A semicolon-separated list of optional mods to load into the keys folder, but not include in server's mod parameter. Useful for allowing clients to connect to the server with or without the mod loaded. Mods in this list must be in "@workshopID" form (ex. @123456789;@987654321;). These will also be included in Automatic Updates (if enabled).

Environment Variable: OPTIONALMODS
Default Value:
User Viewable:
User Editable:
[Advanced] Extra Flags for SteamCMD

[This will override "Download Creator DLCs" if used] Only used when checking for server updates, and typically used for grabbing beta builds. Example: -beta profiling -betapassword CautionSpecialProfilingAndTestingBranchArma3

Environment Variable: STEAMCMD_EXTRA_FLAGS
Default Value:
User Viewable:
User Editable:
[Advanced] Headless Clients (HC)

Number of Headless Clients (0 - 5) to launch parallel with the server. Be sure to set the following "HC Connect Password" variable if your server is password locked. PLEASE NOTE: Using a headless client is only recommended for advanced users, adds extra overhead to your permitted server resources, and is only beneficial if a properly written, HC compliant, mission file is provided. See https://community.bistudio.com/wiki/Arma_3:_Headless_Client for more info.

Environment Variable: HC_NUM
Default Value: 0
User Viewable:
User Editable:
[Advanced] HC Hide Console Output

Hides Headless Client console output (except for critical errors) to prevent nonessential console spam. (1 Hide | 0 Show)

Environment Variable: HC_HIDE
Default Value: 1
User Viewable:
User Editable:
[Advanced] Clear HC Profiles Cache on Startup

Deletes all profiles from the "/home/container/serverprofile/home" directory on startup, except for the server's main "Player" profile. Recommended to enable when running HCs, because the profiles are generally unused and can cause HCs to crash if they develop errors. (1 Enable | 0 Disable)

Environment Variable: CLEAR_CACHE
Default Value: 0
User Viewable:
User Editable:
[Advanced] Arma 3 Dedicated Server App ID

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

Environment Variable: STEAMCMD_APPID
Default Value: 233780
User Viewable:
User Editable:
[Advanced] basic.cfg URL

URL to a valid Arma 3 basic.cfg file. The "Basic" configuration file is used during server runtime for advanced network performance tuning. Because it is a required file, this URL is used to download it during installation, or if the file is found missing during startup.

Environment Variable: BASIC_URL
Default Value: https://raw.githubusercontent.com/ptero-eggs/game-eggs/main/arma/arma3/egg-arma3-config/basic.cfg
User Viewable:
User Editable:
Install Script
#!/bin/bash

## File: Pterodactyl Arma 3 Egg - egg-arma3.json
## Author: David Wolfe (Red-Thirten)
## Date: 2022/05/22
## License: MIT License
## Image to install with is 'ghcr.io/ptero-eggs/installers:debian'

# Install packages. Default packages below are skipped if using image noted above, thus speeding up the install process.
apt -y update
apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates

# Check for valid Steam credentials to download Arma 3 with (requires valid Steam account)
if [[ "${STEAM_USER}" == "" ]] || [[ "${STEAM_USER}" == "anonymous" ]] || [[ "${STEAM_PASS}" == "" ]]; then
    echo -e "INSTALLATION ERROR: A valid REAL Steam account is required to download the Arma 3 Dedicated Server."
    echo -e "\t(\"anonymous\" account cannot be used. Game ownership is not required.)"
    exit 1
fi

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

# SteamCMD fails otherwise for some reason, even running as root.
# This is changed at the end of the install process anyways.
chown -R root:root /mnt
export HOME=/mnt/server

# Install game server using SteamCMD
./steamcmd.sh +force_install_dir /mnt/server "+login \"${STEAM_USER}\" \"${STEAM_PASS}\"" +app_update ${STEAMCMD_APPID} ${STEAMCMD_EXTRA_FLAGS} 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 3 setup
cd /mnt/server/
[[ -f basic.cfg ]] || curl -sSLO ${BASIC_URL}
[[ -f server.cfg ]] || curl -sSLO ${BASIC_URL%/*}/server.cfg
chmod 644 basic.cfg server.cfg


## install end
echo "-----------------------------------------"
echo "Installation completed..."
echo "-----------------------------------------"
Installation Imageghcr.io/ptero-eggs/installers:debianInstallation Entrypoint/bin/bash