mschnitzer / ark-survival-ascended-linux-container-image

A docker/podman container that is able to run an ARK: Survival Ascended on a Linux host.
92 stars 17 forks source link

Cannot Join ASA server after initial creation of container #58

Closed Dagrin0707 closed 5 months ago

Dagrin0707 commented 7 months ago

Hello, I am running ProxMox with Ubuntu 22.0.4 LTS in a VM. it has 4 core(set to "host") and 32Gb of ram allocated with 64 Gb of SDD space. I have gone through the guide up to the download of your template and the first-time start of the server (docker-compose up -d)

I can see the server: ARK# 885892 in the server list, however after about 30-45 seconds it times out and fails to connect.

the log file looks as follows for the "sudo docker logs -f asa-server-1" command:

`Update state (0x61) downloading, progress: 99.51 (11622741832 / 11679712957) Update state (0x61) downloading, progress: 99.99 (11678664381 / 11679712957) Update state (0x81) verifying update, progress: 2.88 (335837393 / 11679712957) Update state (0x81) verifying update, progress: 8.86 (1035237585 / 11679712957) Update state (0x81) verifying update, progress: 14.96 (1747220689 / 11679712957) Update state (0x81) verifying update, progress: 21.01 (2454176443 / 11679712957) Update state (0x81) verifying update, progress: 27.00 (3153457473 / 11679712957) Update state (0x81) verifying update, progress: 32.98 (3852015630 / 11679712957) Update state (0x81) verifying update, progress: 39.06 (4562663470 / 11679712957) Update state (0x81) verifying update, progress: 45.08 (5265316478 / 11679712957) Update state (0x81) verifying update, progress: 51.06 (5963458574 / 11679712957) Update state (0x81) verifying update, progress: 57.04 (6661777006 / 11679712957) Update state (0x81) verifying update, progress: 63.01 (7359722677 / 11679712957) Update state (0x81) verifying update, progress: 69.13 (8074676977 / 11679712957) Update state (0x81) verifying update, progress: 75.07 (8768296732 / 11679712957) Update state (0x81) verifying update, progress: 80.79 (9435628622 / 11679712957) Update state (0x81) verifying update, progress: 86.88 (10147404934 / 11679712957) Update state (0x81) verifying update, progress: 92.83 (10842140559 / 11679712957) Update state (0x81) verifying update, progress: 98.86 (11546005373 / 11679712957) Success! App '2430930' fully installed. Starting the ARK: Survival Ascended dedicated server... Start parameters: TheIsland_WP?listen?Port=7777?RCONPort=27020?RCONEnabled=True -WinLiveMaxPlayers=50 -clusterid=default -ClusterDirOverride="/home/gameserver/cluster-shared" Proton: Upgrading prefix from None to GE-Proton8-21 (/home/gameserver/server-files/steamapps/compatdata/2430930/) esync: up and running. Failed to read /etc/machine-id, error Invalid argument. wine: RLIMIT_NICE is <= 20, unable to use setpriority safely tid(13) burning pthread_key_t == 0 so we never use it Redirecting stderr to '/home/gameserver/Steam/logs/stderr.txt' Logging directory: '/home/gameserver/Steam/logs' minidumps folder is set to /tmp/dumps [ 0%] Checking for available updates... [----] Verifying installation... UpdateUI: skip show logoSteam Console Client (c) Valve Corporation - version 1709846822 -- type 'quit' to exit -- Loading Steam API...OK

Connecting anonymously to Steam Public...OK Waiting for client config...OK Waiting for user info...OK Update state (0x5) verifying install, progress: 0.02 (2659329 / 11679712957) Update state (0x5) verifying install, progress: 3.62 (422397792 / 11679712957) Update state (0x5) verifying install, progress: 9.63 (1124943712 / 11679712957) Update state (0x5) verifying install, progress: 15.65 (1827489632 / 11679712957) Update state (0x5) verifying install, progress: 21.67 (2530564979 / 11679712957) Update state (0x5) verifying install, progress: 27.67 (3232076747 / 11679712957) Update state (0x5) verifying install, progress: 33.64 (3929164615 / 11679712957) Update state (0x5) verifying install, progress: 39.67 (4632949103 / 11679712957) Update state (0x5) verifying install, progress: 45.71 (5338314115 / 11679712957) Update state (0x5) verifying install, progress: 51.75 (6043887391 / 11679712957) Update state (0x5) verifying install, progress: 57.76 (6746004611 / 11679712957) Update state (0x5) verifying install, progress: 63.85 (7457469159 / 11679712957) Update state (0x5) verifying install, progress: 69.78 (8150098807 / 11679712957) Update state (0x5) verifying install, progress: 75.67 (8838075852 / 11679712957) Update state (0x5) verifying install, progress: 81.64 (9535311308 / 11679712957) Update state (0x5) verifying install, progress: 87.58 (10228862444 / 11679712957) Update state (0x5) verifying install, progress: 93.61 (10933636572 / 11679712957) Update state (0x5) verifying install, progress: 99.55 (11626903185 / 11679712957) Success! App '2430930' fully installed. Starting the ARK: Survival Ascended dedicated server... Start parameters: TheIsland_WP?listen?Port=7777?RCONPort=27020?RCONEnabled=True -WinLiveMaxPlayers=50 -clusterid=default -ClusterDirOverride="/home/gameserver/cluster-shared" esync: up and running. Failed to read /etc/machine-id, error Invalid argument. wine: RLIMIT_NICE is <= 20, unable to use setpriority safely`

