ARMA 3 · SERVER SETUP · NOVEMBER 2026

How to Set Up an Arma 3 Dedicated Server

A first Arma 3 server usually fails on something small: a Steam login SteamCMD will not accept, a server.cfg the server never reads, or a UDP port that never reaches the machine. Here is the order that takes you from an empty folder to a running mission your friends can join, whether you rent a panel or host it yourself.

Start with the clean path

Use the stable branch, one official mission and no mods for the first boot. That gives you a known baseline and makes every later problem narrower.

The config file is not automatic

Arma 3 does not magically load a default server.cfg. If your launch line does not include -config=..., none of your server settings apply.

Folders matter

Keep SteamCMD separate from the Steam client, and the server separate from any local Arma 3 client install. That avoids file clashes and a known case where the server pulls in full client data.

Networking is mostly UDP

The core incoming block is UDP 2302 to 2306, plus the server must answer ping. If friends can join on LAN but not from outside, look at router forwarding and real IPv4 first.

Choose rent or self-host, then follow one fixed order

For a first server, the safest approach is to treat the job as a pipeline rather than a pile of settings. Most failed first launches come from doing everything at once: mods, custom missions, port guessing and config edits without a clean baseline.

  1. Choose a rented panel or a self-hosted machine.
  2. Install the dedicated server package with SteamCMD as app 233780 on a separate Steam account.
  3. Keep the server in its own folder, separate from SteamCMD and separate from any local Arma 3 client.
  4. Create a server config file and point -config at it.
  5. Open UDP 2302 to 2306 and allow ping.
  6. Pick one official mission for the first test.
  7. Join from a client on the same branch, then use #login to become admin.

A rented panel usually handles the repetitive parts: SteamCMD updates, service start and stop, port assignment, and often a config editor. What it cannot skip is the logic of the server itself. You still need a mission, sensible passwords, the same branch on server and clients, and matching mods for every player who joins. If you want to compare panel-based options, the best Arma 3 server hosts page is the sensible place to start.

Self-hosting gives you full control, but it makes the network and operating system your problem. Official minimum hardware is a 2.4 GHz dual-core CPU, 2GB RAM and 32 GB HDD; recommended is a 3.5 GHz quad-core, 4GB RAM and a 32 GB SSD. Arma 3 server work is heavily concentrated on one or two threads, with one thread handling all AI, so faster core speed matters more than simply adding more cores. More cores help with the operating system, database tools or extras, but they do not fix a slow main simulation thread.

You also need a real IPv4 connection. Arma 3 dedicated does not support IPv6 or DS-Lite, so some home broadband lines are ruled out before you begin. If you only need a very small casual setup on the same PC, the Arma 3 Launcher can also host in server mode, but a separate dedicated install is far easier to repeat, update and troubleshoot.

Install on Windows with SteamCMD

SteamCMD needs a real Steam login, not an anonymous one. The usual recommendation is a separate Steam account with no purchases on it purely for the server, because SteamCMD caches the login on the machine and one account cannot be logged in from two places at once. That matters if the same account is also used to play the game on your client PC.

Keep these as separate folders: one for SteamCMD, one for the dedicated server, and one for any local Arma 3 client install. That separation stops file conflicts and makes updates cleaner. It also makes it obvious which folder you are backing up, launching and editing.

On the first run, Steam Guard normally sends a code by email. It is also normal for the script to need running more than once: one pass to authorise, one for SteamCMD to update itself, and another to actually download the server.

@echo off
cd /d C:\SteamCMD
steamcmd +login YOUR_SERVER_STEAM YOUR_PASSWORD +force_install_dir C:\Arma3Server +app_update 233780 validate +quit

Look at the flow below as the minimum working chain: install, point at config, open ports, then join and administer.

