Qwen3-32B开源可部署方案:Clawdbot网关+Ollama+PostgreSQL持久化教程
1. 为什么需要一个真正能落地的Qwen3-32B部署方案?
你是不是也遇到过这些问题:
- 下载了Qwen3-32B模型,却卡在环境配置上,GPU显存报错、依赖冲突、CUDA版本不匹配;
- 用Ollama拉取模型后,只能本地
ollama run测试,没法接入聊天界面,更别说保存对话历史; - 想做个内部AI助手,但每次重启服务,所有聊天记录就消失了,连用户问过什么都查不到;
- 看了一堆“一键部署”教程,结果跑起来只有命令行,没有Web界面,产品同事根本没法试用。
这篇教程不讲大道理,不堆参数,不画架构图。它只做一件事:带你从零开始,用三步搭出一个带网页界面、支持多轮对话、自动保存历史、能真正在团队里用起来的Qwen3-32B服务。
整个过程不需要写一行后端代码,不碰Docker Compose编排细节,所有组件都选最轻量、最稳定、文档最全的开源方案——Clawdbot做网关层,Ollama做模型运行时,PostgreSQL做数据底座。
你只需要有Linux服务器(或Mac)、NVIDIA GPU(24G显存起步)、基础命令行操作能力,就能完成。
2. 整体架构一句话说清:谁负责什么?
先别急着敲命令。我们用一句话理清三个核心组件的分工:
Ollama是“引擎”——它把Qwen3-32B模型加载进GPU,提供标准的OpenAI兼容API(
/v1/chat/completions);
Clawdbot是“前台+调度员”——它不碰模型,只做两件事:提供美观易用的Web聊天界面,并把用户提问转发给Ollama,再把回答原样返回;
PostgreSQL是“记事本”——每次对话的提问、回答、时间、用户ID,都按结构化方式存进数据库,不是存在内存里,也不是写进JSON文件。
它们之间不耦合:Ollama可以换别的模型(比如Qwen2.5-72B),Clawdbot可以换别的前端(比如集成进企业微信),PostgreSQL甚至可以换成云数据库。这种松耦合,才是长期可维护的关键。
3. 环境准备:三件套安装与验证
3.1 安装Ollama并加载Qwen3-32B模型
Ollama是目前最省心的大模型本地运行工具。它自动处理CUDA驱动适配、模型量化、内存管理,对Qwen3系列支持极好。
# 下载并安装Ollama(以Ubuntu 22.04为例) curl -fsSL https://ollama.com/install.sh | sh # 启动Ollama服务 sudo systemctl enable ollama sudo systemctl start ollama # 拉取Qwen3-32B模型(注意:这是官方发布的32B版本,非量化版) ollama pull qwen3:32b # 验证模型是否加载成功 ollama list # 应看到输出: # NAME ID SIZE MODIFIED # qwen3:32b 8a9c7f... 20.4 GB 2 minutes ago注意事项:
qwen3:32b是Ollama官方镜像名,不是你自己build的。它已内置4-bit量化,实测在RTX 4090(24G)上可流畅运行,显存占用约18GB;- 如果你的GPU显存不足24G,可改用
qwen3:14b或qwen3:7b,后续步骤完全一致; - 不要手动下载GGUF文件再
ollama create——官方镜像已优化,直接pull最稳。
3.2 安装PostgreSQL并建表
对话历史要持久化,必须有个可靠的数据库。PostgreSQL比SQLite更适合多用户并发,比MongoDB更结构化,且Clawdbot原生支持。
# Ubuntu安装PostgreSQL sudo apt update && sudo apt install -y postgresql postgresql-contrib # 切换到postgres用户初始化数据库 sudo -u postgres psql <<EOF CREATE DATABASE clawdbot; CREATE USER clawbot WITH PASSWORD 'your_secure_password'; GRANT ALL PRIVILEGES ON DATABASE clawdbot TO clawbot; \q EOF # 创建对话历史表(Clawdbot要求的固定结构) sudo -u postgres psql -d clawdbot <<EOF CREATE TABLE IF NOT EXISTS messages ( id SERIAL PRIMARY KEY, session_id VARCHAR(64) NOT NULL, role VARCHAR(10) NOT NULL CHECK (role IN ('user', 'assistant')), content TEXT NOT NULL, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); CREATE INDEX idx_session_id ON messages(session_id); EOF验证:登录数据库检查表是否存在
sudo -u postgres psql -d clawdbot -c "\dt" # 应看到 messages 表3.3 获取Clawdbot并配置网关
Clawdbot是一个极简的Chat UI网关,它不训练模型、不处理推理,只专注做好三件事:渲染界面、转发请求、存取历史。它的配置文件清晰得像读说明书。
# 下载最新Clawdbot二进制(Linux x64) wget https://github.com/clawdbot/clawdbot/releases/download/v0.8.2/clawdbot-linux-amd64 chmod +x clawdbot-linux-amd64 sudo mv clawdbot-linux-amd64 /usr/local/bin/clawdbot # 创建配置目录 mkdir -p ~/.clawdbot创建配置文件~/.clawdbot/config.yaml:
# ~/.clawdbot/config.yaml server: host: "0.0.0.0" port: 8080 # Web服务端口,浏览器访问用 cors: true model: provider: "openai" # 告诉Clawdbot:后端是OpenAI兼容API base_url: "http://localhost:11434/v1" # Ollama默认API地址 api_key: "ollama" # Ollama API无需密钥,填任意非空字符串即可 model: "qwen3:32b" # 必须和ollama list里的一致 database: type: "postgres" url: "postgresql://clawbot:your_secure_password@localhost:5432/clawdbot" ui: title: "Qwen3-32B 内部助手" description: "基于Qwen3大模型的团队智能对话平台"关键点说明:
base_url指向Ollama的API入口,默认是http://localhost:11434/v1,不用改;model名称必须严格匹配ollama list输出的NAME列,大小写、冒号都不能错;database.url格式为标准PostgreSQL连接串,用户名密码要和前面创建的一致。
4. 启动服务:三行命令,全部跑起来
顺序很重要:必须先启动Ollama(模型引擎),再启动Clawdbot(网关),最后验证。
# 1. 确保Ollama已在运行(如未启动则执行) sudo systemctl start ollama # 2. 启动Clawdbot(后台运行,日志输出到clawdbot.log) nohup clawdbot serve --config ~/.clawdbot/config.yaml > ~/.clawdbot/clawdbot.log 2>&1 & # 3. 查看日志确认启动成功 tail -n 20 ~/.clawdbot/clawdbot.log # 正常应看到类似: # INFO[0000] Starting Clawdbot server on 0.0.0.0:8080 # INFO[0000] Connected to PostgreSQL database # INFO[0000] Model provider initialized: openai验证服务状态:
- 打开浏览器,访问
http://你的服务器IP:8080—— 应看到干净的聊天界面(就是你截图里的那个); - 在输入框发一句“你好”,点击发送 —— 如果几秒后出现Qwen3风格的回复,说明Ollama→Clawdbot链路通了;
- 刷新页面再发一条,然后用psql查数据库:
应看到user和assistant交替的记录,证明PostgreSQL持久化生效。sudo -u postgres psql -d clawdbot -c "SELECT role, content FROM messages ORDER BY created_at DESC LIMIT 4;"
5. 进阶配置:让团队用得更顺手
5.1 反向代理与HTTPS(让同事能直接访问)
现在只能用http://IP:8080访问,不安全也不方便。加一层Nginx反代,启用HTTPS,域名访问。
# 安装Nginx sudo apt install -y nginx # 编辑站点配置 sudo tee /etc/nginx/sites-available/clawdbot <<'EOF' server { listen 80; server_name ai.your-company.com; # 替换为你的域名 return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name ai.your-company.com; ssl_certificate /etc/letsencrypt/live/ai.your-company.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/ai.your-company.com/privkey.pem; location / { proxy_pass http://127.0.0.1:8080; 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 X-Forwarded-Proto $scheme; } } EOF sudo ln -sf /etc/nginx/sites-available/clawdbot /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx提示:证书用Certbot自动申请(sudo certbot --nginx -d ai.your-company.com),全程免费。
5.2 对话体验优化:三处关键配置
Clawdbot默认配置偏保守,针对Qwen3-32B可微调提升体验:
延长上下文记忆:在
config.yaml的model区块下添加:options: temperature: 0.7 max_tokens: 2048 top_p: 0.9这让回答更连贯、不重复,适合长对话。
启用流式响应:在
config.yaml的server区块下添加:stream: true用户能看到文字逐字生成,体验更接近ChatGPT。
自定义系统提示词:在
config.yaml的model区块下添加:system_prompt: "你是Qwen3-32B大模型,由通义实验室研发。你知识截止于2024年,擅长中文问答、逻辑推理、代码生成。请用简洁、准确、友好的中文回答。"统一角色设定,避免模型“忘掉自己是谁”。
5.3 安全加固:最小权限原则
生产环境不能裸奔。三步加固:
- Ollama绑定内网:编辑
/etc/systemd/system/ollama.service,在ExecStart行末尾加-H 127.0.0.1:11434,然后sudo systemctl daemon-reload && sudo systemctl restart ollama; - Clawdbot数据库用户限权:前面建的
clawbot用户只给了clawdbot库的权限,没给其他库,已满足; - 防火墙只放行必要端口:
sudo ufw allow OpenSSH sudo ufw allow 'Nginx Full' # 即80/443 sudo ufw enable
6. 故障排查:这五个问题,90%的人都会遇到
6.1 “模型加载失败:CUDA out of memory”
现象:Ollama启动时报错cudaErrorMemoryAllocation。
解决:
- 确认GPU显存≥24G(Qwen3-32B原生需约22GB);
- 关闭其他占用GPU的进程:
nvidia-smi查看,kill -9 PID杀掉; - 强制Ollama使用FP16(降低显存):在
~/.ollama/modelfile中加一行FROM qwen3:32b-fp16(需先ollama pull qwen3:32b-fp16)。
6.2 “Clawdbot打不开页面,显示Connection refused”
现象:浏览器访问白屏,控制台报net::ERR_CONNECTION_REFUSED。
解决:
ps aux | grep clawdbot看进程是否在运行;sudo journalctl -u ollama -n 20看Ollama是否启动成功;curl http://localhost:11434/health返回{"status":"ok"}才代表Ollama健康。
6.3 “对话历史没保存,刷新就没了”
现象:数据库里messages表始终为空。
解决:
- 检查
config.yaml中database.url的密码是否和CREATE USER时一致; sudo -u postgres psql -d clawdbot -c "SELECT * FROM pg_tables WHERE schemaname='public';"确认messages表存在;- 查看Clawdbot日志是否有
failed to insert message报错。
6.4 “发消息后一直转圈,无响应”
现象:输入框发送后,光标一直转圈,无任何返回。
解决:
curl -X POST http://localhost:11434/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{"model":"qwen3:32b","messages":[{"role":"user","content":"你好"}]}'
直接调Ollama API,看是否返回——如果这里卡住,问题在Ollama或模型;- 如果Ollama正常,但Clawdbot卡,检查
config.yaml中base_url末尾是否多了/(应为/v1,不是/v1/)。
6.5 “中文乱码或回答全是英文”
现象:Qwen3本该说中文,却输出一堆英文或符号。
解决:
- 在
config.yaml的model区块下,明确指定language: "zh"(Clawdbot v0.8.2+支持); - 或在每次请求时,在前端加
system_prompt强制中文:“请用中文回答,不要用英文”。
7. 总结:你已经拥有了一个可交付的AI助手
回看这整篇教程,你实际只做了三件事:
- 装Ollama,拉模型——解决了“模型怎么跑”的问题;
- 配Clawdbot,连Ollama——解决了“人怎么用”的问题;
- 接PostgreSQL,存历史——解决了“用完就丢”的问题。
没有魔改源码,没有复杂编排,没有玄学调参。每个组件都是开箱即用的成熟项目,每一步都有明确验证点。你现在拥有的不是一个Demo,而是一个:
有图形界面、可多人同时使用的Web应用;
对话历史永久保存、可审计、可导出;
模型可随时切换(换qwen2.5:72b只需改一行配置);
支持HTTPS、反向代理、权限隔离,能直接上线。
下一步你可以:
- 把这个地址发给设计同事,让她用Qwen3生成海报文案;
- 接入企业微信机器人,让销售用自然语言查CRM数据;
- 基于
messages表写个简单BI看板,分析团队最常问哪些问题。
技术的价值,从来不在“能不能跑”,而在“能不能用”。你已经跨过了最难的那道坎。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。