ClawdBot环境部署:Nginx反向代理+HTTPS配置保障Dashboard安全访问

1. ClawdBot是什么:你的本地AI助手,不止于聊天

ClawdBot 是一个真正属于你自己的个人 AI 助手——它不依赖云端服务,所有推理和交互都在你自己的设备上完成。你可以把它理解成一个“装在本地的智能大脑”:既能理解复杂指令,又能调用模型执行任务,还能通过图形界面轻松管理。

它不是另一个需要注册、登录、等待排队的在线服务,而是一个可完全掌控的本地应用。核心能力由 vLLM 提供支撑,这意味着它能高效运行像 Qwen3-4B-Instruct 这样的中等规模大模型,在消费级显卡(如 RTX 4070 或 A10)上也能保持流畅响应。

更关键的是,ClawdBot 的设计哲学是“开箱即用,按需扩展”。它默认提供 Web 控制台(Dashboard),让你不用写代码、不碰命令行,就能查看日志、切换模型、调整参数、管理会话。但这个 Dashboard 默认只监听本地回环地址(127.0.0.1:7860),无法从局域网其他设备访问,更别说通过公网安全使用了。

这就引出了本文要解决的核心问题:如何让这个强大的本地助手,变成一个可被家人、同事或远程设备安全访问的私有AI服务? 答案就是——用 Nginx 做反向代理,再配上 HTTPS 加密。

2. 为什么必须加 Nginx + HTTPS?三个现实痛点

很多用户第一次部署完 ClawdBot,兴奋地打开 http://localhost:7860,发现界面很酷,但很快就会遇到这三个典型问题:

2.1 本地访问局限:只能自己用,无法共享

Dashboard 默认绑定 127.0.0.1,意味着:

  • 手机连着同一Wi-Fi,打不开;
  • 笔记本在公司内网,家里台式机跑着 ClawdBot,也访问不了;
  • 想用 iPad 在沙发上边看边问?不行。

这不是功能缺陷,而是安全默认策略。但对真实使用场景来说,这等于把好工具锁进了抽屉。

2.2 HTTP 明文传输:敏感信息裸奔

即使你手动改配置让 Dashboard 监听 0.0.0.0:7860,直接暴露在局域网甚至公网,也会带来严重风险:

  • Dashboard URL 中包含一次性 token(如 ?token=23588143fd158869...),这是访问凭证;
  • 如果走 HTTP,这个 token 会在网络中明文传输,任何同网段的抓包工具都能截获;
  • 一旦 token 泄露,他人即可完全接管你的 ClawdBot 控制台——修改模型、读取对话、甚至执行任意命令。

2.3 浏览器安全警告:现代浏览器直接拦截

Chrome、Edge、Safari 等主流浏览器已全面强化对非 HTTPS 页面的限制:

  • 访问 http://192.168.1.100:7860 时,地址栏显示“不安全”红标;
  • 某些功能(如摄像头、麦克风、通知权限)在 HTTP 下被彻底禁用;
  • 部分新版浏览器甚至直接阻止加载,提示“此网站可能危害您的安全”。

所以,不配 HTTPS,就等于主动放弃 Dashboard 的完整功能和跨设备可用性。

3. 完整部署流程:从零开始搭建安全访问通道

我们采用最轻量、最可靠、最易维护的方案:Nginx 反向代理 + Let's Encrypt 免费证书。整个过程无需购买域名或证书,支持泛域名与自动续期。

3.1 前置准备:确认基础环境