How an Arma 3 dedicated server comes online
Install the server package
Separate Steam account
no game purchase needed
SteamCMD
App 233780
own folder
Tell it what to load
server.cfg
name, passwords, mission
-config=
Launch line
-port, -profiles, -name
Open the path, then join
UDP 2302 to 2306
plus ping
same branch
Join, then #login
pick the mission
Without -config the server loads no server.cfg at all, so every setting you wrote is ignored.
Install, point the server at its config, open the UDP block, then join on the same branch and log in as admin.

If the Arma 3 client is installed on the same machine, there is a known issue where the server can load the full client data instead of the dedicated package. The workaround is simple: start the server with an empty -mod= parameter. On the same machine, it is also wise to start the server before opening the Steam client, because Steam port conflicts can stop the client connecting back to the local server.

Install on Linux without running as root

On Linux, create a dedicated non-root user and run the server under that account. That keeps the server files and logs contained, avoids root-owned leftovers, and limits the damage if a tool or script behaves badly.

useradd -m -s /bin/bash steam
su - steam
mkdir steamcmd
cd steamcmd
# download steamcmd_linux.tar.gz into this folder first
tar -xvzf steamcmd_linux.tar.gz
./steamcmd.sh
# now at the Steam> prompt:
force_install_dir ./arma3/
login YOUR_SERVER_STEAM
app_update 233780 validate
exit
# back in the shell: create the profile folders
mkdir -p ~/.local/share/"Arma 3"
mkdir -p ~/.local/share/"Arma 3 - Other Profiles"

A 64-bit Linux install may still need the usual 32-bit libraries for SteamCMD. If SteamCMD will not start or download correctly, that is one of the first things to check.

Profile handling is the main Linux quirk here: -profiles= is broken, so the profile is created automatically at ~/.local/share/Arma 3 - Other Profiles/server/server.Arma3Profile. That means two things. First, do not waste time wondering why your chosen profile folder stays empty. Second, remember that difficulty and related profile settings live there, not beside your launch script.

cd ~/steamcmd/arma3
./arma3server_x64 -name=server -config=server.cfg

The process stays attached to the terminal, so it stops when your SSH session closes unless you launch it inside tmux or screen. To stop it cleanly, use Ctrl+C. If you add mods later, Linux expects -mod= paths to be relative and within or below the Arma 3 directory.

Know which files the server reads and creates

These are the files worth learning first. If you know what each one controls, you can usually tell within minutes whether a problem is config, mission, mod or launch-line related.

Which file do you change for each job?
You want to…server.cfgProfilebasic.cfgMissionskeys
Rename the server or set passwordsYes
Set the mission rotationYesPartly
Add your own missionYes
Use a Custom difficultyPartlyYes
Tune bandwidth for a busy serverYes
Let signed mods pass signature checksPartlyYes
Profile is the .Arma3Profile file, basic.cfg is Arma3.cfg, Missions is the MPMissions folder and keys is the keys folder.
Partly: server.cfg names the mission and difficulty, but the mission file itself lives in MPMissions and Custom difficulty values live in the profile. verifySignatures sits in server.cfg, while the .bikey files go in keys.
Most first-day changes happen in server.cfg. The profile, basic.cfg and keys only come into play for difficulty, bandwidth and mods.
File or folder What it controls Where it lives
server.cfg (name can be anything) Server name, passwords, player cap, BattlEye, signatures, mission rotation and other core server rules Anywhere you choose, as long as your launch line points to it with -config=
server.Arma3Profile or <name>.Arma3Profile Difficulty-related settings tied to the profile name Windows: under the -profiles folder in Users\<name>\; Linux: ~/.local/share/Arma 3 - Other Profiles/server/
Arma3.cfg Engine and bandwidth-related settings, including the basic network config Created on first run in the profile area
MPMissions\ Mission .pbo files the server can load Inside the server install folder
arma3.rpt Debug log for each start; the first place to look for parse errors, missing files and launch issues Created at startup in the profile area
keys\ Public keys used for mod signature checks Inside the server install folder

The important rule is this: server.cfg does not have a magic default name. You can call it almost anything, but the server only reads the file named in -config=. If you leave -config out, no server config is loaded at all, which is why so many new owners think the server is “ignoring” their settings.

