Docker方式安装你的私人AI电脑助手Moltbot

简介

Moltbot 是什么?

Moltbot(之前叫 Clawdbot ,现在最新的名字叫 OpenClaw)是一个开源的、高度可自托管的 AI 个人助手项目。它最大的特点是:

  • 不依赖任何专用客户端:你可以用自己已经有的聊天软件(TelegramWhatsAppDiscordSlack、企业微信、飞书等)来和 AI 对话。
  • 真正的“电脑控制”能力:支持让 AI 直接操作你的电脑(浏览器、文件、终端命令、截图、鼠标键盘等),而不是只能聊天。
  • 本地优先 + 云模型混合:可以接本地大模型(OllamaLlama.cpp),也可以用 ClaudeGPT-4oGemini 等云模型。
  • 完全自托管:数据、记忆、配置全部在你自己的机器上,隐私性极高。

主要特点

Moltbot20261 月最新版)的主要特点:

  • 支持 10+ 聊天渠道(TelegramWhatsAppDiscordSlackiMessageSignal 等)
  • 强大的工具集:浏览器控制(Puppeteer)、终端执行、文件读写、Canvas 绘画、定时任务(cron
  • 多模型支持:Claude 3.5/OpusGPT-4oGemini 1.5 Pro、本地 OllamaQwen
  • 记忆系统(长期记忆 + 会话记忆)
  • Web 控制面板(Control UI / Dashboard
  • 完全 Docker 部署,支持一键安装脚本

应用场景

Moltbot 的典型应用场景包括:

  • 个人效率工具:让 AI 帮你批量处理网页、下载文件、填写表单、监控价格
  • 远程控制电脑:出差时用手机 Telegram 远程操作家里的 NAS / 服务器
  • 自动化脚本替代品:用自然语言描述需求,AI 帮你写并执行 shell / Python 代码
  • 极客玩具:把 AI 接入各种已有 IM,打造私人 Jarvis

Moltbot = “把 Claude / GPT 装进你的 Telegram / WhatsApp,让它真的能通过电脑帮你做事”

安装

在群晖上以 Docker 方式安装。

因为 Moltbot 的权限很高,对运行的主机而言,存在文件误删等风险,所以老苏觉得用 docker 最合适,可以把权利关在笼子里,带来的问题就是可能自主性会被中断,需要你帮助执行

当然好处也是很明显的,作为 NAS 用户,不用再单独去购买 Mac mini,也不用去买 VPS,省下了一大笔钱

目前最推荐的方式仍然是使用官方的 docker-setup.sh 脚本,它会自动帮你处理大部分配置、卷、网络、onboarding 向导

不过这种方式需要下载源码,并在本地编译,在群晖上也不是不行,只是老苏不喜欢,还是更愿意使用已构建好的镜像,这样不会把环境搞乱

准备工作

  • 一台支持 Docker 的机器(NAS、服务器、PC
  • Docker + Docker Compose 已安装
  • 建议提前准备好大模型的 API KeyClaude / MiniMax 等的 API Key(至少一个)

建目录

通过 SSH 登录到您的群晖,执行下面的命令创建目录

1
2
3
4
5
6
7
8
# 新建文件夹 moltbot 和 子目录
mkdir -p /volume1/docker/moltbot/{config,data}

# 进入 moltbot 目录
cd /volume1/docker/moltbot

# 确保权限正确(node 用户 UID 1000)
chown -R 1000:1000 {config,data}

创建 docker-compose.yml

将以下内容保存为 docker-compose.yml 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
version: '3.8'

services:
moltbot-gateway:
image: ghcr.io/moltbot/moltbot:main
container_name: moltbot-gateway
restart: unless-stopped
ports:
- "18789:18789"
volumes:
- ./config:/home/node/.clawdbot
# - ./config:/home/node/.moltbot
- ./data:/home/node/clawd
environment:
- HTTP_PROXY=http://192.168.0.206:2081
- HTTPS_PROXY=http://192.168.0.206:2081
- NO_PROXY="localhost,127.0.0.1,::1"
shm_size: 2g
command: node /app/dist/index.js gateway --port 18789

moltbot-cli:
image: ghcr.io/moltbot/moltbot:main
container_name: moltbot-cli
network_mode: "service:moltbot-gateway"
volumes:
- ./config:/home/node/.clawdbot
# - ./config:/home/node/.moltbot
- ./data:/home/node/clawd
entrypoint: ["node", "dist/index.js"]

moltbot-gateway 容器参数说明

参数 说明
image 使用的 Docker 镜像,指定 ghcr.io/moltbot/moltbot:main
container_name 容器的名称,为 moltbot-gateway,便于识别和管理。
restart 容器的重启策略,设置为 unless-stopped,表示容器在非手动停止时会自动重启。
ports 映射的端口,"18789:18789" 使主机的 18789 端口映射到容器的 18789 端口。
volumes 挂载的本地目录,./config 目录映射到容器的 /home/node/.clawdbot./data 映射到 /home/node/clawd
environment (非必须),通过环境变量设置代理,包括 HTTPHTTPS 代理地址,以及不使用代理的地址列表。
shm_size 设置共享内存大小为 2 GB,允许容器使用更大的共享内存。
command 指定容器启动时的命令,运行 Node.js 应用,设定网关端口为 18789
  • 关于挂载目录,因为 Clawdbot 之前改名为了 Moltbot,使用 /home/node/.clawdbot ,容器中有提示要改为 /home/node/.moltbot,但是你真用 /home/node/.moltbot ,在执行 onboarding 时又无法生成 moltbot.json
  • 环境变量中的网络代理设置是非必须的,主要解决跟国外的聊天软件的联通问题,如果你用国内的飞书等,可以不需要设置;

moltbot-cli 容器参数说明

参数 说明
image 使用的 Docker 镜像,指定 ghcr.io/moltbot/moltbot:main
container_name 容器的名称,为 moltbot-cli,便于识别和管理。
network_mode 设置网络模式为 service:moltbot-gateway,共享 moltbot-gateway 容器的网络栈和端口。
volumes 挂载的本地目录,./config 映射到容器的 /home/node/.clawdbot./data 映射到 /home/node/clawd
entrypoint 指定容器启动时的入口点,运行 Node.js 应用。
  • 网络模式非常重要,也是最关键的,代码中似乎使用硬编码,在连接 moltbot-gateway 时,用的地址是 127.0.0.1,只有设置了 network_mode: "service:moltbot-gateway",才能共享 moltbot-gateway 容器的网络栈和端口;
  • 挂载目录需要和 moltbot-gateway 保持一致;

首次运行 onboarding

1
2
# 运行设置
docker compose run --rm -it moltbot-cli onboard

交互向导出现后,按提示完成,会在 config 目录中生成 moltbot.json 设置文件

第一步的 I understand this is powerful and inherently risky. Continue? 必须选择 Yes

Onboarding mode 可以选择 QuickStart

接下来选择模型,老苏选了 Qwen,免费额度用于测试应该是可以的

验证方式用了 Qwen OAuth

稍等一会儿会出现一个链接,https://chat.qwen.ai/authorize?user_code=xxxxxxxx&client=qwen-code

将其复制到浏览器中,用自己的账号登录,

验证通过后,选中模型,默认的就可以

接下来选择通信软件,老苏选择了 Telegram

填入 Telegram bot token ,获取的方法在红框中

  1. Telegram 里搜索 @BotFather
  2. 给它发送 /newbot
  3. 给你的机器人起个名字(随便起,好记就行)
  4. BotFather 给你的 token 复制下来
  5. 回到 SSH 终端,粘贴这个 token

接下来会设置 skillshooks 。老苏先直接跳过了,后面随时可以加

看到 Onboarding complete. 就设置完成了

启动 gateway 服务

设置完成后,就可以启动 gateway 服务

1
2
# 启动 gateway 服务
docker-compose up -d moltbot-gateway

使用

上一步的 onboarding 设置中,会看到 Dashboard 的地址

如果访问 http://群晖IP:18789/?token=<your token>,页面会显示错误 disconnected (1008): control ui requires HTTPS or localhost (secure context)

反代

老苏用的 npm + cloudflared 方案,

文章传送门:免费的Cloudflared实现外网访问群晖(续)

实际访问地址为: https://moltbot.laosu.tech

域名 局域网地址 备注
moltbot.laosu.tech http://192.168.0.197:18789 moltbot 的访问地址

npm 中的设置

还需要将下面的代码填入到 npmAdvanced

1
2
3
4
5
6
7
8
location /telegram-webhook {
proxy_pass http://192.168.0.197:18789//telegram-webhook;
proxy_method POST;
proxy_set_header Content-Type $content_type;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
}

修改 moltbot.json

现在访问 https://moltbot.laosu.tech/?token=<your token>,如果显示需要配对 disconnected (1008): pairing required

moltbot.json 文件增加写权限,否则修改不会生效;

需要给 moltbot.json 加一行 "trustedProxies": [你的NPM容器IP",或宿主机 IP],也就是受信任的地址,需要考虑整个链路上的IP,可能包括:

  • moltbot-gatewayIP

  • npmIP
  • 家宽的公网 IP 等;

当然最好的办法还是查看 moltbot-gateway 容器的日志,看看哪个地址不受信任

1
2
3
4
5
6
7
8
9
10
11
12
{
"gateway": {
"trustedProxies": [
"127.0.0.1",
"192.168.160.1", // 日志中反复出现的 Docker gateway IP
"172.17.0.1", // 常见 Docker bridge 网络
"172.18.0.0/16", // Docker 网络段(更宽松,包含 172.20.0.1)
"219.xx.yy.zz" // 你的公网 IP(如果 NPM 是宿主机代理)
"你的NPM容器IP" // 用 docker inspect npm容器名 | grep IPAddress 查
]
}
}

访问 Web 控制台(Control UI)

现在访问 https://moltbot.laosu.tech/?token=<your token>

显示需要配对

回到 SSH 客户端列出设备

1
2
# 列出当前已配对和待配对的设备
docker-compose run --rm moltbot-cli devices list

通过命令批准配对

1
2
3
4
5
# 批准配对
docker-compose run --rm moltbot-cli devices approve <Request-ID>

# 实例
docker-compose run --rm moltbot-cli devices approve b332768e-cff3-437d-a1f8-262a51fcb0eb

如果觉得麻烦,可以修改 moltbot.json 改为自动批准,但老苏不推荐

1
2
3
4
5
6
7
8
{
"gateway": {
...
"deviceApproval": {
"mode": "auto"
}
}
}

现在就可以开始聊天了

在 Telegram 中使用

onboarding 向导设置时已经 Telegram,但是向机器人发 /start ,并没有得到回应,既然网页已经 OK 了,可以让 Moltbot 自己解决

最后发现还是网络问题,所以他在 moltbot.json 中增加了代理服务地址设置"proxy": "http://192.168.0.206:2081"

1
2
3
4
5
6
7
8
9
10
11
12
13
"channels": {
"telegram": {
"enabled": true,
"botToken": "你的TG_BOT_TOKEN",
"dmPolicy": "pairing",
"groupPolicy": "allowlist",
"streamMode": "partial",
"network": {
"autoSelectFamily": true
},
"proxy": "http://192.168.0.206:2081"
}
},

再次发送 /start,就获得了回应,得到了配对码

回到 SSH 客户端批准设备

1
2
# 批准配对
docker-compose run --rm moltbot-cli pairing approve telegram <code>

完成配对之后,就可以开始工作了

在网页端能同步可以看到相同的内容

结语

Moltbot 是目前最接近「把大模型变成电脑遥控器」的开源项目之一

Docker 部署方式让它门槛大幅降低,但真正发挥威力还需要你不断调教模型、渠道、工具权限。

希望这套流程能帮助你快速上手。祝你玩得开心,AI 助你事半功倍!

参考文档

moltbot/moltbot: Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞
地址:https://github.com/moltbot/moltbot

Moltbot — Personal AI Assistant
地址:https://www.molt.bot/

Docker - Moltbot
地址:https://docs.molt.bot/install/docker