Alle Artikel
2026-04-1411 min

OpenClaw mit Docker absichern, ohne die Bedienbarkeit zu zerstören

OpenClawDockerSecuritySelf-HostingHardeningDevOps

Docker trendet wieder, aber der nützliche Teil der Debatte ist Sicherheit

Ein großer Teil der aktuellen OpenClaw-Diskussion folgt demselben Muster.

Die eine Seite ist begeistert, weil Docker Self-Hosting plötzlich machbar wirken lässt. Repo klonen, Umgebungsvariablen setzen, Compose starten, und auf einmal läuft ein Agent dauerhaft, kann Dateien lesen, APIs aufrufen, Nachrichten verschicken, Prüfungen fahren und Jobs planen.

Die andere Seite postet den unvermeidlichen Backlash: alarmistische Screenshots, aufgeblasene Vulnerability-Zahlen und die Behauptung, dass Self-Hosting eines Agent-Stacks auf dem eigenen Server praktisch eine Einladung zum Desaster sei.

Beide Seiten reagieren auf etwas Reales. Docker macht OpenClaw tatsächlich deutlich leichter deploybar. Und OpenClaw verdient tatsächlich eine ernsthaftere Sicherheits-Haltung als irgendein Wochenendprojekt.

Der Denkfehler besteht darin, diese beiden Fakten als Gegensätze zu behandeln.

Das sind sie nicht. Der ganze Punkt ist, leistungsfähige Systeme und klare Grenzen gleichzeitig zu haben.

Wenn du OpenClaw in Docker selbst hostest, ist die sinnvolle Frage nicht abstrakt „Ist Docker sicher?“. Die sinnvolle Frage lautet: Welche Grenzen erzwingt dieses Container-Setup tatsächlich, und an welchen Stellen vertraust du dir immer noch zu sehr?

Genau dieses Betreiber-Denken fehlt in vielen hypegetriebenen Setup-Guides.

---

Was Docker liefert, und was Docker ganz sicher nicht liefert

Docker liefert Packaging, Reproduzierbarkeit und eine deutlich sauberere Betriebsstory.

