agents.defaults.sandbox is ingeschakeld, maar sandboxing is standaard uitgeschakeld en vereist niet dat de Gateway zelf in Docker wordt uitgevoerd. SSH- en OpenShell-sandboxbackends zijn ook beschikbaar; zie Sandboxing.
Host je meerdere gebruikers? Zie Multitenanthosting voor het model met één cel per tenant.
Vereisten
- Docker Desktop (of Docker Engine) + Docker Compose v2
- Minstens 2 GB RAM voor het bouwen van de image (
pnpm installkan op hosts met 1 GB wegens onvoldoende geheugen worden beëindigd met afsluitcode 137) - Voldoende schijfruimte voor images en logboeken
- Controleer op een VPS/openbare host Beveiligingsversterking voor netwerktoegang, met name de Docker-firewallketen
DOCKER-USER
Gateway in een container
Bouw de image
openclaw:local. Zo gebruik je in plaats daarvan een vooraf gebouwde image:openclaw/openclaw:ghcr.io/openclaw/openclaw of openclaw/openclaw en vermijd niet-officiële mirrors, omdat die niet hetzelfde releaseschema of bewaarbeleid als OpenClaw hanteren. Versiespecifieke tags omvatten releases zoals 2026.2.26 en prereleases zoals 2026.2.26-beta.1. Stabiele releases verplaatsen latest en main; Gateway-releases voor de voorgaande maand verplaatsen alleen extended-stable. Varianten omvatten slim, main-slim, extended-stable-slim, latest-browser, main-browser en extended-stable-browser. De standaardimages bevatten de plugins codex en diagnostics-otel. Er wordt ook een variant -browser geleverd waarin Chromium is ingebouwd, wat handig is voor de tool browser in een sandbox zonder dat Playwright bij de eerste uitvoering hoeft te worden geïnstalleerd.Opnieuw uitvoeren zonder netwerkverbinding
--offline controleert of OPENCLAW_IMAGE al lokaal bestaat, schakelt impliciete pulls/builds van Compose uit en voert vervolgens de normale stroom uit: synchronisatie van .env, correcties van machtigingen, onboarding, synchronisatie van de Gateway-configuratie en het starten van Compose.Als OPENCLAW_SANDBOX=1, controleert de offline-installatie ook de geconfigureerde standaard- en agentspecifieke sandboximages op de daemon achter OPENCLAW_DOCKER_SOCKET, inclusief het browsercontractlabel op Docker-gebaseerde browserimages. Als een vereiste image ontbreekt of verouderd is, wordt de installatie afgesloten zonder de sandboxconfiguratie te wijzigen, in plaats van ten onrechte een geslaagd resultaat te melden.Voltooi de onboarding
- vraagt om API-sleutels van providers
- genereert een Gateway-token en schrijft dit naar
.env - maakt de map voor de geheime sleutel van het authenticatieprofiel
- start de Gateway via Docker Compose
openclaw-gateway (met --no-deps --entrypoint node), omdat openclaw-cli de netwerknaamruimte van de Gateway deelt en pas werkt nadat de Gateway-container bestaat.Open de Control UI
http://127.0.0.1:18789/ en plak het token dat naar .env is geschreven in Settings. Als je de container hebt overgeschakeld op wachtwoordauthenticatie, gebruik dan in plaats daarvan dat wachtwoord.Heb je de URL opnieuw nodig?Handmatige stroom
.git uit. Geef de bronidentiteit door als buildargumenten,
zoals hierboven weergegeven, zodat in het scherm Info van de image de uitgecheckte commit en
één buildtijdstempel worden weergegeven. scripts/docker/setup.sh bepaalt beide waarden en geeft ze
automatisch door.
docker compose uit vanuit de hoofdmap van de repository. Als je OPENCLAW_EXTRA_MOUNTS of OPENCLAW_HOME_VOLUME hebt ingeschakeld, schrijft het installatiescript docker-compose.extra.yml; voeg dit toe na elke docker-compose.override.yml die je zelf beheert, bijvoorbeeld -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.extra.yml.Containerimages upgraden
Wanneer je de OpenClaw-image vervangt maar dezelfde gekoppelde status/configuratie behoudt, voert de nieuwe Gateway vóór gereedheid opstartveilige upgrademigraties en Plugin-convergentie uit. Voor routinematige image-upgrades zou geen afzonderlijke uitvoering vanopenclaw doctor --fix nodig moeten zijn.
Als tijdens het opstarten deze reparaties niet veilig kunnen worden voltooid, wordt de Gateway afgesloten in plaats van
zich als gezond te melden. Met een herstartbeleid kunnen Docker, Podman of Kubernetes aangeven
dat de Gateway-container opnieuw wordt gestart. Behoud het gekoppelde statusvolume en voer vervolgens
dezelfde image eenmaal uit met openclaw doctor --fix als containeropdracht, met
dezelfde status-/configuratiekoppelingen die de Gateway gebruikt:
Omgevingsvariabelen
Optionele variabelen die doorscripts/docker/setup.sh worden geaccepteerd (en, voor de Gateway-container, rechtstreeks door docker-compose.yml):
brew; lever deze afhankelijkheden via een aangepaste image of installeer ze handmatig. Gebruik OPENCLAW_IMAGE_APT_PACKAGES voor afhankelijkheden uit Debian-pakketten en OPENCLAW_IMAGE_PIP_PACKAGES voor Python-afhankelijkheden (voert python3 -m pip install --break-system-packages uit tijdens de build; zet versies daarom vast en gebruik alleen indexen die je vertrouwt).
Als Docker ResourceExhausted of cannot allocate memory meldt, of tijdens tsdown wordt afgebroken, verhoog dan de geheugenlimiet van de Docker-builder of probeer het opnieuw met kleinere expliciete heaps:
Vanuit bron gebouwde images met geselecteerde plugins
OPENCLAW_EXTENSIONS selecteert pluginmanifest-id’s uit de broncheckout;
bestaande namen van bronmappen worden ook geaccepteerd wanneer ze afwijken. De Docker-
build zet de selectie eenmaal om naar bronmappen, installeert productie-
afhankelijkheden en compileert, wanneer een geselecteerde plugin afzonderlijk wordt gepubliceerd met
openclaw.build.bundledDist: false, de runtime ervan in de gebundelde
hoofddistributie. Deze uitsluitend voor Docker bestemde verpakking wijzigt het npm- of ClawHub-
artefactcontract van de plugin niet. Onbekende, ongeldige of dubbelzinnige id’s laten de imagebuild mislukken.
Bekende id’s die alleen voor afhankelijkheden/bronnen dienen, behouden hun bestaande staging van bronnen en afhankelijkheden
zonder een gecompileerde vermelding in de hoofddistributie te krijgen. Een geselecteerde plugin met
geünificeerde buildvermeldingen moet met succes worden gecompileerd; bron- en runtime-uitvoer van
niet-geselecteerde externe plugins worden verwijderd.
Deze opdrachten bouwen bijvoorbeeld afzonderlijke, zelfstandige FakeCo Gateway-images
voor meerdere architecturen voor ClickClack, Slack en Microsoft Teams. ClawRouter maakt
al deel uit van de OpenClaw-hoofdruntime, dus selecteert de ClickClack-image alleen
clickclack. Het expliciete lege browserargument houdt de standaardimage vrij
van Chromium:
--platform linux/arm64 --load of --platform linux/amd64 --load voor één
native lokale build. Uitvoer voor meerdere platforms en bijgevoegde SBOM/herkomstgegevens
vereisen een registry of andere Buildx-uitvoer die attesten behoudt. Inspecteer na
het pushen het manifest en implementeer de onveranderlijke digest in plaats van de
wijzigbare bron-SHA-tag:
OPENCLAW_EXTRA_MOUNTS=/path/to/fork/extensions/synology-chat:/app/extensions/synology-chat:ro. Daarmee wordt de overeenkomstige gecompileerde /app/dist/extensions/synology-chat-bundel voor hetzelfde plugin-id overschreven.
Observeerbaarheid
OpenTelemetry-export verloopt uitgaand vanuit de Gateway-container naar je OTLP-collector; hiervoor hoeft geen Docker-poort te worden gepubliceerd. Zo neem je de gebundelde exporter op in een lokaal gebouwde image:diagnostics-otel al; installeer clawhub:@openclaw/diagnostics-otel alleen zelf als je deze hebt verwijderd. Om export in te schakelen, sta je de plugin diagnostics-otel toe en schakel je deze in de configuratie in. Stel vervolgens diagnostics.otel.enabled=true in (zie het volledige voorbeeld in OpenTelemetry-export). Authenticatieheaders voor de collector worden doorgegeven via diagnostics.otel.headers, niet via Docker-omgevingsvariabelen.
Prometheus-metrieken gebruiken de al gepubliceerde Gateway-poort opnieuw. Installeer clawhub:@openclaw/diagnostics-prometheus, schakel de plugin diagnostics-prometheus in en scrape vervolgens:
/metrics-poort of niet-geverifieerd reverse-proxypad beschikbaar. Zie Prometheus-metrieken.
Statuscontroles
Probe-eindpunten voor containers (geen authenticatie vereist):HEALTHCHECK van de image pingt /healthz; bij herhaalde fouten wordt de container gemarkeerd als unhealthy, zodat orchestrators deze opnieuw kunnen starten of vervangen.
Diepgaande geverifieerde statusmomentopname:
LAN versus loopback
scripts/docker/setup.sh gebruikt standaard OPENCLAW_GATEWAY_BIND=lan, zodat http://127.0.0.1:18789 op de host werkt met Docker-poortpublicatie.
lan(standaard): de 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 de host
Binnen de container verwijst127.0.0.1 naar de container zelf, niet naar de host. Gebruik host.docker.internal voor providers die op de host draaien:
docker-compose.yml wijst host.docker.internal toe aan de host-Gateway op Linux Docker Engine (Docker Desktop biedt dezelfde alias op macOS/Windows). Hostservices moeten luisteren op een adres dat Docker kan bereiken:
docker run? Voeg dan zelf dezelfde toewijzing toe, bijvoorbeeld --add-host=host.docker.internal:host-gateway.
Claude CLI-backend in Docker
De officiële image installeert Claude Code niet vooraf. Installeer deze en meld je aan binnen de gebruikernode van de container. Maak vervolgens die container-home permanent, zodat image-upgrades het binaire bestand of de authenticatiestatus niet wissen.
Schakel voor een nieuwe installatie een permanent /home/node-volume in voordat je de installatie uitvoert:
.env opnieuw — het installatiescript herschrijft .env altijd op basis van de huidige shell en standaardwaarden; het leest het bestand niet zelf:
.env waarden bevat die je shell niet kan inladen, exporteer dan eerst handmatig opnieuw wat je gebruikt (OPENCLAW_IMAGE, poorten, bindmodus, aangepaste paden, OPENCLAW_EXTRA_MOUNTS, sandbox, onboarding overslaan). De gegenereerde overlay koppelt het homevolume voor zowel openclaw-gateway als openclaw-cli; voer de overige opdrachten uit met die overlay (en eerst docker-compose.override.yml, als je die gebruikt):
claude naar /home/node/.local/bin/claude. De
OpenClaw-image bevat /home/node/.local/bin in PATH, zodat de gebundelde
Anthropic-plugin deze zonder overschrijving van de adapterconfiguratie kan vinden.
Meld je aan en verifieer vanuit dezelfde permanente home:
claude-cli-backend:
OPENCLAW_HOME_VOLUME bewaart de native installatie onder /home/node/.local/bin en /home/node/.local/share/claude, plus de instellingen/authenticatie van Claude Code onder /home/node/.claude en /home/node/.claude.json. Alleen /home/node/.openclaw permanent maken is niet voldoende; als je OPENCLAW_EXTRA_MOUNTS gebruikt in plaats van een homevolume, koppel dan al die Claude-paden aan beide services.
Bonjour / mDNS
Docker-bridgenetwerken sturen Bonjour/mDNS-multicast (224.0.0.251:5353) doorgaans niet betrouwbaar door. Wanneer OPENCLAW_DISABLE_BONJOUR niet is ingesteld, schakelt de gebundelde Bonjour-plugin LAN-advertering automatisch uit zodra deze detecteert dat hij in een container draait. Zo blijft hij niet in een crashlus proberen multicast te verzenden die door de bridge wordt verworpen. Stel OPENCLAW_DISABLE_BONJOUR=1 in om dit ongeacht de detectie gedwongen uit te schakelen, of 0 om het gedwongen in te schakelen (alleen bij hostnetwerken, macvlan of een ander netwerk waarvan bekend is dat mDNS-multicast werkt).
Gebruik anders de gepubliceerde Gateway-URL, Tailscale of wide-area DNS-SD voor Docker-hosts. Zie Bonjour-detectie voor aandachtspunten en probleemoplossing.
Opslag en persistentie
Docker Compose koppeltOPENCLAW_CONFIG_DIR aan /home/node/.openclaw, OPENCLAW_WORKSPACE_DIR aan /home/node/.openclaw/workspace en OPENCLAW_AUTH_PROFILE_SECRET_DIR aan /home/node/.config/openclaw, zodat die paden behouden blijven wanneer de container wordt vervangen. Wanneer een variabele niet is ingesteld, valt docker-compose.yml terug op een pad onder ${HOME}, of /tmp als HOME zelf ontbreekt, zodat docker compose up in kale omgevingen nooit een volumespecificatie met een lege bron genereert.
Die gekoppelde configuratiemap bevat:
openclaw.jsonvoor gedragsconfiguratieagents/<agentId>/agent/auth-profiles.jsonvoor opgeslagen OAuth-/API-sleutelauthenticatie van providers.envvoor door de omgeving geleverde runtimegeheimen zoalsOPENCLAW_GATEWAY_TOKEN
OPENCLAW_CONFIG_DIR.
Geïnstalleerde downloadbare plugins slaan pakketstatus op onder de gekoppelde OpenClaw-home, zodat installatierecords en pakkethoofdmappen behouden blijven wanneer de container wordt vervangen; bij het starten van de Gateway worden afhankelijkheidsstructuren van gebundelde plugins niet opnieuw gegenereerd.
Zie Docker VM-runtime - Wat blijft waar behouden voor volledige details over persistentie van VM’s.
Belangrijkste bronnen van schijfgroei: media/, SQLite-databases per agent, verouderde JSONL-transcripten van sessies, de gedeelde SQLite-statusdatabase, pakketbasismappen van geïnstalleerde plugins en roterende bestandslogboeken onder /tmp/openclaw/.
Shell-hulpfuncties (optioneel)
Installeer ClawDock voor kortere dagelijkse opdrachten:scripts/shell-helpers/clawdock-helpers.sh hebt geïnstalleerd, voer je de bovenstaande opdracht opnieuw uit, zodat je lokale hulpfunctie de huidige locatie volgt. Gebruik daarna clawdock-start, clawdock-stop, clawdock-dashboard, enzovoort (voer clawdock-help uit voor de volledige lijst).
Agentsandbox inschakelen voor Docker-gateway
Agentsandbox inschakelen voor Docker-gateway
docker.sock pas nadat aan de sandboxvereisten is voldaan. Als de sandboxconfiguratie niet kan worden voltooid, stelt het agents.defaults.sandbox.mode opnieuw in op off. De Codex-codemodus is uitgeschakeld voor beurten waarin de OpenClaw-sandbox actief is (zie Sandboxing § Docker-backend); koppel de Docker-socket van de host nooit aan 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.DNS-fouten van Docker Desktop in openclaw-cli
DNS-fouten van Docker Desktop in openclaw-cli
openclaw-cli-sidecar op het gedeelde netwerk nadat NET_RAW is verwijderd. Dit verschijnt als EAI_AGAIN tijdens npm-gebaseerde opdrachten zoals openclaw plugins install. Gebruik voor normaal bedrijf het standaard geharde Compose-bestand. De onderstaande override herstelt de standaardmogelijkheden uitsluitend voor de openclaw-cli-container — gebruik deze voor de eenmalige opdracht die toegang tot het register nodig heeft, niet als je standaardaanroep:openclaw-cli-container hebt gemaakt, maak je deze opnieuw met dezelfde override — docker compose exec/docker exec kunnen de Linux-mogelijkheden van een reeds gemaakte container niet wijzigen.Machtigingen en EACCES
Machtigingen en EACCES
node (uid 1000). Als je machtigingsfouten ziet voor /home/node/.openclaw, zorg er dan voor dat je bind mounts op de host eigendom zijn van uid 1000:blocked plugin candidate: suspicious ownership (... uid=1000, expected uid=0 or root) gevolgd door plugin present but blocked — de proces-uid en de eigenaar van de gekoppelde plug-inmap komen niet overeen. Voer bij voorkeur uit met de standaard-uid 1000 en corrigeer het eigendom van de bind mount. Wijzig het eigendom van /path/to/openclaw-config/npm alleen naar root:root als je OpenClaw bewust langdurig als root uitvoert.Snellere herbouwprocessen
Snellere herbouwprocessen
pnpm install niet opnieuw wordt uitgevoerd, tenzij lockfiles wijzigen:Containeropties voor ervaren gebruikers
Containeropties voor ervaren gebruikers
node. Voor een container met meer functies:/home/nodepermanent opslaan:export OPENCLAW_HOME_VOLUME="openclaw_home"- Systeemafhankelijkheden in de image opnemen:
export OPENCLAW_IMAGE_APT_PACKAGES="git curl jq" - Python-afhankelijkheden in de image opnemen:
export OPENCLAW_IMAGE_PIP_PACKAGES="requests==2.32.5 humanize==4.14.0" - Playwright Chromium in de image opnemen:
export OPENCLAW_INSTALL_BROWSER=1, of gebruik de officiële-browser-imagetag - Of Playwright-browsers in een permanent volume installeren:
- Browserdownloads permanent opslaan: gebruik
OPENCLAW_HOME_VOLUMEofOPENCLAW_EXTRA_MOUNTS. OpenClaw detecteert op Linux automatisch het door Playwright beheerde Chromium van de image.
OpenAI Codex OAuth (headless Docker)
OpenAI Codex OAuth (headless Docker)
Metadata van de basisimage
Metadata van de basisimage
node:24-bookworm-slim en voert tini uit als PID 1, zodat zombieprocessen worden opgeruimd en signalen correct worden afgehandeld in langlopende containers. De image publiceert OCI-annotaties voor basisimages, waaronder org.opencontainers.image.base.name en org.opencontainers.image.source. Dependabot vernieuwt de vastgezette digest van de Node-basisimage; releasebuilds voeren geen afzonderlijke upgrade van de distributielaag uit. Zie OCI-imageannotaties.Uitvoeren op een VPS?
Zie Hetzner (Docker-VPS) en Docker-VM-runtime voor implementatiestappen voor een gedeelde VM, waaronder het opnemen van binaire bestanden in de image, permanente opslag en updates.Agentsandbox
Wanneeragents.defaults.sandbox is ingeschakeld met de Docker-backend, voert de Gateway agenttools (shell, bestanden lezen/schrijven enzovoort) uit in geïsoleerde Docker-containers, terwijl de Gateway zelf op de host blijft — een harde scheiding rond niet-vertrouwde agentsessies of agentsessies met meerdere tenants, zonder de volledige Gateway in een container uit te voeren.
Het sandboxbereik kan per agent (standaard), per sessie of gedeeld zijn; elk bereik krijgt een eigen werkruimte die op /workspace wordt gekoppeld. Je kunt ook beleid voor toegestane/geweigerde tools, netwerkisolatie, resourcelimieten en browsercontainers configureren.
Voor de volledige configuratie, images, beveiligingsopmerkingen en profielen met meerdere agents:
- Sandboxing — volledige sandboxreferentie
- OpenShell — interactieve shelltoegang tot sandboxcontainers
- Sandbox en tools voor meerdere agents — overrides 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 (broncodecheckout) of de inline docker build-opdracht uit Sandboxing § Images en configuratie (npm-installatie), of stel agents.defaults.sandbox.docker.image in op je aangepaste image. Containers worden indien nodig automatisch per sessie gemaakt.Machtigingsfouten in de sandbox
Machtigingsfouten in de sandbox
docker.user in op een UID:GID die overeenkomt met het eigendom van je gekoppelde werkruimte, of wijzig het eigendom van de werkruimtemap.Aangepaste tools niet gevonden in de sandbox
Aangepaste tools niet gevonden in de sandbox
sh -lc (login-shell), die /etc/profile inleest en PATH mogelijk opnieuw instelt. Stel docker.env.PATH in om je aangepaste toolpaden vooraan toe te voegen, of voeg in je Dockerfile een script toe onder /etc/profile.d/.Door OOM beëindigd tijdens het bouwen van de image (afsluitcode 137)
Door OOM beëindigd tijdens het bouwen van de image (afsluitcode 137)
Niet geautoriseerd of koppeling vereist in de Control UI
Niet geautoriseerd of koppeling vereist in de Control UI
Gateway-doel toont ws://172.x.x.x of koppelingsfouten vanuit de Docker-CLI
Gateway-doel toont ws://172.x.x.x of koppelingsfouten vanuit de Docker-CLI
Gerelateerd
- Installatieoverzicht — alle installatiemethoden
- Podman — Podman-alternatief voor Docker
- ClawDock — communityconfiguratie met Docker Compose
- Bijwerken — OpenClaw up-to-date houden
- Configuratie — Gateway-configuratie na installatie