Docker Linux container image for running an ARK Survival Ascended dedicated server.
Note - This container has not been tested with the Epic Game Store version of the game only the Steam version. If there are any problem please open an issue.
See the wiki for more detailed documentation.
- Features
- Quick Start
- System Requirements
- Game/Server Configs
- Deployment
- Tags
- Shout Outs
- Contributing
- Simple automated installation of ARK Survival Ascended (SA) dedicated server
- Configuration via environment variables and config files
- Scheduled server restarts and updates via Cron
- Can be frozen to a specific version that is already downloaded
- Automated backups
- Automatic mod deployment, management, and updating
- Linux Container that runs the Windows version of the game server via wine/proton
- Will switch to Linux game server if it is ever released
It is assumed you already have Docker installed on your host machine. See here for instructions on how to install Docker.
The commands below will run the latest version of the ARK SA Server in a Linux container using wine
. It will expose the default ports needed for the game server and RCON. It will also set the server name and admin password.
Note - Using docker run
by itself isn't recommended to host a server in the long term. See the Deployment Examples section of the wiki for more deployment options.
The ark server data in this example will be stored in your home directory (/home/USERNAME/ark-data
).
# written for bash, but should work in other shells
# may require Sudo depending on your docker setup
$ docker run -d \
--name ark-sa-server \
-p 7777:7777/udp \
-p 7778:7778/udp \
-p 27015:27015/udp \
-p 27020:27020/tcp \
-e SERVER_NAME="\"Simple ARK SA Server\"" \
-e ADMIN_PASSWORD=secretpassword \
-v $HOME/ark-data/server:/ark-server/server \
-v $HOME/ark-data/logs:/ark-server/logs \
-v $HOME/ark-data/backups:/ark-server/backups \
johnnyknighten/ark-sa-server:latest
To view the container logs:
$ docker logs ark-sa-server -f
Press CTRL+C
to exit the logs output.
To stop the container:
$ docker stop ark-sa-server
See the Windows Host section in the Quick Starts page of the wiki for details.
You should consider running this on another device besides your gaming PC, unless you have RAM to spare.
General Minimum Spec Recommendation (For Server Only):
- 16GB of RAM
- 4 Cores Modern CPU
- 20GB of Storage (SSD Recommended)
Note - Treat these as suggestions rather than hard rules. These recommendations are based on informal performance testing with some metrics collected over time. See the Performance Testing section in the wiki for more details.
Environment variables are the primary way to configure the server itself. For game configurations such as XP/Gathering/Taming rates and player stats, you will need to use config files. See the Config Files section in the wiki for more details.
The table below shows all the available environment variables and their default values.
Variable | Description | Default |
---|---|---|
SKIP_FILE_VALIDATION |
Skips SteamCMD validation of the server files. Can speed up server start time, but could risk not detecting corrupted files. | False |
TZ |
Sets the timezone of the container. See the table here and look in the TZ identifier column. Highly recommend to set this if you will be using any of the CRON variables. | America/New_York |
MANUAL_CONFIG |
If set to True then the container will not generate any config files. This is useful if you want to manage the config files yourself. |
False |
SCHEDULED_RESTART |
Enable scheduled restarts of the server. | False |
BACKUP_ON_SCHEDULED_RESTART |
Determines if the server should backup itself before restarting. | False |
RESTART_CRON |
Cron expression for scheduled restarts. Default is everyday at 4am. | 0 4 * * * |
SCHEDULED_UPDATE |
Enable scheduled updates of the server. | False |
UPDATE_CRON |
Cron expression for scheduled updates. Default is every Sunday at 5am. | 0 5 * * 0 |
BACKUP_BEFORE_UPDATE |
Determines if the server should backup itself before updating. | False |
UPDATE_ON_BOOT |
Determines if the server should update itself when it starts. If this is set to False then the server will only update if SCHEDULED_UPDATE=True , then it will update on the schedule specified by UPDATE_CRON . |
True |
SCHEDULED_BACKUP |
Enable scheduled backups of the server. | False |
BACKUP_CRON |
Cron expression for scheduled backups. Default is every day at 6am. | 0 6 * * * |
BACKUP_ON_STOP |
Determines if the server should backup itself when the container stops. | True |
ZIP_BACKUPS |
If this is set to True then it will zip your backups instead of the default tar and gzip. |
False |
RETAIN_BACKUPS |
Number of backups to keep. If not set, then an unlimited number of backs will be kept. | EMPTY |
SERVER_NAME |
Name of the server that appears in the server list. If the name contains a space wrap the name in quotes, depending on your system you may need to add escaped quotes \" . |
"ARK SA Server" |
SERVER_PASSWORD |
Password to login to the server. Defaults to no password aka a public server. Do not put spaces in your password. | EMPTY |
ADMIN_PASSWORD |
Password for the server admin. Also used for RCON access. Do not put spaces in your password. | adminpassword |
GAME_PORT |
Primary game port. This port +1 will also be used. | 7777 |
QUERY_PORT |
Steam query port. | 27015 |
ENABLE_RCON |
Enable RCON on the server. | True |
RCON_PORT |
RCON port for the server. | 27020 |
MAP |
Map launched on the server. | TheIsland_WP |
MAX_PLAYERS |
Maximum number of players allowed on the server. | 70 |
ENABLE_PVE |
Enable PvE mode, otherwise it is a PvPvE. | False |
NO_BATTLEYE |
Disables BattlEye on the server. | True |
EXTRA_LAUNCH_OPTIONS |
Extra launch options for the server. Allows additional flags that do not have an environment variable provided yet. | EMPTY |
MOD_LIST |
Comma separated list of mod ids to install. Needs to be wrapped in quotes and whitespace can appear before or after commas. | EMPTY |
EPIC_PUBLIC_IP |
Public IP address of the server, used by Epic game clients. | EMPTY |
MULTI_HOME_SERVER |
Provide your public IP address when hosting multiple servers on the same machine. | EMPTY |
Note - If you are new to CRON, check here to get help understanding the syntax: crontab guru.
The table below shows the default ports that are exposed by the container. These can be changed by setting the environment variables GAME_PORT
, QUERY_PORT
, and RCON_PORT
.
Port | Protocol | Description |
---|---|---|
7777 | UDP | Main game port |
7778 | UDP | Additional game port that is always one port above the main game port |
27015 | UDP | Steam query port |
27020 | TCP | RCON Port |
Make sure you have Port Forwarding configured otherwise the server will not be accessible from the internet. See the Port Forwarding section int he wiki for more details.
Note - Always ensure that your -p
port mappings if using docker run and the ports
section of your docker compose match up to the ports specified via the environment variables. If they do not match up, the server will not be accessible.
There are thee volumes used by the container
Volume | Description |
---|---|
/ark-server/server | Contains server and mods files |
/ark-server/logs | Contains all log files generated by the container |
/ark-server/backups | Contains all automated backups |
Backups can be performed automatically if configured. Backups are performed by making a copy the /ark-server/server/ShooterGame/Saved
directory to the /ark-server/backups
volume. The backups are named using the following format: server-backup-{datetime}
. They are compressed as tar.gz
files by default(can be set to zip via ZIP_BACKUPS=True
) and are stored in the /ark-server/backups
volume. You can configure the number of backups to keep using RETAIN_BACKUPS
, otherwise you will need to manually delete old backups.
Backup Automation Options
BACKUP_ON_SCHEDULED_RESTART
- Backup the server before a scheduled restartBACKUP_BEFORE_UPDATE
- Backup the server before an updateBACKUP_ON_STOP
- Backup the server when the container stopsSCHEDULED_BACKUP
- Backup the server on a schedule
If you are using BACKUP_ON_STOP=True
, it is highly recommended you adjust the timeout settings of your docker run/stop/compose
command to allow the backup process enough time to complete its backup. Without doing this, it is likely your backup will be unfinished and corrupt. See the Backup On Container Stop - Docker Timeout Considerations section of the wiki for more details.
If desired, you can also manually trigger a backup. See the Manual Backup section of the wiki.
See the Restoring Backups section of the wiki for details.
If you are planning on using BACKUP_ON_STOP=True
, it is highly recommended you adjust the timeout settings of your docker stop/compose down
command to allow the backup process enough time to complete its backup. Without doing this, it is likely your backup will be unfinished and corrupt. The longer your server has been running the bigger your backup will become which increases the time needed to backup the server. See the Backup On Container Stop - Docker Timeout Considerations section of the wiki for more details.
Configuration files are primarily used to adjust settings such as such as XP/Gathering/Taming rates and player stats. The config files are located in the /ark-server/server/ShooterGame/Saved/Config/WindowsServer
directory inside the container and the primary file you will modify is GameUserSettings.ini
.
This container has two primary ways to manage config files.
- Environment Variables - Recommended
- Manually
You should not mix and match these methods (it is possible but you need to understand how both are handled inside the container). If you wish to manage the config files manually, you must set MANUAL_CONFIG=True
to prevent the container from generating/overwriting any config files.
Despite setting MANUAL_CONFIG=True
, if the GameUserSettings.ini
file is missing a minimal config will be generated using the following variables:
SERVER_NAME
SERVER_PASSWORD
ADMIN_PASSWORD
MAX_PLAYERS
ENABLE_PVE
ENABLE_RCON
RCON_PORT
For more info see the Config Files wiki page.
Mods are handled via the MOD_LIST
environment variable. The variable is a comma separated list of mod ids to install. The mod ids list need to be wrapped in quotes, and white space is allowed before/after commas since all whitespace in the quotes will be removed. Right now, if you are lucky, the mod author will put the id in there mod description. An alternative way to get mod ids is by installing them on your local machine then going to PATH_TO_STEAM\Steam\steamapps\common\ARK Survival Ascended\ShooterGame\Binaries\Win64\ShooterGame\Mods\RANDOM#
and look at the subdirectories' name. The first number before the _
in the subdirectories name is the mod id.
See the Deployment Examples section of the wiki for more deployment option examples.
Tags used in this project are focused on the version of the GitHub release and the execution environment it uses. It is not based on the game/server version or mod versions.
Currently the only execution environment is wine
, which runs the Windows version of the game server in a Linux container via the wine compatibility layer. More specifically it uses GloriousEggroll's build of wine that's based on Valves's Proton experimental wine repo. In the future depending on the direction of this project and the release of the Linux version of the game server, there may be a linux
and windows
execution environment.
Tag | Description | Examples |
---|---|---|
latest | latest build from main branch, defaults to the wine execution environment |
latest |
latest-{execution environment} | latest build from main branch for a specific execution environment |
latest-wine |
major.minor.fix | semantic versioned releases, defaults to the wine execution environment |
1.0.0 |
major.minor.fix-{execution environment} | semantic versioned releases for a specific execution environment | 1.0.0-wine |
There are also pre-release tags that are built from the next
branch. These are used for testing and are not recommended for production use.
- GloryousEggroll - For their wine-ge-custom used in this image
- chatdargent - For their ASA_Linux_Server repo that introduced me to the wine-ge-custom repo
- Before this I had struggled running this with vanilla wine
- lloesche - For giving me a great project to model mine after
- Their valheim-server-docker project has been one of the best and full featured containerized game servers I have used
See CONTRIBUTING.md for details on how to contribute to this project.