Is Docker geschikt voor mij?
- Ja: je wilt een geïsoleerde, wegwerpbare Gateway-omgeving of OpenClaw uitvoeren op een host zonder lokale installaties.
- Nee: je draait op je eigen machine en wilt gewoon de snelste ontwikkelloop. Gebruik in plaats daarvan de normale installatiestroom.
- Opmerking over sandboxing: de standaard sandbox-backend gebruikt Docker wanneer sandboxing is ingeschakeld, maar sandboxing staat standaard uit en vereist niet dat de volledige Gateway in Docker draait. SSH- en OpenShell-sandbox-backends zijn ook beschikbaar. Zie Sandboxing.
Vereisten
- Docker Desktop (of Docker Engine) + Docker Compose v2
- Minimaal 2 GB RAM voor het bouwen van de image (
pnpm installkan op hosts met 1 GB door OOM worden gestopt met exit 137) - Genoeg schijfruimte voor images en logs
- Als je op een VPS/openbare host draait, bekijk dan
Beveiligingsverharding voor netwerkblootstelling,
vooral het Docker
DOCKER-USER-firewallbeleid.
Gecontaineriseerde Gateway
Build the image
openclaw/openclaw voor hosts die Docker Hub verkiezen:ghcr.io/openclaw/openclaw of openclaw/openclaw. Vermijd community-
mirrors op Docker Hub, omdat OpenClaw hun releasetiming, rebuilds of retentiebeleid
niet beheert. Veelgebruikte officiële tags: main, latest,
<version> (bijv. 2026.2.26) en bètaversies zoals
2026.2.26-beta.1. Bèta-tags verplaatsen latest of main niet.Airgapped rerun
--offline controleert of OPENCLAW_IMAGE al lokaal bestaat, schakelt
impliciete Compose-pulls en builds uit en voert daarna de normale setupflow uit,
zoals .env-synchronisatie, permissiecorrecties, onboarding, synchronisatie van
Gateway-configuratie en Compose-startup.Als OPENCLAW_SANDBOX=1, controleert offline setup ook de geconfigureerde standaard-
en actieve per-agent sandbox-images op de daemon achter
OPENCLAW_DOCKER_SOCKET. Docker-backed browser-images moeten ook het huidige
OpenClaw-browsercontractlabel dragen. Wanneer een vereiste image ontbreekt of
incompatibel is, stopt setup zonder de sandboxconfiguratie te wijzigen in plaats van
succes te melden met een onbruikbare sandbox.Complete onboarding
- vragen om provider-API-sleutels
- een Gateway-token genereren en naar
.envschrijven - de map voor de geheime sleutel van het auth-profiel aanmaken
- de Gateway starten via Docker Compose
openclaw-gateway. openclaw-cli is bedoeld voor commando’s die je uitvoert nadat
de Gateway-container al bestaat.Open the Control UI
http://127.0.0.1:18789/ in je browser en plak het geconfigureerde
gedeelde geheim in Settings. Het setupscript schrijft standaard een token naar .env;
als je de containerconfiguratie wijzigt naar wachtwoordauthenticatie, gebruik dan dat
wachtwoord.URL opnieuw nodig?Handmatige flow
Als je liever elke stap zelf uitvoert in plaats van het setupscript te gebruiken:docker compose uit vanuit de repo-root. Als je OPENCLAW_EXTRA_MOUNTS
of OPENCLAW_HOME_VOLUME hebt ingeschakeld, schrijft het setupscript docker-compose.extra.yml;
neem dit op na elk standaard override-bestand, bijvoorbeeld
-f docker-compose.yml -f docker-compose.override.yml -f docker-compose.extra.yml
wanneer beide override-bestanden bestaan.openclaw-cli de netwerknamespace van openclaw-gateway deelt, is het een
tool voor na het starten. Voer vóór docker compose up -d openclaw-gateway onboarding
en configschrijfacties tijdens setup uit via openclaw-gateway met
--no-deps --entrypoint node.Omgevingsvariabelen
Het setupscript accepteert deze optionele omgevingsvariabelen:| Variabele | Doel |
|---|---|
OPENCLAW_IMAGE | Gebruik een externe image in plaats van lokaal te bouwen |
OPENCLAW_IMAGE_APT_PACKAGES | Installeer extra apt-pakketten tijdens build (spatiegescheiden) |
OPENCLAW_IMAGE_PIP_PACKAGES | Installeer extra Python-pakketten tijdens build (spatiegescheiden) |
OPENCLAW_EXTENSIONS | Installeer Plugin-afhankelijkheden vooraf tijdens build (spatiegescheiden namen) |
OPENCLAW_DOCKER_BUILD_NODE_OPTIONS | Overschrijf de Node-opties voor de lokale bron-build |
OPENCLAW_DOCKER_BUILD_TSDOWN_MAX_OLD_SPACE_MB | Overschrijf de tsdown-heap voor de lokale bron-build in MB |
OPENCLAW_DOCKER_BUILD_SKIP_DTS | Sla declaration-output over tijdens runtime-only lokale image-builds |
OPENCLAW_EXTRA_MOUNTS | Extra host-bindmounts (komma-gescheiden source:target[:opts]) |
OPENCLAW_HOME_VOLUME | Bewaar /home/node in een benoemd Docker-volume |
OPENCLAW_SANDBOX | Kies voor sandbox-bootstrap (1, true, yes, on) |
OPENCLAW_SKIP_ONBOARDING | Sla de interactieve onboarding-stap over (1, true, yes, on) |
OPENCLAW_DOCKER_SOCKET | Overschrijf het Docker-socketpad |
OPENCLAW_DISABLE_BONJOUR | Schakel Bonjour/mDNS-advertising uit (standaard 1 voor Docker) |
OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS | Schakel bindmount-overlays voor gebundelde Plugin-bron uit |
OTEL_EXPORTER_OTLP_ENDPOINT | Gedeeld OTLP/HTTP-collector-eindpunt voor OpenTelemetry-export |
OTEL_EXPORTER_OTLP_*_ENDPOINT | Signaalspecifieke OTLP-eindpunten voor traces, metrics of logs |
OTEL_EXPORTER_OTLP_PROTOCOL | Overschrijving van OTLP-protocol. Alleen http/protobuf wordt vandaag ondersteund |
OTEL_SERVICE_NAME | Servicenaam gebruikt voor OpenTelemetry-resources |
OTEL_SEMCONV_STABILITY_OPT_IN | Kies voor de nieuwste experimentele semantische GenAI-attributen |
OPENCLAW_OTEL_PRELOADED | Sla het starten van een tweede OpenTelemetry SDK over wanneer er al een is voorgeladen |
brew draait; die afhankelijkheden moeten door een custom image worden geleverd
of handmatig worden geïnstalleerd. Gebruik voor afhankelijkheden die beschikbaar zijn als Debian-pakketten
OPENCLAW_IMAGE_APT_PACKAGES tijdens het bouwen van de image. De legacy naam
OPENCLAW_DOCKER_APT_PACKAGES wordt nog steeds geaccepteerd.
Gebruik voor Python-afhankelijkheden OPENCLAW_IMAGE_PIP_PACKAGES. Dit voert
python3 -m pip install --break-system-packages uit tijdens het bouwen van de image, dus pin
pakketversies en gebruik alleen pakketindexen die je vertrouwt.
Bron-builds zetten OPENCLAW_DOCKER_BUILD_NODE_OPTIONS standaard op
--max-old-space-size=8192 en laten
OPENCLAW_DOCKER_BUILD_TSDOWN_MAX_OLD_SPACE_MB unset zodat de tsdown-wrapper
containergeheugenlimieten kan respecteren. Ze zetten ook standaard
OPENCLAW_DOCKER_BUILD_SKIP_DTS=1, omdat runtime-images declaration-
bestanden na build opschonen. Als Docker ResourceExhausted, cannot allocate memory meldt of tijdens tsdown afbreekt, verhoog dan de geheugenlimiet van de Docker-builder of
probeer opnieuw met kleinere expliciete heaps, bijvoorbeeld
OPENCLAW_DOCKER_BUILD_NODE_OPTIONS=--max-old-space-size=4096 OPENCLAW_DOCKER_BUILD_TSDOWN_MAX_OLD_SPACE_MB=4096.
Maintainers kunnen gebundelde Plugin-bron testen tegen een packaged image door
één Plugin-bronmap over het packaged bronpad te mounten, bijvoorbeeld
OPENCLAW_EXTRA_MOUNTS=/path/to/fork/extensions/synology-chat:/app/extensions/synology-chat:ro.
Die gemounte bronmap overschrijft de overeenkomende gecompileerde
/app/dist/extensions/synology-chat-bundle voor dezelfde Plugin-id.
Observeerbaarheid
OpenTelemetry-export is uitgaand vanuit de Gateway-container naar je OTLP- collector. Hiervoor is geen gepubliceerde Docker-poort nodig. Als je de image lokaal bouwt en de gebundelde OpenTelemetry-exporter binnen de image beschikbaar wilt hebben, neem dan de runtime-afhankelijkheden op:@openclaw/diagnostics-otel Plugin vanuit ClawHub in
packaged Docker-installaties voordat je export inschakelt. Custom source-built images kunnen
nog steeds de lokale Plugin-bron opnemen met
OPENCLAW_EXTENSIONS=diagnostics-otel. Om export in te schakelen, sta de
diagnostics-otel Plugin toe en schakel deze in de configuratie in, en zet daarna
diagnostics.otel.enabled=true of gebruik het configuratievoorbeeld in OpenTelemetry
export. Collector-authheaders worden geconfigureerd via
diagnostics.otel.headers, niet via Docker-omgevingsvariabelen.
Prometheus-metrics gebruiken de al gepubliceerde Gateway-poort. Installeer
clawhub:@openclaw/diagnostics-prometheus, schakel de
diagnostics-prometheus Plugin in en scrape daarna:
/metrics-poort of niet-geauthenticeerd reverse-proxy-pad bloot. Zie
Prometheus-metrics.
Health checks
Containerprobe-eindpunten (geen authenticatie vereist):HEALTHCHECK die /healthz pingt.
Als controles blijven mislukken, markeert Docker de container als unhealthy en
kunnen orkestratiesystemen deze opnieuw starten of vervangen.
Geauthenticeerde diepgaande statusmomentopname:
LAN versus loopback
scripts/docker/setup.sh gebruikt standaard OPENCLAW_GATEWAY_BIND=lan, zodat hosttoegang tot
http://127.0.0.1:18789 werkt met Docker-portpublicatie.
lan(standaard): hostbrowser en host-CLI kunnen de gepubliceerde Gateway-poort bereiken.loopback: alleen processen binnen de netwerknaamruimte van de container kunnen de Gateway rechtstreeks bereiken.
gateway.bind (lan / loopback / custom /
tailnet / auto), geen hostaliassen zoals 0.0.0.0 of 127.0.0.1.Lokale providers op host
Wanneer OpenClaw in Docker draait, is127.0.0.1 binnen de container de container
zelf, niet je hostmachine. Gebruik host.docker.internal voor AI-providers die
op de host draaien:
| Aanbieder | Standaard-URL op host | Docker-installatie-URL |
|---|---|---|
| LM Studio | http://127.0.0.1:1234 | http://host.docker.internal:1234 |
| Ollama | http://127.0.0.1:11434 | http://host.docker.internal:11434 |
docker-compose.yml koppelt
host.docker.internal aan Docker’s host-Gateway voor Linux Docker Engine.
Docker Desktop biedt dezelfde hostnaam al op macOS en Windows.
Hostservices moeten ook luisteren op een adres dat bereikbaar is vanuit Docker:
docker run-opdracht gebruikt, voeg dan zelf
dezelfde hostkoppeling toe, bijvoorbeeld
--add-host=host.docker.internal:host-gateway.
Claude CLI-backend in Docker
De officiële OpenClaw Docker-image installeert Claude Code niet vooraf. Installeer Claude Code en log erop in binnen de containergebruiker die OpenClaw uitvoert, en bewaar daarna die container-home zodat image-upgrades het binaire bestand of de Claude-authenticatiestatus niet wissen. Schakel voor nieuwe Docker-installaties een persistent/home/node-volume in
voordat je de installatie uitvoert:
.env-waarden opnieuw voordat je setup opnieuw uitvoert. Het setupscript
leest .env niet zelf; het herschrijft .env op basis van de huidige shell en
standaardwaarden. Voer voor de gegenereerde .env uit:
.env waarden bevat die je shell niet kan sourcen, exporteer dan eerst
handmatig de bestaande waarden opnieuw waarop je vertrouwt, zoals OPENCLAW_IMAGE,
poorten, bindmodus, aangepaste paden, OPENCLAW_EXTRA_MOUNTS, sandbox en
instellingen om onboarding over te slaan. De gegenereerde overlay mount het
homevolume voor zowel openclaw-gateway als openclaw-cli.
Voer de resterende opdrachten uit met de gegenereerde Compose-overlay, zodat
beide services de persistente home mounten. Als je installatie ook
docker-compose.override.yml gebruikt, voeg die dan toe vóór
docker-compose.extra.yml.
Installeer Claude Code in die persistente home:
claude-binaire bestand onder
/home/node/.local/bin/claude. Laat OpenClaw dat containerpad gebruiken:
claude-cli-backend gebruiken:
OPENCLAW_HOME_VOLUME behoudt de native Claude Code-installatie onder
/home/node/.local/bin en /home/node/.local/share/claude, plus Claude Code-
instellingen en authenticatiestatus onder /home/node/.claude en
/home/node/.claude.json. Alleen /home/node/.openclaw persistent maken is niet
genoeg om Claude CLI opnieuw te gebruiken. Als je OPENCLAW_EXTRA_MOUNTS gebruikt
in plaats van een homevolume, mount dan al die Claude-paden in beide Docker-services.
Bonjour / mDNS
Docker-bridgenetwerken sturen Bonjour/mDNS-multicast (224.0.0.251:5353) meestal
niet betrouwbaar door. De meegeleverde Compose-installatie gebruikt daarom
standaard OPENCLAW_DISABLE_BONJOUR=1, zodat de Gateway niet in een crash-loop
terechtkomt of herhaaldelijk opnieuw begint met adverteren wanneer de bridge
multicastverkeer laat vallen.
Gebruik de gepubliceerde Gateway-URL, Tailscale of wide-area DNS-SD voor
Docker-hosts. Stel OPENCLAW_DISABLE_BONJOUR=0 alleen in wanneer je draait met
hostnetwerken, macvlan of een ander netwerk waarvan bekend is dat mDNS-multicast
werkt.
Zie Bonjour-detectie voor valkuilen en probleemoplossing.
Opslag en persistentie
Docker Compose bind-mountOPENCLAW_CONFIG_DIR naar /home/node/.openclaw,
OPENCLAW_WORKSPACE_DIR naar /home/node/.openclaw/workspace en
OPENCLAW_AUTH_PROFILE_SECRET_DIR naar /home/node/.config/openclaw, zodat die
paden containervervanging overleven. Wanneer een variabele niet is ingesteld,
valt het meegeleverde docker-compose.yml terug onder ${HOME}, of onder /tmp
wanneer HOME zelf ook ontbreekt. Dat voorkomt dat docker compose up een
volumespecificatie met lege bron uitvoert in kale omgevingen.
Die gemounte configuratiemap is waar OpenClaw het volgende bewaart:
openclaw.jsonvoor gedragsconfiguratieagents/<agentId>/agent/auth-profiles.jsonvoor opgeslagen OAuth/API-key-authenticatie van providers.envvoor runtimegeheimen op basis van omgevingsvariabelen, zoalsOPENCLAW_GATEWAY_TOKEN
OPENCLAW_CONFIG_DIR.
Geïnstalleerde downloadbare Plugins bewaren hun pakketstatus onder de gemounte
OpenClaw-home, zodat Plugin-installatierecords en pakketroots containervervanging
overleven. Het opstarten van de Gateway genereert geen dependency-trees voor
meegeleverde Plugins.
Zie voor volledige persistentiedetails op VM-deployments
Docker-VM-runtime - wat waar behouden blijft.
Hotspots voor schijfgroei: let op media/, sessie-JSONL-bestanden, de
gedeelde SQLite-statusdatabase, pakketroots van geïnstalleerde Plugins en
roterende bestandslogs onder /tmp/openclaw/.
Shellhelpers (optioneel)
InstalleerClawDock voor eenvoudiger dagelijks Docker-beheer:
scripts/shell-helpers/clawdock-helpers.sh, voer dan de bovenstaande installatieopdracht opnieuw uit zodat je lokale helperbestand de nieuwe locatie volgt.
Gebruik daarna clawdock-start, clawdock-stop, clawdock-dashboard, enzovoort.
Voer clawdock-help uit voor alle opdrachten.
Zie ClawDock voor de volledige helperhandleiding.
Agentsandbox inschakelen voor Docker-Gateway
Agentsandbox inschakelen voor Docker-Gateway
docker.sock alleen nadat aan de sandboxvereisten is voldaan. Als
sandboxinstallatie niet kan worden voltooid, zet het script agents.defaults.sandbox.mode
terug naar off. Codex-code-modusbeurten blijven beperkt tot Codex
workspace-write terwijl de OpenClaw-sandbox actief is; mount de
host-Docker-socket niet in agentsandboxcontainers.Automatisering / CI (niet-interactief)
Automatisering / CI (niet-interactief)
-T:Beveiligingsopmerking voor gedeeld netwerk
Beveiligingsopmerking voor gedeeld netwerk
openclaw-cli gebruikt network_mode: "service:openclaw-gateway", zodat CLI-
opdrachten de Gateway via 127.0.0.1 kunnen bereiken. Behandel dit als een
gedeelde vertrouwensgrens. De Compose-configuratie verwijdert NET_RAW/NET_ADMIN
en schakelt no-new-privileges in op zowel openclaw-gateway als openclaw-cli.Docker Desktop-DNS-fouten in openclaw-cli
Docker Desktop-DNS-fouten in openclaw-cli
openclaw-cli-sidecar op het gedeelde netwerk nadat NET_RAW is verwijderd,
wat zichtbaar wordt als EAI_AGAIN tijdens npm-ondersteunde opdrachten zoals
openclaw plugins install. Behoud het standaard geharde Compose-bestand voor
normale Gateway-werking. De lokale override hieronder versoepelt de
beveiligingshouding van de CLI-container door Docker’s standaardcapabilities
te herstellen, dus gebruik deze alleen voor de eenmalige CLI-opdracht die
toegang tot het pakketregister nodig heeft, niet als je standaard
Compose-aanroep:openclaw-cli-container hebt gemaakt, maak deze dan
opnieuw met dezelfde override. docker compose exec en docker exec kunnen
Linux-capabilities niet wijzigen op een container die al is aangemaakt.Rechten en EACCES
Rechten en EACCES
node (uid 1000). Als je permissiefouten ziet op
/home/node/.openclaw, zorg er dan voor dat je host-bindmounts eigendom zijn
van uid 1000:blocked plugin candidate: suspicious ownership (... uid=1000, expected uid=0 or root)
gevolgd door plugin present but blocked. Dat betekent dat de proces-uid en de
eigenaar van de gemounte Plugin-map niet overeenkomen. Geef de voorkeur aan
het draaien van de container als de standaard-uid 1000 en het herstellen van
het eigendom van de bindmount. Voer alleen chown uit op
/path/to/openclaw-config/npm naar root:root als je OpenClaw bewust
langdurig als root draait.Snellere rebuilds
Snellere rebuilds
pnpm install opnieuw wordt uitgevoerd, tenzij lockfiles veranderen:Containeropties voor power-users
Containeropties voor power-users
node. Voor een uitgebreidere container:/home/nodebehouden:export OPENCLAW_HOME_VOLUME="openclaw_home"- Systeemafhankelijkheden inbouwen:
export OPENCLAW_IMAGE_APT_PACKAGES="git curl jq" - Python-afhankelijkheden inbouwen:
export OPENCLAW_IMAGE_PIP_PACKAGES="requests==2.32.5 humanize==4.14.0" - Playwright Chromium inbouwen:
export OPENCLAW_INSTALL_BROWSER=1 - Of Playwright-browsers installeren in een blijvend volume:
- Browserdownloads behouden: gebruik
OPENCLAW_HOME_VOLUMEofOPENCLAW_EXTRA_MOUNTS. OpenClaw detecteert op Linux automatisch de door Playwright beheerde Chromium van de Docker-image.
OpenAI Codex OAuth (headless Docker)
OpenAI Codex OAuth (headless Docker)
Metadata van de basisimage
Metadata van de basisimage
node:24-bookworm-slim en bevat tini als entrypoint-initproces (PID 1), zodat zombieprocessen worden opgeruimd en signalen correct worden verwerkt in langlopende containers. De image publiceert OCI-basisimage-annotaties, waaronder org.opencontainers.image.base.name,
org.opencontainers.image.source en andere. De Node-basisdigest wordt
vernieuwd via Dependabot-PR’s voor Docker-basisimages; releasebuilds voeren geen
distro-upgradelaag uit. Zie
OCI-imageannotaties.Draaien op een VPS?
Zie Hetzner (Docker-VPS) en Docker-VM-runtime voor gedeelde VM-implementatiestappen, waaronder binaries inbouwen, persistentie en updates.Agentsandbox
Wanneeragents.defaults.sandbox is ingeschakeld met de Docker-backend, voert de Gateway
agenttooluitvoering (shell, bestanden lezen/schrijven, enzovoort) uit in geïsoleerde Docker-
containers, terwijl de Gateway zelf op de host blijft. Dit geeft je een harde scheiding
rond niet-vertrouwde of multi-tenant agentsessies zonder de volledige Gateway in een
container te plaatsen.
Het sandboxbereik kan per agent (standaard), per sessie of gedeeld zijn. Elk bereik
krijgt een eigen workspace die is aangekoppeld op /workspace. Je kunt ook
toestaan/weigeren-toolbeleid, netwerkisolatie, resourcelimieten en browsercontainers
configureren.
Voor de volledige configuratie, images, beveiligingsnotities en multi-agentprofielen, zie:
- Sandboxing — volledige sandboxreferentie
- OpenShell — interactieve shelltoegang tot sandboxcontainers
- Multi-agent sandbox en tools — overschrijvingen per agent
Snel inschakelen
docker build-opdrachten.
Problemen oplossen
Image ontbreekt of sandboxcontainer start niet
Image ontbreekt of sandboxcontainer start niet
scripts/sandbox-setup.sh
(source checkout) of de inline docker build-opdracht uit Sandboxing § Images en installatie (npm-installatie),
of stel agents.defaults.sandbox.docker.image in op je aangepaste image.
Containers worden op aanvraag automatisch per sessie aangemaakt.Machtigingsfouten in sandbox
Machtigingsfouten in sandbox
docker.user in op een UID:GID die overeenkomt met het eigenaarschap van je aangekoppelde workspace,
of wijzig de eigenaar van de workspacemap met chown.Aangepaste tools niet gevonden in sandbox
Aangepaste tools niet gevonden in sandbox
sh -lc (login-shell), die
/etc/profile inleest en PATH mogelijk opnieuw instelt. Stel docker.env.PATH in om je
aangepaste toolpaden vooraan te zetten, of voeg een script toe onder /etc/profile.d/ in je Dockerfile.OOM-kill tijdens imagebuild (exit 137)
OOM-kill tijdens imagebuild (exit 137)
Niet geautoriseerd of koppeling vereist in Control UI
Niet geautoriseerd of koppeling vereist in Control UI
Gatewaydoel toont ws://172.x.x.x of koppelingsfouten vanuit Docker CLI
Gatewaydoel toont ws://172.x.x.x of koppelingsfouten vanuit Docker CLI
Gerelateerd
- Installatieoverzicht — alle installatiemethoden
- Podman — Podman-alternatief voor Docker
- ClawDock — communityopstelling met Docker Compose
- Updaten — OpenClaw up-to-date houden
- Configuratie — Gatewayconfiguratie na installatie