From 48f047b52c93d24dea7139a1e0ce11726b294669 Mon Sep 17 00:00:00 2001 From: nntrivi2001 Date: Thu, 2 Apr 2026 14:20:32 +0700 Subject: [PATCH 1/2] chore: reduce gateway memory limit, update startup command, and remove redundant build context from cli service --- docker-compose.yml | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 654699b..d078eec 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,7 +8,7 @@ services: resources: limits: cpus: '4' - memory: 12G + memory: 8G reservations: memory: 2G environment: @@ -30,15 +30,11 @@ services: init: true restart: unless-stopped command: - [ - "openclaw", - "gateway", - "--bind", - "${OPENCLAW_GATEWAY_BIND:-lan}", - "--port", - "18789", - "--allow-unconfigured" - ] + - /bin/bash + - -c + - | + openclaw config set gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback true + exec openclaw gateway --bind "${OPENCLAW_GATEWAY_BIND:-lan}" --port 18789 --allow-unconfigured healthcheck: test: [ @@ -53,9 +49,6 @@ services: start_period: 20s openclaw-cli: - build: - context: . - dockerfile: ./Dockerfile image: openclaw-clawteam:latest pull_policy: build network_mode: "service:openclaw-gateway" From a1f673272ac88d000d1523aee4bf5a39ffbe90dd Mon Sep 17 00:00:00 2001 From: nntrivi2001 Date: Thu, 2 Apr 2026 15:26:32 +0700 Subject: [PATCH 2/2] feat: update readme for more detail information and add instruction, fix dashboard pairing error, update gitignore for memory files --- .gitignore | 2 ++ .openclaw/memory/main.sqlite | Bin 69632 -> 69632 bytes README.md | 28 +++++++++++++++++++++------- docker-compose.yml | 14 ++++---------- 4 files changed, 27 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index ac32804..312bde5 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,8 @@ .openclaw/workspace/memory/* !.openclaw/workspace/memory/.gitkeep +.openclaw/memory/* + .openclaw/tasks/* !.openclaw/tasks/.gitkeep diff --git a/.openclaw/memory/main.sqlite b/.openclaw/memory/main.sqlite index f214be48e03f0438eb3821b28c4a81e8de3b224e..b54d7dfd5b93ecac1e428bc2e6971ecea3a98250 100644 GIT binary patch literal 69632 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 F@E_wz?b84N delta 91 zcmZozz|ydQWr8##$3z)tMvjdMOZYdl6#S82RG Thư mục `.openclaw/` được tạo tự động khi gateway khởi động lần đầu. Tất cả cấu hình (token, origins, …) lưu tại đây và **persist qua các lần restart**.Nói cách khác, thư mục `.openclaw` chính là "bộ não" chứa dữ liệu của hệ thống. Để AI có thể hoạt động, bạn cần cấp "chìa khóa" (API Keys). Có 2 cách để thực hiện: -**Cách 1: Cấu hình qua Giao diện Web (Khuyên dùng)** Truy cập trực tiếp vào Terminal hệ thống `cli` (đây là nơi được tạo ra để kỹ sư có thể thao tác tương tác): ```bash docker exec -it openclaw-team-repo-openclaw-cli-1 bash @@ -139,14 +138,29 @@ Sau đó, trong container hãy thực thi lệnh thiết lập: openclaw setup ``` -**Cách 2: Cấu hình qua Terminal (bằng container CLI)** -Hệ thống Gateway mặc định có sẵn thiết lập khởi chạy không cần config, bạn có thể thiết lập trực tiếp trên web bằng cách: -* Mở trình duyệt và truy cập `http://localhost:18789` (Hoặc địa chỉ IP máy chủ của bạn với cổng `18789`). -Tại giao diện Web, hệ thống sẽ tự động hiển thị Wizard Setup để bạn điền các API Key (OpenAI, Anthropic, Gemini...). Các thông tin này sẽ được lưu ngầm tự động xuống thư mục `.openclaw`. +Sau đó chạy lệnh +```bash +openclaw configure +``` + +Các phần bạn cần config trước khi bắt đầu sử dụng: +- Channels: + Telegram (recommend): + Chọn Enter Telegram bot token (Cách lấy token có thể tham khảo ở `https://help.superchat.com/en/articles/14901-how-do-i-get-the-telegram-token-or-bot-id`) + Sau khi nhập xong token thì sẽ hỏi "Config DM access policies now?" -> (chọn `No`) + Sau khi config xong thì vào chat với bot, nó sẽ yêu cầu chạy lệnh `openclaw pairing approve telegram [id]` trong terminal thì hãy chạy để xác nhận kết nối. +- Model: + Nếu mọi người sử dụng API có trả phí thì có thể chọn `OpenAI` hoặc `Anthropic`. + Còn nếu mọi người sử dụng API free thì có thể chọn: + - `OpenRouter` (recommend): Các model em thấy sử dụng tốt gồm `Step 3.5 Flash (free)` (đặt làm primary), `Arcee Trinity Large preview: free` (đặt làm fallback) và `NVIDIA-Nemotron-3-Super-120B-A12B: free` (đặt làm fallback). Lưu ý: Không nên để auto vì đôi khi sẽ chọn những model không có khả năng suy luận hoặc model phải có suy luận. + - `Copilot` (Github Copilot Oauth): Sẽ được free model `GPT-5.1 mini` và `GPT-4.1` + +Sau khi config xong, mọi người hãy chạy lệnh `openclaw dashboard` và mở link Dashboard Url `http://localhost:18789` để kiểm tra. +Nếu nó báo lỗi `unauthorized: need pairing` thì mọi người vào chạy lệnh `openclaw devices list` để kiểm tra device đang request pairing và dùng `openclaw devices approve` để approve (không cần thêm id cũng được). Sau đó mọi người vào lại `http:localhost:18789` để kiểm tra lại thì sẽ được. + > **Cảnh báo:** Mọi tệp cấu hình bảo mật sẽ nằm ở thư mục `.openclaw` trên máy tính tải về. Thư mục này đã có trong `.gitignore`. Tuyệt đối KHÔNG sử dụng lệnh ép buộc (force add) để đẩy các tệp thuộc `.openclaw` lên Github nhằm tránh rò rỉ thông tin bảo mật. - --- ## 🌐 Cổng kết nối (Ports) diff --git a/docker-compose.yml b/docker-compose.yml index d078eec..d327d50 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,7 +16,7 @@ services: TERM: xterm-256color NODE_OPTIONS: "--max-old-space-size=8192" OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN:-team-token} - OPENCLAW_ALLOW_INSECURE_PRIVATE_WS: ${OPENCLAW_ALLOW_INSECURE_PRIVATE_WS:-} + OPENCLAW_ALLOW_INSECURE_PRIVATE_WS: "true" CLAUDE_AI_SESSION_KEY: ${CLAUDE_AI_SESSION_KEY:-} CLAUDE_WEB_SESSION_KEY: ${CLAUDE_WEB_SESSION_KEY:-} CLAUDE_WEB_COOKIE: ${CLAUDE_WEB_COOKIE:-} @@ -36,13 +36,7 @@ services: openclaw config set gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback true exec openclaw gateway --bind "${OPENCLAW_GATEWAY_BIND:-lan}" --port 18789 --allow-unconfigured healthcheck: - test: - [ - "CMD", - "node", - "-e", - "fetch('http://127.0.0.1:18789/healthz').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))" - ] + test: [ "CMD", "node", "-e", "fetch('http://127.0.0.1:18789/healthz').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))" ] interval: 30s timeout: 5s retries: 5 @@ -79,7 +73,7 @@ services: stdin_open: true tty: true init: true - entrypoint: ["/bin/bash", "-c"] - command: ["tail -f /dev/null"] + entrypoint: [ "/bin/bash", "-c" ] + command: [ "tail -f /dev/null" ] depends_on: - openclaw-gateway