Write a first server.cfg that only does the essentials

Your first config should do as little as possible while still proving the server works. That means name, join password if you want one, admin password, sane anti-cheat defaults, a player cap and one known mission.

hostname = "Example Co-op Server";
password = "examplejoin";
passwordAdmin = "exampleadmin";
maxPlayers = 16;
persistent = 1;
BattlEye = 1;
verifySignatures = 2;
kickDuplicate = 1;
logFile = "server_console.log";

class Missions
{
 class Mission1
 {
  template = "MP_CombatPatrol_01.Altis";
  difficulty = "Regular";
 };
};
  • hostname is simply the browser name. If you omit it, the server falls back to the local machine name, which is usually less helpful.
  • password controls who can join. Leave it empty for public access, or set one for a private group.
  • passwordAdmin is the password you use in chat with #login. Joining the server is separate from becoming admin inside it.
  • maxPlayers caps the server, but the real limit is the lower of this value and the mission’s slot count. If you set it higher than the mission supports, players still cannot exceed the mission slots. Headless clients also count as players.
  • persistent = 1 keeps the mission running when everyone leaves. The mission keeps simulating with nobody on, which is the point: groups that drop in and out do not lose progress every time the last player leaves. It only works for missions that use base or instant respawn, a choice the mission maker makes in the mission itself.
  • BattlEye = 1 and verifySignatures = 2 are the right day-one defaults. The trade-off is deliberate: a player with the wrong or unsigned content gets blocked at the door instead of joining a broken session, and cheaters have a much harder time.
  • kickDuplicate = 1 stops duplicate identities connecting. That reduces confusion around ghosted sessions and duplicate admin presence.
  • class Missions tells the server what it can run. The keyword class must be lowercase here, or you get a parsing error.
  • template always takes the form missionName.terrainName. For a mission you upload, that is the .pbo name in MPMissions (for example MyMission.Altis.pbo becomes MyMission.Altis). Official missions that ship with the game use their class name instead and need no upload: MP_CombatPatrol_01.Altis is the COOP 12 Combat Patrol scenario, which makes a clean first test of the server and branch without anyone else’s scripting.

Use a launch line that leaves no doubt about what is loading

Readability matters. A good launch line tells you where the config is, where logs go, which profile name is in use and which port block the server owns.

"D:\Games\Arma3\A3Master\arma3server_x64.exe" "-profiles=D:\Games\Arma3\A3Master" -port=2302 -config=D:\Games\Arma3\A3Master\server.cfg -name=server -world=empty

-port=2302 sets the base port; the other Steam and BattlEye ports follow as offsets. -profiles= on Windows keeps logs and profile files in one predictable place. -config= is the critical switch that loads your server settings. -name=server picks the profile name, which decides where the .Arma3Profile is created.

-world=empty starts the server on an empty world, so it sits idle at the console until a mission is chosen instead of loading a terrain nobody is playing on. Players are not affected, because they always load into the mission’s own map.

Leave mods out until the vanilla server works. When you are ready, put client-and-server mods on -mod, server-only addons on -serverMod, and sort key files properly with the Arma 3 mods installation guide. On Linux, remember that mod paths must be relative and inside or below the Arma 3 folder tree.

Open the right ports and test the right network path

Arma 3 uses a small block of incoming UDP ports. Open them in the local firewall and, if the server is behind a router, forward them there as well. Opening only one side of that path is a common reason a server works on LAN but not for friends on the internet.

One machine, two Arma 3 servers: the port blocks
Every port follows from the game port. Leave at least 100 ports between servers.
Role (all UDP)OffsetServer 1Server 2
Game traffic and voice+023022402
Steam query+123032403
Steam port+223042404
VON (reserved, unused)+323052405
BattlEye+423062406
Set the base with -port=. Each server also needs its own profile and config.
Forward the whole five-port block for each server, on the machine firewall and on the router.
Port Protocol Role Why it matters
2302 UDP Game port Main gameplay traffic, including VON traffic now that VON is part of the game port
2303 UDP Steam query Used for server querying and visibility
2304 UDP Steam port Companion Steam service traffic for the server
2305 UDP VON reserved Reserved, not currently used, but still keep the block intact for a standard setup
2306 UDP BattlEye Needed for BattlEye communication

