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

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

Lost/timedout connection to host #65

Closed fromage9747 closed 2 months ago

fromage9747 commented 2 months ago

Alright, throwing in the towel here as I have tried my best

open 192.168.1.78:7777

Purely local LAN access, external access is not required at this stage

Fiddled as much as I can in the docker compose, I have even directly connected the container into the network for a real IP instead of a shared IP address with the docker server. No change.

Checked on other reported issues and I have tried to run the console open command in various places, but the result is the same.

As I have directly connected it to the network, the result from: sudo docker inspect asa-server-1 | grep IPv4Address is "IPv4Address": "192.168.1.78"

When it runs through the shared docker network, there is no IP address returned with that command.

Docker log output:

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 (2351654 / 11681731101)
 Update state (0x5) verifying install, progress: 5.80 (677245280 / 11681731101)
 Update state (0x5) verifying install, progress: 12.28 (1434350508 / 11681731101)
 Update state (0x5) verifying install, progress: 18.53 (2164569435 / 11681731101)
 Update state (0x5) verifying install, progress: 24.93 (2912781715 / 11681731101)
 Update state (0x5) verifying install, progress: 31.35 (3661862927 / 11681731101)
 Update state (0x5) verifying install, progress: 37.88 (4425390019 / 11681731101)
 Update state (0x5) verifying install, progress: 44.61 (5211750275 / 11681731101)
 Update state (0x5) verifying install, progress: 51.19 (5980238111 / 11681731101)
 Update state (0x5) verifying install, progress: 57.95 (6769387139 / 11681731101)
 Update state (0x5) verifying install, progress: 64.50 (7534329063 / 11681731101)
 Update state (0x5) verifying install, progress: 71.08 (8303504759 / 11681731101)
 Update state (0x5) verifying install, progress: 77.63 (9068404420 / 11681731101)
 Update state (0x5) verifying install, progress: 84.22 (9838890724 / 11681731101)
 Update state (0x5) verifying install, progress: 90.93 (10622011076 / 11681731101)
 Update state (0x5) verifying install, progress: 97.63 (11405389508 / 11681731101)
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

Further to this, telnet 192.168.1.78 7777 does not connect either.

telnet 192.168.1.78 7777
Connecting To 192.168.1.78...Could not open connection to the host, on port 7777: Connect failed

I have ensured that the Ubuntu firewall is either disabled or has the UDP and TCP ports open.

Let me know what else I can check.

fromage9747 commented 2 months ago

I went back and reread this : https://github.com/mschnitzer/ark-survival-ascended-linux-container-image/issues/38

I proceeded to click on create new game and then clicked on Single Player, once it loaded the character creation section I typed

open 192.168.1.78:7777, it looked like it was doing something but then crashed with the below:

image

mschnitzer commented 2 months ago

Debugging with telnet won't work, because ASA is listening on UDP and telnet establishes a TCP connection. You can test it with the RCON port of 27020 instead, this shouldn't time out.

As for the network setup itself, could you talk a little more about your setup? Am I right that you have a Windows PC for gaming and a Linux server in the same network? Is the Linux server in a VM or is it a physical server in your home?

I suggest not messing with the default config then. Listening to 0.0.0.0 should work just fine, docker opens the ports itself. If you can ping the IP of the Linux server from the Windows PC, the connection should work.

I'd give it a try with the telnet on port 27020 from the Windows PC just to see whether you can actually reach the ASA server. Give it 5 minutes after you see the "Starting the ASA server" message in the docker logs (docker logs -f asa-server-1).

fromage9747 commented 2 months ago

I have reverted the network changes back to stock.

I use a Windows PC as my daily, and I have a Proxmox hypervisor running an Ubuntu 22 VM server that has docker installed. The VM has the CPU set to host (found this in one of the other help requests). The VM has been set up with 16GB of RAM, when it's running it appears to be using 12GB. 4 CPU cores, I can always give more if need be.

ASA does run single player mode fine, just trying to get this server running, so I can play with my kid.

Telnet to 27020 is failing as well. I have added an outbound port to my Windows firewall and made sure that the Ubuntu VM server has it added as well.