I truncated the output a bit since I did not think you'd need to see all the download progress. Those errors at the end have me concerned that I have done something wrong in the setup.

I should also mention that I have to run Zerotier since Starlink uses CGNAT for its consumer public IP addressing. I am fairly novice at Linux, and am not sure how to see what IP the server is bonding to. I at least am encouraged that I can see the server in the list in ASA.

I am trying this deployment since I am having a similar issue with a Windows11 VM in the same ProxMox data center. I can see the server, however, I cannot connect to the server. I thought I would try a linux deployment and see if i had any better luck. I have the firewall in Proxmox, the Ubuntu VM, and the Windows VM all disabled as well.

Any help you could provide, is most appreciated.

mschnitzer commented 7 months ago

I truncated the output a bit since I did not think you'd need to see all the download progress. Those errors at the end have me concerned that I have done something wrong in the setup.

Can be ignored, they do not indicate an error with the ASA server setup at all.

I should also mention that I have to run Zerotier since Starlink uses CGNAT for its consumer public IP addressing. I am fairly novice at Linux, and am not sure how to see what IP the server is bonding to. I at least am encouraged that I can see the server in the list in ASA.

Please run curl icanhazip.com on your Ubuntu server and check whether the IP address matches the one you assigned to your machine.

Then use that IP address in the ASA game console to join the server open the_returned_ip_address

Let me know whether that works.

Dagrin0707 commented 7 months ago

Hello, Thank you for the reply! the result of the curl icanhazip.com is my public CGNAT IP from Starlink, 129.222.77.xxx.

When I open the console in the main menu or in the server listing screen of ASA,; after around 30 seconds, I receive the same error: image

open 129.222.77.xxx:7777 is what i have entered (redacted the last octet unless you think it will be helpful). Since moving ISP to Starlink, I have had to utilize Zerotier to allow players to access the servers, using the private VPN IP address that it allcoates to each approved user. In ASA, Conan, Valheim, etc., I have had to set the server IP to that IP instead of the CGNAT IP. Prior to moving the servers into the virtual environment, this has worked.

I very much appreciate you taking the time to help!

Dagrin0707 commented 7 months ago

Follow up since it was bothering me that I had missed something.

I went back into ASA and entered open 172.26.233.43:7777 instead of my public Starlink CGNAT IP and it immediately joined the server. I believe that the extra complication of the ZT VPN is preventing the players from joining via the servers browser. It is odd that the game can see the server and it appears in the server list, but will not allow anyone (local LAN IP or remote) to join. Is this another "Wildcard" issue that we've seen so often over the years, or perhaps just a side effect of moving the server to a virtual environment? If it is a side effect, are you aware of any way to fix that in the server .ini or command line that starts it? Several of my players are quite tech un-savvy; requiring them to join the server every time via the console is going to get on their nerves.

