OpenClaw auf Linux-VPS
mit systemd-User-Diensten

linger · XDG_RUNTIME_DIR · Daemon prüfen · Schichtdiagnose · API-Region vs. Egress

OpenClaw Linux VPS systemd linger API

Plattformtechniker, SREs und Betreiber selbstgehosteter Agenten scheitern 2026 auf Linux-VPS selten an einem einzelnen Tippfehler, sondern daran, dass nach SSH-Logout user-level systemd stoppt, XDG_RUNTIME_DIR in nicht-interaktiven Pfaden fehlt, Gateway-, Channel- und Modellprotokolle in einer Zeile gelesen werden und Konsolen-API-Region und tatsächlicher VPS-Egress auseinanderlaufen. Der Artikel liefert fünf versteckte Vorabkosten, eine Drei-Wege-Tabelle Bare-Metal-systemd versus systemd-im-Container versus Docker-only, ein sechsstufiges reproduzierbares Runbook mit Beispielbefehlen, eine Checkliste plus drei zitierbare technische Fakten und eine Entscheidungsmatrix. Installation und Gateway: Installations- und Doctor-Checkliste. Compose-Dauerbetrieb: Docker-Compose-Produktionsbaseline. Bestellung: Bestellseite.

01

„Manuell startbar“ ist nicht dasselbe wie unbeaufsichtigt stabil

OpenClaw auf Linux verschiebt Langläufer, Socket-Verzeichnisse, Logs und Neustart-Semantik von persönlicher Gewohnheit in auditierbare Units. Die folgenden fünf Punkte treten gemeinsam auf und führen zu einem Gate: Schreiben Sie linger und XDG_RUNTIME_DIR vor der Docker-Debatte ins Abnahmeblatt.

  1. 01

    Sitzungsbindung: Ohne linger kann das Ende interaktiver SSH den User-systemd-Manager stoppen; Units sterben nachts still, Tickets sagen nur „gestern ging es“.

  2. 02

    Fehlendes Runtime-Verzeichnis: Cron, minimale Shells oder falsche Service-Typen lassen XDG_RUNTIME_DIR leer; Socket-Fehler verteilen sich auf App und systemd.

  3. 03

    Übersprungene Schichtung: Gateway-Listen, Channel-Tokens, Modellrouting und Upstream-429 werden als eine Geschichte „OpenClaw kaputt“ gelesen.

  4. 04

    Region vs. Egress-Drift: Konsole oder Variablen zeigen Region A, der VPS-Pfad liefert Header-Hinweise auf Region B; es wirkt wie flaky Auth statt stabiler 403.

  5. 05

    Vermischte Grenzen: Docker plus User-Units auf einem Host uneinig über Neustart-Reihenfolge und Health-Semantik erschweren Rollbacks.

Vergleichen Sie Host-User-Units mit Container-PID-1 anhand der nächsten Tabelle als Review-Folie, nicht als Slogan.

02

Drei Modelle: Bare-Metal-systemd, systemd-im-Container, Docker-only

Entscheiden Sie zuerst, wer Neustarts, Logrotation, linger-Semantik und die Grenze zwischen Sockets und Host-Ports besitzt. Es gibt keinen Universalgewinner, nur eine passende Ops-Grenze.

ModellTypische PassungHauptnutzenHauptkosten
Bare-Metal-systemd (User)Einzel-VPS, enge Zusammenarbeit mit Host-Firewall und LoopbackPasst zur Distro-Toolkette, Units und journal sind fluchtendlinger und Login-Sitzungskanten sind Pflicht
systemd-im-ContainerMehrprozess-Supervision im ImageFühlt sich wie klassischer Linux-Service-Host anPrivilegien- und Image-Kanten sind schärfer, Debug umfasst innen und außen
Docker-onlyCompose oder Orchestrator besitzt Health und RestartVersionsierte Artefakte und Rollbacks sind klarHost-user-linger-Semantik ist nicht automatisch dabei