Here is the output of sudo docker inspect asa-server-1.

[
    {
        "Id": "100015f97df14b7105bff7242fae7466cf8958c196edd3ceb24d62aee3ad87ad",
        "Created": "2024-04-29T14:41:10.434660994Z",
        "Path": "/usr/bin/start_server",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 12914,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2024-04-29T14:41:22.706242145Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:6dc73fc9ec2a612e7f5287ba734dc3c06216af36ddab24f54abd64c666784d58",
        "ResolvConfPath": "/var/lib/docker/containers/100015f97df14b7105bff7242fae7466cf8958c196edd3ceb24d62aee3ad87ad/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/100015f97df14b7105bff7242fae7466cf8958c196edd3ceb24d62aee3ad87ad/hostname",
        "HostsPath": "/var/lib/docker/containers/100015f97df14b7105bff7242fae7466cf8958c196edd3ceb24d62aee3ad87ad/hosts",
        "LogPath": "/var/lib/docker/containers/100015f97df14b7105bff7242fae7466cf8958c196edd3ceb24d62aee3ad87ad/100015f97df14b7105bff7242fae7466cf8958c196edd3ceb24d62aee3ad87ad-json.log",
        "Name": "/asa-server-1",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "docker-default",
        "ExecIDs": [
            "918b7da8a787273d5d369e8ad7fbc384c3035544f443bcf734616048932fd045"
        ],
        "HostConfig": {
            "Binds": [
                "/docker-data/arkds/steamcmd-1:/home/gameserver/steamcmd:rw",
                "/docker-data/arkds/server-files-1:/home/gameserver/server-files:rw",
                "/docker-data/arkds/cluster-shared:/home/gameserver/cluster-shared:rw",
                "/etc/localtime:/etc/localtime:ro",
                "/docker-data/arkds/steam-1:/home/gameserver/Steam:rw"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "arkds_asa-network",
            "PortBindings": {
                "27020/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "27020"
                    }
                ],
                "7777/udp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "7777"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "unless-stopped",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "ConsoleSize": [
                0,
                0
            ],
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "private",
            "Dns": null,
            "DnsOptions": null,
            "DnsSearch": null,
            "ExtraHosts": [],
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": null,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware",
                "/sys/devices/virtual/powercap"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/b1a34d7d41279c6b78f7dcc574cab126372333826b08f8ca33d7989ee2cf0d64-init/diff:/var/lib/docker/overlay2/476067180a92fb5edf75ee54b050d2e68ebf702e54278a043239800b68cb7ffd/diff",
                "MergedDir": "/var/lib/docker/overlay2/b1a34d7d41279c6b78f7dcc574cab126372333826b08f8ca33d7989ee2cf0d64/merged",
                "UpperDir": "/var/lib/docker/overlay2/b1a34d7d41279c6b78f7dcc574cab126372333826b08f8ca33d7989ee2cf0d64/diff",
                "WorkDir": "/var/lib/docker/overlay2/b1a34d7d41279c6b78f7dcc574cab126372333826b08f8ca33d7989ee2cf0d64/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/docker-data/arkds/steam-1",
                "Destination": "/home/gameserver/Steam",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/docker-data/arkds/steamcmd-1",
                "Destination": "/home/gameserver/steamcmd",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/docker-data/arkds/server-files-1",
                "Destination": "/home/gameserver/server-files",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/docker-data/arkds/cluster-shared",
                "Destination": "/home/gameserver/cluster-shared",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/etc/localtime",
                "Destination": "/etc/localtime",
                "Mode": "ro",
                "RW": false,
                "Propagation": "rprivate"
            }
        ],
        "Config": {
            "Hostname": "asa-server-1",
            "Domainname": "",
            "User": "gameserver",
            "AttachStdin": false,
            "AttachStdout": true,
            "AttachStderr": true,
            "ExposedPorts": {
                "27020/tcp": {},
                "7777/udp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "ENABLE_DEBUG=0",
                "ASA_START_PARAMS=TheIsland_WP?listen?Port=7777?RCONPort=27020?RCONEnabled=True -WinLiveMaxPlayers=50 -clusterid=default -ClusterDirOverride=\"/home/gameserver/cluster-shared\""
            ],
            "Cmd": null,
            "Image": "mschnitzer/asa-linux-server:latest",
            "Volumes": null,
            "WorkingDir": "/home/gameserver",
            "Entrypoint": [
                "/usr/bin/start_server"
            ],
            "OnBuild": null,
            "Labels": {
                "com.docker.compose.config-hash": "293d8d6080f63cc1030e12d9b52c467ccd4963a5c4b155f534dc095f77d74e0c",
                "com.docker.compose.container-number": "1",
                "com.docker.compose.depends_on": "set-permissions-1:service_started:false",
                "com.docker.compose.image": "sha256:6dc73fc9ec2a612e7f5287ba734dc3c06216af36ddab24f54abd64c666784d58",
                "com.docker.compose.oneoff": "False",
                "com.docker.compose.project": "arkds",
                "com.docker.compose.project.config_files": "/data/compose/1/docker-compose.yml",
                "com.docker.compose.project.working_dir": "/data/compose/1",
                "com.docker.compose.replace": "1342ad2a8a2652a6d5b0ce84bd0494fe9719260fd6d81e40abb8cc9943088bb4",
                "com.docker.compose.service": "asa-server-1",
                "com.docker.compose.version": "2.24.6"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "587396658c3ec17cd4a150e55b6d28bf9e3b80d551bbb99594211845b61c58f0",
            "SandboxKey": "/var/run/docker/netns/587396658c3e",
            "Ports": {
                "27020/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "27020"
                    }
                ],
                "7777/udp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "7777"
                    }
                ]
            },
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "arkds_asa-network": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "asa-server-1",
                        "asa-server-1"
                    ],
                    "MacAddress": "02:42:ac:13:00:02",
                    "NetworkID": "767b4e0938833f395eb99beeebfebb98f2bfbd2f910a07b5b28157069eda0c9e",
                    "EndpointID": "2d827336321e8fcb97dd2711f3164a351ea99a7ecc0be9e8d47282b1f4719ceb",
                    "Gateway": "172.19.0.1",
                    "IPAddress": "172.19.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "DriverOpts": null,
                    "DNSNames": [
                        "asa-server-1",
                        "100015f97df1"
                    ]
                }
            }
        }
    }
]