Regardless of that outcome, let me express my sincere thanks for the assistance with the setup. It is most appreciated. It is quite late here, so I will have to continue with the setup in the morning. Cheers, and I hope to not have to bother you again.

Dagrin0707 commented 7 months ago

After your assistance, I was able to use the ASA console to input open IP:Pport to join the newly created server. This worked and i was able to reach the character creation screen.

I then exited the server, used docker stop asa-server-1 to shut down the server for configuring.

I have gone back through and configured docker-compose.yml located in /asa-server/. The only thing I changed was:

- ASA_START_PARAMS=ScorchedEarth_WP?listen?Port=7777?RCONPort=27020?RCONEnabled=True -WinLiveMaxPlayers=12 -mods=928621,929902,929347,929299,929745,931047,929116,932917,928597 -clusterid=default -ClusterDirOverride="/home/gameserver/cluster-shared"

I also edited the GameUserSettings.ini file located in: /var/lib/docker/volumes/asa-server_server-files-1/_data/ShooterGame/Saved/Config/WindowsServer/GameUserSettings.ini

I added the Game.ini file as is was not created by ASA hen first launching the server in: /var/lib/docker/volumes/asa-server_server-files-1/_data/ShooterGame/Saved/Config/WindowsServer/Game.ini

After I did these three edits I ran 'docker-compose up -d' to rebuild the container.

I started the server docker start asa-server-1 and waited until the log file showed the "SUCCESS" line as referenced in the guide.

The server will show up in the server list of ASA with the correct map (Scorched), in PVE mode, on the up to date version. I can no longer join either by using the server browser (never did work) or by using the console open IP:port command.

