docker-spaceengineers icon indicating copy to clipboard operation
docker-spaceengineers copied to clipboard

Health check fails

Open EnteSuesssauer15 opened this issue 11 months ago • 3 comments

tried putting my domain there the ipv4 localhost 127.0.0.1, nothing works

Status | starting

Failure count | 0

Last output | % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 42 100 42 0 0 106 0 --:--:-- --:--:-- --:--:-- 106
Status | unhealthy

Failure count | 477

Last output | % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 117 100 117 0 0 481 0 --:--:-- --:--:-- --:--:-- 479

EnteSuesssauer15 avatar Mar 03 '24 03:03 EnteSuesssauer15

Hmm okay, im sorry to hear that. Im currently not running a server because of my heavy workload, so i can't say if it should work or it is broken currently. Maybe someone else can help here.

Devidian avatar Mar 04 '24 07:03 Devidian

maybe try my latest image image: devidian/spaceengineers:winestaging i recently updated os and wine to latest version. Might go into main soon.

Devidian avatar May 23 '24 11:05 Devidian

I'm also having problems with this. The Steam GetServersAtAddress API responds with {"response":{"success":true,"servers":[]}} even though my server is running (I can play on it).

I devised a different health check script:

#!/bin/bash

# Payload is "TSource Engine Query" padded by ffffffff and with null terminator.
PAYLOAD="\xff\xff\xff\xff\x54\x53\x6f\x75\x72\x63\x65\x20\x45\x6e\x67\x69\x6e\x65\x20\x51\x75\x65\x72\x79\x00"

RESPONSE=$(printf $PAYLOAD | nc -u -w1 $PUBLIC_IP "27016") # Hardcoded port

if [ -n "$RESPONSE" ]; then
    exit 0
else
    exit 1
fi

I formulated this by inspecting the traffic between client and server as it connects. It seems as though the client sends "TSource Engine Query" to the server, which then responds with nine bytes which the client echoes. A handshake I guess. The above script only checks whether the server responds (within one second "-w1"), and does not echo the response back.

The port is hardcoded. Perhaps that should be an environment variable like the PUBLIC_IP.

It does add a dependency: netcat. It's only 140 kB though. Aside from the current healtcheck, curl only seems to be used once in Dockerfile which can be replaced by wget, so 480 kB can be saved by removing it if I'm right.

TwirreM avatar Jul 08 '24 14:07 TwirreM