I tried enabling debug mode but then nothing happens except the logs state "Entering debug mode..." Just there is no CPU or Ram usage of any sort.

mschnitzer commented 2 months ago

Can you ping the VM from Windows? The debug mode just allows you to enter the container without ASA starting. It doesn't do anything more. This is helpful if you want to debug something inside the container, but in your case this isn't needed.

fromage9747 commented 2 months ago

Yup pinging works without issue. I have portainer running to admin the docker instance as well which is accessible via the ip address without issue.

ping 192.168.1.118

Pinging 192.168.1.118 with 32 bytes of data:
Reply from 192.168.1.118: bytes=32 time=1ms TTL=64
Reply from 192.168.1.118: bytes=32 time<1ms TTL=64
Reply from 192.168.1.118: bytes=32 time<1ms TTL=64
Reply from 192.168.1.118: bytes=32 time<1ms TTL=64

Ping statistics for 192.168.1.118:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 1ms, Average = 0ms
mschnitzer commented 2 months ago

Could you please try it with a native docker installation without Portainer? I'm not familiar with that software and I don't know whether it messes around with the network.

fromage9747 commented 2 months ago

It is a native docker installation. Portainer is a container itself, just like grafana or cadadvisor. It just allows you to manage your docker instance with a GUI. Have a look when you have time, once you use it you'll never go back: https://www.youtube.com/watch?v=ljDI5jykjE8

I have been using portainer for years with loads of different types of containers, never had any issues, including running plex and 2 Jellyfin instances simultaneously in docker containers on the same machine.

The only thing I can think of that may have caused an issue was maybe there was an installation issue when I first set it up without enough space?

