Docker (वैकल्पिक)
इसे केवल तभी उपयोग करें जब आप containerized gateway चाहते हों या Docker फ्लो को validate करना चाहते हों। नहीं: आप अपनी ही मशीन पर चला रहे हैं और सिर्फ सबसे तेज़ dev loop चाहते हैं।क्या Docker मेरे लिए उपयुक्त है?
- हाँ: आप एक पृथक, अस्थायी Gateway वातावरण चाहते हैं या ऐसे होस्ट पर OpenClaw चलाना चाहते हैं जहाँ स्थानीय इंस्टॉल संभव नहीं है।
- इसके बजाय सामान्य install फ्लो का उपयोग करें। Sandboxing note: agent sandboxing भी Docker का उपयोग करता है, लेकिन इसके लिए पूरे gateway को Docker में चलाने की ज़रूरत नहीं होती।
- देखें Sandboxing। URL फिर से चाहिए?
- कंटेनरीकृत Gateway (Docker में पूरा OpenClaw)
- प्रति-सत्र एजेंट Sandbox (होस्ट Gateway + Docker-पृथक एजेंट टूल्स)
आवश्यकताएँ
- Docker Desktop (या Docker Engine) + Docker Compose v2
- इमेज और लॉग के लिए पर्याप्त डिस्क स्पेस
कंटेनरीकृत Gateway (Docker Compose)
त्वरित प्रारंभ (अनुशंसित)
रेपो रूट से:- Gateway इमेज बनाती है
- ऑनबोर्डिंग विज़ार्ड चलाती है
- वैकल्पिक प्रदाता सेटअप संकेत प्रिंट करती है
- Docker Compose के माध्यम से Gateway शुरू करती है
- एक Gateway टोकन उत्पन्न करती है और उसे
.envमें लिखती है
OPENCLAW_DOCKER_APT_PACKAGES— बिल्ड के दौरान अतिरिक्त apt पैकेज इंस्टॉल करेंOPENCLAW_EXTRA_MOUNTS— अतिरिक्त होस्ट bind mounts जोड़ेंOPENCLAW_HOME_VOLUME— नामित वॉल्यूम में/home/nodeको स्थायी बनाएँ
- अपने ब्राउज़र में
http://127.0.0.1:18789/खोलें। - Control UI में टोकन पेस्ट करें (Settings → token)।
- Need the URL again? Run
docker compose run --rm openclaw-cli dashboard --no-open.
~/.openclaw/~/.openclaw/workspace
मैनुअल फ्लो (compose)
दैनिक Docker प्रबंधन को आसान बनाने के लिएClawDock इंस्टॉल करें:
clawdock-start, clawdock-stop, clawdock-dashboard आदि का उपयोग करें। सभी कमांड के लिए clawdock-help चलाएँ।
विवरण के लिए ClawDock Helper README देखें।
मैनुअल फ्लो (compose)
docker compose ... from the repo root. If you enabled
OPENCLAW_EXTRA_MOUNTS or OPENCLAW_HOME_VOLUME, the setup script writes
docker-compose.extra.yml; include it when running Compose elsewhere:
Control UI टोकन + पेयरिंग (Docker)
नोट्स:अतिरिक्त mounts (वैकल्पिक)
If you want to mount additional host directories into the containers, setOPENCLAW_EXTRA_MOUNTS before running docker-setup.sh. This accepts a
comma-separated list of Docker bind mounts and applies them to both
openclaw-gateway and openclaw-cli by generating docker-compose.extra.yml.
उदाहरण:
- macOS/Windows पर पाथ्स Docker Desktop के साथ साझा होने चाहिए।
- यदि आप
OPENCLAW_EXTRA_MOUNTSसंपादित करते हैं, तो अतिरिक्त compose फ़ाइल को पुनः जनरेट करने के लिएdocker-setup.shचलाएँ। docker-compose.extra.ymlis generated. Don’t hand-edit it.
पूरे कंटेनर होम को स्थायी बनाना (वैकल्पिक)
If you want/home/node to persist across container recreation, set a named
volume via OPENCLAW_HOME_VOLUME. This creates a Docker volume and mounts it at
/home/node, while keeping the standard config/workspace bind mounts. Use a
named volume here (not a bind path); for bind mounts, use
OPENCLAW_EXTRA_MOUNTS.
उदाहरण:
- यदि आप
OPENCLAW_HOME_VOLUMEबदलते हैं, तो अतिरिक्त compose फ़ाइल को पुनः जनरेट करने के लिएdocker-setup.shचलाएँ। - नामित वॉल्यूम तब तक बना रहता है जब तक
docker volume rm <name>से हटाया न जाए।
अतिरिक्त apt पैकेज इंस्टॉल करें (वैकल्पिक)
If you need system packages inside the image (for example, build tools or media libraries), setOPENCLAW_DOCKER_APT_PACKAGES before running docker-setup.sh.
This installs the packages during the image build, so they persist even if the
container is deleted.
यदि आप अधिक पूर्ण-विशेषताओं वाला कंटेनर चाहते हैं, तो इन ऑप्ट-इन विकल्पों का उपयोग करें:
- सिस्टम निर्भरताएँ इमेज में शामिल करें (दोहराने योग्य + स्थायी):
- यदि आप
OPENCLAW_DOCKER_APT_PACKAGESबदलते हैं, तो इमेज को पुनः बनाने के लिएdocker-setup.shचलाएँ।
पावर-यूज़र / पूर्ण-विशेषताओं वाला कंटेनर (ऑप्ट-इन)
The default Docker image is security-first and runs as the non-rootnode
user. This keeps the attack surface small, but it means:
- रनटाइम पर सिस्टम पैकेज इंस्टॉल नहीं
- डिफ़ॉल्ट रूप से Homebrew नहीं
- बंडल्ड Chromium/Playwright ब्राउज़र नहीं
--with-deps उपयोग करने के बजाय OPENCLAW_DOCKER_APT_PACKAGES के साथ इमेज को पुनः बनाएँ।
- Playwright ब्राउज़र डाउनलोड को स्थायी बनाएँ:
- सिस्टम निर्भरताएँ इमेज में शामिल करें (दोहराने योग्य + स्थायी):
npxके बिना Playwright ब्राउज़र इंस्टॉल करें (npm override संघर्षों से बचता है):
- Playwright ब्राउज़र डाउनलोड को स्थायी बनाएँ:
PLAYWRIGHT_BROWSERS_PATH=/home/node/.cache/ms-playwrightकोdocker-compose.ymlमें सेट करें।- सुनिश्चित करें कि
/home/nodeOPENCLAW_HOME_VOLUMEके माध्यम से स्थायी रहे, या/home/node/.cache/ms-playwrightकोOPENCLAW_EXTRA_MOUNTSके माध्यम से माउंट करें।
अनुमतियाँ + EACCES
The image runs asnode (uid 1000). If you see permission errors on
/home/node/.openclaw, make sure your host bind mounts are owned by uid 1000.
CLI कंटेनर का उपयोग करके चैनल कॉन्फ़िगर करें, फिर आवश्यकता होने पर Gateway को पुनः प्रारंभ करें।
तेज़ रीबिल्ड्स (अनुशंसित)
To speed up rebuilds, order your Dockerfile so dependency layers are cached. This avoids re-runningpnpm install unless lockfiles change:
चैनल सेटअप (वैकल्पिक)
डॉक्स: WhatsApp, Telegram, Discord WhatsApp (QR):OpenAI Codex OAuth (हेडलैस Docker)
If you pick OpenAI Codex OAuth in the wizard, it opens a browser URL and tries to capture a callback onhttp://127.0.0.1:1455/auth/callback. In Docker or
headless setups that callback can show a browser error. Copy the full redirect
URL you land on and paste it back into the wizard to finish auth.
हेल्थ चेक
E2E स्मोक टेस्ट (Docker)
QR इम्पोर्ट स्मोक टेस्ट (Docker)
नोट्स
- Gateway bind कंटेनर उपयोग के लिए डिफ़ॉल्ट रूप से
lanपर होता है। - Dockerfile CMD uses
--allow-unconfigured; mounted config withgateway.modenotlocalwill still start. Override CMD to enforce the guard. - Gateway कंटेनर सत्रों के लिए source of truth है (
~/.openclaw/agents/<agentId>/sessions/)।
एजेंट Sandbox (होस्ट Gateway + Docker टूल्स)
डीप डाइव: Sandboxingयह क्या करता है
Whenagents.defaults.sandbox is enabled, non-main sessions run tools inside a Docker
container. The gateway stays on your host, but the tool execution is isolated:
- इमेज:
openclaw-sandbox:bookworm-slim - प्रति एजेंट एक कंटेनर
- एजेंट वर्कस्पेस एक्सेस:
workspaceAccess: "none"(डिफ़ॉल्ट)~/.openclaw/sandboxesका उपयोग करता है - ऑटो-प्रून: निष्क्रिय > 24 घंटे या आयु > 7 दिन
- नेटवर्क: डिफ़ॉल्ट रूप से
none(यदि egress चाहिए तो स्पष्ट रूप से ऑप्ट-इन करें) - डिफ़ॉल्ट allow:
exec,process,read,write,edit,sessions_list,sessions_history,sessions_send,sessions_spawn,session_status
scope: "shared" disables cross-session isolation. All sessions share
one container and one workspace.
प्रति-एजेंट sandbox प्रोफ़ाइल (मल्टी-एजेंट)
If you use multi-agent routing, each agent can override sandbox + tool settings:agents.list[].sandbox and agents.list[].tools (plus agents.list[].tools.sandbox.tools). This lets you run
mixed access levels in one gateway:
- पूर्ण एक्सेस (व्यक्तिगत एजेंट)
- केवल-पठन टूल्स + केवल-पठन वर्कस्पेस (परिवार/कार्य एजेंट)
- कोई फ़ाइलसिस्टम/शेल टूल नहीं (सार्वजनिक एजेंट)
agents.defaults.sandbox.docker के अंतर्गत उपलब्ध हैं:
network, user, pidsLimit, memory, memorySwap, cpus, ulimits,
seccompProfile, apparmorProfile, dns, extraHosts।
डिफ़ॉल्ट व्यवहार
- इमेज:
openclaw-sandbox:bookworm-slim - प्रति एजेंट एक कंटेनर
- एजेंट वर्कस्पेस एक्सेस:
workspaceAccess: "none"(डिफ़ॉल्ट)~/.openclaw/sandboxesका उपयोग करता है"ro"sandbox वर्कस्पेस को/workspaceपर रखता है और एजेंट वर्कस्पेस को केवल-पठन के रूप में/agentपर माउंट करता है (write/edit/apply_patchको निष्क्रिय करता है)"rw"एजेंट वर्कस्पेस को पढ़ने/लिखने के लिए/workspaceपर माउंट करता है
- ऑटो-प्रून: निष्क्रिय > 24 घंटे या आयु > 7 दिन
- नेटवर्क: डिफ़ॉल्ट रूप से
none(यदि egress चाहिए तो स्पष्ट रूप से ऑप्ट-इन करें) - डिफ़ॉल्ट allow:
exec,process,read,write,edit,sessions_list,sessions_history,sessions_send,sessions_spawn,session_status - डिफ़ॉल्ट deny:
browser,canvas,nodes,cron,discord,gateway
sandboxing सक्षम करें
यहDockerfile.sandbox का उपयोग करके openclaw-sandbox:bookworm-slim बनाता है।
- डिफ़ॉल्ट
docker.network"none"है (कोई egress नहीं)। readOnlyRoot: trueपैकेज इंस्टॉल को ब्लॉक करता है।usermust be root forapt-get(omituseror setuser: "0:0"). OpenClaw auto-recreates containers whensetupCommand(or docker config) changes unless the container was recently used (within ~5 minutes). Hot containers log a warning with the exactopenclaw sandbox recreate ...command.
agents.defaults.sandbox.docker के अंतर्गत उपलब्ध हैं:
network, user, pidsLimit, memory, memorySwap, cpus, ulimits,
seccompProfile, apparmorProfile, dns, extraHosts।
मल्टी-एजेंट: प्रति एजेंट agents.defaults.sandbox.{docker,browser,prune}.* को agents.list[].sandbox.{docker,browser,prune}.* के माध्यम से ओवरराइड करें
(agents.defaults.sandbox.scope / agents.list[].sandbox.scope जब "shared" हो तब अनदेखा किया जाता है)।
डिफ़ॉल्ट sandbox इमेज बनाएँ
Sandbox common इमेज (वैकल्पिक)
यदि आप सामान्य बिल्ड टूलिंग (Node, Go, Rust आदि) के साथ sandbox इमेज चाहते हैं, तो common इमेज बनाएँ:openclaw-sandbox-common:bookworm-slim. To use it:
Sandbox ब्राउज़र इमेज
कस्टम ब्राउज़र इमेज:openclaw-sandbox-browser:bookworm-slim using
Dockerfile.sandbox-browser. The container runs Chromium with CDP enabled and
an optional noVNC observer (headful via Xvfb).
नोट्स:
- Headful (Xvfb) headless की तुलना में bot blocking को कम करता है।
agents.defaults.sandbox.browser.headless=trueसेट करके headless अभी भी उपयोग किया जा सकता है।- पूर्ण डेस्कटॉप वातावरण (GNOME) की आवश्यकता नहीं है; Xvfb डिस्प्ले प्रदान करता है।
denyकी प्राथमिकताallowपर होती है।- यदि
allowखाली है: सभी टूल्स (deny को छोड़कर) उपलब्ध हैं।
browser (and remove it from
deny) or the tool remains blocked.
Prune rules (agents.defaults.sandbox.prune) apply to browser containers too.
कस्टम sandbox इमेज
अपनी स्वयं की इमेज बनाएँ और कॉन्फ़िग को उसकी ओर इंगित करें:सुरक्षा नोट्स
- हार्ड वॉल केवल टूल्स (exec/read/write/edit/apply_patch) पर लागू होती है।
- होस्ट-ओनली टूल्स जैसे browser/camera/canvas डिफ़ॉल्ट रूप से ब्लॉक होते हैं।
- sandbox में
browserकी अनुमति देना पृथक्करण को तोड़ देता है (ब्राउज़र होस्ट पर चलता है)।
समस्या-निवारण
दो विकल्प:prune.idleHours: X घंटे तक उपयोग न हुए कंटेनरों को हटाएँ (0 = निष्क्रिय)prune.maxAgeDays: X दिनों से पुराने कंटेनरों को हटाएँ (0 = निष्क्रिय)
- व्यस्त सत्र बनाए रखें लेकिन आयु सीमित करें:
idleHours: 24,maxAgeDays: 7 - कभी प्रून न करें:
idleHours: 0,maxAgeDays: 0
सुरक्षा नोट्स
- हार्ड वॉल केवल टूल्स (exec/read/write/edit/apply_patch) पर लागू होती है।
- होस्ट-ओनली टूल्स जैसे browser/camera/canvas डिफ़ॉल्ट रूप से ब्लॉक होते हैं।
- sandbox में
browserकी अनुमति देना पृथक्करण को तोड़ देता है (ब्राउज़र होस्ट पर चलता है)।
समस्या-निवारण
- इमेज गायब:
scripts/sandbox-setup.shके साथ बिल्ड करें याagents.defaults.sandbox.docker.imageसेट करें। - कंटेनर नहीं चल रहा: यह मांग पर प्रति सत्र स्वतः बनाया जाएगा।
- sandbox में अनुमति त्रुटियाँ:
docker.userको ऐसे UID:GID पर सेट करें जो आपके माउंट किए गए वर्कस्पेस के स्वामित्व से मेल खाता हो (या वर्कस्पेस फ़ोल्डर को chown करें)। - Custom tools not found: OpenClaw runs commands with
sh -lc(login shell), which sources/etc/profileand may reset PATH. Setdocker.env.PATHto prepend your custom tool paths (e.g.,/custom/bin:/usr/local/share/npm-global/bin), or add a script under/etc/profile.d/in your Dockerfile.