FIXED: -- EOS & Docker, keine Webseite verfuegbar (weil: 'Starting EOSdash server on 127.0.0.1:8504')

EOSdash (Port 8504) nicht erreichbar — Fix

Symptom: Port 8503 funktioniert, aber http://localhost:8504 liefert nichts (curl: "empty reply from server" / "connection was aborted").

Ursache

EOSdash bindet intern auf 127.0.0.1:8504 statt 0.0.0.0:8504. Die Umgebungsvariable EOS_SERVER__EOSDASH_HOST=0.0.0.0 wird vom EOSdash-Subprozess ignoriert (bekannter Bug?). Docker leitet Port 8504 zwar weiter, aber im Container lauscht nichts von außen erreichbar.

Prüfen lässt es sich im Log:

docker logs akkudoktoreos 2>&1 | grep "EOSdash server on" | tail -1

Zeigt es 127.0.0.1:8504, trifft dieser Fix zu.

Lösung

eosdash_host direkt in die Config-Datei /data/config/EOS.config.json schreiben.

Windows / PowerShell

# 1. Config OHNE BOM erzeugen
#    (WICHTIG: normales "Set-Content -Encoding utf8" schreibt eine BOM,
#     an der EOS mit "Unexpected UTF-8 BOM" crasht!)
#
#    ACHTUNG: WriteAllText ueberschreibt die GESAMTE Config-Datei. Vorher den
#    bestehenden Inhalt ansehen und uebernehmen:
#      docker exec akkudoktoreos sh -c "cat /data/config/EOS.config.json"
#    Die "version" unten ggf. an die eigene Installation anpassen.
$json = @'
{
    "general": {
        "version": "0.3.0.dev2602241610933529"
    },
    "logging": {
        "console_level": "INFO"
    },
    "server": {
        "host": "0.0.0.0",
        "run_as_user": "eos",
        "eosdash_host": "0.0.0.0",
        "eosdash_port": 8504
    }
}
'@
[System.IO.File]::WriteAllText("$env:TEMP\EOS.config.json", $json, (New-Object System.Text.UTF8Encoding($false)))

# 2. In den Container kopieren
docker cp "$env:TEMP\EOS.config.json" akkudoktoreos:/data/config/EOS.config.json

# 3. Neu starten
docker restart akkudoktoreos

# 4. Prüfen
docker logs akkudoktoreos 2>&1 | Select-String "EOSdash server on" | Select-Object -Last 1

Linux / macOS

ACHTUNG: ueberschreibt die GESAMTE Config-Datei. Vorher bestehenden Inhalt

ansehen und uebernehmen:

docker exec akkudoktoreos sh -c "cat /data/config/EOS.config.json"

"version" ggf. an die eigene Installation anpassen.

docker exec -u root akkudoktoreos sh -c 'cat > /data/config/EOS.config.json << EOF
{
    "general": {
        "version": "0.3.0.dev2602241610933529"
    },
    "logging": {
        "console_level": "INFO"
    },
    "server": {
        "host": "0.0.0.0",
        "run_as_user": "eos",
        "eosdash_host": "0.0.0.0",
        "eosdash_port": 8504
    }
}
EOF'

docker restart akkudoktoreos

docker logs akkudoktoreos 2>&1 | grep "EOSdash server on" | tail -1

Erfolg

Das Log zeigt jetzt:

Starting EOSdash server on 0.0.0.0:8504

http://localhost:8504 ist erreichbar.

Hinweise

  • Pfad /data/config/EOS.config.json ggf. anpassen (abhängig von EOS_CONFIG_DIR).

  • Unter Windows kein Set-Content -Encoding utf8 verwenden — die BOM lässt EOS crashen (Unexpected UTF-8 BOM (decode using utf-8-sig)), Container startet dann in einer Restart-Schleife.

  • BOM-Check (erstes Zeichen muss { sein, keine 357 273 277-Bytes davor):

    docker exec akkudoktoreos sh -c "head -c 20 /data/config/EOS.config.json | od -c | head -1"
    
    
  • Falls schon Felder in der Config stehen: ergänzen statt überschreiben (server-Block um eosdash_host / eosdash_port erweitern).

  • Speichert EOSdash später über die Weboberfläche Einstellungen, wird die Datei neu geschrieben — danach ggf. prüfen, ob eosdash_host noch drinsteht.

  • Der zugrunde liegende Env-Var-Bug wird upstream bearbeitet; ein späteres docker pull akkudoktor/eos:latest kann diesen Workaround überflüssig machen.