mschnitzer commented 2 months ago

I wasn't aware how portainer is set up, prefering cli though.

Can you try starting the server and after 5 mins of "Starting the ASA server..." is printed in the logs (docker logs -f asa-server-1), run a telnet 127.0.0.1 27020 on the Linux host and see what happens?

fromage9747 commented 2 months ago

Excellent idea, I will give that a bash

fromage9747 commented 2 months ago

Run the telnet test and got the below output:

telnet 127.0.0.1 27020
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Connection closed by foreign host.

I am not sure how this port is configured in the software, ideally though it should connect and stay connected until I close it.

mschnitzer commented 2 months ago

This already proves, that a local connection is possible, so it's the communication between the Windows PC and your Linux server. So in general, docker takes care of opening ports, this part should work without requiring to mess with firewalld or any other software firewall solution.

So my guess is, that Proxmox is controlling somehow the traffic as well or limits the VM in certain ways so that you cannot open ports as you like, because the VM itself seems to be pingable from your Windows PC.

fromage9747 commented 2 months ago

Very odd. I have a few Docker servers and none of them have any connectivity issues. All the services running on them are all accessible, and they all run off my Proxmox Hypervisor.

Thank you for your help. I will see what I can try and find out.

mschnitzer commented 2 months ago

Ah ok so you have other service running exposing a port that way? And these services can be talked to from your Windows PC as well? In that case, I'd actually suggest to give it another try. Wait until docker logs -f asa-server-1 says "Starting the ASA server" and then wait 5 more minutes and look for your server in the server browser. If that is the case, try to connect to it via cli again (with the IP of the VM).

fromage9747 commented 2 months ago

I have 5 Docker Servers in total. 2 are running bare metal and 3 are running on Proxmox. The 3rd being one dedicated to just ARKDS. I did set up a test hello World container as part of the troubleshooting procedure on the dedicated ARKDS box, and that didn't have any issues with communication.

I'll blow the container away, delete the persistent data and give it another go.

fromage9747 commented 2 months ago

Well this sucks. I deleted everything and started again. Same issue. Then I deleted the entire VM and ONLY loaded docker and used the CLI to launch it. Same issue. I can telnet to 27020 on the docker vm, but not from anywhere else...

mschnitzer commented 2 months ago

The docker-compose.yml I assume is unchanged?

Could you do me a favor and change the network driver from driver: bridge to driver: host and run docker-compose up -d again?

If it raises an error then delete the container manually and remove its network:

docker rm -f asa-server-1
docker network rm asa-network

Also consider restarting the VM if it doesn't work.

fromage9747 commented 2 months ago

Fresh OS install and fresh docker-compose without any modifications.

I proceeded to modify the compose file as per your recommendations to driver: host and the below was the output:

sudo docker-compose up -d
Creating network "arkds_default" with the default driver
Creating network "arkds_asa-network" with driver "host"
ERROR: only one instance of "host" network is allowed

Googled the error and found the below: https://forums.docker.com/t/error-only-one-instance-of-host-network-is-allowed/52280/4

From the post I changed it to network_mode: host which then presented another issue of:

"host" network_mode is incompatible with port_bindings

I commented out the port bindings and ran it again.

It started, but now I cannot even telnet locally:

telnet localhost 27020
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

Perhaps what is happening is that the ports just aren't open or working at all to beginning with, and nothing is listening? The only reason why it allowed a quick connection and termination in the original configuration on a local telnet was because that was just a port running through docker that docker was listening on. All other docker containers on my other servers, If I run a telnet, the connection will stay open until I close it. When I would telnet to this on locally, the connection would terminate immediately.

