How to Install Arma 3 Scenarios and Frameworks
KP Liberation, Antistasi and Altis Life all run on the same Arma 3 server, but each one is built from different parts. Here is how to tell which parts a scenario needs, where each file goes, how to make long campaigns survive restarts, and what to check when the mission refuses to load.
This is the scenario the server actually runs. It lives in MPMissions and server.cfg selects it with a template name that must match the file name exactly, minus .pbo.
Anything loaded with -mod is part of the gameplay package and players must load the same addons. If this layer is wrong, expect missing addon kicks, greyed-out factions or a mission that never becomes joinable.
These are pieces the server needs but players do not, such as -serverMod content or extensions like extDB3. If this layer is wrong, the mission may start but saving, economy or server-side logic fails.
This is where campaign state survives restarts: the server profile vars file, a separate vars file, or a MySQL/MariaDB database. If the save location changes, your progress looks gone even when the old data still exists.
Think in layers first, not framework names
The useful question is not “How do I host Antistasi?” or “How do I host Altis Life?” It is “Which layers does this framework use?” Once you know that, install order becomes obvious: get the mission to appear, add the required client mods, add any server-only pieces, then prove that persistence survives a restart.
This matters because each layer fails in its own way. A bad mission template gives you a missing mission or a blank join. A bad -mod line gives missing addon or signature errors. A bad server-only addon or extension gives database errors, dead economy systems or startup spam in the RPT. A bad persistence layer gives the classic “it worked last night and the save is gone now”.
That approach also tells you what your host must allow. Antistasi Community is mostly about mod loading and mission selection. Altis Life is about mod loading plus server-side addons, extDB3 and database access. If the panel only exposes Workshop toggles and a basic server.cfg editor, some frameworks fit and some do not.
.pbo in MPMissionspicked by
template in class Missions-modkeys in the
keys folder-serverMod foldersextensions such as extDB3
.vars fileor a MySQL or MariaDB database
- Workshop or official scenario: 1, plus 2 if it uses mods
- KP Liberation: 1, 2 on modded maps, 4 in the profile
- Antistasi Community: 2 (the mission ships inside the mod), 4 in the profile
- Altis Life: 1, 3 and 4 in a database
Scenario vs mod vs framework on an Arma 3 server
On a dedicated server, a scenario is a mission .pbo. A mod is an addon loaded at startup with -mod or -serverMod. A framework is the full package made from those parts, plus whatever save system it relies on.
| Needs… | Workshop scenario | KP Liberation | Antistasi | Altis Life |
|---|---|---|---|---|
| .pbo in MPMissions | Yes | Yes | No | Yes |
| Mod on -mod for every player | Partly | Partly | Yes | No |
| Server-only -serverMod | No | No | No | Yes |
| Database server | No | No | No | Yes |
| Saves in the server profile | Partly | Yes | Yes | No |
| Framework | Mission file | Mods players need | Server-only parts | Where saves live |
|---|---|---|---|---|
| Official or Workshop scenario | A MissionName.Terrain.pbo placed in MPMissions | Only the addons that scenario was built to use, if any | Usually none | Depends on the mission; many are session-only, some save to the server profile if scripted to |
| KP Liberation | A release mission .pbo such as kp_liberation.Altis | Depends on map and preset: none on Altis or Malden; Tanoa needs Apex; Chernarus needs CUP Terrains Core, CUP Maps and RHS; Takistan needs CUP Terrains and Project OPFOR; or use a custom preset | None by default; optional restart helper file if you want scripted restarts | The server profile namespace in <name>.vars.Arma3Profile |
| Antistasi Community | Mission bundled inside the Antistasi mod, using templates such as Antistasi_Altis.Altis | The same Antistasi mod, plus any compatible faction or support mods you choose | Usually none; optional headless clients handled by Antistasi itself | By default the server profile vars file, or a separate AntistasiCommunity.vars file except on Linux where that reload path is broken |
| Altis Life | Altis_Life.Altis.pbo in MPMissions | No base framework mod for players unless your build adds extra client-side mods | @life_server on -serverMod, extDB3, a MySQL or MariaDB server, and the required runtime files | The altislife database |
If you searched for “Altis Life server hosting”, this table is the real filter. Altis Life needs database access and support for custom server-side addons and extensions. Antistasi Community is simpler: the host mainly needs to let you load mods properly and edit the mission cycle. If you are comparing providers, use a list of Arma 3 hosts that are suitable for custom frameworks rather than assuming every Arma plan exposes the same controls.
For Antistasi, the key checks are Workshop or FTP mod support and editable startup parameters. For Altis Life, add database access, extDB3 support and custom -serverMod support to the list. Those are the features that decide whether the install is straightforward or blocked from the start.
Install any scenario: mission file, template, mission cycle and parameters
This guide assumes your base server already starts and accepts connections. If you still need the launch parameters, first join or server.cfg basics, use the Arma 3 dedicated server setup guide. If you need a refresher on signatures, keys and the difference between -mod and -serverMod, use the Arma 3 mods guide.
For any normal scenario, put the packed mission .pbo into MPMissions and point server.cfg at it with class Missions. The template is not a free label. It is the file name without .pbo, and it must be in missionName.terrainName form because that is how the server identifies the mission.
persistent = 1;
class Missions
{
class Mission1
{
template = "kp_liberation.Altis"; // MPMissions/kp_liberation.Altis.pbo
difficulty = "Regular";
};
class Mission2
{
template = "MissionName.Malden"; // MPMissions/MissionName.Malden.pbo
difficulty = "Veteran";
};
}; - Keep
classin lower case. Arma will throw a parsing error if you change the keyword casing here. - Make sure the server is started with
-config=. If not, the file you are editing is simply not being loaded. - Use a real terrain suffix. If the mission file is
Altis_Life.Altis.pbo, the template must beAltis_Life.Altis, not justAltis_Life. - Choose the difficulty deliberately. Valid values are Recruit, Regular, Veteran or Custom. The values behind Custom live in the server profile, so keep that profile stable.
If players join and see a blank screen, the server often has no mission selected rather than a broken mission. The client has connected to the process, but there is no active mission state to hand over. Open chat with /, log in as admin, then use #missions to choose a mission and confirm it exists.
persistent = 1 keeps the mission running when the server empties. That helps long campaigns and economy servers because the world does not reset just because the last player disconnected. The trade-off is server load: scripts and AI can keep using CPU while nobody is online, so on heavy missions it is not free.
Mission parameters can be overridden inside the mission entry with class Params. The values must match the values the mission actually allows in its description.ext. A logged-in admin can still change them in the role-assignment lobby, and that manual choice wins for that session.
One easy trap: BI param templates do not work with PBO missions that you manually copied into MPMissions. That is why a mission can ignore expected defaults even though the parameter include looks fine in its files. If you are using a manually copied PBO, set the values explicitly in server.cfg instead of relying on the shared template system.
Workshop scenarios on a dedicated server
A dedicated server cannot subscribe to a Workshop scenario by itself. The usual method is to subscribe on a normal Arma 3 client installation, take the downloaded mission file, rename it correctly, then upload it to the server.
SteamLibrary/steamapps/workshop/content/107410/<workshop ID>/
- Subscribe to the scenario on your own PC so Steam downloads it.
- Find the mission file in the Workshop content folder.
- Rename the file to
MissionName.Terrain.pbo. - Stop the server and upload that file to
MPMissions. - Set
template = "MissionName.Terrain";inserver.cfg. - Start the server and check the mission list with admin login if needed.
The rename step matters because the dedicated server does not use Workshop metadata to work out what the mission is. It scans MPMissions for a mission-name and terrain-name pair, then matches that to your template entry. If the download keeps a generic or awkward file name, the server cannot resolve it cleanly.
Also, the mission .pbo is not a substitute for addon content. If the Workshop scenario depends on mods, those mods still have to be loaded on the server and on clients. The mission provides scripts and mission data; the addons provide the classes, assets and config definitions the mission refers to.
KP Liberation: mission install, map requirements and profile-based saving
KP Liberation is a mission, not a mod. Take the packed server .pbo from the release zip, place it in MPMissions and set the matching template, such as kp_liberation.Altis. If you plan to edit presets or config, that means unpacking and repacking the mission .pbo because the logic lives inside the mission layer.
Map choice decides the addon side. Altis and Malden need no extra mods. Tanoa needs Apex. Chernarus needs CUP Terrains Core, CUP Maps and RHS. Takistan needs CUP Terrains and Project OPFOR. If you want to avoid faction-mod dependencies, any map can run with the preset set to custom in kp_liberation_config.sqf.
Liberation saves automatically at least every minute, but it does not save everything. It writes the strategic state to the server profile namespace: FOBs, sectors, resources and storages, built vehicles inside FOB range, permissions, reputation, readiness and intel. It does not save transient state such as player positions and inventories, moving objects, vehicle cargo, fuel, damage or things left outside FOB range. That keeps save writes smaller and more reliable, but the trade-off is that the world between FOBs is not remembered in full detail.
If progress is not saving, focus on the server profile before blaming the mission. Liberation writes to the current server profile, so a changed -name means a different vars file. The old save still exists under the old profile name, but the server is now looking somewhere else.
On Linux, create the profile files yourself and start the server with a stable profile name:
mkdir -p ~/.local/share/Arma\ 3\ -\ Other\ Profiles/liberation touch ~/.local/share/Arma\ 3\ -\ Other\ Profiles/liberation/liberation.Arma3Profile touch ~/.local/share/Arma\ 3\ -\ Other\ Profiles/liberation/liberation.vars.Arma3Profile ./arma3server_x64 -name=liberation -config=server.cfg
This works because Liberation uses Arma’s profile namespace, not a separate database. No profile file means nowhere consistent to write the campaign state. The sign that you fixed it is simple: after a restart, sectors and FOB progress return instead of starting from scratch.
If you want scripted restarts, Liberation can use a small helper file and -filePatching:
// server.cfg serverCommandPassword = "mySecretPassword"; // <server root>/userconfig/restart/myPass.hpp (this line only) "mySecretPassword" // launch line -filePatching
The reason -filePatching is needed is that the mission reads that external file from disk instead of from inside the packed mission. On Windows the whole server process restarts; on Linux only the mission restarts. In both cases the save is kept because it already lives in the profile namespace.
Antistasi Community: mod loading, mission cycle and save files
Antistasi Community is a mod, not a loose mission upload. Install it from the Workshop if your host can subscribe to Workshop items, or upload the release files over FTP in binary mode, then load it with -mod, not -serverMod. Clients must load the same Antistasi mod because the playable mission and its content are provided through that addon layer.
Load only one Antistasi mod at a time. The missions appear in the list as Antistasi Community followed by the version number, and the template pattern is Antistasi_<map>.<map>, with real examples including Antistasi_Altis.Altis, Antistasi_Tanoa.Tanoa, Antistasi_Malden.Malden, Antistasi_Enoch.Enoch, Antistasi_chernarus_summer.chernarus_summer and Antistasi_Takistan.takistan.
Many rented servers ship with an empty mission cycle. With Antistasi loaded, that gives the classic blank loading screen: the mod is present, but no mission has been selected. Fix it either by logging in as admin and using #missions, or by adding a proper mission cycle entry such as this:
class Missions
{
class Mission1
{
template = "Antistasi_Altis.Altis";
difficulty = "Regular";
class Params
{
autoLoadLastGame = 60;
};
};
}; autoLoadLastGame = 60 tells the mission to load the previous campaign after the first player connects if no admin is logged in. That helps on unattended servers because nobody needs to be there to press start. The trade-off is obvious: it only loads the last game. New campaigns still have to be created by a real admin.
The setup UI appears only for an admin who logged in with #login and the passwordAdmin from server.cfg. A voted admin does not get it. That is why people sometimes swear the setup menu is broken when the real issue is permission level.
Factions greyed out in the setup screen usually mean the required supporting mods are not loaded on the server. The mission checks what content exists and disables choices it cannot build. That is useful because it stops you starting a broken campaign, but it also gives a clear signal about which layer is missing.
Antistasi saves are stored outside the mission, so updating the mod does not wipe the campaign by itself. By default it uses the server profile vars file. The optional “Use new save file” mode stores campaigns in a separate AntistasiCommunity.vars, which is easier to move between profiles or machines, but on Linux that separate-file reload path does not work properly, so stick to the default profile-based save there.
Save manually from the in-game options before a planned restart or shutdown. Autosaves exist, but if you stop the server after a busy session without a manual save, recent progress can still be lost.
Antistasi includes its own headless-client system and supports up to 3 headless clients. The Antistasi team lists mods that break it or clash with its AI and headless-client systems, and will not support a server running them: no LAMBS, VCOM, ASR AI3, ALiVE, MCC Sandbox 4, Project Injury Reaction, Zulu HC, Werthles’ HC module, Advanced Rappelling or Advanced Urban Rappelling.
Altis Life: the database-backed framework with the most moving parts
Altis Life is still an Arma 3 server, but it adds two layers that Antistasi and Liberation do not need: a database backend and the extDB3 extension that talks to it. So yes, you can run Altis Life on a normal Arma 3 dedicated server, but only if you control those extra layers as well.
The basic file layout looks like this:
Arma 3 Server/
arma3server_x64.exe
tbbmalloc.dll
MPMissions/
Altis_Life.Altis.pbo
@life_server/
Addons/
life_server.pbo
@extDB3/
extDB3_x64.dll (the 64-bit build, for arma3server_x64)
extdb3-conf.ini life_server must go on -serverMod, never on -mod. Everything on -mod is something every player must load too, so putting it there would mean handing out your server-side code and asking players for a file they should never have. On -serverMod it runs on the server only. extDB3 belongs on the same line.
The database side starts with editing the SQL so the arma3 user does not keep the default password, then importing it. That creates the altislife database. Your extDB3 config then needs a node whose section name exactly matches the mission’s DatabaseName, including case. In the stock setup that means a lowercase [altislife] section.
[altislife] IP = 127.0.0.1 Port = 3306 Username = arma3 Password = the-password-you-set-in-AltisLife.sql Database = altislife
Use 127.0.0.1 when the database runs on the same machine as the server. On a rented plan, use the database details your host gives you. Then start the server with both server-only folders:
-serverMod=@life_server;@extDB3
If the section name does not match, extDB3 cannot find the node the mission requested and you get the classic “No such node” error. If the node exists but credentials or host details are wrong, the connection fails later instead. That distinction is useful because it tells you whether the fault is naming, or actual database connectivity.
Bitness matters too. A 64-bit Arma server cannot load a 32-bit extension, and 64-bit builds carry the _x64 suffix, so use that build with arma3server_x64. On Windows, install the Visual C++ 2015 redistributable (x86), plus the 64-bit one for the 64-bit server. If that runtime layer is missing, database calls fail even though your ini looks correct.
Also check the supporting runtime files. tbbmalloc.dll belongs next to the server executable, and on Windows a blocked file can cause startup or connection trouble until you unblock it in file properties.
If you are building from source rather than using a ready-packed release, do not miss the map SQM step. Since 5.0.0 the source uses separate SQMs, so you must copy the one for your map into the mission folder and rename it to mission.sqm before packing. Missing that file is what causes the repetitive “Mission Altis_Life.Altis read from bank” spam.
One more trap is SQL procedure ownership. The imported procedures use a DEFINER tied to the expected DB user and host. If your user or host differs, edit those lines before import or you can end up with procedure-not-found style errors even when the tables themselves exist.
Altis Life stores player money, vehicles, houses and gangs in the database, not in the server profile. That is more structured than profile vars and makes restarts cleaner, but the trade-off is another service to maintain and back up.
Persistence, profile names and backups
Before updating any mission, mod or framework, work out where the live state is stored. Backing up the wrong layer wastes time. A copy of the mission .pbo does not protect an Altis Life economy, and a database dump does not protect a Liberation campaign if the real save lives in the server profile.
at least every minute
manual save
AntistasiCommunity.vars
MySQL or MariaDB
- Workshop or official scenario: save behaviour depends on the mission script. Some have no persistence at all.
- KP Liberation: back up the current server profile vars file.
- Antistasi Community: back up the current server profile vars file, or the separate
AntistasiCommunity.varsif you use that mode on Windows. - Altis Life: back up the database, plus the mission and server-only addon files so code and data stay in step.
Keep -name stable. Liberation and default Antistasi saves key off the active server profile, so changing the profile name is effectively changing the save location. That is why saves appear to vanish after a move or reinstall: the campaign is often still there, just under the old profile name.
Before version changes, take a copy of the active save layer and the matching mission or mod files. That matters because save formats and mission logic can drift apart across releases. If you need a simple process for that, use this guide to game server backups and keep a copy from before the upgrade, not just after it.
The RPT in the server profile folder is part of the picture too. It tells you which profile was used, what mission started and where startup errors began. For Altis Life, extDB3 writes its own logs as well, so use both when tracking down persistence faults.
Performance notes and plan choice
Bohemia’s published baseline is a 3.5 GHz quad-core CPU and 4GB RAM. That fits the way Arma behaves: most processing sits on one or two threads, and one thread handles all AI. So on AI-heavy frameworks like Antistasi Community and KP Liberation, core speed matters more than having lots of slower cores.
This is why Liberation or Antistasi can feel far heavier than a simple co-op scenario even on the same slot count. The expensive part is not the mission file on disk; it is AI simulation and script activity on the server’s main processing threads. If your server is struggling, reducing AI pressure or using headless clients helps far more than chasing storage specs.
Headless clients are useful because they offload AI work to separate client processes. Antistasi supports up to 3 through its own system. Remember that headless clients count as players, and the real player limit is the lower of maxPlayers and the mission’s available slots. Leave headroom or the HC connects and steals a seat from an actual player.
persistent = 1 also has a cost on AI-heavy frameworks. It keeps the mission alive when empty, which is good for continuity, but it means scripts and AI can keep consuming CPU between sessions. If you want a quiet idle server, set expectations around that before enabling it everywhere.
Altis Life is different. It is usually less about AI load and more about stable database access, correct extension loading, enough slots for the kind of community you want, and sensible backup practice. A life server with a broken DB layer feels dead even if the raw machine is fast, because the core economy and ownership data live outside the mission.
Troubleshooting and pre-campaign checks
When a scenario will not load, check layers in order: mission selection, client mods, server-only parts, then persistence. That keeps you from chasing database settings when the real issue is just a bad template name.
| Symptom | Likely cause | First fix |
|---|---|---|
| Blank loading screen when joining | Empty mission cycle or no mission selected, common on rented servers | Log in as admin, run #missions and choose a mission, or add a proper class Missions entry |
| Mission missing from the list | Template does not exactly match the .pbo name, wrong terrain suffix, or edited server.cfg is not the one loaded | Rename the file or fix template =, then confirm the server was started with -config= |
| “Mission … read from bank” spam | Altis Life mission packed without the correct mission.sqm | Copy the right map SQM into the mission folder, rename it to mission.sqm and repack |
| Liberation or Antistasi progress gone after restart | Server profile name changed, profile files were not found, or Antistasi separate save mode is being used on Linux | Restore the old -name, verify the profile vars file, and use default profile saving for Antistasi on Linux |
| Antistasi setup screen does not appear | You are not logged in with the real server admin password, or you expected auto-load to create a new game | Log in properly as password admin and create the campaign manually |
| Factions greyed out in Antistasi | Required faction mods are not loaded | Add the missing mods on -mod for server and clients, then restart |
| extDB3 “No such node” | extdb3-conf.ini section name does not match the mission’s DatabaseName | Make the section name lowercase and identical to the name the mission expects |
| Database connection error | Wrong DB credentials, wrong host details, missing runtime, wrong extension bitness, or blocked tbbmalloc.dll | Verify the ini values, confirm the _x64 extension on a 64-bit server, install the VC++ runtimes and unblock the DLL if needed |
| Kicked for missing or unsigned addons | Clients are missing required -mod addons, keys are wrong, or a server-only addon was put on -mod | Move server-only content to -serverMod and make sure players load the same required client mods |
| Workshop scenario not found by template | The downloaded mission file was not renamed to MissionName.Terrain.pbo | Rename the file, upload it again to MPMissions and match the template to that exact name without .pbo |
Before you start a long campaign
| Step | Why it matters | What done looks like |
|---|---|---|
| Confirm the mission appears in the list | Proves the mission layer and template naming are correct | The mission is visible under #missions and starts without manual file renaming again |
| Confirm required client mods | Prevents join failures and broken faction or asset references | Players join without missing-addon or unsigned-addon kicks |
| Keep server-only parts separate | Avoids exposing server-only addons to clients and breaking joins | life_server and extDB3 are only on -serverMod; client mods are only on -mod |
| Test one restart before the real campaign | Proves persistence now, instead of discovering a bad save path later | After restart, the campaign or economy returns in the same state |
| Lock the server profile name | Profile-based frameworks write saves to the active profile namespace | The launch line keeps the same -name every time |
| Take a backup of the live save layer | Mission files and saved state are not the same thing | You have a current copy of the vars file or the database, plus the matching mission or mod files |
| Verify admin access | Needed for Antistasi setup, quick mission recovery and manual checks | You can log in, open #missions and change lobby parameters if needed |
| Leave slot headroom for headless clients if used | Headless clients count as players | The HC connects without blocking normal players from joining |
Arma 3 scenarios and frameworks FAQ
Can I run Altis Life on a normal Arma 3 server?
Yes, but only if that server gives you the layers Altis Life needs: your own mission file, server-only addons on -serverMod, extDB3 and a MySQL or MariaDB backend. The base Arma server process is fine. The limitation is usually the host panel or plan, not Arma itself.
Do players need to download KP Liberation or Antistasi?
For KP Liberation, players only need whatever mods the chosen map and preset require; the mission itself is a mission .pbo on the server. For Antistasi Community, yes: players must load the same Antistasi mod because the framework is delivered as a mod and the server expects matching addon content.
Where are Antistasi and Liberation saves stored?
Liberation saves to the server profile vars file. Antistasi saves to the server profile vars file by default, or to a separate AntistasiCommunity.vars file if you enable that mode, which only reloads reliably on Windows servers. In both cases, changing the server profile name changes where the mission looks for the save.
Why do I get a blank screen when joining my Arma 3 server?
Most often, the server has no active mission selected. That is common on hosts that ship an empty mission cycle, especially with Antistasi loaded as a mod but no mission entry in server.cfg. Log in as admin and use #missions, then add a proper mission cycle so it happens automatically next time.
Can a dedicated server download Workshop scenarios by itself?
No. Subscribe on a normal PC install, copy the downloaded mission file out of the Workshop content folder, rename it to the proper mission-and-terrain format, then upload it to MPMissions. If the scenario uses mods, those still need to be loaded on the server and on clients.
More Arma 3 server guides
Set up the server first, add mods the right way, then protect your campaign with backups.
Game updates, framework releases and host panels change over time. If a panel option or file location on your provider differs from this guide, follow the host’s current control panel for that part and keep the layer model the same.