Dedicated server setup

From ARK Wiki
Jump to navigation Jump to search

This page discusses the installation and fundamental setup of a dedicated ARK server.

Prerequisites

The ARK dedicated server (ArkAscendedServer or ShooterGameServer) is a 64-bit executable application and as such requires a 64-bit operating system to run.

 ARK: Survival Evolved supports both Windows and Linux natively. Whereas  ARK: Survival Ascended requires Windows (or a Windows-like environment) and does not support Linux natively.

Survival Ascended restrictions

Per the end-user license agreement, unless a dedicated server license is obtained from Nitrado, dedicated servers may be only hosted for personal, non-commercial. Obtaining monetary gains is therefore prohibited unless those gains qualify as donations (i.e. the donator does not receive anything of value in exchange) or do not exceed operational costs.

Cross-ARK transfers and cluster features are not enabled. It is not possible to self-host a cross-platform dedicated server or a server for a platform other than Steam.

Prior to Patch 25.18, the above restrictions also included a valid ARK: Survival Ascended game license being required (with Steam application running in the background), with an imposed limit of one server instance per account and per a machine.

Storage

Each  ARK: Survival Ascended server installation takes around 8 GiB of drive space but can be further cut down by removing pre-rendered cutscenes from ShooterGame/Content/Movies.

Each  ARK: Survival Evolved server installation takes around 18 GiB of drive space.

Additional drive space is required to store game saves, tribe and player profiles, logs, updates download and installation, and mods.

CPU

CPU requirements are not strict, but it is recommended to have 4 logical cores per  ARK: Survival Ascended's server instance, with single-thread performance still being preferred over having more cores (gameplay with the exception of physics still runs on a single thread). For  ARK: Survival Evolved, 2 logical cores per instance (more grant diminishing advantage, and the workload will never scale beyond 4 cores) are sufficient, with single-threaded performance favored.

RAM

Excluding the operating system, memory requirements vary by the map and increase with the number of connected players, game age (structures, creatures, storage) and depending on the server configuration and mods installed.

In  ARK: Survival Evolved, with each player connected the memory requirements may rise by an average of 50-150MiB.

System administrators must remember that as players advance more game objects will be created as a result, and memory usage will rise.

Finally, memory usage may also be unstable or increased during the creatures (re)spawn phase, which takes several minutes.

The following table shows the memory usage for each map on a new world save with default server settings and no players connected (the intervals are due to the creatures (re)spawn phase).

Map  ARK: Survival Ascended  ARK: Survival Evolved
Level name Memory usage on an empty map Level name Memory usage on an empty map
The Island TheIsland_WP 8-10 GiB1 TheIsland 3.5-4.5 GiB
The Center Unavailable TheCenter 3-4 GiB
Scorched Earth Unavailable ScorchedEarth_P 3-4 GiB
Ragnarok Unavailable Ragnarok 4-5 GiB
Aberration Unavailable Aberration_P 3-4 GiB
Extinction Unavailable Extinction 3-4 GiB
Valguero Unavailable Valguero_P 3-4 GiB
Genesis: Part 1 Unavailable Genesis 5-6 GiB
Crystal Isles Unavailable CrystalIsles 5.5-6.5 GiB
Genesis: Part 2 Unavailable Gen2 10-12.5 GiB
Lost Island Unavailable LostIsland 5.5-7 GiB
Fjordur Unavailable Fjordur 4-5 GiB

1 The usage may be lower on machines with less memory available, but performance will be impacted.

Network

The bandwidth needed increases linearly with players connected. Generally, for home connection class a 100Mb or better is highly recommended to support properly a good number of players. Specifically for VPS, each connected player may require up to 60KiB/s of bandwidth, shared across upstream and downstream, however, all is directly tied by server tick-rate and the complexity of the world save reached.

The server listens for incoming connections on the local ports listed below. Ensure your network configuration (operating system firewall and router port forwarding) allows incoming connections to these ports and directs them to the host that will be running your dedicated server.

