2026/4/18 11:49:35
网站建设
项目流程
免费网站专业建站,wordpress 获取文章id,wordpress需要伪静态吗,建网站找汉狮Clawdbot部署教程#xff1a;Qwen3:32B网关服务启用HTTPS反向代理与JWT Token校验配置
1. Clawdbot是什么#xff1a;一个开箱即用的AI代理网关平台
Clawdbot 不是一个需要从零搭建的复杂系统#xff0c;而是一个已经打包好的 AI代理网关与管理平台。它像一个智能“交通指…Clawdbot部署教程Qwen3:32B网关服务启用HTTPS反向代理与JWT Token校验配置1. Clawdbot是什么一个开箱即用的AI代理网关平台Clawdbot 不是一个需要从零搭建的复杂系统而是一个已经打包好的AI代理网关与管理平台。它像一个智能“交通指挥中心”帮你把本地运行的大模型比如 Qwen3:32B安全、稳定、可控地暴露给前端应用或外部调用方。你不需要写一行反向代理配置、不用手搓鉴权逻辑、也不用反复调试 CORS 或 token 透传问题——Clawdbot 把这些工程细节都封装好了。它提供一个直观的 Web 控制台让你能直接测试对话、切换模型、查看请求日志、管理 API 密钥甚至一键启停后端服务。更重要的是它不是只支持某一个模型的“玩具平台”。通过内置的 OpenAI 兼容接口适配器Clawdbot 能无缝对接 Ollama、LM Studio、Text Generation WebUI 等主流本地推理服务。本次教程聚焦在Qwen3:32B 模型 Ollama 后端 HTTPS 反向代理 JWT 校验这一完整链路带你从零跑通生产级部署。小贴士很多开发者卡在“模型跑起来了但前端连不上”“能访问但总提示未授权”“本地 HTTP 服务没法被公网域名调用”这几个典型问题上。本教程每一步都对应一个真实痛点不讲虚的。2. 环境准备确认基础依赖与资源条件在开始配置前请先确认你的运行环境满足以下最低要求。这不是“建议”而是实际影响 Qwen3:32B 是否能正常加载和响应的关键前提。2.1 硬件与系统要求GPU 显存≥24GB推荐 32GBQwen3:32B 在 FP16 推理下约占用 20–22GB 显存预留空间用于 KV Cache 和并发请求CPU 与内存≥8 核 CPU≥32GB RAMOllama 和 Clawdbot 主进程需共享内存操作系统Ubuntu 22.04 LTS推荐或 CentOS 8不支持 Windows 原生部署可使用 WSL2但性能损耗明显Docker 版本≥24.0.0Clawdbot 官方镜像基于 Docker Compose v2 构建2.2 软件依赖检查请在终端中逐条执行并确认输出符合预期# 检查 Docker 是否就绪 docker --version # 预期输出Docker version 24.0.7, build afdd53b # 检查 Docker Compose 是否可用v2 内置模式 docker compose version # 预期输出Docker Compose version v2.23.0 # 检查 nvidia-container-toolkitGPU 加速必需 nvidia-container-cli --version # 预期输出version: 1.12.0 # 检查 Ollama 是否已安装并可调用 ollama list # 预期输出空列表或已拉取的模型如 qwen3:32b如果任意一条命令报错或版本过低请先完成对应组件升级。跳过这步可能导致后续服务启动失败、GPU 不识别、或模型加载超时。2.3 域名与证书准备HTTPS 必需Clawdbot 的 JWT 校验与反向代理功能默认启用 HTTPS 强制重定向。因此你需要一个可解析的域名哪怕只是本地测试用和一对有效的 TLS 证书。开发测试场景使用localhost 自签名证书浏览器会提示不安全但功能完整生产或演示场景使用真实域名如ai.yourcompany.com Let’s Encrypt 免费证书我们以clawdbot.local为例需在/etc/hosts中添加127.0.0.1 clawdbot.local证书生成方式如下# 创建证书目录 mkdir -p ./certs # 生成自签名证书有效期 365 天 openssl req -x509 -nodes -days 365 \ -newkey rsa:2048 \ -keyout ./certs/clawdbot.local.key \ -out ./certs/clawdbot.local.crt \ -subj /CNclawdbot.local生成后./certs/clawdbot.local.crt和./certs/clawdbot.local.key将在后续 Nginx 配置中被引用。3. 部署 Qwen3:32B 与 Ollama 后端服务Clawdbot 本身不运行模型它只是一个“调度员”。真正的推理工作由 Ollama 承担。因此第一步是确保 Qwen3:32B 已正确加载并可通过本地 API 访问。3.1 拉取并验证 Qwen3:32B 模型Qwen3:32B 是通义千问系列最新发布的开源大语言模型对中文理解、长上下文和代码能力有显著提升。注意它不是qwen2:7b或qwen2.5:14b必须明确指定 tag。# 拉取模型首次需约 15–25 分钟取决于网络 ollama pull qwen3:32b # 查看已安装模型 ollama list # 输出应包含 # NAME ID SIZE MODIFIED # qwen3:32b 8a9c7f... 20.3GB 3 minutes ago # 测试本地 API 是否响应无需等待完整响应看到流式 chunk 即可 curl -X POST http://127.0.0.1:11434/api/chat \ -H Content-Type: application/json \ -d { model: qwen3:32b, messages: [{role: user, content: 你好请用一句话介绍你自己}], stream: false } | jq .message.content如果返回类似我是通义千问Qwen3一个超大规模语言模型...说明 Ollama 后端已就绪。3.2 配置 Ollama 监听地址关键默认情况下Ollama 只监听127.0.0.1:11434这意味着只有本机进程能访问。但 Clawdbot 的网关容器运行在独立网络中必须让 Ollama 接受来自 Docker 网络的请求。编辑 Ollama 配置文件Linuxsudo nano /etc/systemd/system/ollama.service找到ExecStart行在末尾添加--host0.0.0.0:11434ExecStart/usr/bin/ollama serve --host0.0.0.0:11434然后重载并重启sudo systemctl daemon-reload sudo systemctl restart ollama sudo systemctl status ollama # 确认状态为 active (running)最后验证跨网络可达性从宿主机 ping 容器网络# 运行一个临时 alpine 容器测试连通性 docker run --rm -it alpine sh -c apk add curl curl -s http://host.docker.internal:11434/api/tags | jq .models | length # 应返回 1表示成功获取到 1 个模型常见错误忘记修改--host导致 Clawdbot 启动时报connection refused或防火墙拦截11434端口。请务必验证此步。4. 配置 Clawdbot 网关启用 HTTPS 与 JWT 校验Clawdbot 默认以 HTTP 启动且不强制鉴权。要达到“生产可用”标准需通过其配置系统开启 HTTPS 反向代理和 JWT Token 校验。这不是插件而是内建能力只需修改config.yaml。4.1 初始化 Clawdbot 配置目录# 创建配置目录推荐放在项目根目录下 mkdir -p ./clawdbot-config # 下载官方默认配置模板 curl -o ./clawdbot-config/config.yaml https://raw.githubusercontent.com/clawdbot/clawdbot/main/config.example.yaml打开./clawdbot-config/config.yaml按以下顺序修改关键字段4.2 启用 HTTPS 反向代理Nginx 前置Clawdbot 本身不内置 HTTPS 服务而是依赖前置反向代理如 Nginx。我们在config.yaml中声明代理行为# ./clawdbot-config/config.yaml server: port: 3000 # Clawdbot 内部 HTTP 端口仅容器内访问 host: 0.0.0.0 # 绑定所有接口Docker 网络可见 https: false # 关键设为 false交由 Nginx 处理 TLS # 添加反向代理规则Clawdbot 会自动识别并注入 X-Forwarded-* 头 proxy: enabled: true trustProxy: true # 允许信任 X-Forwarded-* 头Nginx 必须设置 secure: true # 启用安全头HSTS、X-Content-Type-Options 等4.3 配置 JWT Token 校验策略这是本次教程的核心安全机制。Clawdbot 支持两种 Token 模式Dashboard Token前端登录用和API Token程序调用用。我们统一使用csdn作为示例密钥生产环境请替换为 32 位随机字符串。在config.yaml中添加auth: jwt: enabled: true secret: csdn # 生产环境务必更换为 openssl rand -hex 32 issuer: clawdbot-gateway audience: clawdbot-api expiresIn: 24h cookieName: clawdbot_token headerName: Authorization # 允许 Dashboard 页面通过 URL 参数传 token兼容你提供的访问方式 allowUrlParam: true urlParamName: token # 设置默认 dashboard token用于 ?tokenxxx 场景 dashboard: defaultToken: csdn保存后Clawdbot 将在启动时自动加载该策略所有/api/*请求必须携带有效 JWT而/chat等前端路径则接受?tokenxxx或 Cookie 方式。4.4 关联 Ollama 后端模型在config.yaml的providers区域替换或新增my-ollama配置与你提供的 JSON 结构一致但转为 YAMLproviders: - id: my-ollama name: Local Qwen3 32B type: openai-completions baseUrl: http://host.docker.internal:11434/v1 # Docker 内部访问 Ollama apiKey: ollama models: - id: qwen3:32b name: Qwen3 32B reasoning: false input: [text] contextWindow: 32000 maxTokens: 4096 cost: input: 0 output: 0 cacheRead: 0 cacheWrite: 0注意baseUrl使用了host.docker.internal—— 这是 Docker Desktop 和新版 Docker Engine 提供的宿主机别名比127.0.0.1更可靠。5. 启动全栈服务Nginx Clawdbot Ollama现在所有组件配置完毕我们用一个docker-compose.yml文件统一编排。5.1 编写 docker-compose.yml创建docker-compose.yml文件内容如下version: 3.8 services: nginx: image: nginx:alpine ports: - 443:443 - 80:80 volumes: - ./certs:/etc/nginx/certs:ro - ./nginx.conf:/etc/nginx/nginx.conf:ro depends_on: - clawdbot clawdbot: image: ghcr.io/clawdbot/clawdbot:latest ports: - 3000:3000 # 仅内部暴露不映射到宿主机 volumes: - ./clawdbot-config:/app/config:ro - /var/run/docker.sock:/var/run/docker.sock:ro environment: - NODE_ENVproduction - CLAWDBOT_CONFIG_PATH/app/config/config.yaml depends_on: - ollama ollama: image: ollama/ollama:latest volumes: - ./ollama-data:/root/.ollama ports: - 11434:11434 deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu]5.2 编写 Nginx 配置文件创建nginx.conf启用 HTTPS、反向代理、JWT 透传和安全头events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main $remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for; access_log /var/log/nginx/access.log main; error_log /var/log/nginx/error.log warn; sendfile on; keepalive_timeout 65; # SSL 配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; ssl_prefer_server_ciphers off; # 启用 HSTS仅 HTTPS 有效 add_header Strict-Transport-Security max-age31536000; includeSubDomains always; server { listen 80; server_name clawdbot.local; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name clawdbot.local; ssl_certificate /etc/nginx/certs/clawdbot.local.crt; ssl_certificate_key /etc/nginx/certs/clawdbot.local.key; # 反向代理到 Clawdbot location / { proxy_pass http://clawdbot:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; 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; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; proxy_cache_bypass $http_upgrade; proxy_redirect off; } # API 路径显式透传 Authorization 头JWT 必需 location /api/ { proxy_pass http://clawdbot:3000; proxy_set_header Authorization $http_authorization; proxy_pass_request_headers on; include /etc/nginx/proxy_params; } } }5.3 一键启动与验证# 启动全部服务后台运行 docker compose up -d # 查看日志确认启动状态 docker compose logs -f clawdbot | grep -i ready\|listening # 预期看到 # info: Server listening on http://0.0.0.0:3000 # info: JWT auth enabled with issuer clawdbot-gateway等待约 30 秒打开浏览器访问https://clawdbot.local/?tokencsdn你应该看到 Clawdbot 控制台首页右上角显示 “Authenticated”点击左侧 “Chat” 进入对话界面选择 “Qwen3 32B” 模型输入问题即可获得响应。验证成功标志页面通过 HTTPS 加载地址栏有锁图标无 “unauthorized” 报错对话响应来自 Qwen3:32B可提问“你是哪个模型”验证curl -H Authorization: Bearer valid-jwt https://clawdbot.local/api/models返回模型列表6. 常见问题排查与实用技巧部署过程中最常遇到的问题往往集中在网络、权限和配置拼写上。以下是高频问题的快速定位方法。6.1 “disconnected (1008): unauthorized: gateway token missing”这不是 Clawdbot 故障而是 JWT 校验失败的明确提示。按顺序检查URL 中?tokencsdn是否拼写正确区分大小写无空格config.yaml中auth.jwt.secret与 URL token 是否完全一致Nginx 是否透传了Authorization头检查nginx.conf中location /api/块Clawdbot 日志是否打印JWT verification failed若有说明密钥不匹配6.2 “Failed to load model qwen3:32b” 或响应超时ollama list是否显示该模型若无重新ollama pull qwen3:32bollama serve是否监听0.0.0.0:11434用ss -tuln | grep 11434确认docker compose logs ollama是否有 CUDA out of memory 错误降低num_ctx参数或升级显存docker compose exec clawdbot curl http://ollama:11434/api/tags是否返回模型列表若失败检查docker network inspect网络连通性6.3 HTTPS 访问提示证书不受信任这是自签名证书的正常现象。开发阶段可Chrome 中输入thisisunsafe页面空白时敲击临时绕过或将clawdbot.local.crt导入系统钥匙串macOS/ 证书管理器Windows生产环境请务必使用 Let’s Encrypt 证书Clawdbot 官方文档提供certbot自动续签集成方案。6.4 提升 Qwen3:32B 实际体验的三个小技巧启用动态上下文裁剪在config.yaml的模型配置中添加qwen3:32b: contextWindow: 32000 trimStrategy: oldest # 自动丢弃最早消息避免超限设置默认系统提示词在providers.my-ollama.models[0]下添加systemPrompt: 你是一个专业、严谨、乐于助人的AI助手回答需简洁准确不虚构信息。限制单次最大输出长度防止长文本阻塞队列maxTokens: 2048 # 从 4096 降至 2048响应更快显存压力更小7. 总结你已掌握生产级 AI 网关的核心能力到此为止你已完成一套完整的、具备工业级安全标准的 AI 代理网关部署用 Ollama 成功加载并运行 Qwen3:32B 这一前沿大模型通过 Nginx 实现 HTTPS 全站加密与反向代理屏蔽内部端口暴露启用 JWT Token 校验支持 URL 参数、Cookie、Header 三种鉴权方式所有服务通过 Docker Compose 统一编排启动、停止、日志一目了然这不再是一个“能跑就行”的 demo而是一个可立即接入企业内部系统的 AI 基础设施模块。你可以将它作为内部知识库问答入口对接 RAG 插件客服机器人后端集成企业微信/钉钉 Bot开发者 API 平台为前端团队提供/v1/chat/completions兼容接口下一步你可以探索 Clawdbot 的扩展能力添加自定义工具函数、配置多模型路由策略、接入 Prometheus 监控指标或将其嵌入现有 SSO 体系实现统一身份认证。真正的 AI 工程化始于一个稳定、安全、可运维的网关层。而你已经迈出了最关键的一步。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。