请确保你的服务器/主机满足以下条件(以 Ubuntu 22.04 为例):

  • 已安装 Docker 和 Docker Compose(ClawdBot 本身依赖 Docker 运行);
  • 系统时间准确(Let's Encrypt 对时间敏感,误差超过5分钟会失败);
  • 有独立公网 IP 或已配置好内网穿透(如 frp、cpolar),且 80/443 端口可被访问;
  • 重要:已成功运行 ClawdBot,并可通过 clawdbot dashboard 获取到本地 Dashboard 地址(如 http://127.0.0.1:7860)。

小贴士:如果你没有公网 IP,也可先用内网穿透测试全流程,后续再迁移到云服务器。本文所有配置均兼容两种场景。

3.2 步骤一:安装并配置 Nginx

# 更新源并安装 Nginx
sudo apt update && sudo apt install -y nginx

# 启用并启动服务
sudo systemctl enable nginx
sudo systemctl start nginx

# 验证是否运行
curl -I http://localhost
# 应返回 HTTP/1.1 200 OK

此时,访问 http://你的服务器IP 应能看到 Nginx 默认欢迎页。

3.3 步骤二:为 ClawdBot 创建专属反向代理配置

创建配置文件 /etc/nginx/sites-available/clawdbot

# /etc/nginx/sites-available/clawdbot
upstream clawdbot_backend {
    server 127.0.0.1:7860;
}

server {
    listen 80;
    server_name clawbot.yourdomain.com;  # ← 替换为你的实际域名(测试可用 test.clawbot.local)

    # Let's Encrypt 验证专用路径
    location /.well-known/acme-challenge/ {
        root /var/www/letsencrypt;
    }

    # 所有 HTTP 请求重定向到 HTTPS
    location / {
        return 301 https://$server_name$request_uri;
    }
}

server {
    listen 443 ssl http2;
    server_name clawbot.yourdomain.com;

    # SSL 证书路径(稍后由 certbot 自动生成)
    ssl_certificate /etc/letsencrypt/live/clawbot.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/clawbot.yourdomain.com/privkey.pem;

    # 推荐的安全加固头
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";

    # 关键:将所有请求转发给本地 ClawdBot
    location / {
        proxy_pass http://clawdbot_backend;
        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;

        # 保持 WebSocket 连接(Dashboard 依赖长连接)
        proxy_set_header Sec-WebSocket-Extensions $http_sec_websocket_extensions;
        proxy_set_header Sec-WebSocket-Key $http_sec_websocket_key;
        proxy_set_header Sec-WebSocket-Version $http_sec_websocket_version;
    }

    # 静态资源缓存优化(可选)
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
}

启用该站点:

# 创建符号链接
sudo ln -sf /etc/nginx/sites-available/clawdbot /etc/nginx/sites-enabled/

# 测试 Nginx 配置语法
sudo nginx -t

# 重载配置
sudo systemctl reload nginx

3.4 步骤三:申请并自动部署 HTTPS 证书

我们使用 Certbot(官方推荐的 Let's Encrypt 客户端):

# 安装 Certbot 与 Nginx 插件
sudo apt install -y certbot python3-certbot-nginx

# 创建 Let's Encrypt 验证目录
sudo mkdir -p /var/www/letsencrypt

# 申请证书(替换 yourdomain.com 为你的域名)
sudo certbot --nginx -d clawbot.yourdomain.com --non-interactive --agree-tos -m your-email@example.com

#  成功后,证书将自动写入 /etc/letsencrypt/live/clawbot.yourdomain.com/
# 并且 Certbot 会自动更新 Nginx 配置中的证书路径

注意:若无真实域名,可使用 test.clawbot.local 并配合本地 hosts 文件测试(开发阶段推荐)。生产环境务必使用备案/可解析域名。

3.5 步骤四:调整 ClawdBot 启动参数,适配反向代理

ClawdBot 默认生成的 Dashboard URL 是 http://127.0.0.1:7860/?token=xxx,但经 Nginx 代理后,用户实际访问的是 https://clawbot.yourdomain.com。因此需告诉 ClawdBot:“我的外部访问地址是这个”,否则页面内部分链接仍会跳转回本地地址。

编辑 ~/.clawdbot/clawdbot.json(或容器内 /app/clawdbot.json),在顶层添加:

{
  "gateway": {
    "externalUrl": "https://clawbot.yourdomain.com"
  },
  // ... 其他原有配置保持不变
}

然后重启 ClawdBot:

clawdbot stop
clawdbot start

3.6 步骤五:验证与故障排查

成功标志

  • 浏览器访问 https://clawbot.yourdomain.com,显示绿色锁图标;
  • 页面正常加载,无混合内容警告;
  • 可正常输入、发送消息、切换模型、查看日志;
  • 地址栏 URL 始终为 https://...,无跳转到 http://127.0.0.1

🔧 常见问题速查

现象 可能原因 快速解决
502 Bad Gateway ClawdBot 未运行,或端口不对 clawdbot status 查看状态;确认 clawdbot.jsongateway.externalUrl 未干扰内部监听
Connection refused Nginx 未正确代理到 7860 curl http://127.0.0.1:7860 测试本地是否通;检查 upstream 配置
页面加载但按钮无响应 WebSocket 连接失败 检查 Nginx 配置中 proxy_set_header 是否完整复制;确认 proxy_http_version 1.1Connection upgrade 存在
证书显示“不安全” 域名未正确解析或证书过期 sudo certbot renew --dry-run 测试自动续期;openssl x509 -in /etc/letsencrypt/live/.../cert.pem -text -noout 查看有效期

4. 进阶增强:让安全与体验更进一步

完成基础部署后,还可叠加以下几项实用增强,显著提升生产可用性:

4.1 添加基础身份认证(Basic Auth)

防止未授权访问,哪怕只是家庭内网:

# 安装 htpasswd 工具
sudo apt install -y apache2-utils

# 创建密码文件(用户名 admin,密码自定义)
sudo htpasswd -c /etc/nginx/.htpasswd admin

# 在 Nginx server 块中 location / { } 内添加:
auth_basic "ClawdBot Admin Access";
auth_basic_user_file /etc/nginx/.htpasswd;

重启 Nginx 即可生效。访问时将弹出标准浏览器登录框。

4.2 启用自动证书续期

Let's Encrypt 证书仅90天有效,但可全自动续期:

# Certbot 已自带 systemd timer,检查是否启用
sudo systemctl list-timers | grep certbot

# 若未启用,手动启用
sudo systemctl enable certbot.timer
sudo systemctl start certbot.timer

系统将在每天凌晨自动检查并续期即将过期的证书。

4.3 配置访问日志与速率限制

保护 Dashboard 不被暴力探测:

# 在 http {} 块中(/etc/nginx/nginx.conf)添加
limit_req_zone $binary_remote_addr zone=clawbot:10m rate=5r/m;

# 在 server {} 的 location / { } 中添加
limit_req zone=clawbot burst=10 nodelay;
access_log /var/log/nginx/clawbot_access.log;
error_log /var/log/nginx/clawbot_error.log;

这将限制每个 IP 每分钟最多5次请求,超出则返回 503,有效缓解扫描与爆破。

5. 总结:你已拥有一套企业级私有AI访问体系

回顾整个过程,我们没有改动 ClawdBot 一行源码,也没有牺牲其本地化、隐私优先的设计初衷,而是通过标准化的基础设施层(Nginx + HTTPS),完成了三重跃升:

  • 从“仅本地”到“全网络”:一台设备运行,全家/团队/远程皆可安全访问;
  • 从“明文裸奔”到“端到端加密”:所有通信受 TLS 保护,token、对话、指令全程不泄露;
  • 从“临时调试”到“长期稳定”:自动证书续期、健康检查、访问控制,具备生产环境可靠性。

更重要的是,这套方案完全开源、零成本、可复现。它不绑定任何厂商,不上传数据,不依赖第三方 API,真正实现了“AI 在手,安全我有”。

你现在拥有的,不再只是一个本地 Demo 工具,而是一套可落地、可管理、可扩展的私有 AI 服务基座。下一步,你可以:

  • 将其集成进 Home Assistant 实现语音唤醒;
  • 用 Prometheus + Grafana 监控 GPU 利用率与请求延迟;
  • 为不同成员配置独立子路径(/alice / /bob)实现多租户隔离;
  • 或直接将其作为企业内部知识助手的统一入口。

技术的价值,从来不在炫技,而在让能力真正触手可及。而今天,你已经亲手铺平了这条路。


获取更多AI镜像

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

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