ARK: Survival Ascended

ARK: Survival Ascended

View Stats:
Manu Oct 31, 2023 @ 5:10am
3
3
Dedicated Server on Linux via Docker
Hey everyone,

I just built a docker image that allows you to run an ARK: Survival Ascended dedicated server on a Linux VPS in the Cloud.

In case you are a Linux administrator and want to run your own server without going through setting up Wine or Proton, feel free to pull my docker image and have a look at the README of my GitHub repository:

https://github.com/mschnitzer/ark-survival-ascended-linux-container-image

If you need help, feel free to create an issue on GitHub or ask here.
< >
Showing 1-15 of 211 comments
BumpInTheNight Oct 31, 2023 @ 4:10pm 
Noob question, it keeps itself up to date with the server releases from wildcard via steamcmd or some such?
Manu Oct 31, 2023 @ 5:29pm 
Yep, it does. Just restart the server by running `docker-compose restart server` from within the directory where the `docker-compose.yml` file is located and the startscript applies any pending updates.
Feynt Oct 31, 2023 @ 7:16pm 
I'm certainly intrigued. I'm told by an acquaintance that cluster support is broken at the moment. But I suppose questions I have:
1. Are there any issues with setting the port to something different (such as, say, 7778/27021) for multiple servers in a docker-compose.yml?
2. Will you be updating this in the future for cluster support when that's confirmed working?
3. Are there start up commands to specify certain settings, like the map to run?
ToadCoffee Oct 31, 2023 @ 9:33pm 
docker compose up -d
[+] Running 4/4
✔ server 1 layers [⣿] 0B/0B Pulled 39.0s
✔ fad4c8bb94a9 Pull complete 38.1s
✔ set-permissions 1 layers [⣿] 0B/0B Pulled 11.7s
✔ 0104f818a33a Pull complete 10.5s
[+] Running 4/5
✔ Network ark_default Created 0.1s
✔ Volume "ark_steamcmd" Created 0.0s
✔ Volume "ark_server-files" Created 0.0s
✔ Volume "ark_steam" Created 0.0s
- Container ark-set-permissions-1 Creating 404.5s
request returned Bad Gateway for API route and version http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.43/containers/create?name=ark-set-permissions-1, check if the server supports the requested API version
Manu Nov 1, 2023 @ 4:20am 
Originally posted by Feynt:
I'm certainly intrigued. I'm told by an acquaintance that cluster support is broken at the moment. But I suppose questions I have:
1. Are there any issues with setting the port to something different (such as, say, 7778/27021) for multiple servers in a docker-compose.yml?
2. Will you be updating this in the future for cluster support when that's confirmed working?
3. Are there start up commands to specify certain settings, like the map to run?

Answering directly on all three questions:

1. You can set the port to whatever you like in the docker-compose.yml. e.g. If you want to have the gameport to listen on 8077 you would change the "0.0.0.0:7777:7777/udp" to "0.0.0.0:8077:7777/udp". You likely do not even need to change anything in the ARK configs, as docker would route the network packets through the container. If you experience issues with that, I'd recommend adding an additional launch argument ?Port=8077 to the server parameters file (see my 3rd answer to your questions)

2. I will definitely be looking into that, once it has been confirmed working. I'm using this software myself for hosting my own servers, so I have a high interest in having things updated.

3. Yes, I added an example to the README of the repository: https://github.com/mschnitzer/ark-survival-ascended-linux-container-image#7-changing-the-start-parameters-and-the-player-limit - I also explained how it is possible to change the player limit, as this is still confusing to people it seems.
Manu Nov 1, 2023 @ 4:22am 
Originally posted by ToadCoffee:
docker compose up -d
[+] Running 4/4
✔ server 1 layers [⣿] 0B/0B Pulled 39.0s
✔ fad4c8bb94a9 Pull complete 38.1s
✔ set-permissions 1 layers [⣿] 0B/0B Pulled 11.7s
✔ 0104f818a33a Pull complete 10.5s
[+] Running 4/5
✔ Network ark_default Created 0.1s
✔ Volume "ark_steamcmd" Created 0.0s
✔ Volume "ark_server-files" Created 0.0s
✔ Volume "ark_steam" Created 0.0s
- Container ark-set-permissions-1 Creating 404.5s
request returned Bad Gateway for API route and version http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.43/containers/create?name=ark-set-permissions-1, check if the server supports the requested API version

