Hosting

systemd erklärt — Linux Service-Manager für OpenClaw

Direkte Antwort: systemd ist der zentrale Service-Manager moderner Linux-Distributionen. Mit einem unit-File (.service) machst du aus dem OpenClaw-Gateway einen 24/7-Service mit Auto-Restart, Boot-Persistenz und gebündelten Logs via journalctl.

Was ist systemd?

systemd ist das Init-System und Service-Management-Tool, das auf praktisch allen modernen Linux-Distributionen läuft (Ubuntu, Debian, Fedora, RHEL, Arch). Es startet Dienste beim Boot, hält sie am Leben, sammelt deren Logs und verwaltet Abhängigkeiten zwischen ihnen.

Wer auf einem Hetzner-VPS einen 24/7-Dienst betreiben will (z.B. das OpenClaw Gateway), kommt an systemd nicht vorbei. Es ist der saubere und stabile Weg, im Vergleich zu Hacks wie nohup oder screen.

Kontext

Vor systemd herrschte Chaos: SysV-Init, Upstart, BSD-Init, alle mit eigenen Konventionen. systemd hat seit etwa 2014 die Linux-Welt standardisiert. Heute ist es Standard und de-facto Pflicht für serverseitige Workloads.

systemd ist mehr als nur ein Init-System. Es deckt Logging (journald), Timer (Cron-Ersatz), Networking, Mounts, Sockets, Login-Sessions und vieles mehr ab. Manche kritisieren das als "zu mächtig", praktisch sparst du dir aber 5 verschiedene Tools.

Funktionsweise

systemd verwaltet Units. Eine Unit ist eine Konfigurationsdatei, die einen Service, Timer, Mount, Socket oder ähnliches beschreibt. Service-Units enden auf .service.

Service-Units können sein:

  • System-weit: /etc/systemd/system/foo.service — laufen mit Root-Rechten oder unter dem User, der im Unit-File steht
  • Pro-User: ~/.config/systemd/user/foo.service — laufen nur, wenn der User eingeloggt ist (oder lingering aktiviert)

Die wichtigsten Befehle:

sudo systemctl daemon-reload          # nach Unit-Aenderungen einlesen
sudo systemctl enable openclaw        # bei Boot starten
sudo systemctl start openclaw         # jetzt starten
sudo systemctl stop openclaw          # jetzt stoppen
sudo systemctl restart openclaw       # neu starten
sudo systemctl status openclaw        # Status anzeigen
journalctl -u openclaw -f             # Logs live tailen
journalctl -u openclaw --since "1h ago"

Praxis-Beispiel

Ein vollständiges Unit-File für das OpenClaw-Gateway:

# /etc/systemd/system/openclaw.service
[Unit]
Description=OpenClaw Gateway
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=openclaw
Group=openclaw
WorkingDirectory=/home/openclaw/agent
EnvironmentFile=/home/openclaw/agent/.env
ExecStart=/usr/bin/openclaw gateway
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

# Hardening
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/home/openclaw/agent
ReadWritePaths=/var/log/openclaw

[Install]
WantedBy=multi-user.target

Aktivieren und starten:

sudo systemctl daemon-reload
sudo systemctl enable openclaw
sudo systemctl start openclaw
sudo systemctl status openclaw

Wenn alles gut ist, siehst du active (running). Logs schaust du mit:

journalctl -u openclaw -f

Wichtige Optionen erklärt

| Option | Bedeutung | | --- | --- | | Type=simple | Service läuft im Vordergrund, systemd merkt sich PID | | Restart=always | Bei Crash sofort wieder starten | | RestartSec=10 | 10 Sekunden warten vor Restart (verhindert Crash-Loop) | | EnvironmentFile | API-Keys etc. aus separater .env-Datei laden | | NoNewPrivileges | Service kann keine zusätzlichen Rechte erlangen | | ProtectSystem=strict | Filesystem read-only, außer ReadWritePaths |

systemd User Services

Wenn du keinen Root-Zugriff hast oder den Service einfach lieber unter deinem Nutzer betreiben willst, gibt es User-Services:

mkdir -p ~/.config/systemd/user
nano ~/.config/systemd/user/openclaw.service

systemctl --user daemon-reload
systemctl --user enable openclaw
systemctl --user start openclaw
systemctl --user status openclaw

# Damit Service auch ohne Login laeuft
sudo loginctl enable-linger $USER

Praxis-Tipp: Auf einem dedizierten OpenClaw-Server sind User-Services oft sauberer als System-Services, weil du keine Root-Rechte für Updates und Konfig brauchst.

Logging mit journalctl

systemd-Logs liegen nicht in /var/log/ als Textfiles, sondern in einer binären Journal-Datenbank. Zugriff per journalctl:

journalctl -u openclaw                # alle Logs
journalctl -u openclaw -f             # live tail
journalctl -u openclaw --since today  # heute
journalctl -u openclaw -p err         # nur Errors
journalctl -u openclaw --since "1h ago" --until "30min ago"

