agents.defaults.sandbox được bật, nhưng sandbox mặc định bị tắt và không yêu cầu bản thân Gateway phải chạy trong Docker. Các backend sandbox SSH và OpenShell cũng khả dụng; xem Sandbox.
Đang lưu trữ cho nhiều người dùng? Xem Lưu trữ đa đối tượng thuê để biết mô hình một cell cho mỗi đối tượng thuê.
Điều kiện tiên quyết
- Docker Desktop (hoặc Docker Engine) + Docker Compose v2
- Ít nhất 2 GB RAM để dựng image (
pnpm installcó thể bị kết thúc do OOM trên máy chủ 1 GB với mã thoát 137) - Đủ dung lượng đĩa cho image và nhật ký
- Trên VPS/máy chủ công khai, hãy xem lại Tăng cường bảo mật khi tiếp xúc mạng, đặc biệt là chuỗi tường lửa Docker
DOCKER-USER
Gateway được đóng gói trong container
Dựng image
openclaw:local. Để sử dụng image dựng sẵn thay thế:openclaw/openclaw:ghcr.io/openclaw/openclaw hoặc openclaw/openclaw và tránh các bản sao không chính thức vì chúng không có cùng lịch phát hành hoặc chính sách lưu giữ với OpenClaw. Các thẻ chính thức: main, latest, <version> (ví dụ: 2026.2.26) và các thẻ beta như 2026.2.26-beta.1 (bản beta không bao giờ di chuyển latest/main). Image main/latest/<version> mặc định đi kèm các plugin codex và diagnostics-otel. Một biến thể -browser (ví dụ: latest-browser) cũng được cung cấp với Chromium tích hợp sẵn, hữu ích cho công cụ trình duyệt trong sandbox mà không cần cài đặt Playwright ở lần chạy đầu tiên.Chạy lại trong môi trường cách ly mạng
--offline xác minh rằng OPENCLAW_IMAGE đã tồn tại cục bộ, vô hiệu hóa các thao tác kéo/dựng ngầm định của Compose, rồi chạy quy trình thông thường: đồng bộ .env, sửa quyền, thiết lập ban đầu, đồng bộ cấu hình Gateway, khởi động Compose.Nếu OPENCLAW_SANDBOX=1, quá trình thiết lập ngoại tuyến cũng kiểm tra các image sandbox mặc định và theo từng agent đã cấu hình trên daemon phía sau OPENCLAW_DOCKER_SOCKET, bao gồm nhãn hợp đồng trình duyệt trên các image trình duyệt dựa trên Docker. Nếu một image bắt buộc bị thiếu hoặc lỗi thời, quá trình thiết lập sẽ thoát mà không thay đổi cấu hình sandbox, thay vì báo thành công trong trạng thái hỏng.Hoàn tất thiết lập ban đầu
- yêu cầu khóa API của nhà cung cấp
- tạo token Gateway và ghi vào
.env - tạo thư mục khóa bí mật cho hồ sơ xác thực
- khởi động Gateway qua Docker Compose
openclaw-gateway (với --no-deps --entrypoint node), vì openclaw-cli dùng chung namespace mạng của Gateway và chỉ hoạt động sau khi container Gateway tồn tại.Mở giao diện điều khiển
http://127.0.0.1:18789/ và dán token được ghi vào .env vào Settings. Nếu bạn đã chuyển container sang xác thực bằng mật khẩu, hãy dùng mật khẩu đó thay thế.Cần lại URL?Quy trình thủ công
.git. Hãy truyền danh tính nguồn dưới dạng các đối số dựng
như minh họa ở trên để màn hình Giới thiệu của image báo cáo commit đã checkout và
một dấu thời gian dựng. scripts/docker/setup.sh tự động phân giải và truyền cả hai giá trị.
docker compose từ thư mục gốc của repo. Nếu bạn đã bật OPENCLAW_EXTRA_MOUNTS hoặc OPENCLAW_HOME_VOLUME, script thiết lập sẽ ghi docker-compose.extra.yml; hãy đưa tệp này vào sau mọi docker-compose.override.yml mà bạn tự duy trì, ví dụ: -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.extra.yml.Nâng cấp image container
Khi bạn thay thế image OpenClaw nhưng giữ nguyên trạng thái/cấu hình đã gắn kết, Gateway mới sẽ chạy các quá trình di chuyển nâng cấp an toàn khi khởi động và đồng bộ plugin trước khi sẵn sàng. Việc nâng cấp image thông thường không cần một lượt chạyopenclaw doctor --fix riêng biệt.
Nếu quá trình khởi động không thể hoàn tất các sửa chữa đó một cách an toàn, Gateway sẽ thoát thay vì
báo trạng thái khỏe mạnh. Khi có chính sách khởi động lại, Docker, Podman hoặc Kubernetes có thể hiển thị
container Gateway đang khởi động lại. Giữ nguyên volume trạng thái đã gắn kết, sau đó chạy
cùng image đó một lần với openclaw doctor --fix làm lệnh của container, sử dụng
cùng các điểm gắn kết trạng thái/cấu hình mà Gateway sử dụng:
Biến môi trường
Các biến tùy chọn đượcscripts/docker/setup.sh chấp nhận (và được docker-compose.yml chấp nhận trực tiếp đối với container Gateway):
brew; hãy cung cấp các phần phụ thuộc đó qua image tùy chỉnh hoặc cài đặt thủ công. Dùng OPENCLAW_IMAGE_APT_PACKAGES cho các phần phụ thuộc được đóng gói bằng Debian và OPENCLAW_IMAGE_PIP_PACKAGES cho các phần phụ thuộc Python (chạy python3 -m pip install --break-system-packages tại thời điểm dựng, vì vậy hãy ghim phiên bản và chỉ dùng các chỉ mục mà bạn tin cậy).
Nếu Docker báo cáo ResourceExhausted, cannot allocate memory hoặc hủy trong khi tsdown, hãy tăng giới hạn bộ nhớ của trình dựng Docker hoặc thử lại với các heap tường minh nhỏ hơn:
Image dựng từ nguồn với các plugin được chọn
OPENCLAW_EXTENSIONS chọn các id manifest Plugin từ checkout nguồn;
các tên thư mục nguồn hiện có cũng được chấp nhận khi chúng khác nhau. Bản dựng Docker
phân giải lựa chọn thành các thư mục nguồn một lần, cài đặt các phần phụ thuộc
production, và khi một Plugin được chọn được phát hành riêng với
openclaw.build.bundledDist: false, biên dịch runtime của Plugin đó vào dist đóng gói
gốc. Cách đóng gói chỉ dành cho Docker này không thay đổi hợp đồng artifact npm hoặc ClawHub
của Plugin. Các id không xác định, không hợp lệ hoặc không rõ ràng khiến quá trình dựng image thất bại.
Các id chỉ dành cho phần phụ thuộc/nguồn đã biết giữ nguyên cách phân chia giai đoạn nguồn và phần phụ thuộc
hiện có mà không có thêm mục dist gốc đã biên dịch. Một Plugin được chọn có
các mục dựng hợp nhất phải biên dịch thành công; nguồn và đầu ra runtime của Plugin
bên ngoài không được chọn sẽ bị loại bỏ.
Ví dụ: các lệnh này dựng các image Gateway FakeCo độc lập, đa kiến trúc
riêng biệt cho ClickClack, Slack và Microsoft Teams. ClawRouter đã
là một phần của runtime OpenClaw gốc, vì vậy image ClickClack chỉ chọn
clickclack. Đối số trình duyệt rỗng tường minh giúp image mặc định không chứa
Chromium:
--platform linux/arm64 --load hoặc --platform linux/amd64 --load cho một
bản dựng cục bộ native đơn lẻ. Đầu ra đa nền tảng và SBOM/provenance đính kèm
yêu cầu một registry hoặc đầu ra Buildx khác có khả năng giữ nguyên các chứng thực. Sau khi
đẩy lên, hãy kiểm tra manifest và triển khai digest bất biến thay vì
thẻ source-SHA có thể thay đổi:
OPENCLAW_EXTRA_MOUNTS=/path/to/fork/extensions/synology-chat:/app/extensions/synology-chat:ro. Thao tác này ghi đè bundle /app/dist/extensions/synology-chat đã biên dịch tương ứng cho cùng id Plugin.
Khả năng quan sát
Việc xuất OpenTelemetry đi ra từ container Gateway tới trình thu thập OTLP của bạn; không cần công bố cổng Docker. Để bao gồm trình xuất đóng gói trong một image dựng cục bộ:diagnostics-otel; chỉ tự cài đặt clawhub:@openclaw/diagnostics-otel nếu bạn đã xóa nó. Để bật tính năng xuất, hãy cho phép và bật Plugin diagnostics-otel trong cấu hình, sau đó đặt diagnostics.otel.enabled=true (xem ví dụ đầy đủ trong Xuất OpenTelemetry). Các header xác thực của trình thu thập đi qua diagnostics.otel.headers, không phải các biến môi trường Docker.
Chỉ số Prometheus sử dụng lại cổng Gateway đã được công bố. Cài đặt clawhub:@openclaw/diagnostics-prometheus, bật Plugin diagnostics-prometheus, sau đó thu thập:
/metrics riêng hoặc đường dẫn reverse proxy không xác thực. Xem Chỉ số Prometheus.
Kiểm tra tình trạng
Các endpoint thăm dò container (không yêu cầu xác thực):HEALTHCHECK tích hợp sẵn của image gửi ping tới /healthz; các lần thất bại liên tiếp đánh dấu container là unhealthy để các trình điều phối có thể khởi động lại hoặc thay thế container.
Ảnh chụp nhanh tình trạng chuyên sâu có xác thực:
LAN và loopback
scripts/docker/setup.sh mặc định là OPENCLAW_GATEWAY_BIND=lan để http://127.0.0.1:18789 trên máy chủ hoạt động với việc công bố cổng Docker.
lan(mặc định): trình duyệt và CLI trên máy chủ có thể truy cập cổng Gateway đã công bố.loopback: chỉ các tiến trình bên trong không gian tên mạng của container mới có thể truy cập trực tiếp Gateway.
gateway.bind (lan / loopback / custom / tailnet / auto), không dùng bí danh máy chủ như 0.0.0.0 hoặc 127.0.0.1.Các provider cục bộ trên máy chủ
Bên trong container,127.0.0.1 là chính container, không phải máy chủ. Dùng host.docker.internal cho các provider chạy trên máy chủ:
docker-compose.yml ánh xạ host.docker.internal tới Gateway máy chủ trên Linux Docker Engine (Docker Desktop cung cấp cùng bí danh trên macOS/Windows). Các dịch vụ trên máy chủ phải lắng nghe trên một địa chỉ mà Docker có thể truy cập:
docker run? Hãy tự thêm cùng ánh xạ đó, ví dụ --add-host=host.docker.internal:host-gateway.
Backend Claude CLI trong Docker
Image chính thức không cài đặt sẵn Claude Code. Hãy cài đặt và đăng nhập bên trong người dùngnode của container, sau đó duy trì thư mục home của container đó để các lần nâng cấp image không xóa tệp nhị phân hoặc trạng thái xác thực.
Đối với bản cài đặt mới, hãy bật volume /home/node bền vững trước khi chạy thiết lập:
.env hiện tại — tập lệnh thiết lập luôn ghi lại .env từ shell và các giá trị mặc định hiện tại, nó không tự đọc tệp:
.env chứa các giá trị mà shell của bạn không thể nạp, trước tiên hãy xuất lại thủ công những gì bạn sử dụng (OPENCLAW_IMAGE, các cổng, chế độ bind, đường dẫn tùy chỉnh, OPENCLAW_EXTRA_MOUNTS, sandbox, bỏ qua bước bắt đầu sử dụng). Lớp phủ được tạo sẽ gắn volume home cho cả openclaw-gateway và openclaw-cli; hãy chạy các lệnh còn lại với lớp phủ đó (và docker-compose.override.yml trước, nếu bạn dùng):
claude vào /home/node/.local/bin/claude. Hãy trỏ OpenClaw tới đường dẫn đó:
claude-cli đóng gói sẵn:
OPENCLAW_HOME_VOLUME duy trì bản cài đặt native trong /home/node/.local/bin và /home/node/.local/share/claude, cùng với cài đặt/xác thực Claude Code trong /home/node/.claude và /home/node/.claude.json. Chỉ duy trì /home/node/.openclaw là chưa đủ; nếu bạn dùng OPENCLAW_EXTRA_MOUNTS thay cho volume home, hãy gắn tất cả các đường dẫn Claude đó vào cả hai dịch vụ.
Bonjour / mDNS
Mạng bridge Docker thường không chuyển tiếp multicast Bonjour/mDNS (224.0.0.251:5353) một cách đáng tin cậy. Khi OPENCLAW_DISABLE_BONJOUR chưa được đặt, Plugin Bonjour đóng gói sẵn sẽ tự động tắt quảng bá LAN khi phát hiện đang chạy trong container, để không rơi vào vòng lặp lỗi do liên tục thử lại multicast mà bridge loại bỏ. Đặt OPENCLAW_DISABLE_BONJOUR=1 để buộc tắt bất kể kết quả phát hiện, hoặc 0 để buộc bật (chỉ trên mạng máy chủ, macvlan hoặc mạng khác mà multicast mDNS được xác nhận là hoạt động).
Nếu không, hãy dùng URL Gateway đã công bố, Tailscale hoặc DNS-SD diện rộng cho các máy chủ Docker. Xem Khám phá Bonjour để biết các điểm cần lưu ý và cách khắc phục sự cố.
Lưu trữ và duy trì dữ liệu
Docker Compose bind-mountOPENCLAW_CONFIG_DIR vào /home/node/.openclaw, OPENCLAW_WORKSPACE_DIR vào /home/node/.openclaw/workspace và OPENCLAW_AUTH_PROFILE_SECRET_DIR vào /home/node/.config/openclaw, để các đường dẫn đó tồn tại sau khi thay thế container. Khi một biến chưa được đặt, docker-compose.yml dùng giá trị dự phòng bên dưới ${HOME}, hoặc /tmp nếu chính HOME cũng bị thiếu, để docker compose up không bao giờ tạo đặc tả volume có nguồn rỗng trong các môi trường cơ bản.
Thư mục cấu hình được gắn đó chứa:
openclaw.jsoncho cấu hình hành viagents/<agentId>/agent/auth-profiles.jsoncho xác thực OAuth/khóa API của provider đã lưu trữ.envcho các thông tin bí mật runtime lấy từ môi trường nhưOPENCLAW_GATEWAY_TOKEN
OPENCLAW_CONFIG_DIR.
Các Plugin có thể tải xuống đã cài đặt lưu trạng thái gói dưới thư mục home OpenClaw được gắn, vì vậy bản ghi cài đặt và thư mục gốc gói vẫn tồn tại sau khi thay thế container; quá trình khởi động Gateway không tạo lại cây phần phụ thuộc của Plugin đóng gói sẵn.
Để biết đầy đủ chi tiết về duy trì dữ liệu VM, xem Runtime VM Docker - Những gì được duy trì ở đâu.
Các điểm nóng tăng dung lượng đĩa: media/, cơ sở dữ liệu SQLite theo từng agent, bản chép lời phiên JSONL cũ, cơ sở dữ liệu trạng thái SQLite dùng chung, thư mục gốc gói Plugin đã cài đặt và nhật ký tệp luân phiên trong /tmp/openclaw/.
Trình trợ giúp shell (tùy chọn)
Để rút gọn các lệnh hằng ngày, hãy cài đặt ClawDock:scripts/shell-helpers/clawdock-helpers.sh cũ hơn, hãy chạy lại lệnh ở trên để trình trợ giúp cục bộ theo dõi vị trí hiện tại. Sau đó dùng clawdock-start, clawdock-stop, clawdock-dashboard, v.v. (chạy clawdock-help để xem danh sách đầy đủ).
Bật sandbox của agent cho Docker gateway
Bật sandbox của agent cho Docker gateway
docker.sock sau khi các điều kiện tiên quyết của sandbox được đáp ứng. Nếu không thể hoàn tất thiết lập sandbox, tập lệnh sẽ đặt lại agents.defaults.sandbox.mode thành off. Chế độ mã Codex bị tắt trong những lượt mà sandbox OpenClaw đang hoạt động (xem Sandbox § Phần phụ trợ Docker); tuyệt đối không gắn kết socket Docker của máy chủ vào các container sandbox của agent.Tự động hóa / CI (không tương tác)
Tự động hóa / CI (không tương tác)
-T:Lưu ý bảo mật về mạng dùng chung
Lưu ý bảo mật về mạng dùng chung
openclaw-cli sử dụng network_mode: "service:openclaw-gateway" để các lệnh CLI có thể truy cập gateway qua 127.0.0.1. Hãy coi đây là một ranh giới tin cậy dùng chung. Cấu hình Compose loại bỏ NET_RAW/NET_ADMIN và bật no-new-privileges trên cả openclaw-gateway lẫn openclaw-cli.Lỗi DNS của Docker Desktop trong openclaw-cli
Lỗi DNS của Docker Desktop trong openclaw-cli
openclaw-cli dùng chung mạng sau khi loại bỏ NET_RAW, biểu hiện dưới dạng EAI_AGAIN trong các lệnh dựa trên npm như openclaw plugins install. Hãy giữ tệp Compose tăng cường bảo mật mặc định cho hoạt động thông thường. Phần ghi đè bên dưới khôi phục các khả năng mặc định chỉ cho container openclaw-cli — chỉ dùng nó cho lệnh dùng một lần cần truy cập registry, không dùng làm cách gọi mặc định:openclaw-cli chạy lâu dài, hãy tạo lại nó với cùng phần ghi đè — docker compose exec/docker exec không thể thay đổi các khả năng Linux trên container đã được tạo.Quyền và EACCES
Quyền và EACCES
node (uid 1000). Nếu gặp lỗi quyền trên /home/node/.openclaw, hãy bảo đảm các bind mount trên máy chủ thuộc sở hữu của uid 1000:blocked plugin candidate: suspicious ownership (... uid=1000, expected uid=0 or root) theo sau bởi plugin present but blocked — uid của tiến trình và chủ sở hữu thư mục plugin được gắn kết không trùng khớp. Nên chạy bằng uid 1000 mặc định và sửa quyền sở hữu bind mount. Chỉ chown /path/to/openclaw-config/npm thành root:root nếu bạn chủ ý chạy OpenClaw dưới quyền root trong thời gian dài.Xây dựng lại nhanh hơn
Xây dựng lại nhanh hơn
pnpm install trừ khi các tệp khóa thay đổi:Tùy chọn container dành cho người dùng nâng cao
Tùy chọn container dành cho người dùng nâng cao
node. Để có container đầy đủ tính năng hơn:- Duy trì
/home/node:export OPENCLAW_HOME_VOLUME="openclaw_home" - Tích hợp sẵn các phụ thuộc hệ thống:
export OPENCLAW_IMAGE_APT_PACKAGES="git curl jq" - Tích hợp sẵn các phụ thuộc Python:
export OPENCLAW_IMAGE_PIP_PACKAGES="requests==2.32.5 humanize==4.14.0" - Tích hợp sẵn Playwright Chromium:
export OPENCLAW_INSTALL_BROWSER=1, hoặc dùng thẻ image-browserchính thức - Hoặc cài đặt các trình duyệt Playwright vào một volume được duy trì:
- Duy trì các tệp trình duyệt đã tải xuống: dùng
OPENCLAW_HOME_VOLUMEhoặcOPENCLAW_EXTRA_MOUNTS. OpenClaw tự động phát hiện Chromium do Playwright quản lý của image trên Linux.
OpenAI Codex OAuth (Docker không giao diện)
OpenAI Codex OAuth (Docker không giao diện)
Siêu dữ liệu image cơ sở
Siêu dữ liệu image cơ sở
node:24-bookworm-slim và chạy tini với PID 1 để thu hồi các tiến trình zombie và xử lý tín hiệu chính xác trong các container chạy lâu dài. Image công bố các chú thích image cơ sở OCI, bao gồm org.opencontainers.image.base.name và org.opencontainers.image.source. Dependabot làm mới digest image Node cơ sở được ghim; các bản dựng phát hành không chạy một lớp nâng cấp bản phân phối riêng. Xem Chú thích image OCI.Chạy trên VPS?
Xem Hetzner (Docker VPS) và Môi trường chạy máy ảo Docker để biết các bước triển khai máy ảo dùng chung, bao gồm tích hợp sẵn tệp nhị phân, duy trì dữ liệu và cập nhật.Sandbox của agent
Khiagents.defaults.sandbox được bật với phần phụ trợ Docker, gateway chạy hoạt động thực thi công cụ của agent (shell, đọc/ghi tệp, v.v.) bên trong các container Docker biệt lập, trong khi bản thân gateway vẫn nằm trên máy chủ — tạo thành một bức tường cứng bao quanh các phiên agent không đáng tin cậy hoặc dùng chung cho nhiều bên thuê mà không cần container hóa toàn bộ gateway.
Phạm vi sandbox có thể là theo từng agent (mặc định), từng phiên hoặc dùng chung; mỗi phạm vi có workspace riêng được gắn kết tại /workspace. Bạn cũng có thể cấu hình chính sách cho phép/từ chối công cụ, cách ly mạng, giới hạn tài nguyên và container trình duyệt.
Để biết đầy đủ về cấu hình, image, lưu ý bảo mật và hồ sơ đa agent:
- Sandbox — tài liệu tham khảo đầy đủ về sandbox
- OpenShell — quyền truy cập shell tương tác vào các container sandbox
- Sandbox và công cụ đa agent — ghi đè theo từng agent
Bật nhanh
docker build nội tuyến.
Khắc phục sự cố
Thiếu image hoặc container sandbox không khởi động
Thiếu image hoặc container sandbox không khởi động
scripts/sandbox-setup.sh (bản checkout mã nguồn) hoặc lệnh docker build nội tuyến trong Sandbox § Image và thiết lập (cài đặt npm), hoặc đặt agents.defaults.sandbox.docker.image thành image tùy chỉnh của bạn. Các container được tự động tạo theo từng phiên khi có nhu cầu.Lỗi quyền trong sandbox
Lỗi quyền trong sandbox
docker.user thành UID:GID khớp với quyền sở hữu workspace được gắn kết, hoặc chown thư mục workspace.Không tìm thấy công cụ tùy chỉnh trong sandbox
Không tìm thấy công cụ tùy chỉnh trong sandbox
sh -lc (shell đăng nhập), thao tác này nạp /etc/profile và có thể đặt lại PATH. Đặt docker.env.PATH để thêm các đường dẫn công cụ tùy chỉnh của bạn vào đầu, hoặc thêm một tập lệnh dưới /etc/profile.d/ trong Dockerfile.Bị kết thúc do OOM khi xây dựng image (mã thoát 137)
Bị kết thúc do OOM khi xây dựng image (mã thoát 137)
Không được ủy quyền hoặc cần ghép nối trong Control UI
Không được ủy quyền hoặc cần ghép nối trong Control UI
Mục tiêu Gateway hiển thị ws://172.x.x.x hoặc lỗi ghép nối từ Docker CLI
Mục tiêu Gateway hiển thị ws://172.x.x.x hoặc lỗi ghép nối từ Docker CLI
Liên quan
- Tổng quan về cài đặt — tất cả phương thức cài đặt
- Podman — giải pháp Podman thay thế Docker
- ClawDock — thiết lập Docker Compose của cộng đồng
- Cập nhật — duy trì OpenClaw luôn ở phiên bản mới nhất
- Cấu hình — cấu hình gateway sau khi cài đặt