Docker (optioneel)
Docker is optioneel. Gebruik het alleen als je een gecontaineriseerde gateway wilt of de Docker-flow wilt valideren.Is Docker geschikt voor mij?
- Ja: je wilt een geïsoleerde, wegwerpbare gateway-omgeving of OpenClaw draaien op een host zonder lokale installaties.
- Nee: je draait op je eigen machine en wilt gewoon de snelste dev-loop. Gebruik in plaats daarvan de normale installatiestroom.
- Sandboxing-opmerking: agent sandboxing gebruikt ook Docker, maar vereist niet dat de volledige gateway in Docker draait. Zie Sandboxing.
- Gecontaineriseerde Gateway (volledige OpenClaw in Docker)
- Per-sessie Agent Sandbox (host-gateway + Docker-geïsoleerde agent-tools)
Provideropties
- Docker Desktop (of Docker Engine) + Docker Compose v2
- Voldoende schijfruimte voor images + logs
Gecontaineriseerde Gateway (Docker Compose)
Snelle start (aanbevolen)
Vanaf de repo-root:- bouwt de gateway-image
- draait de onboarding-wizard
- print optionele provider-instellingshints
- start de gateway via Docker Compose
- genereert een gateway-token en schrijft dit naar
.env
OPENCLAW_DOCKER_APT_PACKAGES— installeer extra apt-pakketten tijdens het buildenOPENCLAW_EXTRA_MOUNTS— voeg extra host bind mounts toeOPENCLAW_HOME_VOLUME— behoud/home/nodein een benoemd volume
- Open
http://127.0.0.1:18789/in je browser. - Plak de token in de Control UI (Instellingen → token).
- De URL opnieuw nodig? Voer
docker compose run --rm openclaw-cli dashboard --no-openuit.
~/.openclaw/~/.openclaw/workspace
Shell-helpers (optioneel)
InstalleerClawDock voor eenvoudiger dagelijks Docker-beheer:
clawdock-start, clawdock-stop, clawdock-dashboard, enz. Voer clawdock-help uit voor alle commando’s.
Zie de ClawDock Helper README voor details.
Handmatige flow (compose)
docker compose ... uit vanaf de repo-root. Als je
OPENCLAW_EXTRA_MOUNTS of OPENCLAW_HOME_VOLUME hebt ingeschakeld, schrijft het setupscrip
docker-compose.extra.yml; neem dit op wanneer je Compose elders draait:
Control UI-token + koppeling (Docker)
Als je “unauthorized” of “disconnected (1008): pairing required” ziet, haal dan een nieuwe dashboardlink op en keur het browserapparaat goed:Extra mounts (optioneel)
Als je extra hostmappen in de containers wilt mounten, stel danOPENCLAW_EXTRA_MOUNTS in voordat je docker-setup.sh uitvoert. Dit accepteert een
door komma’s gescheiden lijst van Docker bind mounts en past ze toe op zowel
openclaw-gateway als openclaw-cli door docker-compose.extra.yml te genereren.
Voorbeeld:
- Paden moeten gedeeld zijn met Docker Desktop op macOS/Windows.
- Als je
OPENCLAW_EXTRA_MOUNTSbewerkt, voerdocker-setup.shopnieuw uit om het extra compose-bestand opnieuw te genereren. docker-compose.extra.ymlwordt gegenereerd. Bewerk dit niet handmatig.
De volledige container-home behouden (optioneel)
Als je wilt dat/home/node behouden blijft bij het opnieuw aanmaken van containers,
stel dan een benoemd volume in via OPENCLAW_HOME_VOLUME. Dit maakt een Docker-volume aan en mount
het op /home/node, terwijl de standaard config/werkruimte bind mounts behouden blijven. Gebruik hier een benoemd volume (geen bind-pad); voor bind mounts gebruik je
OPENCLAW_EXTRA_MOUNTS.
Voorbeeld:
- Als je
OPENCLAW_HOME_VOLUMEwijzigt, voerdocker-setup.shopnieuw uit om het extra compose-bestand opnieuw te genereren. - Het benoemde volume blijft bestaan totdat het wordt verwijderd met
docker volume rm <name>.
Extra apt-pakketten installeren (optioneel)
Als je systeempakketten in de image nodig hebt (bijvoorbeeld buildtools of medialibraries), stel danOPENCLAW_DOCKER_APT_PACKAGES in voordat je docker-setup.sh uitvoert.
Dit installeert de pakketten tijdens het builden van de image, zodat ze blijven bestaan
zelfs als de container wordt verwijderd.
Voorbeeld:
- Dit accepteert een door spaties gescheiden lijst van apt-pakketnamen.
- Als je
OPENCLAW_DOCKER_APT_PACKAGESwijzigt, voerdocker-setup.shopnieuw uit om de image opnieuw te bouwen.
Power-user / volledig uitgeruste container (opt-in)
De standaard Docker-image is security-first en draait als de niet-rootnode-gebruiker. Dit houdt het aanvalsoppervlak klein, maar betekent:
- geen installatie van systeempakketten tijdens runtime
- standaard geen Homebrew
- geen gebundelde Chromium/Playwright-browsers
- Behoud
/home/nodezodat browserdownloads en toolcaches behouden blijven:
- Bak systeemafhankelijkheden in de image (herhaalbaar + persistent):
- Installeer Playwright-browsers zonder
npx(vermijdt npm override-conflicten):
OPENCLAW_DOCKER_APT_PACKAGES in plaats van --with-deps tijdens runtime te gebruiken.
- Behoud Playwright-browserdownloads:
- Stel
PLAYWRIGHT_BROWSERS_PATH=/home/node/.cache/ms-playwrightindocker-compose.ymlin. - Zorg dat
/home/nodebehouden blijft viaOPENCLAW_HOME_VOLUME, of mount/home/node/.cache/ms-playwrightviaOPENCLAW_EXTRA_MOUNTS.
Rechten + EACCES
De image draait alsnode (uid 1000). Als je permissiefouten ziet op
/home/node/.openclaw, zorg er dan voor dat je host bind mounts eigendom zijn van uid 1000.
Voorbeeld (Linux-host):
Snellere rebuilds (aanbevolen)
Om rebuilds te versnellen, orden je Dockerfile zo dat afhankelijkheidslagen gecached worden. Dit voorkomt het opnieuw uitvoeren vanpnpm install tenzij
lockfiles veranderen:
Kanaalinstellingen (optioneel)
Gebruik de CLI-container om kanalen te configureren en herstart daarna indien nodig de gateway. WhatsApp (QR):OpenAI Codex OAuth (headless Docker)
Als je OpenAI Codex OAuth kiest in de wizard, opent deze een browser-URL en probeert een callback vast te leggen ophttp://127.0.0.1:1455/auth/callback. In Docker- of headless-opstellingen
kan die callback een browserfout tonen. Kopieer de volledige redirect-URL waarop je
uitkomt en plak die terug in de wizard om de authenticatie te voltooien.
Health check
E2E smoke test (Docker)
QR-import smoke test (Docker)
Notities
- Gateway bindt standaard aan
lanvoor containergebruik. - Dockerfile CMD gebruikt
--allow-unconfigured; gemounte config metgateway.modeen nietlocalstart nog steeds. Overschrijf CMD om de guard af te dwingen. - De gateway-container is de bron van waarheid voor sessies (
~/.openclaw/agents/<agentId>/sessions/).
Agent Sandbox (host-gateway + Docker-tools)
Verdieping: SandboxingWat het doet
Wanneeragents.defaults.sandbox is ingeschakeld, draaien niet-hoofdsessies tools binnen
een Docker-container. De gateway blijft op je host, maar de tooluitvoering is geïsoleerd:
- scope: standaard
"agent"(één container + werkruimte per agent) - scope:
"session"voor per-sessie-isolatie - per-scope werkruimtemap gemount op
/workspace - optionele toegang tot agent-werkruimte (
agents.defaults.sandbox.workspaceAccess) - allow/deny-toolbeleid (deny wint)
- inkomende media wordt gekopieerd naar de actieve sandbox-werkruimte (
media/inbound/*) zodat tools het kunnen lezen (metworkspaceAccess: "rw"komt dit in de agent-werkruimte terecht)
scope: "shared" schakelt isolatie tussen sessies uit. Alle sessies delen
één container en één werkruimte.
Per-agent sandboxprofielen (multi-agent)
Als je multi-agent routing gebruikt, kan elke agent sandbox- en toolinstellingen overschrijven:agents.list[].sandbox en agents.list[].tools (plus agents.list[].tools.sandbox.tools). Dit laat je
gemengde toegangsniveaus in één gateway draaien:
- Volledige toegang (persoonlijke agent)
- Alleen-lezen tools + alleen-lezen werkruimte (familie/werkagent)
- Geen filesystem/shell-tools (publieke agent)
Standaardgedrag
- Image:
openclaw-sandbox:bookworm-slim - Eén container per agent
- Toegang tot agent-werkruimte:
workspaceAccess: "none"(standaard) gebruikt~/.openclaw/sandboxes"ro"houdt de sandbox-werkruimte op/workspaceen mount de agent-werkruimte alleen-lezen op/agent(schakeltwrite/edit/apply_patchuit)"rw"mount de agent-werkruimte lees/schrijf op/workspace
- Automatisch opruimen: inactief > 24u OF leeftijd > 7d
- Netwerk: standaard
none(expliciet opt-in als je egress nodig hebt) - Standaard toegestaan:
exec,process,read,write,edit,sessions_list,sessions_history,sessions_send,sessions_spawn,session_status - Standaard geweigerd:
browser,canvas,nodes,cron,discord,gateway
Sandboxing inschakelen
Als je van plan bent pakketten te installeren insetupCommand, let dan op:
- Standaard
docker.networkis"none"(geen egress). readOnlyRoot: trueblokkeert pakketinstallaties.usermoet root zijn voorapt-get(laatuserweg of steluser: "0:0"in). OpenClaw maakt containers automatisch opnieuw aan wanneersetupCommand(of docker-config) verandert, tenzij de container recent is gebruikt (binnen ~5 minuten). Hete containers loggen een waarschuwing met het exacteopenclaw sandbox recreate ...-commando.
agents.defaults.sandbox.docker:
network, user, pidsLimit, memory, memorySwap,
cpus, ulimits, seccompProfile, apparmorProfile, dns,
extraHosts.
Multi-agent: overschrijf agents.defaults.sandbox.{docker,browser,prune}.* per agent via agents.list[].sandbox.{docker,browser,prune}.*
(genegeerd wanneer agents.defaults.sandbox.scope / agents.list[].sandbox.scope "shared" is).
De standaard sandbox-image bouwen
openclaw-sandbox:bookworm-slim met Dockerfile.sandbox.
Sandbox common image (optioneel)
Als je een sandbox-image wilt met veelgebruikte buildtooling (Node, Go, Rust, enz.), bouw dan de common image:openclaw-sandbox-common:bookworm-slim. Om deze te gebruiken:
Sandbox-browserimage
Om de browser-tool binnen de sandbox te draaien, bouw je de browser-image:openclaw-sandbox-browser:bookworm-slim met
Dockerfile.sandbox-browser. De container draait Chromium met CDP ingeschakeld en
een optionele noVNC-observer (headful via Xvfb).
Notities:
- Headful (Xvfb) vermindert botblokkering ten opzichte van headless.
- Headless kan nog steeds worden gebruikt door
agents.defaults.sandbox.browser.headless=truein te stellen. - Geen volledige desktopomgeving (GNOME) nodig; Xvfb levert het display.
- een sandbox-browsercontrol-URL (voor de
browser-tool) - een noVNC-URL (indien ingeschakeld en headless=false)
browser toe
(en verwijder het uit deny), anders blijft de tool geblokkeerd.
Opruimregels (agents.defaults.sandbox.prune) zijn ook van toepassing op browsercontainers.
Aangepaste sandbox-image
Bouw je eigen image en wijs de config ernaar:Toolbeleid (allow/deny)
denywint vanallow.- Als
allowleeg is: alle tools (behalve deny) zijn beschikbaar. - Als
allowniet leeg is: alleen tools inallowzijn beschikbaar (minus deny).
Opruimstrategie
Twee knoppen:prune.idleHours: verwijder containers die X uur niet zijn gebruikt (0 = uitschakelen)prune.maxAgeDays: verwijder containers ouder dan X dagen (0 = uitschakelen)
- Houd drukke sessies, maar begrens de levensduur:
idleHours: 24,maxAgeDays: 7 - Nooit opruimen:
idleHours: 0,maxAgeDays: 0
Beveiligingsnotities
- Harde isolatie geldt alleen voor tools (exec/read/write/edit/apply_patch).
- Alleen-host-tools zoals browser/camera/canvas zijn standaard geblokkeerd.
- Toestaan van
browserin de sandbox doorbreekt isolatie (browser draait op de host).
Problemen oplossen
- Image ontbreekt: bouw met
scripts/sandbox-setup.shof stelagents.defaults.sandbox.docker.imagein. - Container draait niet: wordt automatisch per sessie aangemaakt wanneer nodig.
- Permissiefouten in sandbox: stel
docker.userin op een UID:GID die overeenkomt met het eigendom van je gemounte werkruimte (of chown de werkruimtemap). - Aangepaste tools niet gevonden: OpenClaw voert commando’s uit met
sh -lc(login shell), die/etc/profilesourced en mogelijk PATH reset. Steldocker.env.PATHin om je aangepaste toolpaden vooraan toe te voegen (bijv./custom/bin:/usr/local/share/npm-global/bin), of voeg een script toe onder/etc/profile.d/in je Dockerfile.