Docker là tùy chọn. Chỉ dùng nếu bạn muốn Gateway được container hóa hoặc muốn xác thực luồng Docker.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Docker có phù hợp với tôi không?
- Có: bạn muốn một môi trường Gateway cô lập, dùng tạm rồi bỏ, hoặc muốn chạy OpenClaw trên một máy chủ không có cài đặt cục bộ.
- Không: bạn đang chạy trên máy của chính mình và chỉ muốn vòng lặp phát triển nhanh nhất. Hãy dùng luồng cài đặt thông thường thay thế.
- Lưu ý về sandbox: backend sandbox mặc định dùng Docker khi sandbox được bật, nhưng sandbox mặc định đang tắt và không yêu cầu toàn bộ Gateway chạy trong Docker. Các backend sandbox SSH và OpenShell cũng có sẵn. Xem Sandboxing.
Điều kiện tiên quyết
- Docker Desktop (hoặc Docker Engine) + Docker Compose v2
- Ít nhất 2 GB RAM để build image (
pnpm installcó thể bị OOM-killed trên máy chủ 1 GB với mã thoát 137) - Đủ dung lượng đĩa cho image và log
- Nếu chạy trên VPS/máy chủ công khai, hãy xem lại
Gia cố bảo mật khi phơi bày ra mạng,
đặc biệt là chính sách tường lửa Docker
DOCKER-USER.
Gateway được container hóa
Build image
main, latest, <version> (ví dụ 2026.2.26).Hoàn tất onboarding
- nhắc nhập khóa API của nhà cung cấp
- tạo token Gateway và ghi token đó vào
.env - khởi động Gateway qua Docker Compose
openclaw-gateway. openclaw-cli dành cho các lệnh bạn chạy sau khi
container Gateway đã tồn tại.Mở Control UI
http://127.0.0.1:18789/ trong trình duyệt và dán secret dùng chung đã cấu hình
vào Settings. Mặc định, script thiết lập ghi một token vào .env; nếu bạn chuyển cấu hình 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?Luồng thủ công
Nếu bạn muốn tự chạy từng bước thay vì dùng script thiết lập:docker compose từ thư mục gốc 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 bao gồm nó bằng -f docker-compose.yml -f docker-compose.extra.yml.openclaw-cli chia sẻ namespace mạng của openclaw-gateway, nó là công cụ
sau khi khởi động. Trước khi chạy docker compose up -d openclaw-gateway, hãy chạy onboarding
và các thao tác ghi cấu hình lúc thiết lập qua openclaw-gateway với
--no-deps --entrypoint node.Biến môi trường
Script thiết lập chấp nhận các biến môi trường tùy chọn sau:| Biến | Mục đích |
|---|---|
OPENCLAW_IMAGE | Dùng image từ xa thay vì build cục bộ |
OPENCLAW_DOCKER_APT_PACKAGES | Cài đặt các gói apt bổ sung trong quá trình build (phân tách bằng dấu cách) |
OPENCLAW_EXTENSIONS | Bao gồm các trình trợ giúp Plugin đóng gói được chọn tại thời điểm build |
OPENCLAW_EXTRA_MOUNTS | Các bind mount bổ sung từ host (phân tách bằng dấu phẩy source:target[:opts]) |
OPENCLAW_HOME_VOLUME | Duy trì /home/node trong một Docker volume có tên |
OPENCLAW_SANDBOX | Chọn tham gia bootstrap sandbox (1, true, yes, on) |
OPENCLAW_SKIP_ONBOARDING | Bỏ qua bước onboarding tương tác (1, true, yes, on) |
OPENCLAW_DOCKER_SOCKET | Ghi đè đường dẫn Docker socket |
OPENCLAW_DISABLE_BONJOUR | Tắt quảng bá Bonjour/mDNS (mặc định là 1 cho Docker) |
OPENCLAW_DISABLE_BUNDLED_SOURCE_OVERLAYS | Tắt các overlay bind-mount mã nguồn Plugin đóng gói |
OTEL_EXPORTER_OTLP_ENDPOINT | Endpoint collector OTLP/HTTP dùng chung cho xuất OpenTelemetry |
OTEL_EXPORTER_OTLP_*_ENDPOINT | Các endpoint OTLP riêng theo signal cho trace, metric hoặc log |
OTEL_EXPORTER_OTLP_PROTOCOL | Ghi đè giao thức OTLP. Hiện chỉ hỗ trợ http/protobuf |
OTEL_SERVICE_NAME | Tên dịch vụ dùng cho tài nguyên OpenTelemetry |
OTEL_SEMCONV_STABILITY_OPT_IN | Chọn tham gia các thuộc tính ngữ nghĩa GenAI thử nghiệm mới nhất |
OPENCLAW_OTEL_PRELOADED | Bỏ qua việc khởi động SDK OpenTelemetry thứ hai khi đã preload một SDK |
OPENCLAW_EXTRA_MOUNTS=/path/to/fork/extensions/synology-chat:/app/extensions/synology-chat:ro.
Thư mục mã nguồn được mount đó ghi đè bundle đã biên dịch tương ứng
/app/dist/extensions/synology-chat cho cùng Plugin id.
Khả năng quan sát
Xuất OpenTelemetry là luồng outbound từ container Gateway tới OTLP collector của bạn. Nó không yêu cầu port Docker đã được xuất bản. Nếu bạn build image cục bộ và muốn exporter OpenTelemetry đóng gói có sẵn bên trong image, hãy bao gồm các phụ thuộc runtime của nó:@openclaw/diagnostics-otel từ ClawHub trong
các bản cài Docker đã đóng gói trước khi bật xuất dữ liệu. Các image tự build từ mã nguồn tùy chỉnh vẫn có thể
bao gồm mã nguồn Plugin cục bộ bằng
OPENCLAW_EXTENSIONS=diagnostics-otel. Để bật xuất dữ liệu, hãy cho phép và bật
Plugin diagnostics-otel trong cấu hình, sau đó đặt
diagnostics.otel.enabled=true hoặc dùng ví dụ cấu hình trong Xuất OpenTelemetry.
Header xác thực collector được cấu hình qua
diagnostics.otel.headers, không phải qua biến môi trường Docker.
Metric Prometheus dùng port Gateway đã được xuất bản sẵn. Cài
clawhub:@openclaw/diagnostics-prometheus, bật Plugin
diagnostics-prometheus, sau đó scrape:
/metrics
công khai riêng hoặc đường dẫn reverse-proxy không xác thực. Xem
Metric Prometheus.
Kiểm tra sức khỏe
Các endpoint probe của container (không cần xác thực):HEALTHCHECK tích hợp sẵn ping /healthz.
Nếu các kiểm tra liên tục thất bại, Docker đánh dấu container là unhealthy và
các hệ thống điều phối có thể khởi động lại hoặc thay thế nó.
Ảnh chụp sức khỏe sâu có xác thực:
LAN so với loopback
scripts/docker/setup.sh mặc định OPENCLAW_GATEWAY_BIND=lan để quyền truy cập từ host tới
http://127.0.0.1:18789 hoạt động với port publishing của Docker.
lan(mặc định): trình duyệt host và CLI host có thể truy cập port Gateway đã xuất bản.loopback: chỉ các tiến trình bên trong namespace 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 alias host như 0.0.0.0 hoặc 127.0.0.1.Nhà cung cấp cục bộ trên host
Khi OpenClaw chạy trong Docker,127.0.0.1 bên trong container là chính container
đó, không phải máy host của bạn. Dùng host.docker.internal cho các nhà cung cấp AI
chạy trên host:
| Nhà cung cấp | URL mặc định trên host | URL thiết lập Docker |
|---|---|---|
| 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 ánh xạ host.docker.internal tới
host gateway của Docker cho Docker Engine trên Linux. Docker Desktop đã cung cấp
cùng hostname đó trên macOS và Windows.
Các dịch vụ trên host cũng phải lắng nghe trên một địa chỉ mà Docker có thể truy cập:
docker run riêng, hãy tự thêm cùng ánh xạ host,
ví dụ
--add-host=host.docker.internal:host-gateway.
Bonjour / mDNS
Docker bridge networking thường không chuyển tiếp multicast Bonjour/mDNS (224.0.0.251:5353) một cách ổn định. Vì vậy, thiết lập Compose đóng gói mặc định
OPENCLAW_DISABLE_BONJOUR=1 để Gateway không rơi vào vòng lặp crash hoặc liên tục
khởi động lại quảng bá khi bridge làm rơi lưu lượng multicast.
Dùng URL Gateway đã xuất bản, Tailscale hoặc wide-area DNS-SD cho các host Docker.
Chỉ đặt OPENCLAW_DISABLE_BONJOUR=0 khi chạy với host networking, macvlan,
hoặc một mạng khác mà multicast mDNS được biết là hoạt động.
Để xem các điểm dễ vướng và cách khắc phục sự cố, xem Khám phá Bonjour.
Lưu trữ và tính bền vững
Docker Compose bind-mountOPENCLAW_CONFIG_DIR vào /home/node/.openclaw và
OPENCLAW_WORKSPACE_DIR vào /home/node/.openclaw/workspace, nên các đường dẫn đó
vẫn tồn tại sau khi thay thế container. Khi một trong hai biến không được đặt, file
docker-compose.yml đóng gói sẽ fallback về ${HOME}/.openclaw (và
${HOME}/.openclaw/workspace cho mount workspace), hoặc /tmp/.openclaw
khi chính HOME cũng bị thiếu. Điều đó giúp docker compose up không
phát ra volume spec có nguồn rỗng trên các môi trường tối giản.
Thư mục cấu hình được mount đó là nơi OpenClaw lưu:
openclaw.jsoncho cấu hình hành viagents/<agentId>/agent/auth-profiles.jsoncho thông tin xác thực OAuth/API-key của nhà cung cấp đã lưu.envcho các secret runtime dựa trên env nhưOPENCLAW_GATEWAY_TOKEN
media/, các tệp JSONL phiên,
cron/runs/*.jsonl, thư mục gốc gói Plugin đã cài đặt, và nhật ký tệp xoay vòng
trong /tmp/openclaw/.
Trình trợ giúp shell (tùy chọn)
Để quản lý Docker hằng ngày dễ hơn, hãy cài đặtClawDock:
scripts/shell-helpers/clawdock-helpers.sh, hãy chạy lại lệnh cài đặt ở trên để tệp trợ giúp cục bộ của bạn theo dõi vị trí mới.
Sau đó dùng clawdock-start, clawdock-stop, clawdock-dashboard, v.v. Chạy
clawdock-help để xem tất cả lệnh.
Xem ClawDock để đọc hướng dẫn trợ giúp đầy đủ.
Bật sandbox tác tử cho Docker gateway
Bật sandbox tác tử cho Docker gateway
docker.sock sau khi các điều kiện tiên quyết của sandbox đạt. Nếu
thiết lập sandbox không thể hoàn tất, tập lệnh đặt lại agents.defaults.sandbox.mode
thành off.Tự động hóa / CI (không tương tác)
Tự động hóa / CI (không tương tác)
-T:Ghi chú bảo mật mạng chia sẻ
Ghi chú bảo mật mạng chia sẻ
openclaw-cli 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 xem đây là một ranh giới
tin cậy dùng chung. Cấu hình compose 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 mạng chia sẻ sau khi NET_RAW bị bỏ, biểu hiện là
EAI_AGAIN trong các lệnh dựa trên npm như openclaw plugins install.
Giữ tệp compose mặc định đã tăng cường bảo mật cho hoạt động Gateway thông thường. Phần
ghi đè cục bộ bên dưới nới lỏng tư thế bảo mật của container CLI bằng cách
khôi phục các capability mặc định của Docker, vì vậy chỉ dùng nó cho lệnh CLI
một lần cần truy cập registry gói, không dùng làm lệnh gọi Compose mặc định
của bạn:openclaw-cli chạy dài hạn, hãy tạo lại nó
với cùng phần ghi đè. docker compose exec và docker exec không thể
thay đổi capability Linux trên container đã được tạo.Quyền và EACCES
Quyền và EACCES
node (uid 1000). Nếu bạn thấy lỗi quyền trên
/home/node/.openclaw, hãy đảm bảo các bind mount trên host thuộc sở hữu của uid 1000:blocked plugin candidate: suspicious ownership (... uid=1000, expected uid=0 or root)
theo sau là plugin present but blocked. Điều đó nghĩa là uid của tiến trình và chủ sở hữu
thư mục Plugin được gắn kết không khớp nhau. Nên chạy container bằng uid mặc định
1000 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 cố ý chạy
OpenClaw dưới quyền root lâu dài.Tái build nhanh hơn
Tái build nhanh hơn
pnpm install trừ khi lockfile thay đổi:Tùy chọn container cho người dùng nâng cao
Tùy chọn container cho người dùng nâng cao
node không phải root. Để có một
container đầy đủ tính năng hơn:- Duy trì
/home/node:export OPENCLAW_HOME_VOLUME="openclaw_home" - Đóng gói sẵn phụ thuộc hệ thống:
export OPENCLAW_DOCKER_APT_PACKAGES="git curl jq" - Cài trình duyệt Playwright:
- Duy trì các tệp tải xuống của trình duyệt: dùng
OPENCLAW_HOME_VOLUMEhoặcOPENCLAW_EXTRA_MOUNTS. OpenClaw tự động phát hiện Chromium do Playwright quản lý của image Docker 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 nền
Siêu dữ liệu image nền
node:24-bookworm-slim và bao gồm tini làm tiến trình init entrypoint (PID 1) để đảm bảo các tiến trình zombie được thu hồi và tín hiệu được xử lý đúng trong các container chạy dài hạn. Nó xuất bản các chú thích image nền OCI bao gồm org.opencontainers.image.base.name,
org.opencontainers.image.source, và các chú thích khác. Digest nền Node được
làm mới thông qua các PR image nền Docker của Dependabot; các bản build phát hành không chạy
layer nâng cấp distro. Xem
chú thích image OCI.Chạy trên VPS?
Xem Hetzner (Docker VPS) và Docker VM Runtime để biết các bước triển khai VM dùng chung, bao gồm đóng gói binary, duy trì dữ liệu, và cập nhật.Sandbox tác tử
Khiagents.defaults.sandbox được bật với backend Docker, Gateway
chạy phần thực thi công cụ của tác tử (shell, đọc/ghi tệp, v.v.) bên trong các container Docker
cô lập trong khi chính Gateway vẫn ở trên host. Điều này tạo một bức tường cứng
quanh các phiên tác tử không tin cậy hoặc đa bên thuê mà không cần container hóa toàn bộ
Gateway.
Phạm vi sandbox có thể theo từng tác tử (mặc định), từng phiên, hoặc dùng chung. Mỗi phạm vi
có workspace riêng được gắn 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ô lập mạng, giới hạn tài nguyên, và container
trình duyệt.
Để xem cấu hình đầy đủ, image, ghi chú bảo mật, và hồ sơ đa tác tử, xem:
- Sandboxing — tài liệu tham chiếu sandbox đầy đủ
- OpenShell — truy cập shell tương tác vào container sandbox
- Multi-Agent Sandbox and Tools — ghi đè theo từng tác tử
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
(checkout nguồn) hoặc lệnh docker build nội tuyến từ Sandboxing § 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.
Container được tự động tạo theo từng phiên khi cần.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 của bạn,
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 (login shell), lệnh này nạp
/etc/profile và có thể đặt lại PATH. Đặt docker.env.PATH để thêm trước các
đường dẫn công cụ tùy chỉnh của bạn, hoặc thêm một tập lệnh trong /etc/profile.d/ vào Dockerfile.Bị OOM-killed trong khi build image (exit 137)
Bị OOM-killed trong khi build image (exit 137)
Chưa được ủy quyền hoặc cần ghép đôi trong Control UI
Chưa được ủy quyền hoặc cần ghép đôi trong Control UI
Mục tiêu Gateway hiển thị ws://172.x.x.x hoặc lỗi ghép đôi từ Docker CLI
Mục tiêu Gateway hiển thị ws://172.x.x.x hoặc lỗi ghép đôi từ Docker CLI
Liên quan
- Tổng quan cài đặt — tất cả phương pháp cài đặt
- Podman — phương án thay thế Podman cho Docker
- ClawDock — thiết lập cộng đồng Docker Compose
- Cập nhật — giữ OpenClaw luôn cập nhật
- Cấu hình — cấu hình Gateway sau khi cài đặt