If BattlEye is enabled, the server also needs the related outgoing traffic on 2344 as TCP and UDP, and on 2345 as TCP. The server must also be pingable with ICMP echo reply. That is not a cosmetic detail: if the machine cannot answer ping, discovery and reachability checks can fail even when the UDP rules look right.

Avoid relying on upnp = 1 in server.cfg if you already control the firewall and router. On machines with active firewalls it can delay startup by 600 seconds, which looks like a hung server when it is really waiting on network automation you do not need.

Running more than one Arma 3 server on one machine is fine as long as you leave at least 100 ports between base values, such as 2302, 2402 and 2502, and give each server its own profile and config. That separation prevents log overlap, profile confusion and port collisions.

First launch, first join and first admin login

On first start you want two things: a console process that stays up, and an arma3.rpt log with no obvious config parse error. If the server opens and closes immediately, or the log shows mission or config syntax problems, fix that before worrying about the server browser.

Join from the in-game browser first, but if you do not see the server there, try direct connect. The browser can be wrong on the client side even when the server itself is available. Make sure the client branch matches the server branch: stable clients join stable servers, and development clients join development servers. For a first server, stable is the sensible choice.

Once connected, press / to open chat and enter #login followed by the admin password from passwordAdmin. Do not forget the #. After that, choose the mission from the mission list. If you already set a one-mission rotation, the server can also auto-select once someone is connected, but logging in and choosing it yourself proves that admin works properly.

If you want trusted people to log in without sharing the admin password, add their SteamID64 values to the config like this:

admins[] = { "STEAMID64_HERE" };

Only one logged-in admin can exist at a time without BattlEye RCon, so keep admin access intentional rather than casual. Once the server stays up, loads an official mission, and lets multiple friends join and rejoin cleanly, you have a working baseline. Only then is it worth adding user-made missions, large mod sets, headless clients or detailed bandwidth tuning in Arma3.cfg.

For updates, stop the server and run app_update 233780 validate again whenever Arma 3 is patched. Version mismatches are one of the most common reasons a server that worked yesterday suddenly refuses clients today.

When something goes wrong, check in this order

This flow is the fastest way to narrow first-day problems without changing ten things at once.

Friends cannot join? Check in this order
A friend cannot see or join your new Arma 3 server
Does the console stay up with no config errors in arma3.rpt?
No
Fix the start-upCheck the -config path and the server.cfg syntax first.
Yes
Are server and client on the same branch and fully updated?
No
Match the buildStable joins stable, development joins development. Rerun app_update 233780 validate.
Yes
Does direct connect work when the browser shows nothing?
Yes
Browser issueThe server is fine. Share the IP and port for now.
No
Is UDP 2302 to 2306 open on the firewall and the router, with ping allowed?
No
Open the full pathLAN joins can work while outside joins fail if only one side is open.
Yes
Check the connection has real IPv4: IPv6-only and DS-Lite lines cannot host Arma 3
Stop at the first no. Most first-join failures are the config path, a branch mismatch or a port block that never reaches the machine.
Symptom Likely cause First fix
Server not in the browser Client browser issue, missing query reachability, or the server is not fully listening yet Try direct connect first, then check UDP 2302 to 2306 and ICMP echo reply
Friends cannot connect from outside, but LAN works Router forwarding missing, local firewall blocking, or no real IPv4 because the line uses IPv6 or DS-Lite Forward the UDP block to the server, allow it in the host firewall, and confirm the connection has real IPv4
Version mismatch Client and server are on different branches, or the server was not updated after a patch Put everyone on the same branch and rerun app_update 233780 validate with the server stopped
Server ignores your settings -config missing, wrong path, wrong file name, or on Linux you are looking in the wrong profile location Add an explicit -config=, verify the path, and read the arma3.rpt for parse errors
Very long startup delay upnp = 1 trying to work through an active firewall Disable UPnP in the config and forward ports manually
Kicked for signatures after adding mods Wrong keys, missing keys, or clients using a different mod set from the server Check the Arma 3 mods installation guide and make sure keys and mod versions match
Browser shows around 2500 ms ping A known issue when the Steam client on the server machine runs without administrator rights Run Steam as administrator, then judge the real in-game connection before changing network settings
Server stops when SSH closes The Linux process is attached to your terminal session Run it inside tmux or screen, then detach safely