What OS and version are you running?
Manu Nov 1, 2023 @ 4:27am 
Sorry for replying three times in a row, but I forgot answering one part of your question:

Originally posted by Feynt:
1. Are there any issues with setting the port to something different (such as, say, 7778/27021) for multiple servers in a docker-compose.yml?

As there's no connection to your Steam account in this setup and docker containers are isolated from each other, you should be fine running multiple servers on different ports if that is permitted by the EULA of Wildcard/Snailgames/Nitrado. I'm not up to date with the recent developments, so I don't want to spread rumors.
OldManGan Nov 1, 2023 @ 4:27am 
Thanks! Docker is the Way.
Feynt Nov 1, 2023 @ 10:27am 
Originally posted by Manuel:
Answering directly on all three questions:

1. You can set the port to whatever you like in the docker-compose.yml. e.g. If you want to have the gameport to listen on 8077 you would change the "0.0.0.0:7777:7777/udp" to "0.0.0.0:8077:7777/udp". You likely do not even need to change anything in the ARK configs, as docker would route the network packets through the container. If you experience issues with that, I'd recommend adding an additional launch argument ?Port=8077 to the server parameters file (see my 3rd answer to your questions)
It wasn't so much "can you set the port different from the container's", I know about the redirection of ports. I'm wondering if it properly works though or if the server insists on presenting itself as one port to the server browser when Docker is insisting it's another. Maybe an environment variable could be passed through for the port?
Originally posted by Manuel:
2. I will definitely be looking into that, once it has been confirmed working. I'm using this software myself for hosting my own servers, so I have a high interest in having things updated.
Excellent. I'll keep an eye on it as well. I know my friends are also highly motivated to have a cluster, and if it can be a seamless endevour I'm all for it.
Originally posted by Manuel:
3. Yes, I added an example to the README of the repository: https://github.com/mschnitzer/ark-survival-ascended-linux-container-image#7-changing-the-start-parameters-and-the-player-limit - I also explained how it is possible to change the player limit, as this is still confusing to people it seems.
Cool. It might be a good idea to pass the command line parameters as individual environment variables though rather than editing a file. It's less fragile in my opinion. Off the top of my head:

  • Port
  • Session name
  • Map name
  • Player count
Last edited by Feynt; Nov 1, 2023 @ 10:32am
Manu Nov 1, 2023 @ 10:44am 
Originally posted by Feynt:
It wasn't so much "can you set the port different from the container's", I know about the redirection of ports. I'm wondering if it properly works though or if the server insists on presenting itself as one port to the server browser when Docker is insisting it's another. Maybe an environment variable could be passed through for the port?

Not sure if I fully understand what you mean. So in general you can have the server listening on different ports by adding ?Port=12345 as a start parameter. This is independent of the port docker redirects traffic to. So you can launch the server on any port, but expose it on another through docker.

It could be very well that we both mean the same thing but just talking past each other.

To keep it simple: The server can listen on different ports other than 7777 natively.

Originally posted by Feynt:
Cool. It might be a good idea to pass the command line parameters as individual environment variables though rather than editing a file. It's less fragile in my opinion. Off the top of my head:

  • Port
  • Session name
  • Map name
  • Player count

I added a feature request:
https://github.com/mschnitzer/ark-survival-ascended-linux-container-image/issues/3

I will include it in the next update. Likely tomorrow or the day after.

Next update will also feature native RCON command executions:
https://github.com/mschnitzer/ark-survival-ascended-linux-container-image/issues/2
Feynt Nov 1, 2023 @ 3:28pm 
Originally posted by Manuel:
Not sure if I fully understand what you mean. So in general you can have the server listening on different ports by adding ?Port=12345 as a start parameter. This is independent of the port docker redirects traffic to. So you can launch the server on any port, but expose it on another through docker.

It could be very well that we both mean the same thing but just talking past each other.

To keep it simple: The server can listen on different ports other than 7777 natively.
I'm saying that you can add the command line parameter to set it to listen to 12345, but if you tell Docker it should redirect 7777:12345, the server itself may report 12345 and thus make it unreachable because Docker only allows 7777. Just wondering if that was tested. I suppose I will find out, if I can get the container to run.
Originally posted by Manuel:
I added a feature request:
https://github.com/mschnitzer/ark-survival-ascended-linux-container-image/issues/3

I will include it in the next update. Likely tomorrow or the day after.

Next update will also feature native RCON command executions:
https://github.com/mschnitzer/ark-survival-ascended-linux-container-image/issues/2
I saw the feature entries. :steamthumbsup:

