mem_limit · erstes WASM · allowedOrigins · Kopplung per compose exec · Compose-Vorlage
Wer docker compose nach Anleitung gestartet hat, sieht auf kleinen VPS oft drei Muster: Container beendet mit 137, Port 18789 reagiert lange nicht, Control UI meldet non-loopback oder Host-Header-Probleme. Dieser Artikel liefert zuerst eine umsetzbare Liste zu free -h, mem_limit und einem 3–7-Minuten-Fenster für das erste WASM-Build, dann eine Tabelle Symptom → docker logs → Maßnahme für Exit 137, Volume-Rechte und falsche Mounts; anschließend eine Entscheidungstabelle zu Bind an 127.0.0.1, allowedOrigins und Reverse Proxy für UI-Fehler; zuletzt ein sechsstufiges Runbook zur Gerätekopplung im Container und zehn Punkte vor Go-Live. Ergänzend zu OpenClaw v2026.4 – Installation und Docker-Härtung, Gateway-Installation und doctor-Checkliste und Laufzeit-Troubleshooting in drei Abschnitten hilft das, von „Container läuft“ zu „stabil ohne Daueraufsicht“ zu kommen. Für Anbieter-API-Schlüssel und .env gelten bei personenbezogenen Metadaten oder Teamzugriff die üblichen DSGVO-Pflichten: Zweckbindung, technische und organisatorische Maßnahmen, Vertrag zur Auftragsverarbeitung wo erforderlich; Schlüssel nur dort speichern und injizieren, wo Zugriff dokumentiert und begrenzt ist.
Beim ersten Start des OpenClaw Gateway im Container ist hohe CPU, aber der Port öffnet spät oft die WASM-Sandbox-Kompilierung, kein Deadlock. Wie in v2026.4 Installationsartikel beschrieben: sind freier RAM auf dem Host und mem_limit zu knapp, liefert Linux OOM oft Exit 137, ohne klare Anwendungsmeldung in den Logs.
Host: Auf dem Host free -h ausführen; dauerhaft weniger als etwa 1,5–2 GiB freier Puffer erhöht das 137-Risiko; ohne Swap noch stärker.
Compose: mem_limit: 2g oder höher setzen und schwere Konkurrenten auf derselben Maschine vermeiden.
Erstes Fenster: Nach Kaltstart 3–7 Minuten warten, bevor ein Fehler angenommen wird; docker logs -f zeigt, ob noch kompiliert wird.
Healthcheck: healthcheck.start_period mindestens 360s, damit compose nicht vor Ende des WASM neu startet.
Fehldiagnose vermeiden: Während des ersten Fensters nicht wiederholt docker compose restart – jeder Neustart triggert den Kaltstart-Spitzenbedarf erneut.
Diese fünf Punkte auf Seite eins des Runbooks „OpenClaw auf VPS“ reduzieren Tickets vom Typ „Tutorial befolgt, startet nicht“. Mehrstufiges Gateway-Troubleshooting: Laufzeit-Artikel.
Die Tabelle folgt zuerst Evidenz, dann Aktion, damit Tickets von „Gateway wirkt kaputt“ zu reproduzierbaren Feldern werden. Zusammen mit doctor-Installationscheckliste lassen sich Zeilennummern ins Ticket übernehmen.
| Symptom | docker logs / Host | Priorisierte Maßnahme |
|---|---|---|
| Sofort 137 | dmesg mit OOM; oder Log bricht ab | mem_limit / Instanzgröße erhöhen; Konkurrenz reduzieren |
| Permission denied workspace | Mount gehört root, Node im Container nicht | chown auf Container-UID oder user: an Volume angleichen |
| Konfiguration wirkt nicht | Zwei Pfade zu .openclaw auf Host und in compose | Einen Bind-Pfad; vor Neustart docker compose config |
| DNS sporadisch | curl im Container zum Modell-Endpoint timeout | Docker-dns und Host-Resolver laut Installationsartikel prüfen |
| Neustarts ohne neue Logs | Healthcheck zu aggressiv | start_period und retries lockern |
Effizientes Docker-Troubleshooting hängt daran, ob 137 zuerst als OOM belegt ist – nicht als Vermutung „App-Bug“.
Kombinieren Sie Gateway auf dem VPS mit einem dauerhaft erreichbaren Remote-Mac: Containerressourcen (compose, Logs) und Knoten-SLA (Region, Wartung) getrennt abnehmen.
18789 öffentlich auf dem VPS zu exponieren ist ein häufiger Fehler. Installationsartikel: Container nur an Loopback, TLS-Terminierung mit Caddy oder Nginx auf 443. non-loopback in der Control UI bedeutet: Browser-Origin und erlaubte Origins am Gateway stimmen nicht – nicht „Docker defekt“.
| Szenario | Listen / Proxy | Konfiguration |
|---|---|---|
| Nur SSH-Tunnel lokal | 127.0.0.1:18789 | allowedOrigins inkl. http://127.0.0.1:18789 |
| HTTPS mit Domain | Proxy auf Loopback-Upstream | allowedOrigins mit https://ihre-domain; Host-Fallback vermeiden, wenn möglich |
| Temporäres Lab | HTTP interne IP | IP-Quellen explizit; CIDR eng; nach Wartung zurückziehen |
| Nur UI schnell sehen | TLS außen dennoch empfohlen | Host-Header-Fallback nur mit Risikokenntnis laut Doku; danach zurückbauen |
{
"gateway": {
"mode": "local",
"controlUi": {
"allowedOrigins": ["https://openclaw.example.com"]
}
}
}
Hinweis: Nach Änderung an openclaw.json prüfen, ob docker compose restart in das erste WASM-Fenster fällt und nicht mit Fehldiagnosen aus Abschnitt 2 kollidiert.
Bei openclaw im Container müssen HOME und Konfigurations-Volume mit dem laufenden Prozess übereinstimmen, sonst „auf dem Host approved, im Container pending“. Service-Name hier openclaw – durch Ihren compose-Namen ersetzen.
Service: docker compose ps – Container mit Gateway finden.
Gleiche Umgebung: docker compose exec openclaw sh -lc 'pwd; echo $HOME; ls -la ~/.openclaw | head'
Offene Kopplungen: docker compose exec openclaw openclaw devices list
Request-ID: Aus UI oder Log, dann openclaw devices approve <id>.
API-Key-Sichtbarkeit: Bei No API key found for provider prüfen, ob .env per compose in den Container gelangt, nicht nur im Host-Shell-Profil. Anbieter-Schlüssel nur nach interner Key-Governance und DSGVO-konformer Zugriffsregel ablegen.
Ticketfelder: Pfad zu compose, Image-Tag, Kurz-openclaw.json, approve-Befehl dokumentieren.
Achtung: openclaw devices approve nur auf dem Host, während die Config nur im Container gemountet ist, erzeugt falsche Negativtests.
Drei typische Prüfintervalle – mit echten Monitoring-Werten Ihres Hosts füllen und ins README, damit neue Teammitglieder dieselben Fallen vermeiden.
| # | Vor Go-Live | Erfolgskriterium |
|---|---|---|
| 01 | ports nur 127.0.0.1 | 18789 nicht öffentlich erreichbar |
| 02 | env_file und Secret-Pfade konsistent | Modell-API-Key im Container lesbar |
| 03 | mem_limit und Swap-Strategie dokumentiert | Lasttest ohne 137 |
| 04 | healthcheck.start_period ≥ 360s | Keine Neustart-Schleife im ersten Fenster |
| 05 | openclaw.json gateway.mode local | Ungültige Schlüssel entfernt |
| 06 | TLS und HSTS am Proxy | Keine Mixed-Content-Warnungen |
| 07 | allowedOrigins deckt echte Origins ab | Keine non-loopback-Meldung in der Control UI |
| 08 | Gerätekopplung im Container durchgespielt | devices list leer oder approved |
| 09 | Backup von .openclaw und Version | Ein Runbook-Blatt zur Wiederherstellung |
| 10 | Kanal-Doku abgeglichen | IM- oder Webhook-Callbacks erreichbar |
services:
openclaw:
image: ghcr.io/openclaw/openclaw:latest
restart: unless-stopped
mem_limit: 2g
ports:
- "127.0.0.1:18789:18789"
volumes:
- ${HOME}/.openclaw:/home/node/.openclaw
env_file:
- .env
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:18789/health"]
interval: 60s
timeout: 15s
retries: 5
start_period: 360s
Gateway dauerhaft auf dem Notebook leidet unter Ruhezustand, zugeklapptem Deckel und instabilem Uplink; reines Heim-DSL liefert selten messbares SLA. Ein Mac mini in der Cloud mit nutzungsbasierter Abrechnung passt besser zu gemischten Workflows mit VPS-OpenClaw und grafischer oder Xcode-Seite.
Häufiger Fehler: 0.0.0.0:18789 als „einfaches Debuggen“ – auf einem öffentlichen VPS ist das die Kontrollfläche für Scanner.
Soll Docker-Gateway stabil online bleiben und schwere Builds oder Geräteschritte auf vertraglich fassbarer macOS-Umgebung laufen, sind Anschaffung und Multi-Standort-Sync oft teurer als Miete. Für 7×24 prüfbare Knoten und flexible Größen ist VpsMesh Mac mini Cloud häufig die bessere Option: Architektur mit VPS-OpenClaw und dediziertem Remote-Mac skizzieren, Kapazität mit Mietpreisen und Bestellseite belegen – das lässt sich leichter vertraglich absichern als mündliche Zusagen.
Zuerst dmesg auf dem Host und mem_limit auf OOM prüfen; parallel das erste WASM-Fenster einplanen. Ressourcenbaseline mit OpenClaw v2026.4 Installationsartikel abstimmen.
In openclaw.json unter gateway.controlUi.allowedOrigins die echte HTTPS-Quelle eintragen und prüfen, ob der Proxy keinen falschen Host nach oben reicht. Ablauf: Gateway-Installationscheckliste.
Mit docker compose exec denselben Nutzer und dieselben Mounts wie das Gateway nutzen, dann openclaw devices list. Sonst Laufzeit-Troubleshooting. Kapazität: Mietpreise, Bestellen; Verbindung: Hilfezentrum.