news 2026/4/23 3:23:00

Clawdbot整合Qwen3:32B保姆级教程:Docker Compose一键启停与环境变量说明

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Clawdbot整合Qwen3:32B保姆级教程:Docker Compose一键启停与环境变量说明

Clawdbot整合Qwen3:32B保姆级教程:Docker Compose一键启停与环境变量说明

1. 为什么需要这个组合?

你是不是也遇到过这些情况:想用大模型做本地聊天,但每次都要手动启动Ollama、配置API地址、改Clawdbot的连接参数,一不小心端口就冲突;或者换台机器部署,又要重新查文档、调环境变量、反复试错?更别说团队协作时,每个人配出来的环境还不一样。

Clawdbot + Qwen3:32B 这个组合,就是为了解决“能跑通”和“好维护”之间的断层。它不是简单把两个工具拼在一起,而是通过 Docker Compose 把整个链路封装成可复现、可共享、可一键启停的标准化单元——模型服务、网关代理、前端界面,三者解耦又协同。

这里说的 Qwen3:32B,是通义千问最新发布的高性能版本,32B 参数量带来更强的逻辑推理和多轮对话能力,特别适合做技术咨询、文档解读、代码辅助等深度交互场景。而 Clawdbot 是一个轻量但功能完整的 Web 聊天前端,不依赖云服务,纯本地运行,界面干净、响应快、支持历史会话持久化。

最关键的是:它不碰任何外部 API 密钥,所有流量都在你自己的机器里流转。你掌控模型、掌控数据、掌控端口——这才是真正属于你的 AI 助手。

2. 整体架构一句话说清

整个系统只有三个核心组件,全部运行在你本机(或私有服务器)上:

  • Qwen3:32B 模型服务:由 Ollama 启动,监听127.0.0.1:11434(默认 Ollama API 端口)
  • Web 网关代理:一个轻量 Node.js 服务,负责把 Clawdbot 的请求转发给 Ollama,并把响应原样返回,同时把 Ollama 的11434端口映射到对外友好的18789
  • Clawdbot 前端:静态 HTML + JS 应用,通过浏览器访问http://localhost:8080,所有请求都发往http://localhost:18789(即网关)

它们之间没有中间件、没有数据库、不写日志到磁盘(除非你主动开启),结构极简,故障点少,出问题一眼就能定位到是哪一层。

小提示:你完全不需要懂 Node.js 或 Ollama 内部原理。只要会复制粘贴命令、会改几个文本字段,就能让整套系统跑起来。

3. 准备工作:5分钟搞定基础依赖

在开始之前,请确认你的机器满足以下最低要求:

  • 操作系统:Linux(推荐 Ubuntu 22.04+/Debian 12+)或 macOS(Intel/M1/M2/M3)
  • 内存:≥32GB(Qwen3:32B 推理需约 26–28GB 显存或内存,CPU 模式下走 RAM)
  • 磁盘:预留 ≥15GB 空间(模型文件约 12GB,缓存和镜像约 3GB)
  • 已安装:Docker(≥24.0)、Docker Compose(v2,已集成进 Docker Desktop 或可通过sudo apt install docker-compose-plugin安装)

如果你还没装 Ollama,现在就执行这一条命令(Linux/macOS):

curl -fsSL https://ollama.com/install.sh | sh

安装完成后,验证是否正常:

ollama --version # 输出类似:ollama version is 0.3.12

注意:不要用sudo ollama run qwen3:32b手动拉取模型——我们后面会统一由 Docker Compose 管理,避免权限和路径混乱。

4. 项目结构与文件准备

我们不建复杂目录,只用一个干净的文件夹。建议新建并进入:

mkdir -p ~/clawdbot-qwen3 && cd ~/clawdbot-qwen3

在这个目录下,你需要创建 3 个文件:

  • docker-compose.yml:定义服务编排(Ollama + 网关 + Clawdbot)
  • .env:存放所有可配置参数(端口、模型名、Ollama 地址等)
  • gateway.js:轻量代理脚本(仅 40 行,无需额外依赖)

下面逐个给出完整内容,请严格按格式复制,注意缩进和引号

4.1 创建.env环境变量文件

