Containers
Podman
Chạy OpenClaw Gateway trong container Podman không cần root, do người dùng không phải root hiện tại của bạn quản lý.
Mô hình dự kiến là:
- Podman chạy container Gateway.
- CLI
openclawtrên host của bạn là mặt phẳng điều khiển. - Theo mặc định, trạng thái bền vững nằm trên host trong
~/.openclaw. - Việc quản lý hằng ngày dùng
openclaw --container <name> ...thay vìsudo -u openclaw,podman exec, hoặc một người dùng dịch vụ riêng.
Điều kiện tiên quyết
- Podman ở chế độ không cần root
- OpenClaw CLI đã được cài trên host
- Tùy chọn:
systemd --usernếu bạn muốn tự động khởi động do Quadlet quản lý - Tùy chọn:
sudochỉ khi bạn muốnloginctl enable-linger "$(whoami)"để duy trì khi khởi động trên host không có màn hình
Bắt đầu nhanh
Thiết lập một lần
Từ thư mục gốc repo, chạy ./scripts/podman/setup.sh.
Khởi động container Gateway
Khởi động container bằng ./scripts/run-openclaw-podman.sh launch.
Chạy onboarding bên trong container
Chạy ./scripts/run-openclaw-podman.sh launch setup, rồi mở http://127.0.0.1:18789/.
Quản lý container đang chạy từ CLI trên host
Đặt OPENCLAW_CONTAINER=openclaw, rồi dùng các lệnh openclaw thông thường từ host.
Chi tiết thiết lập:
- Theo mặc định,
./scripts/podman/setup.shdựngopenclaw:localtrong kho Podman không cần root của bạn, hoặc dùngOPENCLAW_IMAGE/OPENCLAW_PODMAN_IMAGEnếu bạn đặt một trong hai biến này. - Nó tạo
~/.openclaw/openclaw.jsonvớigateway.mode: "local"nếu chưa có. - Nó tạo
~/.openclaw/.envvớiOPENCLAW_GATEWAY_TOKENnếu chưa có. - Với các lần khởi chạy thủ công, trình trợ giúp chỉ đọc một allowlist nhỏ gồm các khóa liên quan đến Podman từ
~/.openclaw/.envvà truyền các biến môi trường runtime tường minh vào container; nó không đưa toàn bộ tệp env cho Podman.
Thiết lập do Quadlet quản lý:
./scripts/podman/setup.sh --quadlet
Quadlet là tùy chọn chỉ dành cho Linux vì nó phụ thuộc vào dịch vụ người dùng systemd.
Bạn cũng có thể đặt OPENCLAW_PODMAN_QUADLET=1.
Các biến môi trường dựng/thiết lập tùy chọn:
OPENCLAW_IMAGEhoặcOPENCLAW_PODMAN_IMAGE-- dùng image hiện có/đã kéo về thay vì dựngopenclaw:localOPENCLAW_DOCKER_APT_PACKAGES-- cài các gói apt bổ sung trong quá trình dựng imageOPENCLAW_EXTENSIONS-- cài sẵn các phụ thuộc Plugin tại thời điểm dựngOPENCLAW_INSTALL_BROWSER-- cài sẵn Chromium và Xvfb cho tự động hóa trình duyệt (đặt thành1để bật)
Khởi động container:
./scripts/run-openclaw-podman.sh launch
Script khởi động container bằng uid/gid hiện tại của bạn với --userns=keep-id và bind-mount trạng thái OpenClaw của bạn vào container.
Onboarding:
./scripts/run-openclaw-podman.sh launch setup
Sau đó mở http://127.0.0.1:18789/ và dùng token từ ~/.openclaw/.env.
Mặc định CLI trên host:
export OPENCLAW_CONTAINER=openclaw
Sau đó các lệnh như sau sẽ tự động chạy bên trong container đó:
openclaw dashboard --no-open
openclaw gateway status --deep # includes extra service scan
openclaw doctor
openclaw channels login
Trên macOS, Podman machine có thể khiến trình duyệt có vẻ không phải cục bộ đối với Gateway. Nếu Giao diện điều khiển báo lỗi xác thực thiết bị sau khi khởi chạy, hãy dùng hướng dẫn Tailscale trong Podman và Tailscale.
Podman và Tailscale
Để truy cập HTTPS hoặc trình duyệt từ xa, hãy làm theo tài liệu Tailscale chính.
Ghi chú riêng cho Podman:
- Giữ host publish của Podman ở
127.0.0.1. - Ưu tiên
tailscale servedo host quản lý thay vìopenclaw gateway --tailscale serve. - Trên macOS, nếu ngữ cảnh xác thực thiết bị của trình duyệt cục bộ không ổn định, hãy dùng truy cập Tailscale thay cho các cách обход tạm bằng đường hầm cục bộ tự phát.
Xem:
Systemd (Quadlet, tùy chọn)
Nếu bạn đã chạy ./scripts/podman/setup.sh --quadlet, quá trình thiết lập sẽ cài một tệp Quadlet tại:
~/.config/containers/systemd/openclaw.container
Các lệnh hữu ích:
- Khởi động:
systemctl --user start openclaw.service - Dừng:
systemctl --user stop openclaw.service - Trạng thái:
systemctl --user status openclaw.service - Nhật ký:
journalctl --user -u openclaw.service -f
Sau khi chỉnh sửa tệp Quadlet:
systemctl --user daemon-reload
systemctl --user restart openclaw.service
Để duy trì khi khởi động trên host SSH/không có màn hình, hãy bật lingering cho người dùng hiện tại của bạn:
sudo loginctl enable-linger "$(whoami)"
Cấu hình, env và lưu trữ
- Thư mục cấu hình:
~/.openclaw - Thư mục workspace:
~/.openclaw/workspace - Tệp token:
~/.openclaw/.env - Trình trợ giúp khởi chạy:
./scripts/run-openclaw-podman.sh
Script khởi chạy và Quadlet bind-mount trạng thái host vào container:
OPENCLAW_CONFIG_DIR->/home/node/.openclawOPENCLAW_WORKSPACE_DIR->/home/node/.openclaw/workspace
Theo mặc định, đây là các thư mục trên host, không phải trạng thái container ẩn danh, nên
openclaw.json, auth-profiles.json theo từng agent, trạng thái kênh/nhà cung cấp,
phiên và workspace vẫn tồn tại sau khi thay container.
Thiết lập Podman cũng khởi tạo gateway.controlUi.allowedOrigins cho 127.0.0.1 và localhost trên cổng Gateway đã publish để dashboard cục bộ hoạt động với bind không phải loopback của container.
Các biến môi trường hữu ích cho trình khởi chạy thủ công:
OPENCLAW_PODMAN_CONTAINER-- tên container (mặc định làopenclaw)OPENCLAW_PODMAN_IMAGE/OPENCLAW_IMAGE-- image để chạyOPENCLAW_PODMAN_GATEWAY_HOST_PORT-- cổng host ánh xạ tới container18789OPENCLAW_PODMAN_BRIDGE_HOST_PORT-- cổng host ánh xạ tới container18790OPENCLAW_PODMAN_PUBLISH_HOST-- giao diện host cho các cổng đã publish; mặc định là127.0.0.1OPENCLAW_GATEWAY_BIND-- chế độ bind Gateway bên trong container; mặc định làlanOPENCLAW_PODMAN_USERNS--keep-id(mặc định),auto, hoặchost
Trình khởi chạy thủ công đọc ~/.openclaw/.env trước khi hoàn tất các mặc định container/image, nên bạn có thể lưu các giá trị này ở đó.
Nếu bạn dùng OPENCLAW_CONFIG_DIR hoặc OPENCLAW_WORKSPACE_DIR không mặc định, hãy đặt cùng các biến đó cho cả lệnh ./scripts/podman/setup.sh và các lệnh ./scripts/run-openclaw-podman.sh launch sau này. Trình khởi chạy cục bộ trong repo không lưu các ghi đè đường dẫn tùy chỉnh giữa các shell.
Ghi chú về Quadlet:
- Dịch vụ Quadlet được tạo cố ý giữ một hình dạng mặc định cố định, được gia cố: các cổng publish trên
127.0.0.1,--bind lanbên trong container và không gian tên người dùngkeep-id. - Nó ghim
OPENCLAW_NO_RESPAWN=1,Restart=on-failurevàTimeoutStartSec=300. - Nó publish cả
127.0.0.1:18789:18789(Gateway) và127.0.0.1:18790:18790(bridge). - Nó đọc
~/.openclaw/.envlàmEnvironmentFileruntime cho các giá trị nhưOPENCLAW_GATEWAY_TOKEN, nhưng không sử dụng allowlist ghi đè riêng cho Podman của trình khởi chạy thủ công. - Nếu bạn cần cổng publish tùy chỉnh, host publish tùy chỉnh, hoặc các cờ chạy container khác, hãy dùng trình khởi chạy thủ công hoặc chỉnh sửa trực tiếp
~/.config/containers/systemd/openclaw.container, rồi reload và khởi động lại dịch vụ.
Các lệnh hữu ích
- Nhật ký container:
podman logs -f openclaw - Dừng container:
podman stop openclaw - Xóa container:
podman rm -f openclaw - Mở URL dashboard từ CLI trên host:
openclaw dashboard --no-open - Sức khỏe/trạng thái qua CLI trên host:
openclaw gateway status --deep(thăm dò RPC + quét dịch vụ bổ sung)
Khắc phục sự cố
- Quyền bị từ chối (EACCES) trên cấu hình hoặc workspace: Theo mặc định, container chạy với
--userns=keep-idvà--user <your uid>:<your gid>. Hãy bảo đảm các đường dẫn cấu hình/workspace trên host thuộc sở hữu của người dùng hiện tại của bạn. - Khởi động Gateway bị chặn (thiếu
gateway.mode=local): Hãy bảo đảm~/.openclaw/openclaw.jsontồn tại và đặtgateway.mode="local".scripts/podman/setup.shtạo tệp này nếu chưa có. - Các lệnh CLI container trỏ sai đích: Dùng rõ ràng
openclaw --container <name> ..., hoặc xuấtOPENCLAW_CONTAINER=<name>trong shell của bạn. openclaw updatethất bại với--container: Dự kiến như vậy. Dựng/kéo lại image, rồi khởi động lại container hoặc dịch vụ Quadlet.- Dịch vụ Quadlet không khởi động: Chạy
systemctl --user daemon-reload, rồisystemctl --user start openclaw.service. Trên các hệ thống không có màn hình, bạn cũng có thể cầnsudo loginctl enable-linger "$(whoami)". - SELinux chặn bind mount: Giữ nguyên hành vi mount mặc định; trình khởi chạy tự động thêm
:Ztrên Linux khi SELinux ở chế độ enforcing hoặc permissive.