On an unrelated note: I've been having issues with your container downloading steamcmd. I know it isn't an issue with the URL, and I have plenty of other containers running which have internet access, but I'm certain it's a configuration issue on my part.
Last edited by Feynt; Nov 1, 2023 @ 3:29pm
BumpInTheNight Nov 1, 2023 @ 4:18pm 
Next noob question, during the viewing of the logs when trying to launch my docker server I saw this line:
Loading Steam API...dlmopen steamservice.so failed: steamservice.so: cannot open shared object file: No such file or directory
OK


Ignoraeble or something is missing?
BumpInTheNight Nov 1, 2023 @ 4:34pm 
Oh and the next one: I edited the docker-compose.yml to want to use ports 7778 and 27015, but when I launch the docker and then run "netstat -tunlp" its showing that my host is listening on 7777 and 27020.

There's gotta be another place that's define those ports that's over-riding what the docker compose file is declaring yah?
Feynt Nov 1, 2023 @ 4:57pm 
Originally posted by BumpInTheNight:
Next noob question, during the viewing of the logs when trying to launch my docker server I saw this line:
Loading Steam API...dlmopen steamservice.so failed: steamservice.so: cannot open shared object file: No such file or directory
OK


Ignoraeble or something is missing?
This means you haven't made the appropriate directories in the spot you're running the docker-compose.yml from. All the entries under the "volumes" section need to be created (the stuff on the left side is the "host" side, the directories that need to be made)

Originally posted by BumpInTheNight:
Oh and the next one: I edited the docker-compose.yml to want to use ports 7778 and 27015, but when I launch the docker and then run "netstat -tunlp" its showing that my host is listening on 7777 and 27020.

There's gotta be another place that's define those ports that's over-riding what the docker compose file is declaring yah?
If you're starting "docker-compose start" without the -d, or connecting to it via -it, you'll see the default port 7777 and 27020 within the container itself. If you altered the docker-compose.yml properly (i.e. the left side of the port entries) the host should see 7778 and 27015 in use.
Manu Nov 1, 2023 @ 5:01pm 
Originally posted by Feynt:
Originally posted by Manuel:
Not sure if I fully understand what you mean. So in general you can have the server listening on different ports by adding ?Port=12345 as a start parameter. This is independent of the port docker redirects traffic to. So you can launch the server on any port, but expose it on another through docker.

It could be very well that we both mean the same thing but just talking past each other.

To keep it simple: The server can listen on different ports other than 7777 natively.
I'm saying that you can add the command line parameter to set it to listen to 12345, but if you tell Docker it should redirect 7777:12345, the server itself may report 12345 and thus make it unreachable because Docker only allows 7777. Just wondering if that was tested. I suppose I will find out, if I can get the container to run.
Originally posted by Manuel:
I added a feature request:
https://github.com/mschnitzer/ark-survival-ascended-linux-container-image/issues/3

I will include it in the next update. Likely tomorrow or the day after.

Next update will also feature native RCON command executions:
https://github.com/mschnitzer/ark-survival-ascended-linux-container-image/issues/2
I saw the feature entries. :steamthumbsup:

On an unrelated note: I've been having issues with your container downloading steamcmd. I know it isn't an issue with the URL, and I have plenty of other containers running which have internet access, but I'm certain it's a configuration issue on my part.

Let me know if you cannot solve it on your own, might be able to help you.

Originally posted by BumpInTheNight:
Next noob question, during the viewing of the logs when trying to launch my docker server I saw this line:
Loading Steam API...dlmopen steamservice.so failed: steamservice.so: cannot open shared object file: No such file or directory
OK


Ignoraeble or something is missing?

You can ignore that error.


Originally posted by BumpInTheNight:
Oh and the next one: I edited the docker-compose.yml to want to use ports 7778 and 27015, but when I launch the docker and then run "netstat -tunlp" its showing that my host is listening on 7777 and 27020.

There's gotta be another place that's define those ports that's over-riding what the docker compose file is declaring yah?

Once you edited the docker compose file, you need to run `docker-compose up -d` again to let docker-compose recreating your container. If you just restart it using `docker restart $container` the changes in the compose file won't be taken into consideration as docker-compose is a separate tool.
< >
Showing 1-15 of 211 comments
Per page: 1530 50

Date Posted: Oct 31, 2023 @ 5:10am
Posts: 211