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 31-45 of 211 comments
Manu Nov 2, 2023 @ 4:07pm 
I ran into a timeout issue, while attempting to join the server via the server browser. The issue was that my server had several IPv4 addresses and sent the outgoing traffic always through the primary server IP, regardless what IPv4 the container is listening on. I had this issue in the past with CS:GO as well, this was why I quickly speculated this to be the root cause. Once I fixed it by forcing iptables to route the outgoing traffic from the docker subnet through the IP address the container is listening on, I was able to successfully connect to my server. This was the reason why I asked. I'm even about to write a guide how to fix this particular issue, in case someone has multiple IPv4's assigned to its server. So the outgoing traffic MUST be sent through the same network interface the container is listening on.

And I experienced the exact same behavior: Connecting through the server browser didn't work, but it worked by executing the "open" command in the console.

What I could think of is that you still have a very similar issue, but not in the sense of having an additional network interface, but maybe the ASA software sends wrong information to the master server (server browser) so that the address you are connecting to through the browser is different to what the server is actually listening on. Not sure how they detect the remote IP (either from within the software or the master server just detects what remote address sends information to it).

I'm about to finish the guide and it will be merged in the README.md file of the main branch of my repository this weekend. So you could still follow the steps, it might even work for you.
BumpInTheNight Nov 2, 2023 @ 4:20pm 
Cool and I definitely appreciate all your insight and help, what I can at least confirm is that the server/server advertising mechanism is picking up the right public IP thanks to that other odd immediate time out issue when I was trying to use port 7778 originally, part of the error did list my correct public IP so that's at least a comfort.

I am at a loss, knowing that tcpdump sees packets before any internal network stack happens I should have at the very least seen the client trying to create a session with the server throughout all of this in the attempts and if the server was trying to reply on some other docker created interface I'd have see that too but nothing at all.

So close though, the client's console 'open' command works no problem (when pointing at the LAN address of the host) provided I first make a failed attempt at the server using the server browser so that the GUI prompts for the password and it'll remember that for the open command's attempt.
Last edited by BumpInTheNight; Nov 2, 2023 @ 4:25pm
BumpInTheNight Nov 2, 2023 @ 4:34pm 
Question to anyone else who's watching this thread: Did you get this method working? Or am I the lone guinea pig? :)

Also huge kudos to you Manuel - even if I can't get it working at the moment, your efforts to containerize the whole setup is awesome.

I just wonder if there's some variable somewhere in the container that's hardcoded for your network that's being overlooked. This is my first poke at containers in general so I don't really know where to look.
BumpInTheNight Nov 2, 2023 @ 5:40pm 
Yet another post: For the sake of trouble shooting I stood up a win10 based VM and used steamcmd to grab the server of ASA and ran it with the most basic config using literally the same internal IP listening on ports 7777 and 27020: I could connect to it through the client's server browser methods with my desktop and create a character etc.

So yah, there's something about this container based solution that needs some debugging. :(
Last edited by BumpInTheNight; Nov 2, 2023 @ 5:45pm
xViperr Nov 2, 2023 @ 5:49pm 
I had done this in GKE with Ark:SE, but couldn't figure out how to get persistent storage working before I moved on to other projects. The server ran like a dream! I just lost everything if it rebooted lol
Last edited by xViperr; Nov 2, 2023 @ 5:50pm
Sidrus Nov 2, 2023 @ 8:18pm 
@BumpInTheNight