# === 基础配置 === COMPOSE_PROJECT_NAME=clawdbot-qwen3 # === 模型服务配置 === OLLAMA_HOST=host.docker.internal # Docker 内部访问宿主机 Ollama OLLAMA_PORT=11434 MODEL_NAME=qwen3:32b # === 网关配置 === GATEWAY_PORT=18789 GATEWAY_TIMEOUT=120000 # === Clawdbot 配置 === CLAWDBOT_PORT=8080 CLAWDBOT_API_BASE=http://localhost:18789

说明:host.docker.internal是 Docker 提供的特殊 DNS 名,让容器内能直接访问宿主机上的 Ollama 服务。Windows/macOS Docker Desktop 默认支持;Linux 用户如遇问题,可临时替换为宿主机真实 IP(如192.168.1.100),并在docker-compose.yml中加extra_hosts

4.2 创建gateway.js代理脚本

const http = require('http'); const url = require('url'); const { ClientRequest } = require('http'); const PORT = process.env.GATEWAY_PORT || 18789; const OLLAMA_URL = `http://${process.env.OLLAMA_HOST}:${process.env.OLLAMA_PORT}`; const server = http.createServer((req, res) => { const proxyUrl = new URL(req.url, OLLAMA_URL); const options = { method: req.method, headers: req.headers, timeout: parseInt(process.env.GATEWAY_TIMEOUT) || 120000, }; const proxyReq = http.request(proxyUrl, (proxyRes) => { res.writeHead(proxyRes.statusCode, proxyRes.headers); proxyRes.pipe(res); }); proxyReq.on('error', (err) => { console.error(`[Gateway] Proxy error: ${err.message}`); res.writeHead(502, { 'Content-Type': 'text/plain' }); res.end('Bad Gateway: Ollama unreachable'); }); req.pipe(proxyReq); }); server.listen(PORT, () => { console.log(` Gateway running on http://localhost:${PORT}`); console.log(`➡ Forwarding to ${OLLAMA_URL}`); });

保存后,给执行权限(Linux/macOS):

chmod +x gateway.js

4.3 创建docker-compose.yml

version: '3.8' services: ollama: image: ollama/ollama:latest container_name: ollama-qwen3 restart: unless-stopped volumes: - ~/.ollama:/root/.ollama ports: - "11434:11434" environment: - OLLAMA_ORIGINS=http://localhost:8080,http://127.0.0.1:8080 networks: - clawdbot-net gateway: image: node:18-alpine container_name: clawdbot-gateway restart: unless-stopped working_dir: /app volumes: - ./gateway.js:/app/gateway.js:ro - ./.env:/app/.env:ro command: sh -c "npm config set registry https://registry.npmjs.org/ && node gateway.js" environment: - NODE_ENV=production ports: - "${GATEWAY_PORT}:18789" depends_on: - ollama networks: - clawdbot-net clawdbot: image: ghcr.io/clawdbot/clawdbot:latest container_name: clawdbot-ui restart: unless-stopped environment: - VITE_API_BASE=${CLAWDBOT_API_BASE} ports: - "${CLAWDBOT_PORT}:80" depends_on: - gateway networks: - clawdbot-net networks: clawdbot-net: driver: bridge

关键设计说明:

  • ollama容器挂载了宿主机的~/.ollama目录,确保模型一次下载、永久可用;
  • gateway容器用 Alpine Node 镜像,体积仅 120MB,启动秒级;
  • clawdbot使用官方预构建镜像,无须构建前端,开箱即用;
  • 所有服务共用clawdbot-net网络,内部通信走 Docker DNS,稳定可靠。

5. 一键启动:3条命令完成全部部署

准备好上面 3 个文件后,回到终端,执行以下命令:

5.1 第一步:拉取并加载 Qwen3:32B 模型(仅首次需要)

ollama pull qwen3:32b

小技巧:如果网络慢,可提前在另一终端运行ollama serve,再开新窗口执行pull,速度提升明显。模型约 12GB,视带宽需 10–30 分钟。

5.2 第二步:启动整个服务栈

docker compose up -d

你会看到类似输出:

[+] Running 3/3 ✔ Network clawdbot-net Created 0.0s ✔ Container ollama-qwen3 Started 0.5s ✔ Container clawdbot-gateway Started 0.6s ✔ Container clawdbot-ui Started 0.7s

5.3 第三步:确认服务状态

docker compose ps

正常应显示三行,状态均为running。再检查日志是否报错:

docker compose logs -f gateway # 应看到: Gateway running on http://localhost:18789 # ➡ Forwarding to http://host.docker.internal:11434

验证连通性(可选):
在宿主机执行:

curl -s http://localhost:18789/api/tags | jq '.models[].name'

如果返回"qwen3:32b",说明网关已成功连接 Ollama。

6. 访问与使用:打开浏览器,开始对话

现在,打开你的浏览器,访问:

http://localhost:8080

你会看到 Clawdbot 的简洁界面——左侧是会话列表,右侧是聊天窗口,顶部有模型选择下拉框(默认已设为qwen3:32b)。

试着输入一句:

你好,你是谁?用中文回答,不超过30个字。

几秒后,你应该看到 Qwen3:32B 的回复,例如:

我是通义千问Qwen3,320亿参数的大语言模型,专注高质量对话。

成功!你已经拥有了一个完全本地、无需联网、一键启停、模型可控的 AI 聊天平台。

📸 页面截图说明(对应原文图示):

  • 启动教程图:展示docker compose up -d终端输出效果;
  • 使用页面图:Clawdbot 界面,左栏会话、右栏输入框、顶部模型切换;
  • 内部说明图:架构流程图,清晰标注Ollama → Gateway(18789) → Clawdbot(8080)数据流向。

7. 环境变量详解:哪些可以改?怎么改才安全?

.env文件里的每一项,都对应一个实际作用。我们按使用频率排序说明:

变量名默认值是否建议修改说明
GATEWAY_PORT18789强烈建议如果你本机 18789 被占用,直接改成18790等空闲端口,重启即可生效
CLAWDBOT_PORT8080推荐若 8080 已被其他服务占用(如本地开发服务器),改为80813000
MODEL_NAMEqwen3:32b谨慎想换模型(如qwen2.5:7b),只需改此项 +ollama pull新模型,无需改代码
OLLAMA_HOSThost.docker.internal❌ 不建议Linux 用户若无法解析,可改为宿主机 IP,并在docker-compose.ymlollama服务下添加:
extra_hosts:
- "host.docker.internal:192.168.1.100"
GATEWAY_TIMEOUT120000(2分钟)大模型长思考时建议调大Qwen3:32B 处理复杂问题可能超 60 秒,设为300000(5分钟)更稳妥

🛑绝对不要改的项

  • COMPOSE_PROJECT_NAME:影响容器命名和网络隔离,改了会导致docker compose down清不干净;
  • OLLAMA_PORT:Ollama 固定为 11434,改了要同步改ollama容器端口映射;
  • VITE_API_BASE:Clawdbot 前端编译时已固化,必须与网关暴露端口一致。

改完.env后,只需执行:

docker compose down && docker compose up -d

无需重拉镜像、无需重下模型,3 秒内完成热更新。

8. 日常运维:启停、日志、清理全指南

这套系统设计之初就考虑了“随时可停、随时可走”。以下是高频操作清单:

8.1 一键停止所有服务

docker compose down

效果:停止并移除容器,但保留卷(~/.ollama模型仍在)、网络、镜像。下次up秒启。

8.2 查看实时日志(聚焦某服务)

# 看网关转发是否正常 docker compose logs -f gateway # 看 Ollama 是否收到请求(调试用) docker compose logs ollama \| grep "POST /api/chat" # 看 Clawdbot 前端错误(如 CORS、404) docker compose logs clawdbot

8.3 清理无用镜像与构建缓存(每月一次)

# 清理已停止容器、悬空镜像、构建缓存 docker system prune -a --volumes -f # 单独清理 Ollama 模型缓存(谨慎!会删掉所有模型) # ollama rm qwen3:32b

8.4 升级到新版 Clawdbot 或 Ollama

# 更新 Clawdbot 前端(拉取最新镜像) docker compose pull clawdbot # 更新 Ollama(注意:可能重置模型,建议先备份 ~/.ollama) docker compose pull ollama # 重启生效 docker compose up -d

进阶提示:你可以把整个~/clawdbot-qwen3文件夹加入 Git,提交.env(记得.gitignore排除敏感值)、docker-compose.ymlgateway.js—— 团队成员git clone && docker compose up -d即可获得完全一致环境。

9. 常见问题与解决方法(实测版)

我们整理了 5 个新手最常卡住的点,附带一行命令修复方案:

现象原因一行修复命令
curl: (7) Failed to connect to localhost port 18789网关容器没启动或端口被占docker compose logs gateway | head -5→ 查端口冲突 → 改.envGATEWAY_PORT
Clawdbot 页面空白,控制台报Failed to fetchVITE_API_BASE和网关端口不一致grep VITE_API_BASE .env对比GATEWAY_PORT,确保一致
Ollama 报错model not found模型没拉取或名字拼错ollama list→ 确认输出含qwen3:32b→ 若无,ollama pull qwen3:32b
输入后无响应,日志显示timeout网关超时太短或模型加载中sed -i 's/GATEWAY_TIMEOUT=120000/GATEWAY_TIMEOUT=300000/' .env && docker compose up -d
Linux 下host.docker.internal解析失败Docker 默认不支持该 DNSecho '192.168.1.100 host.docker.internal' >> /etc/hosts(替换成你宿主机 IP)

所有修复都不需要重装、不丢失数据、不重下模型。

10. 总结:你真正掌握的不只是部署

读完这篇教程,你拿到的不是一个“能跑的 demo”,而是一套可理解、可修改、可迁移的本地大模型工作流:

  • 你知道了为什么用 Docker Compose 而不是裸跑:它让服务依赖显性化、端口管理集中化、启停操作原子化;
  • 你掌握了网关存在的真正价值:不是多此一举,而是解耦前端与模型、屏蔽 Ollama 版本差异、统一超时与错误处理;
  • 你理解了环境变量驱动配置的工程意义:同一套代码,改 3 个字段就能切模型、换端口、适配不同机器;
  • 你获得了可持续维护的能力:从日志定位、一键重启、到版本升级,每一步都有明确指令和预期结果。

这不是终点,而是起点。接下来,你可以:

  • gateway.js改造成支持流式响应(SSE),让 Clawdbot 实现“打字机效果”;
  • 加入 Redis 缓存会话历史,让重启后聊天记录不丢失;
  • 用 Nginx 做反向代理 + HTTPS,让家人也能通过域名访问你的 AI 助手。

真正的掌控感,从来不是“点开就用”,而是“我知道它在哪、怎么修、怎么变”。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 6:49:48

还在为录屏烦恼?这款开源工具让你的创作效率提升300%

还在为录屏烦恼?这款开源工具让你的创作效率提升300% 【免费下载链接】vokoscreenNG vokoscreenNG is a powerful screencast creator in many languages to record the screen, an area or a window (Linux only). Recording of audio from multiple sources is su…

作者头像 李华
网站建设 2026/4/22 19:31:26

SiameseUIE中文信息抽取实战:5分钟搭建快递单结构化工具

SiameseUIE中文信息抽取实战:5分钟搭建快递单结构化工具 你是否还在为每天处理上百张快递单而头疼?人工录入姓名、电话、收货地址、寄件时间等信息,不仅耗时费力,还容易出错。更麻烦的是,不同快递公司的单据格式五花八…

作者头像 李华
网站建设 2026/4/23 8:22:25

Clawdbot快速上手:Qwen3:32B本地API接入与Control UI设置指南

Clawdbot快速上手:Qwen3:32B本地API接入与Control UI设置指南 1. 为什么需要Clawdbot这样的AI代理网关 你有没有遇到过这样的情况:本地跑着好几个大模型服务,Ollama、vLLM、Llama.cpp各自监听不同端口,每次调用都要手动改URL、换…

作者头像 李华
网站建设 2026/4/23 8:23:29

Clawdbot惊艳案例:Qwen3:32B驱动的短视频脚本生成+分镜描述Agent

Clawdbot惊艳案例:Qwen3:32B驱动的短视频脚本生成分镜描述Agent 1. 这不是普通AI工具,而是一个能“自己思考”的短视频创作搭档 你有没有试过为一条30秒的短视频反复修改脚本?写完又删、删完再写,光是确定开场5秒怎么抓人眼球就…

作者头像 李华
网站建设 2026/4/23 8:18:51

Qwen3:32B通过Clawdbot实现Web直连:支持WebSocket长连接的实时交互

Qwen3:32B通过Clawdbot实现Web直连:支持WebSocket长连接的实时交互 1. 为什么需要“直连”?从卡顿到丝滑的交互体验转变 你有没有遇到过这样的情况:在网页上和AI聊天,刚输入一个问题,光标就变成转圈圈,等…

作者头像 李华