sudo docker logs -f asa-server-1
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 (1868736 / 11681703369)
 Update state (0x5) verifying install, progress: 2.05 (239104872 / 11681703369)
 Update state (0x5) verifying install, progress: 5.18 (604876128 / 11681703369)
 Update state (0x5) verifying install, progress: 7.55 (881700192 / 11681703369)
 Update state (0x5) verifying install, progress: 10.64 (1242410336 / 11681703369)
 Update state (0x5) verifying install, progress: 13.15 (1536011616 / 11681703369)
 Update state (0x5) verifying install, progress: 15.64 (1827515744 / 11681703369)
 Update state (0x5) verifying install, progress: 18.20 (2125766547 / 11681703369)
 Update state (0x5) verifying install, progress: 21.49 (2510037363 / 11681703369)
 Update state (0x5) verifying install, progress: 24.28 (2836423311 / 11681703369)
 Update state (0x5) verifying install, progress: 27.22 (3180298643 / 11681703369)
 Update state (0x5) verifying install, progress: 30.30 (3539643223 / 11681703369)
 Update state (0x5) verifying install, progress: 33.33 (3893956935 / 11681703369)
 Update state (0x5) verifying install, progress: 36.00 (4205922439 / 11681703369)
 Update state (0x5) verifying install, progress: 38.14 (4455928771 / 11681703369)
 Update state (0x5) verifying install, progress: 40.93 (4781409843 / 11681703369)
 Update state (0x5) verifying install, progress: 44.06 (5146787851 / 11681703369)
 Update state (0x5) verifying install, progress: 47.33 (5529260831 / 11681703369)
 Update state (0x5) verifying install, progress: 50.70 (5922696479 / 11681703369)
 Update state (0x5) verifying install, progress: 53.50 (6249852191 / 11681703369)
 Update state (0x5) verifying install, progress: 56.37 (6584967811 / 11681703369)
 Update state (0x5) verifying install, progress: 59.10 (6903459523 / 11681703369)
 Update state (0x5) verifying install, progress: 61.91 (7231607735 / 11681703369)
 Update state (0x5) verifying install, progress: 65.10 (7604713703 / 11681703369)
 Update state (0x5) verifying install, progress: 68.41 (7990912295 / 11681703369)
 Update state (0x5) verifying install, progress: 71.50 (8352917879 / 11681703369)
 Update state (0x5) verifying install, progress: 74.53 (8706399378 / 11681703369)
 Update state (0x5) verifying install, progress: 77.60 (9065397396 / 11681703369)
 Update state (0x5) verifying install, progress: 82.06 (9585530004 / 11681703369)
 Update state (0x5) verifying install, progress: 85.20 (9953238196 / 11681703369)
 Update state (0x5) verifying install, progress: 86.76 (10135579828 / 11681703369)
 Update state (0x5) verifying install, progress: 88.36 (10322076852 / 11681703369)
 Update state (0x5) verifying install, progress: 90.53 (10574986404 / 11681703369)
 Update state (0x5) verifying install, progress: 93.64 (10938764452 / 11681703369)
 Update state (0x5) verifying install, progress: 96.78 (11305913492 / 11681703369)
 Update state (0x5) verifying install, progress: 99.67 (11643573661 / 11681703369)
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

sudo docker inspect asa-server-1:

[
    {
        "Id": "dc4bf41a32314737c1863c540ec8c0bea9acecc09f011e0c14f5511ab0b9cee8",
        "Created": "2024-05-01T02:04:02.808622093Z",
        "Path": "/usr/bin/start_server",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 23306,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2024-05-01T02:04:03.196346405Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:6dc73fc9ec2a612e7f5287ba734dc3c06216af36ddab24f54abd64c666784d58",
        "ResolvConfPath": "/var/lib/docker/containers/dc4bf41a32314737c1863c540ec8c0bea9acecc09f011e0c14f5511ab0b9cee8/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/dc4bf41a32314737c1863c540ec8c0bea9acecc09f011e0c14f5511ab0b9cee8/hostname",
        "HostsPath": "/var/lib/docker/containers/dc4bf41a32314737c1863c540ec8c0bea9acecc09f011e0c14f5511ab0b9cee8/hosts",
        "LogPath": "/var/lib/docker/containers/dc4bf41a32314737c1863c540ec8c0bea9acecc09f011e0c14f5511ab0b9cee8/dc4bf41a32314737c1863c540ec8c0bea9acecc09f011e0c14f5511ab0b9cee8-json.log",
        "Name": "/asa-server-1",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "docker-default",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [
                "arkds_server-files-1:/home/gameserver/server-files:rw",
                "/etc/localtime:/etc/localtime:ro",
                "arkds_steamcmd-1:/home/gameserver/steamcmd:rw",
                "arkds_cluster-shared:/home/gameserver/cluster-shared:rw",
                "arkds_steam-1:/home/gameserver/Steam:rw"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "host",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": [],
            "ConsoleSize": [
                0,
                0
            ],
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "private",
            "Dns": null,
            "DnsOptions": null,
            "DnsSearch": null,
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": null,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware",
                "/sys/devices/virtual/powercap"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/a99ce2485feb2c99bb16a8374fe1db09bd4fe9dc4734c4e96fd9a4c0198e70e3-init/diff:/var/lib/docker/overlay2/367d4d52b976223fc3ecac6cd6296a4feb8a1ad39a0c0992ab9e276972caca60/diff",
                "MergedDir": "/var/lib/docker/overlay2/a99ce2485feb2c99bb16a8374fe1db09bd4fe9dc4734c4e96fd9a4c0198e70e3/merged",
                "UpperDir": "/var/lib/docker/overlay2/a99ce2485feb2c99bb16a8374fe1db09bd4fe9dc4734c4e96fd9a4c0198e70e3/diff",
                "WorkDir": "/var/lib/docker/overlay2/a99ce2485feb2c99bb16a8374fe1db09bd4fe9dc4734c4e96fd9a4c0198e70e3/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "volume",
                "Name": "arkds_server-files-1",
                "Source": "/var/lib/docker/volumes/arkds_server-files-1/_data",
                "Destination": "/home/gameserver/server-files",
                "Driver": "local",
                "Mode": "rw",
                "RW": true,
                "Propagation": ""
            },
            {
                "Type": "bind",
                "Source": "/etc/localtime",
                "Destination": "/etc/localtime",
                "Mode": "ro",
                "RW": false,
                "Propagation": "rprivate"
            },
            {
                "Type": "volume",
                "Name": "arkds_steamcmd-1",
                "Source": "/var/lib/docker/volumes/arkds_steamcmd-1/_data",
                "Destination": "/home/gameserver/steamcmd",
                "Driver": "local",
                "Mode": "rw",
                "RW": true,
                "Propagation": ""
            },
            {
                "Type": "volume",
                "Name": "arkds_cluster-shared",
                "Source": "/var/lib/docker/volumes/arkds_cluster-shared/_data",
                "Destination": "/home/gameserver/cluster-shared",
                "Driver": "local",
                "Mode": "rw",
                "RW": true,
                "Propagation": ""
            },
            {
                "Type": "volume",
                "Name": "arkds_steam-1",
                "Source": "/var/lib/docker/volumes/arkds_steam-1/_data",
                "Destination": "/home/gameserver/Steam",
                "Driver": "local",
                "Mode": "rw",
                "RW": true,
                "Propagation": ""
            }
        ],
        "Config": {
            "Hostname": "asa-server-1",
            "Domainname": "",
            "User": "gameserver",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "ASA_START_PARAMS=TheIsland_WP?listen?Port=7777?RCONPort=27020?RCONEnabled=True -WinLiveMaxPlayers=50 -clusterid=default -ClusterDirOverride=\"/home/gameserver/cluster-shared\"",
                "ENABLE_DEBUG=0"
            ],
            "Cmd": null,
            "Image": "mschnitzer/asa-linux-server:latest",
            "Volumes": {
                "/etc/localtime": {},
                "/home/gameserver/Steam": {},
                "/home/gameserver/cluster-shared": {},
                "/home/gameserver/server-files": {},
                "/home/gameserver/steamcmd": {}
            },
            "WorkingDir": "/home/gameserver",
            "Entrypoint": [
                "/usr/bin/start_server"
            ],
            "OnBuild": null,
            "Labels": {
                "com.docker.compose.config-hash": "f5c6acf1b18c2a34ab47ca1630773175fa260d65fe67931c3bdf665adce9c70c",
                "com.docker.compose.container-number": "1",
                "com.docker.compose.oneoff": "False",
                "com.docker.compose.project": "arkds",
                "com.docker.compose.project.config_files": "docker-compose.yml",
                "com.docker.compose.project.working_dir": "/docker-data/arkds",
                "com.docker.compose.service": "asa-server-1",
                "com.docker.compose.version": "1.29.2"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "3d6102b157fee8f30fa541ed0ec65d2857b0d69e3515cf675ddb83e354dbd5a0",
            "SandboxKey": "/var/run/docker/netns/default",
            "Ports": {},
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "host": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "MacAddress": "",
                    "NetworkID": "49615396f4055ac2a43d9c9aa9a3a79587a1298dbdb8488d79598a7d75140bfd",
                    "EndpointID": "08a6b276558c109d07c1f290578c040ebb93edc86ac8d00fd6d1d18b486253f3",
                    "Gateway": "",
                    "IPAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "DriverOpts": null,
                    "DNSNames": null
                }
            }
        }
    }
]
mschnitzer commented 2 months ago