I am including the .ini files to see if something in these has caused this that I am missing. (had to convert them to .txt for upload, i only redacted the admin password and server password, otherwise, this is how they read on the container.

Game.txt GameUserSettings.txt

I've run the zypper commands, installed curl, and checked the IP, it returns my public IP address given out by Starlink. I can ping 8.8.8.8 and google.de as well from the container. Knowing this, I attempted to work through the guide for "Your server has multiple IPv4 addresses" by adding com.docker.network.bridge.enable_ip_masquerade: 'false'

This broke the server container entirely and not knowing how to undo this, i ended up deleting the VM in ProxMox, reinstalling Ubuntu VM in ProxMox, Docker, and following the install guide again to get back to the point of a configured server and not being able to join via any method.

Server is still visible in the server browser and will prompt for the password, but then times out. The console 'open IP:Port' using the IP that worked upon the first "start" of the server no longer works as described above. The IP that worked upon first creation is the Zerotier adapter as shown in #3 below:

root@ubuntu2204dagrinnet:/home/dagrin/asa-server# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever

2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether bc:24:11:9f:0c:65 brd ff:ff:ff:ff:ff:ff
    altname enp0s18
    inet 10.100.100.200/24 brd 10.100.100.255 scope global ens18
       valid_lft forever preferred_lft forever
    inet6 fe80::be24:11ff:fe9f:c65/64 scope link
       valid_lft forever preferred_lft forever

3: ztks5733gb: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2800 qdisc fq_codel state UNKNOWN group default qlen 1000
    link/ether ae:4d:90:c9:c0:c4 brd ff:ff:ff:ff:ff:ff
    inet 172.26.177.192/16 brd 172.26.255.255 scope global ztks5733gb
       valid_lft forever preferred_lft forever
    inet6 fe80::ac4d:90ff:fec9:c0c4/64 scope link
       valid_lft forever preferred_lft forever

4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:1e:89:ed:a8 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

5: br-e4013692fc6a: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:1d:48:86:8c brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255 scope global br-e4013692fc6a
       valid_lft forever preferred_lft forever
    inet6 fe80::42:1dff:fe48:868c/64 scope link
       valid_lft forever preferred_lft forever

6: asanet: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:04:6b:20:b8 brd ff:ff:ff:ff:ff:ff
    inet 172.19.0.1/16 brd 172.19.255.255 scope global asanet
       valid_lft forever preferred_lft forever
    inet6 fe80::42:4ff:fe6b:20b8/64 scope link
       valid_lft forever preferred_lft forever

22: vethc6b1044@if21: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master asanet state UP group default
    link/ether 62:fe:f4:dc:f5:0b brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::60fe:f4ff:fedc:f50b/64 scope link
       valid_lft forever preferred_lft forever

I am sure it is something I am doing wrong, either in the configuration files, or with the IP's that the container server is binding the ports to. Any advice is most appreciated, as I have exhausted what I know to do.

mschnitzer commented 7 months ago

Thanks for the detailed description. Unfortunately, I'm not familiar with Starlink and how they route network packages.

What I can tell you is, that the "do you have multiple IPv4 addresses" section of the guide is meant for a setup, where you have received multiple externally reachable IPv4 addresses by your server provider (not internal IPv4 addresses). For a home setup this should not be the case. So feel free to skip that part.

The reason you are able to join via the open command using your internal IPv4 address is, because you are in the same network, so for you as host this should always work.

That the server shows up in the server browser but you are unable to connect to it via your external starlink IP could also be a port forwarding issue (assuming you are having a home setup). Did you forward the port 7777 UDP in your router?

In theory, the server does always show up once the container has internet capabilities, which seems to be the case. It announces itself to wildcard's master server and they just highlight this server then in the server browser, but whether people can actually connect to it is on a different paper. I speculate that the server list does not do any sanity checks as to whether a server is joinable or not.

Once the server announces itself to the master server ("the server list"), people attempting to join are always using your external IP (the one that was returned from curl icanhazip.com command). So if you try to join via open $your_internal_ip:7777 this does work for you, because the network traffic is not going over the internet, but if you attempt to join via the server list, ASA would try to establish a connection through your external IP and if then the port 7777 UDP is not forwarded in your router, the connection will timeout.

I hope this somehow makes sense.

Dagrin0707 commented 7 months ago

It does makes sense. I appreciate the information. Unfortunately, even with the open $your_internal_ip:7777 entered into the console, i could not even join locally on the LAN. The only time that worked, was directly after the first creation of the server with the auto-populated "ARK #XXXXXX" server-id. Once the command line in docker-compose.yml was edited, it stopped allowing my desktop to connect in anyway.

I created a new VM in Proxmox for Ubutnu22.04 and then followed cdp1337's GitHub guide to create a server without the docker container. It is much more aggravating to edit the config files, however, I was able to get the server to work and the two desktops in the LAN can join the server via the server browser in the game. I am not positive that the docker setup is what is causing the issue, and it very well could be something I have done wrong in the configuration steps after that initial "first time start". Starlink with their CGnat creating the need for Zerotier's use really complicates things it seems.

mschnitzer commented 7 months ago

I'm glad you fixed it even without the containerized solution. Do you want to close this issue then?

I'm sure we would have been able to fix it, but it for sure would require more iterations of debugging.

Dagrin0707 commented 7 months ago

I would love to get it working. Your script and setup is MUCH more friendly to adjusting the server settings; at least for a Linux novice such as myself. I will be traveling for about 3 weeks starting this Friday however, so I will not be able to devote any time to it until May. I understand if you would like to close the issue, perhaps I can just reopen it when I return

mschnitzer commented 7 months ago

Take your time, no rush. Once you're able to provide feedback, just update this issue.

itoleck commented 6 months ago

I have the same issue, but in my case the log stops in this line and does not continue. No IP connection to 7777 or 27020. wine: RLIMIT_NICE is <= 20, unable to use setpriority safely

I am Using Proxmox LXC Ubuntu with Docker. I am wondering if GPU is needed for game to start.

itoleck commented 6 months ago

Updated my LXC container for Docker to use the Nvidia GPU and verified with nvtop. Still stops on the wine line. The server shows running in ps -ef, but no listening ports in netstat -l

mschnitzer commented 6 months ago

@itoleck No, a graphics card is not needed for running a server. Could you please open a separate issue for your case? While the issue sounds similar, the root cause is in most cases different and there's no generic solution.

This helps me keeping track of individual issues without going into split discussions on one issue.

mschnitzer commented 5 months ago

Shall we close this issue?

Dagrin0707 commented 5 months ago

Sadly, I have not had time with work and travel for work to look at this further than the last time I responded. To prevent you from having a lingering open issue, ago ahead and close it. If and when I am able to return to this, I can open a new issue if needed. Thank you for being patient and for creating the tool in the first place.