Wow, this one was fun. I spent several days knocking my head against my desk trying to figure out why this wasn’t working, only to find out I was being silly.
So if you want to install and run a dedicated Ark: Survival Evolved server, you’ll first need to install the prerequisites. For our server, we used SteamCMD, as I feel it’s the easiest way to keep the game server updated. So install the dependencies.
# sudo yum install glibc libstdc++
Now, there’s some quirks to Ark: Survival Evolved that require us to make some changes to our server. If you haven’t already, you’ll need to increase the open files limit for your server by editing your configurations.
- Add the following line to the
- Run the following command to apply the change:
# sudo sysctl -p /etc/sysctl.conf
- Add the following lines to /etc/security/limits.conf:
* soft nofile 1000000
* hard nofile 1000000
- Add the following line to
session required pam_limits.so
Now we want to create a specific user to run your server. You can absolutely run the server as root, but do you really want to risk some exploit being discovered, allowing some hacker root access to your host? Didn’t think so.
# sudo useradd -m gameserver
# su - gameserver
Now we want to go ahead and install SteamCMD.
# mkdir ~/steamcmd
# cd ~/steamcmd
Now, download the SteamCMD files.
# wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
And extract the files.
# tar -xvf steamcmd_linux.tar.gz
Navigate to the
steamcmd directory, and start SteamCMD.
# cd ~/steamcmd
Next, you’ll need to login to Steam. In order to install Ark: Survival Evolved, you do not need to login to your Steam account. Which is nice, because with the recent requirements for Steam Guard, and all the extra security, it just gets super annoying having to login and verify every time you need to update.
Now, we’ll define our install directory. Without defining this, it’ll install the game files in our
steamcmd directory. It’s possible to keep going like that, but I prefer to use a separate install directory so I can organize my Steam apps more efficiently.
And now install the game, which includes the game server files.
app_update 376030 validate
Depending on the speed of your internet connection, it may take quite a while for the game files to download and install. Once the files are installed, you can exit SteamCMD.
Great! Now your game is installed. You could just run your server in a separate screen by running the command:
~./ARK/ShooterGameServer TheIsland?listen?SessionName=<server_name>?ServerPassword=<join_password>?ServerAdminPassword=<admin_password> -server -log
Where <server_name> is the name you are going to give your server, <join_password> is the password any player would have to enter to join your server, and <admin_password> is the password you would need to enter in the client console to enable cheats.
Unfortunately, we’re not quite ready to join the server, because you probably haven’t opened up the ports that Ark: Survival Evolved uses.
||Query port for Steam’s server browser
||Game client port
||RCON for remote console server access (optional)
[su_spoiler title=”Finding nonstandard ports”]
Note: For my setup, I had to open up a different game client port for some unknown reason. I’m sure it’s different for a reason, but I have no idea why. If your server is not joinable after following these instructions, you should check which ports the game server is using by using netstat.
# sudo netstat -tulpn
You should see a list of ports and the services using them. You’d be looking for the ports being used by ShooterGameServer. Add those ports to your firewall rules.
Add these ports to your firewall rules.
# sudo firewall-cmd --permanent --add-port=27015/udp
# sudo firewall-cmd --permanent --add-port=7777/udp
# sudo firewall-cmd --permanent --add-port=32330/tcp
And reload the rules.
# sudo firewall-cmd --reload
Okay, now you can find your server when you search for LAN servers in the game client. For most people, that’s all you’ll need to do to run and play on a dedicated server. For me though, I wanted to have a way to be able to update the server when I need to, and I wanted to also have a way to start the server automatically as a service. If you’d prefer to just run a bash script to keep it updated and start/stop the server, I found a great script on Reddit. I modified it a little to suit my needs, and I think it works pretty well. Just make sure you edit the config file as needed, and run the script in a new screen session.
To run the server as a service, you’ll want to add a service file to systemd. An added bonus of doing this is that the service will automatically update the open file limits on-the-fly. Create the file /etc/systemd/system/ark-dedicated.service and add this text:
Description=ARK: Survival Evolved dedicated server
After=syslog.target network.target nss-lookup.target network-online.target
ExecStart=/home/gameserver/ARK/ShooterGame/Binaries/Linux/ShooterGameServer TheIsland?listen?SessionName=<SESSION_NAME> -server -log
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s INT $MAINPID
Make sure to reload your service lists.
# sudo systemctl daemon-reload
Before starting the service, make sure you add your configuration settings in the /home/gameserver/ARK/ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini file.
Now you can start the service.
# sudo systemctl start ark-dedicated
And make sure it runs on system startup.
# sudo systemctl enable ark-dedicated
That’s it! You should be all set to join your server now. I hope this tutorial helps a few people looking to host their own servers, and hopefully you won’t have such a hard time of it as I did.
Thanks for reading,