Complete guide to setting up and configuring your Arma 3 dedicated server on Legion Hosting. Once your server is running, see our Mod Installation Guide to add Workshop content and our Admin and BattlEye Setup guide to configure server administration and anti-cheat.
First Start in GPanel
After purchasing your Arma 3 server from Legion Hosting, log in to GPanel at gpanel.legionhosting.net to manage it.
- Navigate to your Arma 3 server from the dashboard.
- On the Console tab, click Start to boot the server for the first time. The initial startup will take a few minutes as it downloads and installs the Arma 3 dedicated server files via SteamCMD.
- Once the console shows
Game startedor similar ready messages, your server is online and joinable. - Stop the server before making configuration changes to ensure they are applied correctly.
GPanel Startup Variables
GPanel provides startup variables that control how the Arma 3 server binary launches. These can be found under the Startup tab of your server panel. Common variables include:
| Variable | Description | Example |
|---|---|---|
SERVER_PORT |
Main game port (UDP). Set automatically by GPanel. | 2302 |
SERVER_CFG |
Path to the server configuration file. | server.cfg |
SERVER_PROFILE |
Name of the server profile directory for logs and settings. | server |
MAX_PLAYERS |
Maximum number of player slots. | 64 |
MODS |
Semicolon-separated list of mod folders to load. | @CBA_A3;@ace |
SERVER_MODS |
Server-side only mods (not required by clients). | @OCAP2 |
ADDITIONAL_PARAMS |
Extra launch parameters appended to the command line. | -filePatching -enableHT |
server.cfg Configuration
The server.cfg file is the primary configuration file for your Arma 3 server. Access it via the File Manager tab in GPanel or upload it via SFTP. Below is a comprehensive example:
// ========================================
// Arma 3 Server Configuration
// ========================================
// Server Identity
hostname = "My Legion Hosting Arma 3 Server";
password = ""; // Server password (empty = no password)
passwordAdmin = "MyAdminPass123"; // Admin password for #login
motd[] = {
"Welcome to our Arma 3 server!",
"Hosted by Legion Hosting",
"TeamSpeak: ts.example.com"
};
motdInterval = 5; // Seconds between MOTD messages
// Player Settings
maxPlayers = 64;
kickDuplicate = 1; // Kick duplicate player IDs
verifySignatures = 2; // 0=off, 1=warn, 2=kick unsigned addons
requiredSecureId = 2; // Require BattlEye secure ID
// Voting
voteMissionPlayers = 1; // Min players to vote for mission
voteThreshold = 0.33; // 33% vote threshold
// Network
disconnectTimeout = 5; // Timeout for disconnect (seconds)
maxDesync = 150; // Max desync before kick
maxPing = 350; // Max ping before kick
maxPacketLoss = 50; // Max packet loss % before kick
// Performance
MinBandwidth = 107374182; // Minimum bandwidth (bits/s)
MaxBandwidth = 1073741824; // Maximum bandwidth (bits/s)
MaxMsgSend = 128; // Max messages per frame
MaxSizeGuaranteed = 512; // Max guaranteed packet size
MaxSizeNonguaranteed = 256; // Max non-guaranteed packet size
// Logging
logFile = "server_console.log";
timeStampFormat = "short";
// Persistent Battlefield
persistent = 1; // Enable persistence
// BattlEye Anti-Cheat
BattlEye = 1; // 1=enabled, 0=disabled
// Mission Rotation
class Missions {
class Mission1 {
template = "Escape_Altis.Altis";
difficulty = "Custom";
};
class Mission2 {
template = "co10_Escape_Tanoa.Tanoa";
difficulty = "Custom";
};
};
.pbo extension. For example, co40_AW_Invade_Annex.Altis.pbo becomes co40_AW_Invade_Annex.Altis. Upload mission files to the mpmissions/ directory.
Difficulty Settings and Server Profiles
Arma 3 uses server profiles to store difficulty settings. The profile is created in a directory matching your SERVER_PROFILE startup variable. The difficulty configuration file is typically located at:
<profile_name>/<profile_name>.Arma3Profile
You can set difficulty inside the Missions class in server.cfg to one of the presets (recruit, regular, veteran, custom) or define a fully custom difficulty class in your server profile:
class DifficultyPresets {
class CustomDifficulty {
class Options {
// HUD Elements
groupIndicators = 1; // 0=never, 1=limited, 2=always
friendlyTags = 1; // 0=never, 1=limited, 2=always
enemyTags = 0; // 0=never, 1=limited, 2=always
detectedMines = 1; // 0=never, 1=limited, 2=always
commands = 1; // 0=never, 1=limited, 2=always
waypoints = 1; // 0=never, 1=limited, 2=always
weaponInfo = 2;
stanceIndicator = 2;
staminaBar = 1;
weaponCrosshair = 0; // Disable crosshair
visionAid = 0;
// Gameplay
thirdPersonView = 0; // Disable 3rd person (milsim)
reducedDamage = 0;
tacticalPing = 1; // 0=off, 1=enabled
cameraShake = 1;
scoreTable = 1;
deathMessages = 0;
vonID = 1;
mapContent = 0; // Hide map markers
autoReport = 0; // Disable AI auto-report
multipleSaves = 0;
};
// AI Skill
aiLevelPreset = 3; // 0=low, 1=normal, 2=high, 3=custom
class CustomAILevel {
skillAI = 0.75;
precisionAI = 0.40;
};
};
defaultDifficulty = "CustomDifficulty";
};
thirdPersonView = 0), crosshair (weaponCrosshair = 0), and death messages (deathMessages = 0). Most milsim communities also use the ACE3 mod for advanced medical and ballistics systems.
Mission Rotation
Missions are defined in the class Missions block of server.cfg. The server will load the first mission on startup and rotate to subsequent missions when the current one ends or when voted on by players.
class Missions {
class Mission1 {
template = "co40_AW_Invade_Annex.Altis";
difficulty = "Custom";
// Optional parameters:
// class Params {}; // Mission-specific parameters
};
class Mission2 {
template = "Warlords_Altis.Altis";
difficulty = "veteran";
};
class Mission3 {
template = "co10_Escape_Tanoa.Tanoa";
difficulty = "Custom";
};
};
To add missions to your server:
- Download mission PBO files from the Steam Workshop or community sites.
- Upload the
.pbofiles to thempmissions/directory on your server via SFTP or the GPanel file manager. - Add corresponding entries to the
class Missionsblock inserver.cfg, using the filename (without.pbo) as thetemplatevalue. - Restart the server for changes to take effect.
How to Connect
There are several ways to connect to your Arma 3 server:
Server Browser
- Launch Arma 3 and click Multiplayer from the main menu.
- In the Server Browser, use the filter options or search for your server by name.
- Select your server and click Join. Enter the password if one is set.
Direct Connect
- From the server browser, click Direct Connect at the bottom.
- Enter your server IP and port (found in GPanel under your server overview). The default game port is
2302. - Click Join.
Steam Server List
- In Steam, go to View > Game Servers (or View > Servers).
- Click the Favorites tab, then Add a Server.
- Enter your server IP and Steam Query Port (game port + 1, e.g., if your game port is
2302, use2303). - Click Add this address to favorites, then connect through the list.
2302) plus Steam Query port (game port + 1). If your GPanel shows port 2302, players should connect using that port. The Steam query port 2303 is used for server browser queries. Your server's port is randomly assigned unless you have a private IP -- always check GPanel for the correct port.
Performance Tuning
Arma 3 servers can be resource-intensive, especially with large player counts and AI-heavy missions. Here are key settings and techniques to optimize performance:
Headless Client
A headless client (HC) offloads AI processing from the server to a separate process, significantly improving server FPS on AI-heavy missions. The mission must support headless clients for this to work.
To enable headless clients, add the following to your server.cfg:
// Headless Client Configuration
headlessClients[] = {"127.0.0.1"};
localClient[] = {"127.0.0.1"};
Server FPS and Network Settings
These server.cfg settings affect performance:
| Setting | Recommended Value | Notes |
|---|---|---|
MinBandwidth |
107374182 |
Minimum bandwidth per client (bits/s) |
MaxBandwidth |
1073741824 |
Maximum total bandwidth (bits/s) |
MaxMsgSend |
128 |
Messages sent per simulation frame |
MaxSizeGuaranteed |
512 |
Max guaranteed message size (bytes) |
MaxSizeNonguaranteed |
256 |
Max non-guaranteed message size (bytes) |
maxDesync |
150 |
Kick threshold for desync |
maxPing |
350 |
Kick threshold for high ping |
Additional Launch Parameters
You can add these to the ADDITIONAL_PARAMS startup variable in GPanel:
| Parameter | Description |
|---|---|
-enableHT |
Enable Hyper-Threading support for multi-core CPUs. |
-hugepages |
Enable large memory pages for better memory performance. |
-loadMissionToMemory |
Load the entire mission into RAM for faster access. |
-noLogs |
Disable RPT logging (use only after debugging is complete). |
Related Articles
- Arma 3 Mod Installation Guide — Add Steam Workshop mods, manage load order, and configure signature verification.
- Arma 3 Admin and BattlEye Setup — Configure admin access, BattlEye anti-cheat, and RCON tools.
- How to Find Your Server IP and Port
- How to Upload Files via SFTP
- Getting Started with Your New Server
Need Help?
If you're having trouble setting up your Arma 3 server or need further assistance, our support team is here to help. Open a support ticket and we'll get you sorted out.