作者 | Jean
OpenClaw火爆全網,“養龍蝦”成為流行語。“龍蝦”能自己上網、寫報告、操作文檔,像個不用睡覺的24小時的個人助理。
但“龍蝦”的部署并不簡單,90%的小白用戶會被復雜的部署攔住。而且這只“龍蝦”脾氣不小,大模型自帶的“幻覺”毛病,加上它手里握著的高權限,搞不好就會把服務器變成黑客的“蝦塘”。連工信部都拉響了警報:配置不當,就是災難級漏洞。
聽起來很嚇人?別慌。
作為一位文科生的家長,我剛給女兒在云服務器上安全地“養”了一只龍蝦。這篇教程,就是我整理出來的“養蝦筆記”——不用懂Linux內核,不用背網絡安全術語,全程跟著點就行。
我們會用最土的辦法(建個普通用戶、扔進沙箱跑)、最穩的配置(HTTPS加密 + 密碼令牌),把這只“小龍蝦”伺候得服服帖帖,既能24小時干活,又把風險鎖得死死的。
如果你也想給家人、給自己配一個這樣聽話的AI助理,又怕翻車,這篇小龍蝦安全部署指南,就是為你準備的。
OpenClaw目前支持的國內即時通訊軟件只有飛書,微信、釘釘等還不支持。因此OpenClaw中文社區就應運而生了,然后發布了OpenClaw中文社區版,目前支持飛書,微信、釘釘等即將上線。
以下就介紹一下在云服務器上的OpenClaw的安全部署。
01
安裝OpenClaw中文社區版
我的云服務器裝的是Ubuntu24, 云服務器上跑的絕大部分都是Linux,通過終端遠程管理就可以,安全、高效、省心,所以OpenClaw火爆也會成為云服務器產業的一次機會。關鍵是,Linux用戶管理非常周密,本篇會用普通用戶openclaw來運行OpenClaw,讓它運行在沙箱中,用root部署太危險了。如果是Windows用戶,比如家庭電腦或筆記本電腦等,可以在Windows上裝個WSL2,然后在Windws上跑起Ubuntu24,也在Linux上部署。這樣比直接用Windows管理員身份運行OpenClaw要安全很多。
1、安裝Node.js 22
OpenClaw是用Node.js開發的TypeScript(JavaScript)應用,要求Node.js 22+的版本,一般Ubuntu 24上帶的Node.js,比如Anaconda建立的Python虛擬環境中,是Node.js 20,需要升級一下。比如下面我的Conda base環境中,就是Node.js 20,安裝在/usr/lib64/anaconda3/bin目錄下。
(base) root@VM-12-2-ubuntu:~# which node
/usr/lib64/anaconda3/bin/node
(base) root@VM-12-2-ubuntu:~# node -v
v20.17.0
用root的身份安裝Node.js 22,如果有激活Conda虛擬環境要先退出,如果有為服務器配置VPN代理也要先屏蔽VPN的設置。
# conda deactivate
# export http_proxy=
# export https_proxy=
如果都沒有,就直接安裝。
# curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
# apt-get install -y nodejs
裝好檢查一下,安裝在/usr/bin目錄下,注意Conda虛擬環境沒有激活。
root@VM-12-2-ubuntu:~# which node
/usr/bin/node
root@VM-12-2-ubuntu:~# node -v
v22.22.0
如果有需要,安裝之前可以為Node.js設置國內的鏡像,這樣安裝會快很多,比如設置為淘寶的鏡像:
root@VM-12-2-ubuntu:~# npm config set registry
https://registry.npm.taobao.org
root@VM-12-2-ubuntu:~# npm config get registry
https://registry.npm.taobao.org
2、安裝OpenClaw中文社區版
用root的身份安裝。OpenClaw中文社區版與OpenClaw自動同步,應用的名字是openclaw-cn,多了“-cn”后綴,目前是0.1.7版,對應的應該是OpenClaw 2026.2.x或2026.3.x版,不過不一定是最新的版本,因為我發覺有些配置的選項它還不認識。
# npm install -g openclaw-cn@latest
驗證安裝:
root@VM-12-2-ubuntu:~# which openclaw-cn
/usr/bin/openclaw-cn
root@VM-12-2-ubuntu:~# openclaw-cn --version
0.1.7
02
配置OpenClaw網關服務
1、創建普通用戶openclaw
這個用戶將用于運行OpenClaw,以便把它限制在沙箱中,盡量減少大模型幻覺和網絡入侵帶來的風險,這是Linux系統固有的優點。
# adduser openclaw
這個命令會創建用戶并提示輸入并設置口令,創建home目錄,設定同名用戶組,指定登錄后用bash。
2、配置OpenClaw網關服務
OpenClaw后端所有的功能都要通過網關服務來執行,它的原理圖如下:
圖1 OpenClaw原理架構圖
如果按項目主頁的指引,用root或其它system類型用戶的身份運行下面的安裝向導命令,就會在當前用戶的~/.config/systemd/user/ 目錄下創建openclaw-gateway.service系統服務配置文件,把網關配置為用戶級的系統守護進程,但如果是root用戶權限過大就太危險了。
先用root的身份運行一次上面的安裝向導命令,具體操作可以參閱后面的第三節,它會生成root的用戶級系統服務/root/.config/systemd/user/openclaw-gateway.service,把它拷貝成 /etc/systemd/system/openclaw-gateway.service,然后停止root用戶的OpenClaw網關,取消激活以免端口沖突。
# openclaw-cn onboard --install-daemon
# cp/root/.config/systemd/user/openclaw-gateway.service /etc/systemd/system/openclaw-gateway.service
# systemctl --user stop openclaw-gateway
# systemctl --user disable openclaw-gateway
# systemctl --user daemon-reload
再為普通用戶openclaw配置網關服務。它沒有運行用戶級系統進程的權限,所以我們用root的身份把OpenClaw網關服務配置為系統級的服務,然后以用戶openclaw的身份運行服務,工作目錄為其HOME目錄。編輯服務配置文件:
(base) root@VM-12-2-ubuntu:~# cd /etc/systemd/system
(base) root@VM-12-2-ubuntu:/etc/systemd/system# vi openclaw-gateway.service
改好后內容要點如下:
1)以用戶openclaw的身份運行。
2)工作目錄為其HOME目錄。
3)用/usr/bin/node運行,這是前面安裝的Node.js 22,服務端口是默認的18789。
4)配置文件由環境變量
OPENCLAW_CONFIG_PATH=/home/openclaw/.openclaw/openclaw.json指定,在用戶openclaw的目錄下。這樣設定是因為這個配置文件是OpenClaw前端和后端(網關)共用的,以后可以通過Control UI修改,然后重啟網關即可生效。
5)這里設置的OPENCLAW_GATEWAY_TOKEN是用root初始化時設置的,會被openclaw.json中指定的token覆蓋,也可以不設置。留下來只是看看它原來的樣子。
6)嚴格限制openclaw網關的權限。
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
# ProtectHome=true
ReadWritePaths=/home/openclaw
不能設置ProtectHome,否則服務不能chdir到HOME目錄,啟動失敗。要開放HOME目錄/home/openclaw的讀寫權限,否則網關不能正常工作。
完整的內容如下:
[Unit]
Description=Openclaw Gateway (v0.1.7)
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=openclaw
Group=openclaw
WorkingDirectory=/home/openclaw
ExecStart="/usr/bin/node" "/usr/lib/node_modules/openclaw-cn/dist/entry.js" gateway --port 18789
Restart=always
RestartSec=5
KillMode=process
Environment=OPENCLAW_CONFIG_PATH=/home/openclaw/.openclaw/openclaw.json
Environment=HOME=/home/openclaw
Environment="PATH=/usr/local/bin:/usr/bin:/bin"
Environment=OPENCLAW_GATEWAY_PORT=18789
# 注:這個token是用root安裝網關時創建的,會被openclaw.json里指定的token覆蓋,已失效。
# Environment=OPENCLAW_GATEWAY_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Environment="OPENCLAW_SYSTEMD_UNIT=openclaw-gateway.serviceEnvironment=OPENCLAW_SERVICE_MARKER=openclaw
Environment=OPENCLAW_SERVICE_KIND=gateway
Environment=OPENCLAW_SERVICE_VERSION=0.1.7
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
# ProtectHome=true
ReadWritePaths=/home/openclaw
[Install]
WantedBy=multi-user.target
激活并啟動網關服務:
# systemctl daemon-reload
# systemctl enable openclaw-gateway
# systemctl start openclaw-gateway
可以另開一個終端窗口實時查看網關服務的啟動日志,看看啟動中有什么錯誤:
journalctl -u openclaw-gateway.service -f
這是正常啟動的跟蹤日志:
Mar 06 10:56:20 VM-12-2-ubuntu systemd[1]: openclaw-gateway.service: Deactivated successfully.
Mar 06 10:56:20 VM-12-2-ubuntu systemd[1]: Stopped openclaw-gateway.service - Openclaw Gateway (v0.1.7).
Mar 06 10:56:20 VM-12-2-ubuntu systemd[1]: openclaw-gateway.service: Consumed 2min 44.117s CPU time, 1.3G memory peak, 0B memory swap peak.
Mar 06 10:56:37 VM-12-2-ubuntu systemd[1]: Started openclaw-gateway.service - Openclaw Gateway (v0.1.7).
然后可以查看服務器是否正常啟動,偵聽18789端口:
(base) root@VM-12-2-ubuntu:/etc/systemd/system# ss -lntp | grep 18789
LISTEN 0 511 0.0.0.0:18789 0.0.0.0:* users:(("clawdbot-gatewa",pid=2561966,fd=23))
正常運行時,在所有的IP(0.0.0.0,這個后面再講,默認是127.0.0.1,loopback地址)上監聽18789端口。
(base) root@VM-12-2-ubuntu:/etc/systemd/system# systemctl status openclaw-gateway
● openclaw-gateway.service - Openclaw Gateway (v0.1.7)
Loaded: loaded (/etc/systemd/system/openclaw-gateway.service; enabled; preset: enabled)
Active: active (running) since Fri 2026-03-06 10:56:37 CST; 14min ago
Main PID: 2561959 (openclaw-cn)
Tasks: 22 (limit: 9126)
Memory: 395.9M (peak: 1.3G)
CPU: 49.425s
CGroup: /system.slice/openclaw-gateway.service
├─2561959 openclaw-cn
└─2561966 clawdbot-gateway
Mar 06 10:57:10 VM-12-2-ubuntu node[2561966]: ' Mode of event/callback subscription(訂閱方式)\n' +
Mar 06 10:57:10 VM-12-2-ubuntu node[2561966]: ' -> \n' +
Mar 06 10:57:10 VM-12-2-ubuntu node[2561966]: ' Receive events/callbacks through persistent connection(使用 長連接 接收事件/回調)'
Mar 06 10:57:10 VM-12-2-ubuntu node[2561966]: ]
Mar 06 10:57:10 VM-12-2-ubuntu node[2561966]: 2026-03-06T02:57:10.082Z [feishu] feishu[default]: WebSocket client started
Mar 06 10:57:10 VM-12-2-ubuntu node[2561966]: 2026-03-06T02:57:10.321Z [info]: [ '[ws]', 'ws client ready' ]
Mar 06 10:57:11 VM-12-2-ubuntu node[2561966]: 2026-03-06T02:57:11.662Z [bonjour] gateway name conflict resolved; newName="VM-12-2-ubuntu (Clawdbot) (2)"
Mar 06 10:57:11 VM-12-2-ubuntu node[2561966]: 2026-03-06T02:57:11.664Z [bonjour] gateway hostname conflict resolved; newHostname="VM-12-2-ubuntu-(2)"
Mar 06 10:57:19 VM-12-2-ubuntu node[2561966]: 2026-03-06T02:57:19.570Z [ws] Proxy headers detected from untrusted address. Connection will not be treated as local>
Mar 06 10:57:19 VM-12-2-ubuntu node[2561966]: 2026-03-06T02:57:19.597Z [ws] webchat connected conn=6b22b40d-c498-40b6-b52f-52344e1fd830 remote=127.0.0.1 client=cl>
lines 1-21/21 (END)
03
運行安裝向導
這一步完成OpenClaw命令行工具(CLI)及WEB Control UI、接入渠道、LLM等的配置,以生成所有需要的配置文件,如飛書的配置等。
以登錄的方式切換到新創建的openclaw用戶。
# su -l openclaw
運行下面的安裝向導命令,注意,不帶--install-daemon選項,網關服務已經配置好了。
openclaw-cn onboard
它會創建所有需要的配置文件以及workspace目錄,所有openclaw的文件都存放在.openclaw目錄下,包括配置文件openclaw.json。
openclaw@VM-12-2-ubuntu:~/.openclaw$ ls
agents cron exec-approvals.json feishu-dedup.db-shm identity openclaw.json update-check.json
credentials devices feishu-dedup.db feishu-dedup.db-wal memory openclaw.json.bak workspace
接受安全警告,選擇快速開始模式,會引導你配置各種需要的部件,包括飛書接入。配置的過程如下,注意里面講的systemd不可訪問,跳過配置,是因為我們把網關服務配置成了系統級的服務,不是OpenClaw原來的用戶級系統服務,腳本檢測不到,但不影響使用。
penclaw@VM-12-2-ubuntu:~$ openclaw-cn onboard
OpenClaw-CN 0.1.7 (415f7b6) — 將"I'll reply later"變為"my bot replied instantly"。
?████?█?????█████?█???█?███??████??████???█?
█?????█?????█???█?█?█?█?█??█?█???█?█???█??█?
█?????█?????█████?█?█?█?█??█?████??█???█??█?
█?????█?????█???█?█?█?█?█??█?█??█??█???█??█?
?████?█████?█???█??█?█??███??████???███???█?
每日新鮮 ??
┌ OpenClaw安裝引導
│
◇ 安全 ─────────────────────────────────────────────────────────────╮
│ 安全警告 — 請閱讀。 │
│ │
│ OpenClaw是一個業余項目,仍處于測試階段。可能會有粗糙之處。 │
│ 如果啟用了工具,此機器人可以讀取文件并執行操作。 │
│ 不良提示可能會誘使其執行不安全的操作。 │
│ │
│ 如果您不熟悉基本的安全和訪問控制,請不要運行OpenClaw。 │
│ 在啟用工具或將系統暴露給互聯網之前,請尋求有經驗的人士幫助。 │
│ │
│ 推薦的基礎設置: │
│ - 配對/白名單 + @提及門控。 │
│ - 沙箱 + 最低權限工具。 │
│ - 將機密信息保留在智能體可訪問的文件系統之外。 │
│ - 對于使用工具或不受信任收件箱的機器人,請使用最強大的可用模型。 │
│ │
│ 定期運行: │
│ openclaw-cn security audit --deep │
│ openclaw-cn security audit --fix │
│ │
│ 必讀:https://clawd.org.cn/gateway/security.html │
├────────────────────────────────────────────────────────────────────╯
│
◇ 我理解這很強大且本質上存在風險。繼續嗎?
│ Yes
│
◇ 安裝引導模式
│ 快速開始
│
◇ 檢測到現有配置 ───────────────────╮
│ workspace: ~/.openclaw/workspace │
│ model: zai/glm-5 │
│ gateway.mode: local │
│ gateway.port: 18789 │
│ gateway.bind: lan │
├────────────────────────────────────╯
│
◇ 配置處理
│ 使用現有值
│
◇ 快速開始 ───────────────╮
│ 保留您當前的網關設置: │
│ 網關端口:18789 │
│ 網關綁定:局域網 │
│ 網關認證:令牌(默認) │
│ Tailscale暴露:關閉 │
│ 直接到聊天頻道。 │
├──────────────────────────╯
│
◇ 模型/認證提供商
│ Z.AI (GLM-5)
│
◇ Z.AI (GLM-5) 認證方法
│ Z.AI (GLM-5) API key
│
◇ Enter Z.AI API key
│ xxxxxxxxxx
│
◇ Model configured ───────────────╮
│ Default model set to zai/glm-5 │
├──────────────────────────────────╯
│
◇ 默認模型
│ 保持當前(zai/glm-5)
│
◇ 通道狀態 ─────────────────────╮
│ Telegram: 未配置 │
│ WhatsApp: 未配置 │
│ Discord: 未配置 │
│ Google Chat: 未配置 │
│ Feishu: 已配置(插件已禁用) │
│ Slack: 未配置 │
│ Signal: 未配置 │
│ iMessage: 未配置 │
│ Feishu: 安裝插件以啟用 │
├────────────────────────────────╯
│
◇ 通道工作原理 ─────────────────────────────────────────────────────────────────╮
│ DM安全:默認為配對;未知的私信會獲得配對碼。 │
│ 批準命令:openclaw-cn pairing approve <channel> <code> │
│ 公開私信需要dmPolicy="open" + allowFrom=["*"]. │
│ 多用戶私信:設置session.dmScope="per-channel-peer" 來隔離會話。 │
│ 文檔:start/pairing │
│ │
│ Telegram: 最簡單的入門方式——使用 @BotFather注冊一個機器人并開始使用。 │
│ WhatsApp: 使用您自己的號碼工作;建議使用獨立手機 + eSIM。 │
│ Discord: 目前支持非常好。 │
│ Google Chat: 帶有HTTP webhook的Google Workspace聊天應用。 │
│ Feishu: 飛書/Lark機器人集成 (WebSocket)。 │
│ Slack: 已支持(Socket模式)。 │
│ Signal: signal-cli鏈接設備;更多設置(David Reagans說:"加入Discord吧。")。 │
│ iMessage: 這仍然是一個正在進行的工作。 │
├────────────────────────────────────────────────────────────────────────────────╯
│
◇ 選擇通道(快速開始)
│ Feishu (Lark Open Platform)
│
◇ 安裝Feishu插件?
│ 使用本地插件路徑
03:52:31 [plugins] feishu_doc: Registered feishu_doc, feishu_app_scopes
03:52:31 [plugins] feishu_drive: Registered feishu_drive tool
03:52:31 [plugins] feishu_wiki: Registered feishu_wiki tool
03:52:31 [plugins] feishu_im: Registered feishu_im_list_chats, feishu_im_get_chat, feishu_im_list_members, feishu_im_send_message, feishu_im_reply_message, feishu_im_get_messages, feishu_im_create_chat
03:52:31 [plugins] feishu_task: Registered feishu_task tool (8 actions)
03:52:31 [plugins] feishu_calendar: Registered feishu_calendar tool (8 actions)
03:52:31 [plugins] feishu_sheets: Registered feishu_sheets tool (7 actions)
[feishu] plugins registered: 9 modules loaded
│
◇ Feishu已經配置。您想要進行什么操作?
│ 修改設置
│
◇ 選擇平臺 / Select platform
│ 飛書(國內版)
│
◇ 已選通道 ─────────────────────────────────────────────────╮
│ Feishu — 飛書/Lark enterprise messaging. 文檔: │
│ feishu │
├────────────────────────────────────────────────────────────╯
Config overwrite: /home/openclaw/.openclaw/openclaw.json (sha256 6bfc049a9d315f90c88b131fdf82d072a495e4cff91199d4f3a5307c72ca776c -> 867f76512e58effcf20bb0121f1cb0a37d3740eb86843682196e375410185776, backup=/home/openclaw/.openclaw/openclaw.json.bak)
Updated ~/.openclaw/openclaw.json
工作區正常:~/.openclaw/workspace
會話正常:~/.openclaw/agents/main/sessions
│
◇ 技能狀態 ──────────╮
│ 符合條件:51 │
│ 缺少需求:0 │
│ 被允許列表阻止:0 │
├─────────────────────╯
│
◇ 現在配置技能?(推薦)
│ No
│
◇ 鉤子 ───────────────────────────────────────────╮
│ 鉤子讓您能夠在代理命令發出時自動執行操作。 │
│ 例如:在您發出/new時將會話上下文保存到內存中。 │
│ │
│ 了解更多:https://docs.clawd.bot/hooks │
├──────────────────────────────────────────────────╯
│
◇ 啟用鉤子?
│ 暫時跳過
Config overwrite: /home/openclaw/.openclaw/openclaw.json (sha256 867f76512e58effcf20bb0121f1cb0a37d3740eb86843682196e375410185776 -> f248f7b04215fdd25bd87889613f690a8dd2198a5fcb447e99af04596fe6b1b5, backup=/home/openclaw/.openclaw/openclaw.json.bak)
│
◇ Systemd ───────────────────────────────────────────────────────────────────────────────╮
│ Systemd user services are unavailable. Skipping lingering checks and service install. │
├─────────────────────────────────────────────────────────────────────────────────────────╯
│
◇
Feishu: ok
Agents: main (default)
Heartbeat interval: 30m (main)
Session store (main): /home/openclaw/.openclaw/agents/main/sessions/sessions.json (1 entries)
- agent:main:main (1m ago)
│
◇ 可選應用 ───────────────────╮
│ 為額外功能添加節點: │
│ - macOS應用(系統+通知) │
│ - iOS應用(相機/畫布) │
│ - Android應用(相機/畫布) │
├──────────────────────────────╯
│
◇ 控制界面 ─────────────────────────────────────────────────────────────────────────────────╮
│ 網頁界面:http://127.0.0.1:18789/ │
│ 網頁界面(帶令牌):http://127.0.0.1:18789/?token=xxxxxxxx │
│ xxxxxxxx │
│ 網關WS:ws://127.0.0.1:18789 │
│ 網關:可訪問 │
│ 文檔:https://docs.clawd.bot/web/control-ui │
├────────────────────────────────────────────────────────────────────────────────────────────╯
│
◇ 啟動TUI(最佳選項!) ────────────────────╮
│ 這是定義性的操作,使您的智能體成為您的。 │
│ 請慢慢來。 │
│ 您告訴它的越多,體驗就會越好。 │
│ 我們將發送:"醒來吧,我的朋友!" │
├────────────────────────────────────────────╯
│
◇ 令牌 ──────────────────────────────────────────────────────────────────────────────╮
│ 網關令牌:網關+控制界面的共享認證。 │
│ 存儲在:~/.openclaw/openclaw.json(gateway.auth.token)或OPENCLAW_GATEWAY_TOKEN。 │
│ 網頁界面在此瀏覽器的localStorage中存儲副本(clawdbot.control.settings.v1)。 │
│ 隨時獲取帶令牌的鏈接:openclaw-cn dashboard --no-open │
├─────────────────────────────────────────────────────────────────────────────────────╯
│
◇ 您想如何孵化您的機器人?
│ 在TUI中孵化(推薦)
│
◇ 工作區備份 ────────────────────────────────────────────╮
│ 備份您的智能體工作區。 │
│ 文檔:https://docs.clawd.bot/concepts/agent-workspace │
├─────────────────────────────────────────────────────────╯
│
◇ 安全 ──────────────────────────────────────────────────────────────────────────────╮
│ 在您的計算機上運行智能體是有風險的——加強您的設置:https://docs.clawd.bot/security │
├─────────────────────────────────────────────────────────────────────────────────────╯
│
◇ 網絡搜索(可選) ───────────────────────────────────────────────╮
│ 如果希望您的智能體能夠搜索網絡,則需要API密鑰。 │
│ │
│ Clawdbot使用Brave Search作為`web_search`工具。沒有Brave Search │
│ API密鑰,網絡搜索將無法工作。 │
│ │
│ 交互式設置: │
│ - 運行:openclaw-cn configure --section web │
│ - 啟用web_search并粘貼您的Brave Search API密鑰 │
│ │
│ 替代方案:在網關環境中設置BRAVE_API_KEY(無需更改配置)。 │
│ 文檔:https://docs.clawd.bot/tools/web │
├──────────────────────────────────────────────────────────────────╯
│
◇ 接下來 ─────────────────────────────────────────────────────╮
│ 接下來:https://clawd.bot/showcase("人們正在構建什么")。 │
├──────────────────────────────────────────────────────────────╯
│
└ 安裝引導完成。使用上面的帶令牌儀表盤鏈接控制Clawdbot。
openclaw-cn tui - ws://127.0.0.1:18789 - agent main - session main session agent:main:main
這是配置好的openclaw.json文件,不能直接用這個文件替換,因為安裝向導還會生成上述目錄中的其它配置文件。配好后則可以直接改這個配置文件。要點如下:
1、模型配了用智譜AI最新的旗艦模型GLM-5,api_key在配置的過程中粘貼進去,會保存進上面列出的文件中(具體在哪還沒有研究)。
2、工作區在/home/openclaw/.openclaw/workspace目錄下。
3、渠道配置了飛書,這個后面第四節再具體講。這里配置飛書渠道和飛書開放平臺配置飛書應用要交叉進行。這里要填入飛書開放平臺創建的飛書應用的App ID與App Secret,然后OpenClaw會創建一個到飛書開放平臺的長連接,然后飛書應用配置中才可以繼續配置第6步:配置事件訂閱。
4、gateway一節,告訴網關服務怎樣啟動,前面配置了網關服務使用這里的定義。這里的配置跟后面WEB Control UI的訪問方式有關。
1)mode為local,只接受本地(即本機IP)訪問,后面通過配置Nginx反向代理來用域名從公網上訪問它。
2)bind為lan,綁定到服務器所有的IP地址,以便可以接收來自網絡的訪問。它默認的是localhost,或127.0.0.1,不會接受來自網絡的訪問。改成0.0.0.0也可以。
3)allowInsecureAuth為true,允許不安全的來訪,來自網絡上瀏覽器不安全的來訪先要能夠通過網絡層的過濾,才能走到后面身份綁定和權限管理的步驟。
4)網關驗證的方式是token,每次配置時會生成不同的隨機長token,這比口令要強。配好后,會通過https://jeanye.cn/?token=xxxxxxxx這樣的方式去訪問WEB Control UI,通過HTTPS保護明文傳輸的token,通過長token保護WEB Control UI不會被非授權的人訪問。
5)tailscale設置為off,我們通過HTTPS+token的方式來訪問WEB Control UI,安全性有保證,不走tailscale的方式(因為配置可能繁瑣,我也不熟悉)。
5、plugins一節,飛書的插件是OpenClaw中文社區版自帶的,安裝時已裝好,不要再從網上(remote)下載,否則會報一大串警告信息,說檢測到重復的插件ID。在配置飛書時選擇使用本地的插件即可。
{
"meta": {
"lastTouchedVersion": "0.1.7",
"lastTouchedAt": "2026-03-05T08:58:00.259Z"
},
"wizard": {
"lastRunAt": "2026-03-05T08:58:00.246Z",
"lastRunVersion": "0.1.7",
"lastRunCommand": "configure",
"lastRunMode": "local"
},
"auth": {
"profiles": {
"zai:default": {
"provider": "zai",
"mode": "api_key"
}
},
"order": {
"zai": [
"zai:default"
]
}
},
"agents": {
"defaults": {
"model": {
"primary": "zai/glm-5"
},
"models": {
"zai/glm-5": {
"alias": "GLM-5"
}
},
"workspace": "/home/openclaw/.openclaw/workspace",
"compaction": {
"mode": "safeguard"
},
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 8
}
}
},
"messages": {
"ackReactionScope": "group-mentions"
},
"commands": {
"native": "auto",
"nativeSkills": "auto"
},
"channels": {
"feishu": {
"accounts": {
"default": {
"appId": "cli_xxxxxx",
"appSecret": "xxxxxxxx",
"domain": "feishu",
"enabled": true
}
}
}
},
"gateway": {
"port": 18789,
"mode": "local",
"bind": "lan",
"controlUi": {
"allowInsecureAuth": true
},
"auth": {
"mode": "token",
"token": "xxxxxxxx"
},
"tailscale": {
"mode": "off",
"resetOnExit": false
}
},
"plugins": {
"load": {
"paths": [
"/usr/lib/node_modules/openclaw-cn/extensions/feishu"
]
},
"entries": {
"feishu": {
"enabled": true
}
}
}
}
04
安裝配置飛書應用
具體可以參閱這篇網文《Openclaw 最細部署指南》第6章《進階配置篇》中飛書的配置,篇幅較長,此處不重復贅述。其中關鍵的一點是,配置飛書渠道和配置飛書應用要交叉進行,因為配置飛書應用時,要等渠道配置這邊創建了一個到飛書開放平臺的長連接,才可以繼續配置事件訂閱。而配置渠道時,又要用配置應用時創建的App ID與App Secret。
Step 5:啟用機器人能力
第三部分(插在這里):先在OpenClaw中配置飛書渠道并啟動網關
方式一:通過配置向導(推薦)
啟動網關,確認運行狀態
保存配置后,啟動(或重啟)OpenClaw網關:
Step 6(回到飛書):配置事件訂閱
在左側菜單點擊"事件訂閱"。
接收事件的方式,選"使用長連接接收事件"(WebSocket模式)。
選好之后,在下方"添加事件"里搜索并添加:
可以把im:message的權限都選上,至少需要im.message.receive_v1權限。
應用配置好后,要發布,每次應用配置有變化都要發布應用,然后才會起作用。
飛書應用的權限可以按需要授予,你可以詢問小龍蝦某項工作需要飛書應用的什么權限,再授權,方便起見,我把云文檔和多維表格,還有用戶信息的權限都給了。因為執行的結果輸出到云文檔,在飛書App里直接就可以打開看和下載。
05
測試飛書APP
打開飛書(App或網頁版),在應用搜索欄里搜索你創建的飛書應用名稱。
圖2 飛書App中搜索飛書應用
點擊該應用,發送一個打招呼的消息,OpenClaw會返回一條要求綁定(批準)設備的回復,否則不能繼續訪問:
圖3 從飛書應用向OpenClaw發送指令
在openclaw用戶下執行上面的命令完成設備配對,每個飛書賬戶只需要執行一次:
$ openclaw-cn pairing approve feishu APQ4GMTH
配對完成后,現在再在飛書APP中讓OpenClaw執行一個測試的命令:
圖4 OpenClaw返回工作的結果
可以看到,OpenClaw以用戶openclaw的身份運行,工作目錄是/home/openclaw/.openclaw/workspace,這正是安全的沙箱運行方式,即使大模型出錯,或被入侵,爆炸影響的范圍會僅限于其HOME目錄下的文件,風險要小很多。
現在可以愉快地和小龍蝦玩耍啦。
06
配置從公網訪問WEB Control UI
對于IT專業人士來說,通過文本終端界面遠程管理OpenClaw是很方便,但對應于非IT專業人士,還是WEB Control UI圖形界面方便易用很多,安裝配置好了,直接交付使用即可。
1、配置Nginx反向代理
因為OpenClaw網關配置為local模式,它只能從本地訪問,所以配置Nginx反向代理來從公網訪問WEB Control UI。
vi /etc/nginx/nginx.conf
配置要點:
1)map配置以支持web-socket連接,OpenClaw Contorl UI是個Vite框架的JavaScript應用,它通過WebSocket協議直接訪問服務器(ws://127.0.0.1:18789)。
2)轉發的URI定位到根目錄,因為OpenClaw Contorl UI里對WebSocket的訪問URL是程序中寫死的/(ws://127.0.0.1:18789),不支持反向代理到子目錄。反向代理占用根目錄的問題,也可以通過子域名來解決,就是為OpenClaw申請一個專用的子域名(要付費),然后在Let's Encrypt中簽個帶子域名的數字證書。子域名和主域名都映射到同一個IP,由Nginx去分流。這里簡單起見直接占用根目錄了,因為在我的服務器上根目錄原來就是個歡迎頁,也沒有別的用途。
3) 除了根URI外,其它反向代理的設置不受影響,比如這里VPN服務器mihomo Dashboard的反向代理。
4)反向代理中最關鍵的一句是:
proxy_set_header Origin http://127.0.0.1:18789;
瀏覽器的訪問請求到達OpenClaw時,都帶有Origin header,因為網關配置為local模式,OpenClaw不會接收其它IP來源的訪問,直接就返回403 Forbidden錯誤,在WEB Control UI頁面上就會顯示與后端網關的連接是(見Issue#19248):
disconnected (1006): no reason
這個設置讓Nginx替換所有瀏覽器請求的Origin hearder為loopback地址,OpenClaw就會認為是本地訪問,予以通過。
反向代理的具體配置如下,配在https server下,用Lets's Encrypt免費的數字證書。
......
http {
......
# Support proxying of web-socket connections
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
......
# Server on http:443 http2
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name jeanye.cn;
# Let's Encrypt's cert & key
ssl_certificate /etc/letsencrypt/live/jeanye.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/jeanye.cn/privkey.pem;
# / 根目錄讓給了OpenClaw,因為它的WebSocket要連接WSS://jeanye.cn根目錄
# location / {
# root /srv/nginx;
# index index.html;
# autoindex on;
# }
......
location / {
proxy_pass http://127.0.0.1:18789;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Origin http://127.0.0.1:18789;
proxy_read_timeout 86400;
proxy_send_timeout 86400;
proxy_buffering off;
}
# Reverse proxy for mihomo dashboard
rewrite ^/mihomo$ $scheme://$http_host/mihomo/ permanent;
location /mihomo/ {
rewrite ^/mihomo/(.*)$ /$1 break;
proxy_pass http://localhost:9090/;
proxy_redirect / $scheme://$http_host/mihomo/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 20d;
proxy_buffering off;
}
}
}
2、從瀏覽器訪問OpenClaw Control UI
輸入地址https://jeanye.cn/?token=xxxxxxxx訪問WEB Control UI,這個token就是前面配置網關時指定的訪問token,比口令要長,有足夠的復雜性可以保護Control UI免受非授權的訪問。因為token是作為參數明文傳輸的,所以要在https加密連接下使用,有關用Let's Encrypt免費數字證書配置Nginx,請參閱我的知乎文章《在HTTS中使用Let's Encrypt的數字證書》。
圖5 OpenClaw的Dashboard
Control UI中可以直接和OpenClaw對話,指揮它干活,這樣對于電腦上輸入數據很方便,可以直接從磁盤選擇、打開、拷貝然后粘貼進去。
圖6 在OpenClaw Dashboard中直接發送執行任務
07
交付
把小龍蝦交付給用戶,需要為飛書應用添加新成員。在飛書App中點擊右上角的“+”按鈕,選擇“添加企業成員”,再選擇“輸入手機號”,輸入手機號和新成員姓名,點擊“添加成員”,會發送一條消息到對方的飛書App,對方確認即可。
圖7 添加飛書App新成員
然后是在飛書應用中添加新成員。點擊“成員管理”,“添加協作人員”,輸入成員名字選中添加,并設定新成員的角色。
圖8 飛書應用添加新成員
我在飛書應用中創建發布版本時設置了可用范圍是所有員工,新成員在搜索應用時才可以看到這個飛書應用,新成員只能看到企業中Ta能看到的飛書應用,也可以設定飛書應用只有部分成員可見,然后選擇可見成員的名單。
新成員搜到飛書應用后,在飛書App中向小龍蝦發出指令,小龍蝦會像前面一樣要求應用所有者進行設備綁定(批準)。
圖9 新成員也需要進行設備綁定
然后就可以正常使用了,這是女兒要求小龍蝦生成了一個Excel報表,發回她的飛書App中瀏覽、下載,這樣完整的任務流程就執行完成了。
圖10 小龍蝦創建了執行結果并寫入到云文檔
圖11 小龍蝦生成云文檔的分享鏈接并返回到飛書App
全流程跑通,女兒現在擁有了一個24小時在線的小龍蝦打工人,慢慢飼養調教即可。
Done。
08
總結
這個安全飼養小龍蝦的方案,可以總結為幾個要點。
1、 不用root運行Gateway
?用普通用戶openclaw啟動,運行在 沙箱環境
?避免了OpenClaw或Node.js被利用時對系統的全局權限
?防止潛在漏洞被用來提權或篡改系統文件
? 這比官方文檔里直接用root 啟動安全得多
2、公網訪問通過HTTPS + token
?HTTPS:保證瀏覽器 ? Nginx ? Gateway 通信加密,防止中間人抓包token
?token:避免任何沒有授權的人直接訪問Gateway
?Origin header:模擬 local-origin,使 Gateway 在 local 模式下允許 WebSocket 連接
? 完全解決403/1006/1008斷連問題,又保證安全
3、Gateway 運行在 local 模式 + Nginx 反向代理
?local 模式限制瀏覽器訪問必須模擬 local-origin
?反向代理確保公網訪問不會直接暴露18789
?長超時 + proxy_buffering off 保證 WebSocket 長連接穩定
? 結合 HTTPS + token,是當前最穩定的生產方案
這個部署方案在安全性和穩定性上是當前最優實踐:普通用戶運行、沙箱隔離、HTTPS + token、Nginx 反向代理、local 模式 + Origin 偽裝。
