/docker-ark

Docker for ARK: Survival Evolved

Primary LanguageShell

Shield.IO Badger Shield.IO Badger

ARK: Survival Evolved - Docker

Docker build for managing an ARK: Survival Evolved server.

This image uses Ark Server Tools to manage an ark server and is forked from boerngenschmidt/Ark-docker

If you use an old volume, get the new arkmanager.cfg in the template directory.
Don't forget to use docker pull NightDragon1/ark-docker to get the latest version of the image

IMPORTED INFO for those who wanna migrate! If you haven't been using this docker-image before, just go ahead creating it like explained in "Usage". If you have been using another image before, like boerngenschmidt/Ark-docker, you'll have to two do things:

  1. Remove the old container instance using docker rm....
  2. Recreate the new container instance with the same parameters as before, optionally: add/set the new ENVIRONMENT variable "RCONPORT" to your docker create
  3. In case you are using your existing arkamanger.cfg, add the following lines to your file:
ark_Port=${STEAMPORT}
ark_QueryPort=${SERVERPORT}
ark_RCONEnabled="True"
ark_RCONPort=${RCONPORT}

Features

  • Easy install (no steamcmd / lib32... to install)
  • Use Ark Server Tools : update/install/start/backup/rcon/mods
  • Easy crontab configuration
  • Easy access to ark config file
  • Mods handling (via Ark Server Tools)
  • Docker stop is a clean stop
  • Auto upgrading of arkmanager
  • An Up to date Docker Images for ARK-Docker
  • Docker Healthcheck

Usage

Fast & Easy server setup :
docker run -d -p 7778:7778 -p 7778:7778/udp -p 27015:27015 -p 27015:27015/udp -e SESSIONNAME=myserver -e ADMINPASSWORD="mypasswordadmin" --name ark nightdragon1/ark-docker

You can map the ark volume to access config files :
docker run -d -p 7778:7778 -p 7778:7778/udp -p 27015:27015 -p 27015:27015/udp -e SESSIONNAME=myserver -v /my/path/to/ark:/ark --name ark nightdragon1/ark-docker
Then you can edit /my/path/to/ark/arkmanager.cfg (the values override GameUserSetting.ini) and /my/path/to/ark/[GameUserSetting.ini/Game.ini]

You can manager your server with rcon if you map the rcon port (you can rebind the rcon port with docker):
docker run -d -p 7778:7778 -p 7778:7778/udp -p 27015:27015 -p 27015:27015/udp -p 32330:32330 -e SESSIONNAME=myserver --name ark nightdragon1/ark-docker

You can change server and steam port to allow multiple servers on same host:
(You can't just rebind the port with docker. It won't work, you need to change STEAMPORT, SERVERPORT & RCONPORT variable) docker run -d -p 7779:7779 -p 7779:7779/udp -p 27016:27016 -p 27016:27016/udp -p 32331:32330 -e SESSIONNAME=myserver2 -e SERVERPORT=27016 -e STEAMPORT=7779 --name ark2 nightdragon1/ark-docker

You can check your server with :
docker exec ark arkmanager status

You can manually update your mods:
docker exec ark arkmanager update --update-mods

You can manually update your server:
docker exec ark arkmanager update --force

You can force save your server :
docker exec ark arkmanager saveworld

You can backup your server :
docker exec ark arkmanager backup

You can upgrade Ark Server Tools :
docker exec ark arkmanager upgrade-tools

You can use rcon command via docker :
docker exec ark arkmanager rconcmd ListPlayers
Full list of available command here

You can check all available command for arkmanager here

Crontab - Job automation

You can easily configure automatic update and backup.
If you edit the file /my/path/to/ark/crontab you can add your crontab job.
For example :

# Update the server every hours  
0 * * * * arkmanager update --warn --update-mods >> /ark/log/crontab.log 2>&1    
# Backup the server each day at 00:00  `  
0 0 * * * arkmanager backup >> /ark/log/crontab.log 2>&1

You can check this website for more information on cron.

After updating the /my/path/to/ark/crontab please run the command
docker exec ark crontab -u steam /ark/crontab

To add mods, you only need to change the variable ark_GameModIds in arkmanager.cfg with a list of your modIds (like this ark_GameModIds="987654321,1234568"). If UPDATEONSTART is enable, just restart your docker or use docker exec ark arkmanager update --update-mods.

Recommended Usages

Simple container

  • First run
docker run -it --name ark \
 -p 7778:7778 -p 7778:7778/udp \
 -p 27015:27015 -p 27015:27015/udp \
 -p 32330:32330 \
 -e SESSIONNAME=myserver \
 -e ADMINPASSWORD="mypasswordadmin" \
 -e TZ=Europe/Vienna \
 -v /my/path/to/ark:/ark \
 Nightdragon1/ark-docker
  • Wait for ark to be downloaded installed and launched, then Ctrl+C to stop the server.
  • Edit /my/path/to/ark/GameUserSetting.ini and Game.ini
  • Edit /my/path/to/ark/arkserver.cfg to add mods and configure warning time.
  • Add auto update every day and autobackup by editing /my/path/to/ark/crontab. See
  • Start the container docker start ark
  • Check your server with : docker exec ark arkmanager status