Not sure what is going wrong for you :( . For what it's worth, I pulled the image on my WSL2 Ubuntu machine, then added in a docker-compose.yml. Followed the instructions in the README on Github.

Server downloaded just fine. Then I updated the GUS.ini and my server showed up in the search list in game. I was not able to add it via the custom server UI in steam, but I haven't been able to make that work for any ASA servers.

I connected to my server instance and it all seemed to work fine. It did take a hot minute for the server to connect, though.
BumpInTheNight Nov 3, 2023 @ 4:11am 
Originally posted by Sidrus:
@BumpInTheNight

Not sure what is going wrong for you :( . For what it's worth, I pulled the image on my WSL2 Ubuntu machine, then added in a docker-compose.yml. Followed the instructions in the README on Github.

Server downloaded just fine. Then I updated the GUS.ini and my server showed up in the search list in game. I was not able to add it via the custom server UI in steam, but I haven't been able to make that work for any ASA servers.

I connected to my server instance and it all seemed to work fine. It did take a hot minute for the server to connect, though.
Hey thanks for that, its good to know that this container deployment does work properly and its a 'my system' issue, helps me focus on where to try and fix it :)

I'm going to rebuilt that OS tonight, been using Ubuntu 22.04 server and one thing that bugged me is I didn't bother checking off the Docker system during install and my googlin' lead me to what I felt was a janky way to install docker that involves some curls and what not, I'll see what happens when I start with a docker system baked into the OS.
BumpInTheNight Nov 3, 2023 @ 4:35am 
Okay here we go right off the bat I'm not finding the additional docker packages using the README's line for debian/ubuntu based systems:
apt-get install -y docker-ce docker-ce-cli docker-compose-plugin

I do have a docker command so Ubuntu did install something, but its not registered as docker with systemctl though either.
normative Nov 3, 2023 @ 5:33am 
Originally posted by BumpInTheNight:
Okay here we go right off the bat I'm not finding the additional docker packages using the README's line for debian/ubuntu based systems:
apt-get install -y docker-ce docker-ce-cli docker-compose-plugin

I do have a docker command so Ubuntu did install something, but its not registered as docker with systemctl though either.

Docker has their own apt repo now, you'll have to install that first and then command above will run.

https://docs.docker.com/engine/install/ubuntu/

Down the page a bit you'll find the command from the readme, but it'll only work if you've added their repo. I recommend following their advice and removing the packages you have now, then replacing with the ones from Docker's repo.
BumpInTheNight Nov 3, 2023 @ 6:31am 
Thanks for the advice normative, I blew away the server and went through the linked instructions to get docker added.

So now I think I'm just cursed, the docker-compose command isn't available to me despite me confirming the docker-compose-plugin is successfully installed:
user@arkserver2023:~/arkServer$ sudo docker-compose up -d
sudo: docker-compose: command not found
user@arkserver2023:~/arkServer$ sudo apt-get install -y docker-ce docker-ce-cli docker-compose-plugin
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
docker-ce-cli is already the newest version (5:24.0.7-1~ubuntu.22.04~jammy).
docker-ce is already the newest version (5:24.0.7-1~ubuntu.22.04~jammy).
docker-compose-plugin is already the newest version (2.21.0-1~ubuntu.22.04~jammy).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.


...frustration mounting LOL...
(I have googled the lack of docker-compose and how to sort that out via apt install docker-compose, but I want to confer with you all since it sounds like Ubuntu doesn't do the best job of this with its native packages)
Last edited by BumpInTheNight; Nov 3, 2023 @ 6:35am
normative Nov 3, 2023 @ 6:35am 
What is the output of 'docker compose version'?
BumpInTheNight Nov 3, 2023 @ 6:36am 
Originally posted by normative:
What is the output of 'docker compose version'?
Docker Compose version v2.21.0

oh and I did do a whereis docker-compose that came back with nothing just to make sure it wasn't a pathing thing.
Last edited by BumpInTheNight; Nov 3, 2023 @ 6:38am
normative Nov 3, 2023 @ 6:38am 
Ok, so it can run a docker command and Docker knows that compose is installed. If you try 'which docker-compose' do you get no output, or a filepath?
BumpInTheNight Nov 3, 2023 @ 6:41am 
Originally posted by normative:
Ok, so it can run a docker command and Docker knows that compose is installed. If you try 'which docker-compose' do you get no output, or a filepath?
Yah nothing on the whereis or which gives nothing, one search hit did imply that in v2.x of docker the compose command now an argument of the main docker command, but again just wanting to run this past everyone here first before going off script :)
normative Nov 3, 2023 @ 6:49am 
Originally posted by BumpInTheNight:
Originally posted by normative:
Ok, so it can run a docker command and Docker knows that compose is installed. If you try 'which docker-compose' do you get no output, or a filepath?
Yah nothing on the whereis or which gives nothing, one search hit did imply that in v2.x of docker the compose command now an argument of the main docker command, but again just wanting to run this past everyone here first before going off script :)

Get the output of 'dpkg -L | grep docker-compose'. Hopefully, it's just called docker-compose, but lets call it $pkgname. Now you want to find out where that package is installed: 'dpkg -l $pkgname'.

Then do 'env | grep PATH', you are looking for the variable that is just called PATH. and see if the directory where that docker-compose binary was is in the PATH.

If not, do:

export PATH=$PATH:/path/to/docker/compose/directory

If any of the dpkg stuff fails, try sudo apt install docker-compose-plugin again.
< >
Showing 31-45 of 211 comments
Per page: 1530 50

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