First-launch checklist

Step Why it matters What “done” looks like
Pick the branch Stable and development are not compatible with each other Server and every client are on the same branch, with stable as the normal first choice
Create a separate Steam account SteamCMD needs a real login and should not compete with your play account A dedicated server-only account can log in through SteamCMD and pass Steam Guard
Separate the folders Stops file conflicts and the client-data issue on the same machine SteamCMD, the dedicated server and the Arma 3 client each live in their own location
Install app 233780 This is the free dedicated server package The install folder contains the server executable and creates logs on launch
Create and point to server.cfg Without -config, the server loads no server config at all Your launch line contains a valid -config= path and the server name or password settings appear in game
Open UDP 2302 to 2306 Players, Steam query traffic and BattlEye need the full block Friends outside your LAN can reach the server and ping works
Load one official mission It removes mod and custom scripting variables from the first test The mission starts from the rotation or the admin mission list without errors in arma3.rpt
Join and use #login Proves both player access and admin access You can connect, choose the mission and administer the server in session

Once every row above is true, you have a real baseline. The next steps are usually mods, signature keys, server-only addons, more detailed admin permissions, headless clients for AI-heavy missions, and careful bandwidth tuning in Arma3.cfg. Do those one at a time so you always know what changed.

Would rather skip the SteamCMD and router work?

A rented Arma 3 server handles installs, updates and the port block for you, and you still bring your own missions and mod set.

Compare the best Arma 3 server hosts

Arma 3 dedicated server FAQ

Do I need to own Arma 3 to run a dedicated server?

No. The dedicated server package is free and is installed through SteamCMD as app 233780. You still need a real Steam account to log in with SteamCMD, but that account does not need an Arma 3 purchase on it.

What ports does an Arma 3 dedicated server use?

The normal incoming block is UDP 2302 to 2306: game traffic, Steam query, Steam service traffic, a reserved VON offset and BattlEye. If BattlEye is enabled, related outgoing traffic also uses 2344 as TCP and UDP, plus 2345 as TCP. The server should also answer ICMP echo reply so it can be pinged.

Why is my server not loading my server.cfg?

Because Arma 3 does not load a default server config by file name alone. The file can be called almost anything, but your launch line must point to it with -config=. If that path is wrong, or missing, the server starts with no server config loaded.

Why can’t my friends see my Arma 3 server?

The usual causes are missing UDP forwarding, a local firewall rule, no real IPv4 on the internet connection, or simply the in-game browser misbehaving. Test direct connect before assuming the server is down, then verify the UDP block and ping response. If only local clients can connect, the problem is nearly always on the network edge rather than in the mission file.

How do I become admin on my Arma 3 server?

Join the server first, open chat with /, and type #login followed by the value from passwordAdmin. If you prefer not to share that password, you can list trusted SteamID64 values in admins[] so those users can log in directly. Without BattlEye RCon, only one logged-in admin can be active at a time.

More Arma 3 server guides

Compare hosts, add mods the right way, or set up the newer Enfusion game instead.

Arma 3 updates, Linux packages and rented host panels do change over time, so if your panel labels or startup fields differ slightly from this guide, follow your host’s current layout while keeping the same core order: install, config, ports, mission, join, admin.

Similar Posts