Vorteile gegenüber Plaintext-Logs: strukturiert (JSON), durchsuchbar, mit Metadaten (PID, User, Boot-ID).

Häufige Fehler / Stolperfallen

  1. daemon-reload vergessen: Wenn du das Unit-File änderst, muss systemctl daemon-reload laufen. Sonst nutzt systemd die alte Version.
  2. EnvironmentFile-Pfad falsch: Wenn die .env-Datei nicht existiert oder Permissions falsch sind, startet der Service nicht. systemctl status zeigt den Fehler.
  3. PATH-Problem: systemd-Services bekommen ein anderes PATH als interaktive Shells. Wenn dein Skript node oder andere Binaries nutzt, schreibe vollständige Pfade.
  4. Restart-Loop: Wenn dein Service immer wieder crasht und sofort neustartet, kannst du Logs verpassen. journalctl -u service --since "5 min ago" durchsuchen.
  5. Keine Berechtigung: Wenn der User aus dem Unit-File auf gewisse Pfade nicht schreiben darf, schlägt der Service fehl. Permissions prüfen.

systemd-Timer als Cron-Alternative

Neben .service-Units gibt es .timer-Units, die als Cron-Ersatz dienen. Beispiel-Timer für ein Backup alle 6 Stunden:

# /etc/systemd/system/openclaw-backup.timer
[Unit]
Description=Backup OpenClaw config alle 6h

[Timer]
OnBootSec=15min
OnUnitActiveSec=6h
Persistent=true

[Install]
WantedBy=timers.target

Plus eine openclaw-backup.service-Unit, die den Backup-Befehl ausführt. Vorteil ggü. Cron: Persistent=true holt verpasste Runs nach (z.B. nach Reboot), Logs sind im Journal.

Restart-Verhalten feinjustieren

Restart=always ist okay, aber bei manchen Bugs landest du in einem Crash-Loop. Sicherer:

Restart=on-failure
RestartSec=10
StartLimitIntervalSec=300
StartLimitBurst=5

Damit: 5 Crashes in 5 Minuten -> systemd gibt auf und stopt. Du wirst per Monitoring informiert und kannst den Bug fixen, statt dass der Service ewig im Crash-Loop hängt.

Verwandte Begriffe

Vollständige Server- und systemd-Einrichtung: Modul 2 der Masterclass und Modul 5.

Tipp: OpenClaw braucht einen Server, auf dem es 24/7 läuft. Hostinger KVM 2 in Frankfurt reicht für den Anfang und kostet nur wenige Euro im Monat. Hostinger ansehenAffiliate-Link — wir erhalten eine Provision, wenn du über diesen Link bestellst. Für dich ändert sich am Preis nichts.

Weitere Begriffe

Soul.md

Die Persönlichkeits-Datei deines OpenClaw-Agenten.

Heartbeat

Das System, das deinen OpenClaw-Agenten proaktiv arbeiten lässt.

Model Context Protocol (MCP)

Ein Standard-Protokoll für die Kommunikation zwischen KI-Agenten und externen Tools.

Identity File

Die Grundkonfiguration, die festlegt, wer dein Agent ist und wie er sich verhält.

OpenClaw Skills

Vorgefertigte Fähigkeiten, die deinem Agent beibringen, externe Tools zu nutzen.

OpenClaw Gateway

Der laufende Prozess, der deinen Agenten mit Messengern verbindet.

Anthropic API

Pay-per-Use API für Claude — die direkte Schnittstelle zu Anthropics LLMs.

Claude Token

Authentifizierungs-Token für Claude Pro und Max — günstiger als API-Pay-per-Use.

Tool Use

Mechanismus, mit dem LLMs externe Funktionen aufrufen — die Grundlage agentischer Systeme.

RAG (Retrieval-Augmented Generation)

KI-Antworten mit zusätzlichem Wissen aus Dokumenten oder Vektor-Datenbanken anreichern.

Cron / Crontab

Linux-Standard für zeitgesteuerte Aufgaben — die Grundlage proaktiver KI-Agenten.

fail2ban

Brute-Force-Schutz für SSH und andere Dienste — sperrt verdächtige IPs automatisch.

UFW (Uncomplicated Firewall)

Einfache Firewall-Konfiguration unter Ubuntu — Default-Deny mit selektiven Allows.

Tailscale

Mesh-VPN — sicherer Remote-Zugriff auf den eigenen KI-Server ohne offene Ports.

Webhook

HTTP-Callback für ereignisbasierte Integrationen — wie Telegram OpenClaw kontaktiert.

Prompt Injection

Angriffstechnik gegen LLM-Systeme — OWASP-LLM-Top-1-Risiko.

User.md

Datei mit Nutzer-Infos für Personalisierung deines OpenClaw-Agenten.