Clawdbot直连Qwen3-32B部署教程:8080端口代理至18789网关详细配置
1. 为什么需要这个配置:从零理解Clawdbot与Qwen3的协作逻辑
你可能已经试过直接用Ollama跑Qwen3-32B,也见过各种Chat UI前端,但真正把它们稳稳串起来、还能在生产环境里不掉链子地用,其实没那么简单。Clawdbot不是另一个花哨的聊天界面,它是个轻量但可靠的“协议翻译器”——把浏览器发来的标准HTTP请求,精准转成Ollama能听懂的API调用;再把Ollama吐出来的流式响应,安全、低延迟地送回前端。
关键点在于:Qwen3-32B这种32B大模型,本地运行时默认只监听http://localhost:11434,而Clawdbot作为Web服务,默认走的是8080端口。两者之间不能直接“握手”,必须架一座桥。这座桥,就是本教程要搭的端口代理层——把外部进来的8080请求,悄悄转发到内部18789网关,再由网关统一调度到Ollama后端。整个过程对用户完全透明:你在浏览器里打开http://your-server:8080,输入问题,按下回车,看到的就是Qwen3-32B原汁原味的思考过程,没有卡顿、没有超时、没有跨域报错。
这不是一个“能跑就行”的临时方案,而是为稳定性、可维护性和后续扩展留出空间的设计。比如,未来你想加个鉴权层、做请求限流、或者把Qwen3换成其他模型,只需要动网关这一层,Clawdbot和前端代码完全不用改。
2. 环境准备:三步到位,不装多余东西
别被“32B”吓住,这套组合对硬件的要求很实在:一块带24GB显存的NVIDIA GPU(如RTX 4090或A10),64GB内存,以及一块快SSD。操作系统推荐Ubuntu 22.04 LTS,干净安装,不建议套娃在WSL或老旧系统上折腾。
2.1 安装Ollama并加载Qwen3-32B
打开终端,一行命令搞定Ollama安装:
curl -fsSL https://ollama.com/install.sh | sh安装完成后,启动服务并确认状态:
ollama serve & ollama list如果列表为空,就拉取Qwen3-32B模型(注意:这是私有部署版本,非HuggingFace公开版):
ollama pull qwen3:32b小提示:
qwen3:32b这个tag是Clawdbot约定的标识符,不能写成qwen3:latest或qwen3-32b:latest,否则Clawdbot会找不到模型。拉取过程约需15–25分钟,取决于你的网络和磁盘速度。完成后,执行ollama show qwen3:32b可以查看模型元信息,确认是否加载成功。
2.2 获取并解压Clawdbot服务包
Clawdbot本身不依赖Node.js或Python环境,它是一个静态二进制文件。从官方渠道获取最新版(本文基于v1.4.2):
wget https://releases.example.com/clawdbot-v1.4.2-linux-amd64.tar.gz tar -xzf clawdbot-v1.4.2-linux-amd64.tar.gz cd clawdbot你会看到几个核心文件:clawdbot(主程序)、config.yaml(配置模板)、templates/(前端页面)。先别急着运行,我们得先把网关配好。
2.3 验证基础端口可用性
在继续前,请确保两个端口当前未被占用:
sudo lsof -i :8080 sudo lsof -i :18789如果返回结果为空,说明端口空闲;如果有进程占用了,记下PID,用kill -9 <PID>释放。特别注意:某些云服务器默认关闭非标准端口,需提前在安全组中放行8080和18789。
3. 核心配置:8080→18789→Ollama的三级转发链
这才是本教程的硬核部分。整个数据流向是:
浏览器 → Clawdbot (8080) → 网关 (18789) → Ollama (11434)
Clawdbot本身不处理模型路由,它只负责把HTTP请求打包成标准格式,然后扔给网关。网关才是真正的“交通指挥中心”。
3.1 编写网关配置文件gateway.yaml
在Clawdbot目录同级新建一个gateway/文件夹,并创建gateway.yaml:
# gateway/gateway.yaml version: "1.0" upstreams: - name: ollama-qwen3 url: http://localhost:11434 timeout: 300s keep_alive: 60s routes: - match: method: POST path: /api/chat upstream: ollama-qwen3 rewrite: path: /api/chat headers: X-Model-Name: qwen3:32b Content-Type: application/json - match: method: GET path: /api/tags upstream: ollama-qwen3 rewrite: path: /api/tags这个配置做了三件事:
- 声明上游服务是本地Ollama(
http://localhost:11434) - 把所有发往
/api/chat的POST请求,原样转发给Ollama - 同时透传
/api/tags查询,方便Clawdbot读取模型列表
为什么用18789而不是直接代理到11434?
因为Ollama的11434端口默认不支持CORS(跨域),而Clawdbot前端是纯静态HTML,浏览器会直接拦截请求。网关层加了一层反向代理,天然绕过CORS限制,且能统一加Header、做日志、设超时——这是生产环境的必备姿势。
3.2 启动轻量网关服务(使用Caddy)
我们选用Caddy作为网关,因为它配置极简、自动HTTPS、零依赖。安装Caddy:
sudo apt install -y curl gnupg curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-stable-archive-keyring.gpg curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list sudo apt update && sudo apt install caddy然后,把上面写的gateway.yaml交给Caddy。创建Caddyfile:
sudo tee /etc/caddy/Caddyfile << 'EOF' :18789 { reverse_proxy http://localhost:8081 { # 这里我们让Caddy先监听18789,再把请求转给Clawdbot的8081(稍后解释) header_up Host {host} header_up X-Real-IP {remote} header_up X-Forwarded-For {remote} } } EOF等等——这里怎么又冒出个8081?别急,这是Clawdbot的“内部监听端口”,和对外的8080是分开的。我们马上讲清楚。
3.3 配置Clawdbot:分离内外端口,各司其职
编辑clawdbot/config.yaml,重点修改以下几项:
# clawdbot/config.yaml server: host: "0.0.0.0" # 允许外部访问 port: 8080 # 对外服务端口(浏览器访问这个) internal_port: 8081 # 内部通信端口(网关调用这个) cors_enabled: true model: name: "qwen3:32b" # 必须和Ollama里的一致 base_url: "http://localhost:18789" # 指向我们的网关,不是Ollama! ui: enabled: true template_dir: "./templates"关键点解析:
port: 8080是你打开浏览器时输入的地址,比如http://192.168.1.100:8080internal_port: 8081是Clawdbot自己监听的一个“内网端口”,只供Caddy网关调用,外部无法访问,更安全base_url指向http://localhost:18789,即我们刚配好的Caddy网关,而不是直连Ollama
这样设计的好处是:Clawdbot专注做UI和协议适配,网关专注做路由和安全,职责清晰,出问题时定位快。
4. 启动与验证:四步确认全链路畅通
现在,所有配置就绪,按顺序启动三个服务:
4.1 启动Ollama(后台常驻)
nohup ollama serve > /var/log/ollama.log 2>&1 &4.2 启动Caddy网关
sudo systemctl restart caddy sudo systemctl status caddy # 确认Active: active (running)4.3 启动Clawdbot
回到clawdbot/目录,执行:
./clawdbot --config config.yaml如果看到类似输出,说明启动成功:
INFO[0000] Clawdbot server started on :8080 INFO[0000] UI templates loaded from ./templates INFO[0000] Model configured: qwen3:32b -> http://localhost:187894.4 浏览器访问并发送第一条消息
打开浏览器,输入http://<你的服务器IP>:8080。你会看到一个简洁的聊天界面(对应你提供的第二张图)。在输入框中输入:
你好,Qwen3,你能告诉我今天北京的天气吗?点击发送。如果几秒后出现合理回复(哪怕只是“我无法获取实时天气信息,但我可以帮你写一段天气预报文案…”),说明整条链路——从浏览器→Clawdbot→Caddy网关→Ollama→返回——全部打通。
快速排障三板斧:
- 打开浏览器开发者工具(F12),切到Network标签,看
/api/chat请求是否返回200;如果404,检查Clawdbot是否在运行;如果502,检查Caddy是否启动;如果503,检查Ollama是否在运行。- 查看Caddy日志:
sudo journalctl -u caddy -f- 查看Clawdbot控制台输出,是否有
model not found或connection refused类错误。
5. 进阶技巧:让这个配置更稳、更快、更好用
部署完成只是开始。下面这些技巧,能让你的Clawdbot+Qwen3真正扛住日常使用压力。
5.1 设置开机自启(Ubuntu systemd)
为Clawdbot创建systemd服务,避免每次重启都要手动拉起:
sudo tee /etc/systemd/system/clawdbot.service << 'EOF' [Unit] Description=Clawdbot Qwen3 Chat Service After=network.target caddy.service [Service] Type=simple User=ubuntu WorkingDirectory=/home/ubuntu/clawdbot ExecStart=/home/ubuntu/clawdbot/clawdbot --config /home/ubuntu/clawdbot/config.yaml Restart=always RestartSec=10 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target EOF sudo systemctl daemon-reload sudo systemctl enable clawdbot sudo systemctl start clawdbot5.2 调整Ollama参数,释放Qwen3-32B全部性能
默认Ollama对GPU显存利用不够激进。编辑~/.ollama/config.json(如不存在则新建),加入:
{ "gpu_layers": 45, "num_ctx": 8192, "num_thread": 12, "no_mmap": false }gpu_layers: 45表示把45层Transformer全部卸载到GPU,充分利用显存num_ctx: 8192将上下文窗口从默认4K提升到8K,更适合长文档理解- 修改后重启Ollama:
sudo systemctl restart ollama
5.3 为Clawdbot添加简单身份验证(可选)
如果你的服务暴露在公网,至少加个基础密码保护。在config.yaml中启用:
auth: enabled: true username: "admin" password_hash: "$2a$12$ZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZzZ" # 用bcrypt生成生成密码哈希(安装htpasswd):
sudo apt install apache2-utils htpasswd -B -n admin # 输入密码后会输出hash粘贴到password_hash字段即可。下次访问http://ip:8080,浏览器会弹出基础认证框。
6. 总结:你已掌握一套可落地、可扩展的大模型本地化方案
回顾一下,你刚刚完成的不是一个简单的“端口转发”,而是一套结构清晰、职责分明的AI服务架构:
- Clawdbot是用户友好的“门面”,处理UI、会话管理、前端交互;
- Caddy网关是沉默的“守门人”,负责路由、安全、日志、超时控制;
- Ollama + Qwen3-32B是背后的“大脑”,专注模型推理,不操心网络细节。
这种分层设计,意味着:
你可以随时更换Clawdbot为其他前端(如Open WebUI),只要网关配置不变;
你可以把Caddy换成Nginx或Traefik,只需调整反向代理规则;
你可以把Qwen3-32B替换成Qwen2.5-72B或Llama3-70B,只需改config.yaml里的模型名和Ollama拉取命令。
它不追求炫技,但每一步都经得起推敲;它不承诺“一键万能”,但给了你完全掌控的自由。当你在浏览器里看着Qwen3-32B流畅输出千字长文,背后是这三层服务无声而精准的协作——这才是本地大模型真正该有的样子。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。