Reproduzierbare Abnahme ist nicht „läuft auf meinem Laptop“, sondern: Unit überlebt SSH-Logout, journal-Gründe sind lesbar, Region-Hinweise lassen sich zweimal mit denselben Befehlen erfassen.

03

Sechsstufiges Runbook: linger, Runtime-Verzeichnis, Install, Verify, Schichtsignale

Reihenfolge: User-Manager unbeaufsichtigt am Leben halten, Runtime-Verzeichnis prüfen, Units installieren, schichtweise triagieren, zuletzt Egress-Snapshots. Jede Stufe liefert gespeicherte Befehlsausgaben. Gateway-Baseline bleibt in der Installations- und Doctor-Checkliste.

  1. 01

    Service-User fixieren: Konto und Primärgruppe festlegen, root nicht mischen. Artefakt: id plus kurzes loginctl user-status-Fragment.

  2. 02

    linger aktivieren: Für den Deploy-User linger setzen, damit user@ ohne Login läuft. Artefakt: show-user zeigt linger=yes.

  3. 03

    XDG_RUNTIME_DIR prüfen: Variable im selben Profil wie die Unit ausgeben, /run/user/<uid>-Form erwarten.

  4. 04

    Installieren und aktivieren: Unit im User-Scope ablegen, daemon-reload und enable --now, mit status Active und Haupt-pid prüfen.

  5. 05

    Schichtweise sampeln: Zuerst Gateway-Listen und Config-Parse, dann Channel-Tokens und Webhook-Erreichbarkeit, dann Upstream-Modellkontingente und Regions-Header. Je Schicht die letzten 200 journal-Zeilen.

  6. 06

    Egress-Konsistenz: Gleichen Hostnamen auflösen und TLS-sichtbare Metadaten vor und nach Änderungen speichern; keinen Einzel-RTT zum Performanceurteil erheben.

linger, runtime-dir, user-units (beispiel)
loginctl show-user "${USER}" -p Linger
sudo loginctl enable-linger "${USER}"
systemctl --user show-environment | grep XDG_RUNTIME_DIR || true
echo "${XDG_RUNTIME_DIR}"
systemctl --user daemon-reload
systemctl --user status openclaw-gateway.service --no-pager
journalctl --user -u openclaw-gateway.service -n 200 --no-pager

Hinweis: Ersetzen Sie openclaw-gateway.service durch den echten Unit-Namen. Bei anderem Gateway-Binary gilt weiter die ExecStart-Zeile der Unit.

04

Go-Live-Checkliste und drei zitierbare technische Fakten

Ordnen Sie jeden Punkt Owner und Review-Rhythmus zu. Regionschecks sammeln nur wiederholbare TLS- und Antwort-Metadaten, keine erfundenen Durchsatz-Rankings.

  1. S1

    linger-Gate: Change-Tickets müssen show-user Linger=yes als Text oder Screenshot enthalten.

  2. S2

    Unit-Grenze: Welche Ports User-Units binden und welche Container veröffentlichen, dokumentieren und zur Firewall-Doku synchronisieren.

  3. S3

    Log-Retention: journal-Persistenz oder Weiterleitung beschreiben, damit Debug-Logs die Platte nicht leerziehen und Hänger vortäuschen.

  4. S4

    Schicht-Runbook: Pro Schicht Gateway, Channel, Model mindestens drei „weiter wenn grün“-Checks als Befehl oder URL.

  5. S5

    Region-Snapshots: Resolver-Ausgabe und Header-Stichproben vor und nach Release-Fenstern für Rollback-Kontrast speichern.

  • linger-Semantik: loginctl enable-linger wirkt auf die Lebensgrenze des User-systemd-Managers; es ist nicht automatisch gleichbedeutend mit der Docker-Wahl.
  • XDG_RUNTIME_DIR: Unter einer systemd-User-Sitzung meist /run/user/<uid>. Fehlt sie off-login, fallen Sockets auf nicht beschreibbare Pfade zurück.
  • Regions-Hinweis-Header: Viele Upstreams liefern Hinweise in Headern oder Fehlerkörpern. Werkzeugversion und Flags fixieren, damit Cache-Proxy-Antworten nicht als Origin gelten.

