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

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 登录到您的群晖,执行下面的命令创建目录

# 新建文件夹 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 文件:

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

# 运行设置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 服务

# 启动 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.techhttp://192.168.0.197:18789moltbot 的访问地址

npm 中的设置

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

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 容器的日志,看看哪个地址不受信任

{"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 客户端列出设备

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

通过命令批准配对

# 批准配对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 改为自动批准,但老苏不推荐

{"gateway":{..."deviceApproval":{"mode":"auto"}}}

现在就可以开始聊天了

在 Telegram 中使用

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

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

"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 客户端批准设备

# 批准配对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

Read more

告别SQL恐惧症:我用飞算JavaAI的SQL Chat,把数据库变成了“聊天室”

告别SQL恐惧症:我用飞算JavaAI的SQL Chat,把数据库变成了“聊天室”

摘要 对于许多开发者而言,与数据库打交道意味着繁琐的语法记忆、复杂的联表查询以及令人头疼的性能优化。你是否曾希望,能用说人话的方式直接操作数据库?飞算JavaAI专业版的SQL Chat功能,正是这样一个革命性的工具。本文将分享我如何将它变为一个永不疲倦的“数据库专家同事”,用自然语言轻松搞定一切数据需求。 一、 痛点切入:我们与SQL的“爱恨纠葛” 还记得那次惨痛的经历吗?新接手一个庞大项目,急需从几十张表中查询一份用户行为报表。你对着模糊的需求文档,在Navicat或DBeaver中艰难地敲打着JOIN、WHERE和GROUP BY,一遍遍执行、调试,生怕一个疏忽就拉垮了线上数据库。这不仅是技能的考验,更是对耐心和细心程度的终极折磨。 尤其是面对以下场景,无力感尤甚: * 复杂查询:涉及多表关联、嵌套子查询、窗口函数,SQL语句长得像一篇论文。 * 性能优化:一条SQL跑起来慢如蜗牛,却不知从何下手添加索引或改写。 * 老项目溯源:面对命名随意的表和字段,理解业务逻辑如同破译密码。 我们需要的不是一个更漂亮的SQL客户端,而是一个能理解我们意图的“智能数据库搭档”

By Ne0inhk
构建下一代 AIOps 监控系统:基于 Go 语言与 DeepSeek 大模型的深度实践

构建下一代 AIOps 监控系统:基于 Go 语言与 DeepSeek 大模型的深度实践

前言 在云计算与微服务架构日益复杂的当下,传统的基于静态阈值的服务器监控系统正面临严峻挑战。海量的告警噪音与滞后的故障定位能力,促使运维体系向 AIOps(人工智能运维)转型。本文将详细阐述如何利用高性能的 Go 语言结合 DeepSeek 大语言模型,从零构建一个具备智能分析能力的服务器监控探针。我们将深入探讨 Linux 内核信息采集机制、Go 语言并发编程模式以及大模型 API 的工程化集成。 第一章:基础设施环境构建与系统初始化 构建高效监控系统的基石在于一个稳定且配置得当的运行环境。本次实践基于 Ubuntu LTS(长期支持版)系列,涵盖 20.04 至 24.04 版本,这些版本提供了稳定的内核支持与广泛的软件包兼容性。 1.1 系统更新与依赖管理 在部署任何生产级软件之前,维持操作系统的最新状态是保障安全与稳定性的首要原则。通过包管理器 apt,系统能够从官方源获取最新的安全补丁与软件版本。 执行更新操作不仅仅是简单的软件升级,其背后涉及更新本地包索引数据库(apt update)以及根据依赖关系图谱进行二进制文件的替换(

By Ne0inhk
Java 中间件:Dubbo 服务降级(Mock 机制)

Java 中间件:Dubbo 服务降级(Mock 机制)

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕Java中间件这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * Java 中间件:Dubbo 服务降级(Mock 机制) * 什么是服务降级? * Dubbo Mock 机制简介 * Mock 的触发条件 * Dubbo Mock 的配置方式 * 1. XML 配置方式 * 2. 注解配置方式(推荐) * 3. 自定义 Mock 类 * 4. 强制 Mock(force) * Mock 机制的工作原理 * 实战案例:电商系统中的服务降级 * 场景描述 * 1. 定义服务接口 * 2. 实现

By Ne0inhk

Spring Boot 3X 框架核心组件的使用

Spring Boot 框架核心组件的完整使用详解,我会聚焦 Spring Boot 最常用、企业开发必备的核心组件,从组件核心作用、配置方式、实战代码、使用场景四个维度讲解,基于Spring Boot 3.2.x(最新稳定版,适配 Java 17+、Spring 6),所有代码都是可直接复制的开箱即用版本,同时兼顾注解式配置(主流)和核心原理极简解读,让你既能快速上手使用,也能理解组件间的配合逻辑。 前置基础 Spring Boot 的核心是约定大于配置,通过自动配置(AutoConfiguration) 消除 Spring 原生的繁琐 XML 配置,所有组件都基于Starter 起步依赖引入,只需少量配置(甚至零配置)即可使用。 * 核心依赖:spring-boot-starter(基础核心),所有组件都基于此扩展; * 开发工具:

By Ne0inhk