Docker (valfritt)
Docker är valfritt. Använd den endast om du vill ha en behållaranpassad inkörsport eller för att validera Docker-flödet.Är Docker rätt för mig?
- Ja: du vill ha en isolerad, tillfällig gateway-miljö eller köra OpenClaw på en värd utan lokala installationer.
- Nej: du kör på din egen maskin och vill bara ha den snabbaste dev-loopen. Använd det normala installationsflödet istället.
- Sandboxningsanteckning: agentsandboxning använder också Docker, men det behöver inte hela porten för att köras i Docker. Se Sandboxing.
- Containeriserad Gateway (hela OpenClaw i Docker)
- Per-session Agent Sandbox (gateway på värden + Docker-isolerade agentverktyg)
Krav
- Docker Desktop (eller Docker Engine) + Docker Compose v2
- Tillräckligt med diskutrymme för images + loggar
Containeriserad Gateway (Docker Compose)
Snabbstart (rekommenderas)
Från repo-roten:- bygger gateway-imagen
- kör introduktionsguiden
- skriver ut valfria tips för leverantörskonfiguration
- startar gatewayen via Docker Compose
- genererar en gateway-token och skriver den till
.env
OPENCLAW_DOCKER_APT_PACKAGES— installera extra apt-paket under byggetOPENCLAW_EXTRA_MOUNTS— lägg till extra bind-mounts från värdenOPENCLAW_HOME_VOLUME— persist/home/nodei en namngiven volym
- Öppna
http://127.0.0.1:18789/i din webbläsare. - Klistra in token i Control UI (Inställningar → token).
- Behöver du webbadressen igen? Kör
docker komponera kör --rm openclaw-cli instrumentbräda --no-open.
~/.openclaw/~/.openclaw/workspace
Manuell väg (compose)
För enklare daglig Docker-hantering, installeraClawDock:
clawdock-start, clawdock-stop, clawdock-dashboard osv. Kör clawdock-help för alla kommandon.
Se ClawDock Helper README för mer information.
Manuell väg (compose)
docker komponera ... från repo roten. Om du aktiverade
OPENCLAW_EXTRA_MOUNTS eller OPENCLAW_HOME_VOLUME, skriver installationsskriptet
docker-compose.extra.yml; inkludera det när du kör Compose någon annanstans:
Control UI-token + parning (Docker)
Noteringar:Extra mounts (valfritt)
Om du vill montera ytterligare värdkataloger i behållarna, sättOPENCLAW_EXTRA_MOUNTS innan du kör docker-setup.sh. Detta accepterar en
kommaseparerad lista med Docker bind fästen och tillämpar dem på både
openclaw-gateway och openclaw-cli genom att generera docker-compose.extra.yml.
Exempel:
- Sökvägar måste delas med Docker Desktop på macOS/Windows.
- Om du redigerar
OPENCLAW_EXTRA_MOUNTS, kördocker-setup.shigen för att regenerera den extra compose-filen. docker-compose.extra.ymlgenereras. Redigera den inte.
Persist hela container-hemmet (valfritt)
Om du vill att/home/node ska bestå över behållaren rekreation, ange en namngiven
volym via OPENCLAW_HOME_VOLUME. Detta skapar en Docker-volym och monterar den på
/home/node, samtidigt som standard config/workspace binder fästen. Använd en
namngiven volym här (inte en bind sökväg); för bind fästen, använd
OPENCLAW_EXTRA_MOUNTS.
Exempel:
- Om du ändrar
OPENCLAW_HOME_VOLUME, kördocker-setup.shigen för att regenerera den extra compose-filen. - Den namngivna volymen består tills den tas bort med
docker volume rm <name>.
Installera extra apt-paket (valfritt)
Om du behöver systempaket inuti bilden (till exempel bygga verktyg eller media bibliotek), sättOPENCLAW_DOCKER_APT_PACKAGES innan du kör docker-setup.sh.
Detta installerar paketen under avbildningsbygget, så de kvarstår även om
behållaren tas bort.
Om du vill ha en mer fullfjädrad container, använd dessa opt-in-reglage:
- Baka in systemberoenden i imagen (repeterbart + bestående):
- Om du ändrar
OPENCLAW_DOCKER_APT_PACKAGES, kördocker-setup.shigen för att bygga om imagen.
Avancerat läge / fullfjädrad container (opt-in)
Standardbilden för Docker är security-first och körs som icke-rootnode
användare. Detta håller attackytan liten, men det betyder:
- inga systempaketinstallationer vid körning
- ingen Homebrew som standard
- inga medföljande Chromium/Playwright-webbläsare
OPENCLAW_DOCKER_APT_PACKAGES i stället för att använda --with-deps vid körning.
- Persist Playwright-webbläsarnedladdningar:
- Baka in systemberoenden i imagen (repeterbart + bestående):
- Installera Playwright-webbläsare utan
npx(undviker npm-override-konflikter):
- Persist Playwright-webbläsarnedladdningar:
- Sätt
PLAYWRIGHT_BROWSERS_PATH=/home/node/.cache/ms-playwrightidocker-compose.yml. - Säkerställ att
/home/nodebestår viaOPENCLAW_HOME_VOLUME, eller montera/home/node/.cache/ms-playwrightviaOPENCLAW_EXTRA_MOUNTS.
Behörigheter + EACCES
Bilden körs somnode (uid 1000). Om du ser behörighetsfel på
/home/node/.openclaw, se till att din värd bind fästen ägs av uid 1000.
Använd CLI-containern för att konfigurera kanaler och starta sedan om gatewayen vid behov.
Snabbare ombyggnader (rekommenderas)
För att snabba på återuppbyggnaden, beställ din Dockerfile så att beroendelager cachelagras. Detta undviker att köra ompnpm install om inte låsfiler ändras:
Kanalinställning (valfritt)
Dokumentation: WhatsApp, Telegram, Discord WhatsApp (QR):OpenAI Codex OAuth (headless Docker)
Om du väljer OpenAI Codex OAuth i guiden öppnar den en webbläsarURL och försöker att fånga en callback påhttp://127.0.0.1:1455/auth/callback. I Docker eller
headless setups som callback kan visa ett webbläsarfel. Kopiera hela omdirigera
URL som du landar på och klistra in den i guiden för att avsluta författaren.
Hälsokontroll
E2E-röktest (Docker)
QR-import-röktest (Docker)
Noteringar
- Gateway-bindning är som standard
lanför containeranvändning. - Dockerfile CMD använder
--allow-unconfigured; monterad konfiguration medgateway.modeintelocalkommer fortfarande att starta. Åsidosätt CMD för att genomdriva vakten. - Gateway-containern är sanningskällan för sessioner (
~/.openclaw/agents/<agentId>/sessions/).
Agent Sandbox (gateway på värden + Docker-verktyg)
Fördjupning: SandboxingVad den gör
Näragents.defaults.sandbox är aktiverat, icke-huvudsakliga sessioner kör verktyg inuti en Docker
behållare. Gateway stannar på din värd, men verktyget utförande är isolerat:
- omfattning:
"agent"som standard (en container + arbetsyta per agent) - En container per agent
- Åtkomst till agentens arbetsyta:
workspaceAccess: "none"(standard) använder~/.openclaw/sandboxes - Automatisk rensning: inaktiv > 24 h ELLER ålder > 7 d
- Nätverk:
nonesom standard (välj explicit om du behöver utgående trafik) - Standard tillåt:
exec,process,read,write,edit,sessions_list,sessions_history,sessions_send,sessions_spawn,session_status
scope: "shared" inaktiverar cross-sessions-isolering. Alla sessioner delar
en container och en arbetsyta.
Sandbox-profiler per agent (multi-agent)
Om du använder multi-agent routing, kan varje agent åsidosätta sandlåda + verktygsinställningar:agents.list[].sandbox och agents.list[].tools (plus agents.list[].tools.sandbox.tools). Detta låter dig köra
blandade accessnivåer i en gateway:
- Full åtkomst (personlig agent)
- Läsbara verktyg + skrivskyddad arbetsyta (familj-/arbetsagent)
- Inga filsystem-/shell-verktyg (publik agent)
agents.defaults.sandbox.docker:
network, user, pidsLimit, memory, memorySwap, cpus, ulimits,
seccompProfile, apparmorProfile, dns, extraHosts.
Standardbeteende
- Image:
openclaw-sandbox:bookworm-slim - En container per agent
- Åtkomst till agentens arbetsyta:
workspaceAccess: "none"(standard) använder~/.openclaw/sandboxes"ro"behåller sandbox-arbetsytan på/workspaceoch monterar agentens arbetsyta skrivskyddad på/agent(inaktiverarwrite/edit/apply_patch)"rw"monterar agentens arbetsyta läs/skriv på/workspace
- Automatisk rensning: inaktiv > 24 h ELLER ålder > 7 d
- Nätverk:
nonesom standard (välj explicit om du behöver utgående trafik) - Standard tillåt:
exec,process,read,write,edit,sessions_list,sessions_history,sessions_send,sessions_spawn,session_status - Standard neka:
browser,canvas,nodes,cron,discord,gateway
Aktivera sandboxing
Detta byggeropenclaw-sandbox:bookworm-slim med Dockerfile.sandbox.
- Standard
docker.networkär"none"(ingen utgående trafik). readOnlyRoot: trueblockerar paketinstallationer.usermåste vara root förapt-get(utelämnausereller setuser: "0:0"). OpenClaw återskapar automatiskt behållare närsetupCommand(eller docker config) ändras om inte behållaren nyligen använts (inom ~5 minuter). Heta behållare logga en varning med det exaktaopenclaw sandlådan återskapa ...kommandot.
agents.defaults.sandbox.docker:
network, user, pidsLimit, memory, memorySwap, cpus, ulimits,
seccompProfile, apparmorProfile, dns, extraHosts.
Multi-agent: åsidosätt agents.defaults.sandbox.{docker,browser,prune}.* per agent via agents.list[].sandbox.{docker,browser,prune}.*
(ignoreras när agents.defaults.sandbox.scope / agents.list[].sandbox.scope är "shared").
Bygg standard-sandboximagen
Gemensam sandbox-image (valfritt)
Om du vill ha en sandbox-image med vanliga byggverktyg (Node, Go, Rust, etc.), bygg den gemensamma imagen:openclaw-sandbox-common:bookworm-slim. För att använda den:
Sandbox-webbläsarimage
Anpassad webbläsarimage:openclaw-sandbox-browser:bookworm-slim med
Dockerfile.sandbox-browser. Behållaren kör Krom med CDP aktiverat och
en valfri noVNC-observatör (huvudvärdigt via Xvfb).
Noteringar:
- Headful (Xvfb) minskar bot-blockering jämfört med headless.
- Headless kan fortfarande användas genom att sätta
agents.defaults.sandbox.browser.headless=true. - Ingen full skrivbordsmiljö (GNOME) behövs; Xvfb tillhandahåller displayen.
denyvinner överallow.- Om
allowär tom: alla verktyg (utom nekade) är tillgängliga.
browser (och ta bort den från
deny) eller verktyget förblir blockerat.
Rensa regler (agents.defaults.sandbox.prune) gäller även för webbläsarbehållare.
Anpassad sandbox-image
Bygg din egen image och peka konfig på den:Säkerhetsnoteringar
- Hård vägg gäller endast verktyg (exec/read/write/edit/apply_patch).
- Verktyg som bara finns på värden, som browser/kamera/canvas, är blockerade som standard.
- Att tillåta
browseri sandbox bryter isoleringen (webbläsaren körs på värden).
Felsökning
Två reglage:prune.idleHours: ta bort containrar som inte använts på X timmar (0 = inaktivera)prune.maxAgeDays: ta bort containrar äldre än X dagar (0 = inaktivera)
- Behåll aktiva sessioner men begränsa livslängden:
idleHours: 24,maxAgeDays: 7 - Rensa aldrig:
idleHours: 0,maxAgeDays: 0
Säkerhetsnoteringar
- Hård vägg gäller endast verktyg (exec/read/write/edit/apply_patch).
- Verktyg som bara finns på värden, som browser/kamera/canvas, är blockerade som standard.
- Att tillåta
browseri sandbox bryter isoleringen (webbläsaren körs på värden).
Felsökning
- Image saknas: bygg med
scripts/sandbox-setup.sheller sättagents.defaults.sandbox.docker.image. - Container körs inte: den skapas automatiskt per session vid behov.
- Behörighetsfel i sandbox: sätt
docker.usertill ett UID:GID som matchar ägarskapet för din monterade arbetsyta (eller chown arbetsytemappen). - Anpassade verktyg hittades inte: OpenClaw kör kommandon med
sh -lc(login shell), som källor/etc/profileoch kan återställa PATH. Sättdocker.env.PATHtill att förkoda dina anpassade verktygssökvägar (t.ex./custom/bin:/usr/local/share/npm-global/bin), eller lägg till ett skript under/etc/profile.d/i din Dockerfile.