Port Purpose
UDP 7777 Game port
UDP 7778 Peer port (always Game port +1)
UDP 27015 Query port (for Steam's server browser only)
TCP 27020 RCON for remote console server access (optional)

Please note manual port forwarding may be needed since ShooterGameServer does not support UPnP or other automatic port forwarding protocols.

Multiple dedicated servers on the same host are supported. A common setup consists of assigning and forwarding ports incrementally.

Server instance Game port (UDP) Peer port (UDP) Query port (UDP) RCON port (TCP)
Server instance 1 7777 7778 27015 27020
Server instance 2 7779 7780 27016 27021
Server instance 3 7781 7782 27017 27022
Server instance 4
(completely different ports)
9999 10000 37015 32330
Note: Completely different ports are supported as well, with the only limitation the Steam server browser not be able to find game servers without providing also the query port if this goes above 27020.
Note: Peer port is used by Steam P2P protocol for in-game browser advertising (Epic instead uses 80 and 443 standard ports with TLSv1.2), in the past (between patch 213.0 and 311.78) it was used for direct UDP socket connections (now disabled) and so it is sometimes wrongly referred as raw UDP port.

Operating system

Windows

The server requires Microsoft Visual C++ 2013 Redistributable X64 version and the last revision of the DirectX End-User Runtimes (June 2010) to be installed. It is highly recommended to use a supported operating system by both Microsoft and Steam: this means Windows 10 Version 22H2 and beyond or Windows Server 2016 (or Windows Server 2012 with Extended Security Update support) and beyond.

Windows Server editions

Windows Server editions require additional setup to support  ARK: Survival Evolved dedicated servers featuring crossplay with EPIC/EGS clients as well to run any  ARK: Survival Ascended dedicated servers. Windows Server editions handle certificates and certificate revocation lists in a different way.

Since 18 November 2023, server owners need to manually install the certificate revocation list that can be obtained from https://dev.epicgames.com/ (or just directly from http://crl.r2m02.amazontrust.com/r2m02.crl). The downloaded r2m02.crl file must be installed (right-click on the file) by selecting Place all certificates in the following store and selecting Trusted Root Certification Authorities. A system restart may be needed.

If before 18 November 2023 server owners installed the r2m02.cer certificate file and the server isn't showing up, that certificate must be removed from the system to properly allow the servers to be visible again. To remove the revoked certificate run (Windows + R) certmgr.msc and search for Amazon RSA 2048 M02 in Trusted Root Certification Authorities. The same must be done running certlm.msc. Finally, a system restart may be needed

Linux

The game server requires glibc 2.17. Any modern supported distribution will support glibc 2.17.

SteamCMD

SteamCMD is used to download the server files. Detailed instructions on its installation and usage are available on the Valve Wiki.

Server Installation

  1. Install SteamCMD on your host system.
  2. Create a folder/directory to store the server files. For example on Windows C:\arkserver and on Linux /home/steam/servers/ark
  3. Launch SteamCMD on your host and use it to download the server files. Replace <install_dir> with the full path to the folder created in Step 2. Use the app id 376030 for Survival Evolved, 445400 for Survival of The Fittest, or use 2430930 for Survival Ascended.
    Steam> force_install_dir <install_dir>
    Steam> login anonymous
    Steam> app_update 376030 validate
    Steam> exit
    Alternatively, run from command line:
    steamcmd +force_install_dir <install_dir> +login anonymous +app_update 376030 +quit
  4. Create a script to launch the server with your desired options and settings. For simplicity, place it in the same folder where the server files were downloaded. On Windows, this is a batch file; on Linux, this is a shell script. Examples are provided below. For both platforms, the server options are specified with the same basic syntax. For a more deep comprehension and a guide about server settings, have a look at the server configuration page.
    • On Windows, create a text file named start_server.bat and place it in YOUR_ARK_SERVER_FOLDER/ShooterGame/Binaries/Win64/ (remove the '<' '>' symbols!)
      ShooterGameServer.exe TheIsland?SessionName=<server_name>?ServerPassword=<join_password>?Port=<port>?QueryPort=<query_port>?MaxPlayers=<max_players>?ServerAdminPassword=<admin_password>
      
    • On Linux, create a text file named server_start.sh and place it in YOUR_ARK_SERVER_FOLDER/ShooterGame/Binaries/Linux/ (remove the '<' '>' symbols!)
      #! /bin/bash
      ./ShooterGameServer TheIsland?SessionName=<server_name>?ServerPassword=<join_password>?Port=<port>?QueryPort=<query_port>?MaxPlayers=<max_players>?ServerAdminPassword=<admin_password>
      

      After creating the script, make it executable:

      $ chmod +x server_start.sh

    Apart from Windows or Linux, replace <server_name> with the desired name for your server, <join_password> with whatever password players must provide to join your server and <admin_password> with the password that must be provided to gain administrator access to the serves. If no player join password is desired, remove the entire option from the list (including the ?ServerPassword= parameter itself). Set the number of player slots with <max_players>. Specify the game port (<port>) and the query port (<query_port>). These will need to be port-forwarded as well (see section below).

    Note:  ARK: Survival Ascended requires ?ServerAdminPassword=<admin_password> to be the last argument using the ? append syntax, otherwise it will parse the rest of the launching arguments as part of the server administrator password.

  5. Finally, to launch the server, run the script created in the previous step.

Port Forwarding and Firewall

For your server to become visible in both the Ark server lists and the Steam lists, do the following:

Windows (Firewall and Allow Rules)

  1. On Windows, click on Start and search for "wf.msc" without the quotes. Right click on it and choose the "Run as administrator" option.
  2. Click "Inbound Rules" on the left panel, then click "New Rule..." on the right panel.
  3. When the New Inbound Rule Wizard opens up, select Port, then Next.
  4. The wizard will present options for choosing the protocol and specifying ports. Select "UDP" and "Specific local ports". List the Query and Peer ports interval, as well the Steam query port, then select Next to continue. Example:
    For a default (one server only) setup list them as 7777-7778, 27015
    For a multiple instance setup like the one listened above, list them as 7777-7782, 9999-10000, 27015-27019, 37015
  5. Select "Allow the connection" and continue with the wizard.
  6. Finally enter a name (required) and a description (optional). It is recommended to append the protocol (UDP or TCP) to the rule name.
  7. If you are using also RCON repeat the above procedure but selecting "TCP" as protocol and the RCON port(s) chosen. Example:
    For a default (one server only) setup list them as 27020
    For a multiple instance setup like the one listened above, list them as 27020-27022, 32330
  8. When finished, you should have a rule for UDP ports in the Inbound Rules section and eventually a TCP one.
  9. If needed it is always possible to change these rules to add or remove ports on your setup needing.
Note: with default Windows settings there is no need to create outbound rules in the "Outbound Rules" section.

Linux

For most Linux distros, if there is a firewall at all it will be iptables based. Most modern distributions will use a different interface, it's a good idea to use that instead of direct iptables commands.

All firewall changes must be made either as root or with sudo. These open ports 7777 7778 and 27015 for UDP and optionally 27020 for TCP. You may want to adjust the list of ports you need by editing the "for port in..." line.

UFW

This script will open the ports in a way that will persist across reboots. UFW is the firewall on Ubuntu

 #!/bin/sh
 if [[ $EUID -ne 0 ]]; then
     echo "This must be run as root"
     exit 1
 fi
 for port in 7777 7778 27015; do
     ufw allow $port/udp
 done
 #Uncomment the next if you want to open the default rcon port
 #ufw allow 27020/tcp

FirewallD

This script will open the ports in a way that will persist across reboots. FirewallD is the firewall on RHEL7, CentOS7.x and Fedora.

 #!/bin/sh
 if [[ $EUID -ne 0 ]]; then
     echo "This must be run as root"
     exit 1
 fi
 for port in 7777 7778 27015; do
     firewall-cmd --permanent --add-port $port/udp
 done
 #Uncomment the next if you want to open the default rcon port
 #firewall-cmd --permanent --add-port 27020/tcp
 firewall-cmd --reload

iptables

Keep in mind that this is only a temporary solution and should only be used if neither of the other scripts apply for your system. To make it safe for reboots see the documentation of your distribution, how to add firewall ports to the existing configuration files - or how to add scripts to the boot process.

 #!/bin/sh
 if [[ $EUID -ne 0 ]]; then
     echo "This must be run as root"
     exit 1
 fi
 for port in 7777 7778 27015; do
   iptables -t filter -I INPUT -p udp --dport $port -j ACCEPT
 done
 #Uncomment the next if you want to open the default rcon port
 #iptables -t filter -I INPUT -p tcp --dport 27020 -j ACCEPT

Router Port Forwarding

The same ports of the server setup must be also forwarded on the router. There are many websites with tutorials on port forwarding. It is highly suggested you visit portforward.com, which offers tutorials for the majority of routers. For Virtual Private Servers, please refer to your host knowledge base and support site.

You must forward both UDP and TCP local ports for your server to show up on any lists. You can make sure your ports are open by using the tool from portforward.com, that is, after you enter the ports that you have forwarded in the start_server.bat file you should have created earlier.

For example, start ShooterGameServer.exe TheIsland?SessionName=<server_name>?ServerPassword=<join_password>?Port=7777?QueryPort=27015?MaxPlayers=<max_players>?ServerAdminPassword=<admin_password>

Finding Your Server in Lists

Once your server has started it will show up on the in-game ARK unofficial server list or the Steam game server browser.

Use the search functionality in-game or the Steam game server browser to find your server. Once found you can add the server to favorites.

Using the Steam game server browser it is also possible to add the server IP:QUERYPORT details directly into your favourites. Note: If Steam Query port is above 27019 specify the query port instead IP:QUERYPORT.

Note: The in-game list has a limit on the servers it can search at per minute and especially for Steam players this can take a good amount of time to find it.

If you are having issues finding your server you can confirm if it is listed on the steam master server by entering the following into your browser.

https://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr=<IP>

If successfully listed you will see the following:

{
    "response": {
        "success": true,
        "servers": [
            {
                "addr": "1.2.3.4:7777",
                "gmsindex": -1,
                "steamid": "xxxxxxxxxxxxxx",
                "appid": 346110,
                "gamedir": "ark_survival_evolved",
                "region": -1,
                "secure": false,
                "lan": false,
                "gameport": 7777,
                "specport": 0
            }
        ]
    }
}

Automatic Startup

Windows (via Scheduled Task)

You can configure a scheduled task to automatically run a batch file and start the dedicated server when the system boots.

  1. Open 'Task Scheduler'.
  2. Create Basic Task.
  3. The 'Create Basic Task Wizard' will appear, name the task whatever as desired.
  4. Set the Trigger to 'When the computer starts'.
  5. Set the Action to 'Start a program'.
  6. Browse to the program/script you wish to start (which is the .BAT batch file that starts the server).
  7. Depending on how the batch file works, it may need to set the "Start in (optional)" path, so the working directory of the batch file is correct. If the batch file simply contains the "start ShooterGame ..." command, then it should be set the "Start in (optional)" path of the scheduled task to the directory containing the batch file.
  8. Before creating the scheduled task, mark the checkbox "open properties window" after it's created.
  9. In the General Tab under the Security Options frame, it can be chosen "Run whether user is logged on or not" depending on the needs.

Linux (via systemd)

Most popular Linux distributions such as Ubuntu, Debian and Enterprise Linux support systemd. systemd can be configured to automatically start the dedicated server when the system boots. When using this method to manage the server, using GameUserSettings.ini to specify its settings is highly recommended. Refer to Admin Game Commands for more information.

Setup systemd

Create a file named /etc/systemd/system/ark-dedicated.service with the following contents:

[Unit]
Description=ARK: Survival Evolved dedicated server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target

[Service]
ExecStartPre=/home/steam/steamcmd +login anonymous +force_install_dir /home/steam/servers/ark +app_update 376030 +quit
ExecStart=/home/steam/servers/ark/ShooterGame/Binaries/Linux/ShooterGameServer TheIsland?SessionName=<session_name>
WorkingDirectory=/home/steam/servers/ark/ShooterGame/Binaries/Linux
LimitNOFILE=100000
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s INT $MAINPID
User=steam
Group=steam

[Install]
WantedBy=multi-user.target

The ExecStart line specifies the command to run in order to start the service. It uses the same syntax as the startup examples shown above (in #Server Installation), with all the same arguments, but here it's important to adjust it to reflect the location of your ARK dedicated server on the host. Use the full path to the server executable, as shown above.

Be sure to replace <SESSION_NAME> with the desired session name for your server as well.

Finally, adjust the User and Group settings for your host. Without these two options in ark-dedicated.service, the dedicated server will be run as the root user. This is unsafe, as any vulnerability in the dedicated server could result in an attacker gaining remote superuser access on the host.

It's recommended to run the dedicated server in an unprivileged account used solely for this purpose. In the example above, the user account "steam" is used. It's a member of the "steam" group, which is generally created along with the account.

WorkingDirectory option is required to fix some issues. (For example, not having WorkingDirectory set will fail to download mods (if using with -automanagedmods))

Systemd Commands

Enable the new service to run on boot by running:

sudo systemctl enable ark-dedicated

The server can be started by running:

sudo systemctl start ark-dedicated

The server can be stopped by running:

sudo systemctl stop ark-dedicated

To check if the service status i.e started or stopped run:

sudo systemctl status ark-dedicated
Note: If you need to update the ark-dedicated.service file (to change the dedicated server's startup options or to adjust its path), run the following command to ensure your changes are applied:
sudo systemctl daemon-reload

Updating

To update the server when a new version is released, repeat the same SteamCMD commands shown in the previous section. Be sure to use the correct set of commands for your platform. Refer to SteamCMD's documentation for details on automating this process.

If you use the systemd startup file you can easily integrate the update-mechanism to be run before every start of the game.

Server Admin Console

It is possible to access the server admin console from in-game.

  1. Start the game client and connect to the game server.
  2. Open the in-game console.
enablecheats <admin_password>

Replace <admin_password> with the server administrator password.

Refer to Server Management Commands for a list of available commands.

Backing Up Server Data

To make a backup of the server data, simply copy the folder named ShooterGame/Saved (and its content) to the desired backup location.[1] This folder contains all tribe, player and world data, as well configuration files, logs and cluster data for the server. Performing a backup is recommended before updating a server to a new release.

Troubleshooting

Server loses characters or world data upon restart

If your server isn't retaining characters or world data when it's restarted, it may not have full access to the folder where it's installed.

The first time the server is run, it should create a folder named ShooterGame/Saved containing various configuration and save files. If the server has run at least once but hasn't created this folder, it may not have been able to create new folders and files there. Verify that the folder where the server is installed is readable and writable by the user account that actually runs the server. (For Windows servers, check the status of User Account Control)

The server software, by default, is set-up to automatically save world data every 15 minutes. If your server crashes before the first 15 minutes are up, you will not have any data saved.

Tool - ARK Server Manager

You can also use this tool to manage your Ark: Survival Evolved servers: https://steamcommunity.com/sharedfiles/filedetails/?id=468312476

ASM.png

The Ark Server Manager is designed to help you set up and maintain your own Ark: Survival Evolved dedicated servers. It provides a simple user interface allowing you to create and edit server profiles containing all of the settings you need to customize the playing experience for you and your friends.

What it does:

  • Manages the SteamCMD tool and Server installations/updates.
  • Organizes settings and writes INI files and command-line arguments automatically.
  • Tracks server status and allows direct control of server state.
  • Save and load server profiles - even import directly from an existing server deployment.
  • Scheduled updates server files and mods.
  • Scheduled save backups with in-game lag warning for players.
  • Auto-manage Windows firewall rules
  • Works with Survival of the fittest.

Note: Ark: Survival Ascended is not supported.

Tool - PowerShellGSM - Ark: Survival Ascended

PowerShellGSM is a modular PowerShell tool to manage game servers. It is compatible with Ark: Survival Ascended.

This scripted tool will take care of:

  • Installation
  • Backups
  • Updates
  • Monitoring
  • Restarts

Once started it registers a schedule task to check on your server status and automatically maintain it up to date and alive.

Note: Ark: Survival Evolved is not supported.

Notes

If you're planning to have players join from the Epic Games version of ARK, you must have the -crossplay and -PublicIPForEpic=<IPAddress> command line options set (read more at Server_configuration).

References

External links