Docker-Compose

Variables

  • SESSIONNAME : Name of your ark server (default : "Ark Docker")
  • SERVERMAP : Map of your ark server (default : "TheIsland")
  • SERVERPASSWORD : Password of your ark server (default : "")
  • ADMINPASSWORD : Admin password of your ark server (default : "adminpassword")
  • ENABLERCON : valid falues are true and false . If set to true, RCON will be enabled
  • SERVERPORT : Ark server port (default : 27015)
  • STEAMPORT : Steam server port (default : 7778)
  • RCONPORT : Use to set the RCON port (default : 32330)
  • MAX_PLAYERS : Number of maximum players (default : 70)
  • BACKUPONSTART : Backup the server when the container is started. 0: no backup (default : 1)
  • UPDATEPONSTART : Update the server when the container is started. 0: no update (default : 1)
  • BACKUPONSTOP : Backup the server when the container is stopped. 0: no backup (default : 1)
  • WARNONSTOP : Warn the players before the container is stopped. 0: no warning (default : 1)
  • TZ : container timezone (for crontab). (default : "UTC").
  • ARK_UID : ARK_UID of the user used. Owner of the volume /ark (default : 1000)
  • ARK_GID : ARK_GID of the user used. Owner of the volume /ark (default : 1000)
  • ARKCLUSTERID : A string to configure the cluster ID (used for cross server traveling)

Volumes

  • /ark : Working directory :
    • /ark/server : Server files and data.
    • /ark/log : logs
    • /ark/backup : backups
    • /ark/arkmanager.cfg : config file for Ark Server Tools
    • /ark/crontab : crontab config file
    • /ark/Game.ini : ark game.ini config file
    • /ark/GameUserSetting.ini : ark gameusersetting.ini config file
    • /ark/template : Default config files
    • /ark/template/arkmanager.cfg : default config file for Ark Server Tools
    • /ark/template/crontab : default config file for crontab
    • /ark/staging : default directory if you use the --downloadonly option when updating.

Expose

  • Port : STEAMPORT : Steam port (default: 7778)
  • Port : SERVERPORT : server port (default: 27015)
  • Port : RCONPORT : rcon port (default: 32330)

Known issues

Currently none

Changelog

  • 1.0 :
    • Initial image : works with Ark Server tools 1.3
    • Add auto-update & auto-backup
  • 1.1 :
  • 1.2 :
    • Remove variable AUTOBACKUP & AUTOUPDATE
    • Remove variable WARNMINUTE (can now be find in arkmanager.cfg)
    • Add crontab support
    • You can now config crontab with the file /your/ark/path/crontab
    • Add template directory with default config files.
    • Add documentation on TZ variable.
  • 1.3 :
    • Add BACKUPONSTOP to backup the server when you stop the server (thanks to fkoester)
    • Add WARNONSTOP to add warning message when you stop the server (default: 60 min)
    • Works with Ark Server Tools v1.5
      • Compressing backups so they take up less space
      • Downloading updates to a staging directory before applying
      • Added support for automatically updating on restart
      • Show a spinner when updating
    • Add UID & GID to set the uid & gid of the user used in the container (and permissions on the volume /ark)
  • 1.4 : Maintainer switch: boerngen-schmidt/Ark-docker
    • changed from ubuntu to centOS 7
    • added timezone support
    • image now always pulls latest Ark Server Tools
    • renamed NBPLAYERS to MAX_PLAYERS
    • added prefixc ARK_ to UID & GID to not have conflicts with arkmanager
    • added auto upgrading of arkmanager
  • 1.5 :
    • fixed arkmanager upgrade
  • 1.6: Maintainer switch: NightDragon1/Ark-docker
    • Initial from boerngen-schmidt/Ark-docker
    • Fixed some bugs
    • Updated from CentOS 7 to CentOS 8
    • Added some modifications to the default config
    • Added RCON Port ENV-Vars
  • 1.7:
    • Added Docker-Healthcheck (status becomes unhealthy while arkmanager runns update)
  • 1.7.1:
    • Changed Healthcheck for "Server listening" instead of "Server running"
  • 1.7.2:
    • Fixed Healthcheck
  • 1.7.3:
    • Updated compose-file
    • Repository Cleanup
  • 1.7.4:
    • Update to run.sh
  • 1.8:
    • Added "arkmanager restart" to health check if failed
  • 1.9
    • Update to use new git repository of arkmanager
  • 2.0
    • Added crudini to edit Game.ini oder GameUserSettings.ini
  • 2.1
    • Made clusterid configureable via docker environment variable
    • Made RCON enabled configurable via docker environment variable
  • 2.2
    • Bugfix release regaridng "disk write error" of steamcmd
  • 2.3
    • Removed ARK Mod "ACM" to be configured per default as it's not compatible anymore with Gen2 and not maintaned too