This repository contains the files required to build an image with the dependencies to operate an Arma 2: Operation Arrowhead server, using Docker and Wine to achieve this.
Note
These instructions assume basic understanding of git
and docker
CLI use, that you have a Linux environment capable of executing these commands, and a disk with at least 10 GB of available space.
- Steam account owning the game
git clone https://github.com/pridit/docker-arma2oaserver-wine.git
Make a copy of the three .example
files, removing this suffix, and modify server configuration with your own preferences.
Start by building the image so we can use it later:
docker build -t arma2oaserver .
Note
It is normal for the image build process to take some time, potentially up to 15 minutes.
This image does not contain any data files, given that this is licensed content that cannot be downloaded without an active subscription to the packages on Steam. As a result, we'll be mounting a Docker volume at runtime.
For this purpose, I would recommend leveraging the official SteamCMD Docker image and having that content ready/merged (if using assets from Arma 2).
Important
This data needs to exist before starting the container, however you choose to do that. If you already have game data in a volume, this section can be skipped.
docker volume create arma2oa
docker run -it \
-v arma2oa:/root/Steam \
steamcmd/steamcmd:latest \
+@sSteamCmdForcePlatformType windows \
+login USERNAME PASSWORD
Once authenticated you will be presented with a prompt inside the container.
Warning
Due to quirks with either the package or SteamCMD, the download process may erroneously fail and in such cases the following commands must be executed repeatedly to complete.
To download Arma 2: Operation Arrowhead content:
app_update 33930 validate
To download Arma 2 content:
app_update 33900 validate
Note
Arma 2 exists under two different package App IDs. 33910 (RoW) and 33900 (bought directly on Steam). Depending on how your Steam account owns Arma 2 the command line may need to change.
Once this has downloaded you can exit the prompt with quit
and move on.
Now that we have a built image and a volume with the game data we can start the container as follows:
docker run -d \
--name=arma2oaserver \
--net=host \
--restart unless-stopped \
-v arma2oa:/arma2oa \
-v $PWD/keys:/arma2oa/steamapps/common/Arma\ 2\ Operation\ Arrowhead/Expansion/Keys \
-v $PWD/mpmissions:/arma2oa/steamapps/common/Arma\ 2\ Operation\ Arrowhead/MPMissions \
-v $PWD/logs:/arma2oa/steamapps/common/Arma\ 2\ Operation\ Arrowhead/logs \
-v $PWD/params:/arma2oa/steamapps/common/Arma\ 2\ Operation\ Arrowhead/params \
-v $PWD/profiles:/arma2oa/steamapps/common/Arma\ 2\ Operation\ Arrowhead/profiles \
-v $PWD/basic.cfg:/arma2oa/steamapps/common/Arma\ 2\ Operation\ Arrowhead/basic.cfg \
-v $PWD/server.cfg:/arma2oa/steamapps/common/Arma\ 2\ Operation\ Arrowhead/server.cfg \
arma2oaserver
To support shared content directories you are going to want to merge from Arma 2
into Arma 2 Operation Arrowhead
are the following:
- AddOns
- Dta
To enable RCON we need to create a new file called beserver.cfg
as per the below:
echo "RConPassword CHANGEME" > $PWD/profiles/BattlEye/beserver.cfg
Note
This file will be automatically renamed.
With thanks to adamharley/torch-docker, from which this repository is loosely based from.