Achtung: Ein einmal erfolgreicher curl ist nach CDN-Wechsel kein Beweis. Fester Hostname mit wiederholbaren Befehlen schlägt ein Glücks-Timing.

05

Entscheidungsmatrix und stabiler Cloud-Egress: wann rohes bash endet

Ohne versionierte linger-, Unit-, Port- und Region-Snapshots ist Linux-Dauerbetrieb nur halb fertig. Die andere Hälfte teilt Verantwortungssprache mit Gateway-Triage.

TeamlageStandardAbnahmesignalTypische Falle
Solo, schnelle IterationDocker-Compose-BaselineHealth und Restart im Compose reviewbarmem_limit und Logrotation ignorieren erzeugt Schein-Hänger
Multi-Tenant-HostContainer-Grenze plus isolierte ProjektnamenJeder Stack hat eigenes DatenverzeichnisMix mit User-Units erzeugt Restart-Races
Host-enge KopplungUser-systemd plus lingerjournal bleibt nach SSH-Ende kontinuierlichXDG_RUNTIME_DIR auf nicht-interaktiven Pfaden nicht geprüft

Interaktives bash, linger-freies nohup oder handgeschriebene Watchdogs zahlen oft bei Änderungsreview und Audit nach. Ohne Egress-Snapshots sind Upstream-Regionspolitik-Schwenks schwer erklärbar. Dedizierte Cloud-Mac-Kapazität mit wählbarer Region und lesbaren Netzstufen vereinfacht stabilen Egress und Golden Images neben iOS-Builds oder Desktop-Übergaben.

Typische Falle: Docker entferne alle systemd-Semantiken. Wenn User-Units außerhalb von Compose das Gateway halten, bleiben linger und Runtime-Verzeichnis harte Gates.

Persönliche Skripte und unversionierte Exporte überstehen Übergabe und Compliance selten mit externer SLA. Wenn OpenClaw zusammen mit Upstream-Regionspolitik, TLS-Fingerabdruck und fester Egress-Erzählung ausgeliefert wird, fehlen bash-only-Pfaden oft auditierbare Change-Tickets. Für Teams, die iOS-Übergabe, CI-Regression und Automatisierungs-Agenten in einer Abnahme bündeln und Bestell- und Regionstufen statt selbstgebautem Egress-Glücksspiel wollen, ist VpsMesh Mac Mini Cloud-Miete meist die bessere Passform: dedizierte Knoten vereinfachen ACLs und Hostnamen, Kollaboration bleibt nah an häufigen Schleifen, Ops-Sprache kann mit dem Team-Privatnetz-Build-Node-Runbook übereinstimmen. Regionenmix auf der Preisseite, Verbindungsgrenzen nach dem Hilfezentrum.

FAQ

Drei häufige Fragen

Nach Sitzungsende kann systemd --user stoppen und OpenClaw-User-Units beenden. Prüfen Sie linger vor Produktion und gleichen Sie Verbindungs- sowie Dauerbetriebshinweise im Hilfezentrum ab, damit nächtliche Stopps nicht als Upstream-Ausfall fehlinterpretiert werden.

Hostnamen und Toolversionen fixieren, Resolver-Ausgabe und TLS-sichtbare Metadaten zum selben Endpunkt speichern, Konsolenregion mit Umgebungsvariablen abgleichen. Compose-Level-Health: Docker-Compose-Produktionsbaseline.

Wenn Neustart, Logrotation, Limits und Healthchecks vollständig in Compose oder einem Orchestrator deklariert sind und keine Host-User-Sockets plus linger-Semantik nötig sind, ist Docker-only oft einfacher. Schichtabnahme aus Abschnitt drei vor Mischbetrieb mit User-Units abschließen.