As a man or woman stranded, naked, freezing, and starving on the unforgiving shores of a mysterious island called ARK, use your skill and cunning to kill or tame and ride the plethora of leviathan dinosaurs and other primeval creatures roaming the land. Hunt, harvest resources, craft items, grow crops, research technologies, and build shelters to withstand the elements and store valuables, all while teaming up with (or preying upon) hundreds of other players to survive, dominate... and escape!
Running on the host interface:
$ docker run -d --net=host -v /home/steam/ark-dedicated/ --name=ark-dedicated sloanstar/ark-se:latest
Running using a bind mount for data persistence on container recreation RECOMMENDED:
$ mkdir -p /opt/ARK-Server
$ mkdir -p /opt/ARK-Cluster
$ mkdir -p /opt/ARK100/Logs
$ mkdir -p /opt/ARK100/SavedArks
$ mkdir -p /opt/ARK100/Config
$ chmod -R 777 /opt/ARK-Server /opt/ARK-Cluster /opt/ARK100 # Makes sure the directory is writeable by the unprivileged container user
$ docker run -it --name ARK100 --network host \
-v /opt/ARK-Server:/home/steam/ShooterGameServer \
-v /opt/ARK100/Config:/home/steam/ShooterGameServer/ShooterGame/Saved/Config/LinuxServer \
-v /opt/ARK100/SavedArks:/home/steam/ShooterGameServer/ShooterGame/Saved/SavedArks \
-v /opt/ARK100/Logs:/home/steam/ShooterGameServer/ShooterGame/Saved/Logs \
sloanstar/ark-se:latest
Running multiple instances (iterate PORT, QUERYPORT and RCONPORT and change Server Specific Folder):
$ docker run -d --net=host -e PORT=7788 -e QUERYPORT=27166 -e RCONPORT=21115 --name=ARK101 \
-v /opt/ARK-Server:/home/steam/ShooterGameServer \
-v /opt/ARK101/Config:/home/steam/ShooterGameServer/ShooterGame/Saved/Config/LinuxServer \
-v /opt/ARK101/SavedArks:/home/steam/ShooterGameServer/ShooterGame/Saved/SavedArks \
-v /opt/ARK101/Logs:/home/steam/ShooterGameServer/ShooterGame/Saved/Logs \
sloanstar/ark-se:latest
It's also recommended using "--cpuset-cpus=" to limit the game server to a specific core & thread.
The container will automatically update the game on startup, so if there is a game update just restart the container.
version: '3.9'
services:
ark-se:
image: sloanstar/ark-se
container_name: ark-dedicated
restart: unless-stopped
network_mode: "host"
volumes:
- /opt/ARK-Server:/home/steam/ShooterGameServer
- /opt/ARK100/Config:/home/steam/ShooterGameServer/ShooterGame/Saved/Config/LinuxServer
- /opt/ARK100/SavedArks:/home/steam/ShooterGameServer/ShooterGame/Saved/SavedArks
- /opt/ARK100/Logs:/home/steam/ShooterGameServer/ShooterGame/Saved/Logs
- /opt/ARK-Cluster:/home/steam/ShooterGameServer/Cluster
environment:
- SESSIONNAME=ARK 100
- PORT=7777
- QUERYPORT=27015
- RCONPORT=27020
- MAPNAME=TheIsland
- CLUSTERKEY=ChangeMe
- ADMINPW=ChangeMe
ADMINPW=SuperSecretPW #This grants ARK admin rights to users. Make it dificult. Used by entrypoint.
CLUSTERKEY=ShouldBeSecret #This key is shared beween ARKs. It matters if you are hosting a cluster of servers, it must match for transfers. Used by entrypoint.
MODS= #A space separated string of mods to download and install. '' is an empty string - no mods. Used by entrypoint.
NFSIP=1.1.1.1 #IP Address of NFS server - useful for sharing cluster data across multiple physical hosts. Used in compose.
NFSPATH="/pat/to/nfs/export" #The path to the NFS export, do not include the ":" I have done that in the docker-compose.yml. Used in compose.
Feel free to overwrite these environment variables, using -e (--env):
PORT=7777
QUERYPORT=27015
RCONPORT=27020
The config files can be edited using this command:
docker exec -it {Container Name} nano /home/steam/ShooterGameServer/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini
docker exec -it {Container Name} nano /home/steam/ShooterGameServer/ShooterGame/Saved/Config/LinuxServer/Game.ini
If you want to learn more about configuring an ARK server check this documentation.
Add each id to the MODS environment variable, for example MODS="13371337 12341234 1111111"
MODS must be a space delimited string where each mod id is separated by a space.
You can get the mod id from the workshop url or by installing it locally and lookup the numeric folder name at <root_steam_folder>/steamapps/workshop/content/346110
.
ARK Mod management in linux is abysmal and there's no excuse for it. If you try to use the documented -automanagedmods you will crash your linux server with a segmentation fault every time. I looked for a fix to this and found some documentation that SteamCMD should be installed in a ThirdParty subdir under the server path, but this did not fix the segfault. After trying a few more things to get the documented options working and failing I abandoned the process and adapted the Squad logic from the template to ARK. It should be considered experimental at this point, but please try it and open an issue if it doesn't work.
You can wipeout all the ARK world and character data with this command if you followed the docker compose layout:
$ find /opt/ARK* -name *.ark* -delete