Das ist wichtig. Es bedeutet:

  • du startest von einem bekannten Image statt einen Host per Hand zu verbiegen
  • Abhängigkeiten bleiben besser vorhersagbar
  • Restarts und Updates lassen sich sauberer beurteilen
  • Volumes machen Zustand explizit
  • Ressourcenlimits stehen zur Verfügung, wenn du sie wirklich nutzt
  • Alles gut.

    Aber Docker bedeutet nicht automatisch Containment.

    Ein schlampiger Container kann immer noch viel zu breit sein. Wenn du den Service als Root ausführst, die Hälfte des Host-Dateisystems mountest, das Gateway auf allen Interfaces veröffentlichst, riesige Env-Sopes reinschüttest und rohe Ausführung ohne sinnvolle Review erlaubst, dann ist „läuft in Docker“ hauptsächlich Kosmetik.

    Das schlechte Muster sieht so aus:

  • Container läuft als Root
  • <code>0.0.0.0:port</code> standardmäßig veröffentlicht
  • Workspace und Secrets breit gemountet
  • keine Memory- oder Prozesslimits
  • implizites Vertrauen für Skills und Exec-Workflows
  • Approvals nach Bequemlichkeit konfiguriert, nicht nach Risiko
  • Dieses Setup ist verbreitet, weil es schnell ist. Genau so wird aus Komfort aber schleichend Exposure.

    ---

    Der sicherste Default ist langweilig: lokal binden, non-root laufen, schmal mounten

    Wenn du nur eine praktische Regel mitnehmen willst, dann diese: Mach das Standard-Deployment so langweilig, dass ein kleiner Fehler klein bleibt.

    Für Docker bedeutet das meistens vier Dinge.

    1. Gateway nur an localhost binden

    Wenn deine Compose-Datei das Gateway als <code>0.0.0.0:8080:8080</code> veröffentlicht, bist du genau eine schlechte Firewall-Regel von einem unangenehmen Abend entfernt.

    Nimm stattdessen eine lokale Bindung:

    <pre><code class="language-yaml">ports:

    - "127.0.0.1:8080:8080"</code></pre>

    Das löst nicht jedes Problem, aber es eliminiert eine sehr dumme Klasse versehentlicher Exponierung. Gleichzeitig zwingt es dich zu einer bewussten Entscheidung, wenn du später Tailscale Serve, einen Reverse Proxy oder einen SSH-Tunnel davorschalten willst.

    2. Container als non-root ausführen

    OpenClaw ist ein Ausführungssystem. Es kann Dateien anfassen, Tools aufrufen und mit externen Diensten sprechen. Genau deshalb sollte es nicht als Root im Container laufen, außer du willst deinen Blast Radius ohne echten Nutzen vergrößern.

    Nutze eine explizite UID und GID, die nur die Verzeichnisse besitzt, die die App wirklich braucht.

    3. Nur mounten, was in den Workflow gehört

    Dein OpenClaw-Workspace ist nicht dasselbe wie dein kompletter Server.

    Wenn der Container den Workspace und eine Secret-Datei braucht, mounte genau das. Mounte nicht nebenbei <code>/home</code>, den Docker-Socket oder irgendwelche anderen Projektordner, nur weil es beim Testen bequemer ist.

    4. Harte Limits setzen

    Ressourcenlimits sind nicht glamourös, aber sie zählen. Memory-Caps, PID-Limits und Restart-Policies gehören zur Härtung dazu, weil sie aus einem ausufernden Prozess ein begrenztes Betriebsproblem machen statt ein hostweites Chaos.

    ---

    Eine vernünftige Compose-Basis

    Du brauchst kein Elite-Infrastruktur-Setup, um den Großteil des Nutzens mitzunehmen. Eine vernünftige Basis bringt dich schon weiter als viele öffentliche Beispiele:

    <pre><code class="language-yaml">services:

    openclaw:

    image: ghcr.io/openclaw/openclaw:latest

    user: "1001:1001"

    ports:

    - "127.0.0.1:8080:8080"

    read_only: true

    tmpfs:

    - /tmp

    cap_drop:

    - ALL

    security_opt:

    - no-new-privileges:true

    volumes:

    - ./workspace:/home/openclaw/.openclaw/workspace

    - ./.env:/home/openclaw/.openclaw/.env:ro

    mem_limit: 2g

    pids_limit: 256

    restart: unless-stopped</code></pre>

    Das ist nicht die einzig gültige Konfiguration. Es ist einfach eine gute Default-Philosophie:

  • nur lokal gebunden
  • non-root User
  • read-only Root-Filesystem, wo möglich
  • temporär beschreibbarer Bereich via <code>tmpfs</code>
  • keine unnötigen Linux-Capabilities
  • explizite Mounts statt diffuser Reichweite
  • grundlegende Ressourcenbegrenzung
  • Du kannst einzelne Punkte lockern, wenn eine echte Anforderung dich dazu zwingt. Was du nicht tun solltest: mit maximaler Bequemlichkeit starten und dir versprechen, später zu härten. Später ist der Ort, an dem unsichere Defaults zu „Produktion“ werden.

    ---

    Skills und Exec sind die Stellen, an denen Docker-Härtung entweder zählt oder umgangen wird

    Viele Self-Hoster investieren Zeit in den Container und reißen die ganze Haltung eine Ebene höher wieder ein.

    Das passiert meistens an zwei Stellen: Skills und Exec.

    Wenn du Skills locker installierst, zu viele Tools freigibst und auf einem breit gemounteten Container High-Trust-Command-Execution erlaubst, dann rettet Docker dich nicht wirklich. Es verpackt das Risiko nur in angenehmere Deployment-Ergonomie.

    Die praktische Regel ist simpel:

  • Container-Grenzen reduzieren Umgebungs-Schaden
  • Approval-Regeln reduzieren Aktions-Risiko
  • Allowlists reduzieren unnötige Fähigkeiten
  • Skill-Vetting reduziert versehentliche Vertrauenserweiterung
  • Du brauchst alle vier.

    Wenn ein Workflow durch externe Inhalte ausgelöst wird, sollten Approvals strenger werden, nicht lockerer. Wenn ein Task nur File-Reads und Web-Suche braucht, gib nicht den vollen Execution-Pfad frei, nur weil er später vielleicht mal praktisch sein könnte. Wenn ein Skill neuen Netzwerkzugriff oder Secret-Handling einführt, behandle das wie eine echte Architekturänderung.

    Die Überschrift dazu lautet: Docker ist eine Grenze, nicht das komplette Sicherheitsmodell.

    ---

    Die „schnell eingerichtet“-Falle ist meistens ein Netzwerkfehler

    Der häufigste Fehler mit großem Impact ist nicht exotische Kernel-Escape-Magie. Es ist simple Netz-Exponierung.

    Jemand will Remote-Zugriff, also wird der Gateway-Port öffentlich veröffentlicht oder hinter ein schwaches Setup gehängt, weil es „heute Abend einfach funktionieren muss“.

    Das ist die falsche Richtung.

    Für die meisten OpenClaw-Betreiber sind die richtigen Remote-Access-Optionen:

  • Tailscale Serve für privaten Tailnet-Zugriff
  • SSH-Tunnel für Admin-Zugriff
  • ein Reverse Proxy mit Authentifizierung und Rate Limiting, wenn du wirklich eine Web-Oberfläche brauchst
  • Was du vermeiden solltest: das komplette Gateway zu einem locker öffentlichen Service zu machen. OpenClaw ist keine statische Website. Es ist eine Kontrollfläche für ein Agent-System mit Memory, Tools und externen Integrationen.

    Wer es wie ein Spielzeug-Dashboard behandelt, schreibt später meistens irgendwelche „harte Lektionen“-Threads.

    ---

    Härtung, die die Bedienbarkeit respektiert

    Genau dieser Punkt wird oft übersehen. Gute OpenClaw-Sicherheit sollte das System nicht unerträglich machen.

    Ein brauchbar gehärtetes Setup fühlt sich immer noch angenehm an:

  • Docker Compose startet und restarte sauber
  • das Gateway ist privat erreichbar, wenn du es brauchst
  • der Workspace bleibt vorhersehbar persistent
  • Approvals tauchen nur dort auf, wo das Risiko sie rechtfertigt
  • Logs sind lesbar
  • Updates sind Routine, kein Drama
  • Deshalb bevorzuge ich praktische Controls statt theatrale.

    Non-root laufen, lokal binden, Mounts einschränken und sinnvolle Approval-Policies kaufen dir mehr Sicherheit als obskure Komplexität jemals wird. Genauso sind <code>chmod 700</code> auf dem Workspace und <code>chmod 600</code> auf Secret-Dateien nicht sexy, aber genau diese langweilige Hygiene verhindert, dass kleine Fehler zu Leaks werden.

    Security-Theater sagt: „Sperr alles überall zu“ und zerstört dann still den Workflow, bis Betreiber anfangen, Schutzmaßnahmen zu umgehen.

    Operative Sicherheit sagt: „Halte das System angenehm genug, dass der sichere Pfad auch der Default-Pfad bleibt.“

    Diese zweite Version hält länger.

    ---

    Ein 10-Minuten-Audit für dein aktuelles Docker-Setup

    Wenn OpenClaw bei dir schon läuft, prüf genau diese Punkte jetzt:

    1. Bindet deine Compose-Datei an <code>127.0.0.1</code> oder an alle Interfaces?

    2. Läuft der Container als Root?

    3. Mountest du wirklich nur den Workspace und notwendige Secret-Pfade?

    4. Hast du Memory- und PID-Limits?

    5. Sind destruktive oder erhöhte Kommandos durch Approvals geschützt?

    6. Exponierst du mehr Tools, als der Workflow tatsächlich braucht?

    7. Liegen Secrets ausschließlich in <code>.env</code> oder vergleichbaren Secret-Pfaden und nicht verstreut in Dokus und Scripts?

    Wenn du nur diese sieben Punkte korrigierst, bist du schon an einem deutlich gesünderen Punkt als die meisten „in fünf Minuten zum laufenden Agenten“-Setups.

    ---

    Das eigentliche Ziel ist kontrollierte Power

    Genau deshalb lohnt es sich, die aktuelle OpenClaw-Sicherheitsdebatte ernst zu nehmen, ohne hysterisch zu werden.

    Die Software ist mächtig. Die Entscheidungen der Betreiber zählen. Docker hilft enorm, wenn es bewusst eingesetzt wird. Es schadet, wenn es zur Ausrede wird, mit dem Denken aufzuhören.

    Was du willst, ist kontrollierte Power.

    Kein kastriertes Spielzeug-Deployment und keine weit offene Ausführungsmaschine.

    Eine containerisierte OpenClaw-Instanz kann sehr praktisch, sehr produktiv und sehr vernünftig sein, wenn dein Modell klar bleibt:

  • lokal per Default
  • Least Privilege per Default
  • schmale Mounts per Default
  • Approvals dort, wo der Blast Radius wächst
  • keine öffentliche Exponierung, außer du kannst exakt begründen, warum sie existiert
  • Das ist der Unterschied zwischen „Ich habe OpenClaw in Docker deployed“ und „Ich kann diesem System tatsächlich zutrauen, in Produktion nützlich zu bleiben“.

    Wenn du die operator-taugliche Version willst, mit den genauen Docker-Mustern, Netzwerkregeln und Härtungs-Checklisten, dann ist genau dafür das OpenClaw Setup Playbook da.

    Mehr erfahren?

    Unser Playbook enthält 18 detaillierte Kapitel — komplett auf Deutsch.

    Zum Playbook