Hm... So I checked a deployment config of one of my private servers where a VM runs docker containers and the config uses the driver: bridge option. Ports are reachable outside of the VM.

I don't know what the root cause is, but it is strange that you are able to connect via telnet on the RCON port locally. This means, the server is at least up and running. So it must be the routing from the VM to the rest of the network then, because the container listens to all ip addresses (0.0.0.0) so this can't be an issue.

I don't know how to proceed here honestly, I'd need to debug it myself to see where the issue is. I think you can revert the network config back to default, it should work with driver: bridge actually.

fromage9747 commented 2 months ago

But now locally, with it set to run on the host network, telnet doesn't connect. I am not sure if I expressed that well enough in my previous message.

It is very strange as when I deploy any other docker container to test with, they all work as expected.

mschnitzer commented 2 months ago

Yea I understand, my point is that changing it back to bridge: driver allows you to connect through telnet at least, so the socket is open, it's just about forwarding or some firewall issues. I wasn't too sure if bridge: host works. It didn't seem to work at all, so you can change it back. It was just a guess from my side.

As I said before, I don't know what the issue is, it might be the network config of the container not cooperating too well with the VM setup.

Most of my containers run natively on a dedicated host and the ones in a VM are virtualized using libvirt. Never had this kind of issue before and docker takes care of the firewall config by itself.

Running out of ideas here... I'd need to look myself into the exact setup, judging from far away is quite challenging in this case.

fromage9747 commented 2 months ago

I guess this is not for me... I blew the server away and tried to go bare VM without docker and followed this guide: https://www.linode.com/docs/guides/create-an-ark-server-on-ubuntu/

EXACTLY the same issue.

I am starting to think that there is an external fact at play here like say, for example, if I lived in China with all of their internet blocking, is there anything external that this local server needs to connect to before it will allow the ARK server to work properly?

I also tried another docker related ArkDS and the same issue.

Thanks for all your help. I read through previous posts, and you mentioned that you would continue to troubleshoot, so I took you up on it and you delivered.

The next test would be to go through and set it up locally on my Windows machine to see if it works. If it still doesn't work then, well, I dunno!

Have a good one.

fromage9747 commented 2 months ago

So yeah... doesn't even work on my windows daily driver. Can't even telnet to it on my local machine. I really can't understand it.

mschnitzer commented 2 months ago

It doesn't work on your Windows machine either? So with a native ASA Windows server on the same system you're unable to connect?

As for external factors, I can't think of any to be honest. You should always be able to connect to a server that is hosted locally, without the need of a third party server like Wildcard's master servers. The socket is open and available to you locally, so nothing should block you from connecting to it.

So if the ASA server and the client is on the same machine, connecting to it via open 127.0.0.1 should work without any problems. Really weird.

fromage9747 commented 2 months ago

I agree. Very weird. I will have to put a pin in this for now. Spent too much time on it. Thanks for all the help, though!

mschnitzer commented 2 months ago

Sure thing. Please reopen if this gets relevant again.