ClawdBot(openclaw) + Cloudflare Tunnel + Zero-Trust 零基础保姆教程

ClawdBot + Cloudflare Tunnel + Zero-Trust 零基础保姆教程

🎯 本教程专为零基础用户设计,手把手教你从零开始部署 ClawdBot,并通过 Cloudflare Tunnel 和 Zero-Trust 实现安全访问。即使你完全不懂技术,只要跟着步骤一步步来,也能成功部署!


本文用ai输出在安全的ClawdBot 安装中, 有什么问题可以沟通

📋 目录

  1. 准备工作
  2. [第一步:注册和准备 Cloudflare](#第一步:注册和准备 Cloudflare)
  3. [第二步:安装 Cloudflare Tunnel](#第二步:安装 Cloudflare Tunnel)
  4. [第三步:配置 Cloudflare Tunnel](#第三步:配置 Cloudflare Tunnel)
  5. [第四步:安装 ClawdBot](#第四步:安装 ClawdBot)
  6. [第五步:配置 Zero-Trust 登录](#第五步:配置 Zero-Trust 登录)
  7. 第六步:测试和验证
  8. 常见问题详细解答
  9. 进阶配置(可选)

🎯 准备工作

在开始之前,请确保你已经准备好以下内容:

✅ 必需清单

  • Cloudflare 账户(免费版即可,我们会在教程中教你注册)
  • 一个域名(可以是新买的,也可以是已有的)
  • 一台服务器(Windows 或 Linux 都可以,甚至可以是你的家用电脑)
  • ClawdBot 安装包(我们会告诉你如何获取)
  • 基本的网络连接(能上网就行)

💡 重要说明

Q: 我没有域名怎么办?

A: 不用担心!你可以:

  • 直接在 Cloudflare 购买域名(推荐,最简单,价格透明,无隐藏费用)
  • 或者在其他域名注册商购买后添加到 Cloudflare
  • 或者使用 Cloudflare Tunnel 的临时域名进行测试

Q: 我没有服务器怎么办?

A: 你可以:

  • 使用家里的电脑(Windows 或 Linux 都可以)
  • 租用一台云服务器(阿里云、腾讯云等,最便宜的每月几十元)
  • 使用树莓派等设备

Q: 我是完全零基础,能学会吗?

A: 完全可以!本教程会详细解释每一步,包括:

  • 每个命令的作用
  • 每个配置的含义
  • 常见错误的解决方法
  • 截图说明(用文字描述)

第一步:注册和准备 Cloudflare

1.1 注册 Cloudflare 账户

  1. 访问 Cloudflare 官网

  2. 填写注册信息

    复制代码
    邮箱:你的邮箱地址(建议使用常用邮箱)
    密码:设置一个强密码(至少8位,包含大小写字母和数字)
  3. 验证邮箱

    • 注册后,Cloudflare 会发送验证邮件到你的邮箱
    • 打开邮箱,点击验证链接
    • 如果没有收到邮件,检查垃圾邮件文件夹
  4. 登录 Cloudflare Dashboard

1.2 添加域名到 Cloudflare

如果你已经有域名:

  1. 添加域名

    • 登录 Cloudflare Dashboard 后,点击"添加站点"(Add a Site)
    • 输入你的域名(例如:example.com),点击"添加站点"
  2. 选择计划

    • 选择"免费"计划(Free plan),点击"继续"
  3. 扫描 DNS 记录

    • Cloudflare 会自动扫描你域名的现有 DNS 记录
    • 检查记录是否正确,点击"继续"
  4. 更改域名服务器(Nameservers)

    • Cloudflare 会给你两个域名服务器地址,例如:

      复制代码
      alice.ns.cloudflare.com
      bob.ns.cloudflare.com
    • 重要: 你需要去你的域名注册商(如阿里云、GoDaddy 等)修改域名服务器

    • 具体步骤:

      • 登录你的域名注册商网站
      • 找到"DNS 管理"或"域名服务器"设置
      • 将原来的域名服务器替换为 Cloudflare 提供的两个地址
      • 保存更改
    • 注意: DNS 更改可能需要 24-48 小时生效,通常几分钟到几小时

  5. 等待激活

    • 更改域名服务器后,回到 Cloudflare Dashboard
    • 点击"检查名称服务器",等待 Cloudflare 验证
    • 验证成功后,你的域名就成功添加到 Cloudflare 了

如果你没有域名:

你有两个选择:

选择一:直接在 Cloudflare 购买域名(推荐,最简单)

Cloudflare 提供域名注册服务,价格透明,没有隐藏费用,而且购买后自动配置,非常方便!

  1. 进入域名注册页面

  2. 搜索域名

    • 在搜索框中输入你想要的域名(例如:myclawdbot
    • 选择你喜欢的域名后缀(如 .com.xyz.net 等)
    • 点击"搜索"
  3. 查看价格

    • Cloudflare 会显示域名的价格
    • 优势: Cloudflare 的域名价格通常是成本价,没有加价
    • 例如:.com 域名通常约 8-10/年,`.xyz` 域名通常约 1-3/年
  4. 添加到购物车

    • 选择你想要的域名
    • 点击"添加到购物车"
    • 可以同时购买多个域名
  5. 结账

    • 点击"结账"(Checkout)
    • 填写注册信息:
      • 注册人信息(姓名、地址、电话等)
      • 邮箱地址
      • 支付方式(支持信用卡、PayPal 等)
    • 重要: 确保信息准确,这些信息会用于 WHOIS 记录
  6. 完成购买

    • 确认订单信息
    • 完成支付
    • 购买成功后,域名会自动添加到你的 Cloudflare 账户
    • 无需手动配置域名服务器,Cloudflare 会自动管理
  7. 验证域名

    • 购买完成后,在 Cloudflare Dashboard 中应该能看到你的域名
    • 域名状态应该显示为"有效"(Active)
    • 可以直接跳到"1.3 验证域名状态"步骤

Cloudflare 购买域名的优势:

  • 价格透明:没有隐藏费用,价格通常是成本价
  • 自动配置:购买后自动添加到 Cloudflare,无需手动配置
  • 免费隐私保护:自动启用 WHOIS 隐私保护(免费)
  • 免费 SSL:自动提供 SSL 证书
  • 无转移费用:如果将来要转移域名,没有额外费用
  • 统一管理:域名和 DNS 在同一个平台管理,非常方便
选择二:使用临时域名测试(免费,但有限制)

如果你想先测试,可以使用 Cloudflare Tunnel 提供的临时域名:

  1. 创建临时 Tunnel

    bash 复制代码
    cloudflared tunnel --url http://localhost:8080
    • 这会创建一个临时的 Tunnel,并给你一个临时域名(如 xxxxx.trycloudflare.com
    • 这个域名可以用于测试,但每次重启 Tunnel 可能会变化
  2. 注意限制

    • 临时域名每次可能不同
    • 不适合生产环境使用
    • 建议测试完成后购买正式域名

推荐: 如果你打算长期使用,建议直接在 Cloudflare 购买域名,价格便宜且配置简单。

1.3 验证域名状态

在 Cloudflare Dashboard 中:

  • 左侧菜单选择你的域名
  • 你应该看到域名状态显示为"有效"(Active)
  • DNS 记录中应该有一些默认记录

✅ 完成检查:

  • Cloudflare 账户已注册并验证
  • 域名已添加到 Cloudflare
  • 域名服务器已更改(如果使用自己的域名)
  • 域名状态显示为"有效"

第二步:安装 Cloudflare Tunnel

Cloudflare Tunnel 是一个工具,它会在你的服务器和 Cloudflare 之间建立一个安全的加密隧道。

2.1 Windows 系统安装

方法一:使用 Chocolatey(推荐,最简单)
  1. 安装 Chocolatey(如果还没有)

    • 以管理员身份打开 PowerShell
    • 运行以下命令:
    powershell 复制代码
    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
    • 等待安装完成(可能需要几分钟)
  2. 使用 Chocolatey 安装 cloudflared

    powershell 复制代码
    choco install cloudflared -y
    • 等待安装完成
  3. 验证安装

    powershell 复制代码
    cloudflared --version
    • 如果显示版本号(如 cloudflared 2024.x.x),说明安装成功
方法二:手动下载安装
  1. 下载 cloudflared

  2. 安装到系统

    • 将下载的文件重命名为 cloudflared.exe
    • 复制到 C:\Windows\System32\ 目录
    • 或者创建一个文件夹(如 C:\cloudflared\),将文件放进去,然后添加到系统 PATH
  3. 添加到 PATH(如果放在自定义文件夹)

    • 右键"此电脑" → "属性" → "高级系统设置" → "环境变量"
    • 在"系统变量"中找到 Path,点击"编辑"
    • 点击"新建",输入 C:\cloudflared\(你的文件夹路径)
    • 点击"确定"保存
  4. 验证安装

    • 打开新的 PowerShell 窗口
    • 运行:cloudflared --version
    • 如果显示版本号,说明安装成功

2.2 Linux 系统安装

Ubuntu/Debian 系统
  1. 下载安装包

    bash 复制代码
    curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb
  2. 安装

    bash 复制代码
    sudo dpkg -i cloudflared.deb
    • 如果提示缺少依赖,运行:sudo apt-get install -f
  3. 验证安装

    bash 复制代码
    cloudflared --version
CentOS/RHEL/Rocky Linux 系统
  1. 下载安装包

    bash 复制代码
    curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm -o cloudflared.rpm
  2. 安装

    bash 复制代码
    sudo rpm -i cloudflared.rpm
  3. 验证安装

    bash 复制代码
    cloudflared --version
通用方法(所有 Linux 系统)
  1. 下载二进制文件

    bash 复制代码
    wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
  2. 移动到系统路径

    bash 复制代码
    sudo mv cloudflared-linux-amd64 /usr/local/bin/cloudflared
    sudo chmod +x /usr/local/bin/cloudflared
  3. 验证安装

    bash 复制代码
    cloudflared --version

2.3 macOS 系统安装(Mac mini)

macOS 系统安装 cloudflared 有多种方法,推荐使用 Homebrew,这是最简单的方式。

方法一:使用 Homebrew(推荐,最简单)
  1. 安装 Homebrew(如果还没有)

    • 打开"终端"(Terminal)应用
    • 运行以下命令:
    bash 复制代码
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    • 按照提示完成安装(可能需要输入管理员密码)
    • 安装完成后,根据提示运行额外的命令(通常是添加 Homebrew 到 PATH)
  2. 使用 Homebrew 安装 cloudflared

    bash 复制代码
    brew install cloudflared
    • 等待安装完成(可能需要几分钟)
  3. 验证安装

    bash 复制代码
    cloudflared --version
    • 如果显示版本号(如 cloudflared 2024.x.x),说明安装成功
方法二:使用 MacPorts

如果你使用 MacPorts 而不是 Homebrew:

  1. 安装 cloudflared

    bash 复制代码
    sudo port install cloudflared
  2. 验证安装

    bash 复制代码
    cloudflared --version
方法三:手动下载安装
  1. 下载 cloudflared

  2. 解压文件

    bash 复制代码
    # Intel Mac
    tar -xzf cloudflared-darwin-amd64.tgz
    
    # Apple Silicon Mac (M1/M2/M3)
    tar -xzf cloudflared-darwin-arm64.tgz
  3. 移动到系统路径

    bash 复制代码
    sudo mv cloudflared /usr/local/bin/cloudflared
    sudo chmod +x /usr/local/bin/cloudflared
    • 或者移动到 /opt/homebrew/bin/(如果使用 Homebrew 但想手动安装)
  4. 验证安装

    bash 复制代码
    cloudflared --version

检查你的 Mac 架构:

bash 复制代码
# 查看 Mac 架构
uname -m
# 输出 "x86_64" 表示 Intel Mac
# 输出 "arm64" 表示 Apple Silicon Mac (M1/M2/M3)

2.4 验证安装成功

无论使用哪种方法,最后都应该能运行:

bash 复制代码
cloudflared --version

预期输出示例:

复制代码
cloudflared 2024.3.1 (built 2024-03-15-1234)

✅ 完成检查:

  • cloudflared 已成功安装
  • cloudflared --version 命令能正常显示版本号

第三步:配置 Cloudflare Tunnel

3.1 登录 Cloudflare

这一步会将你的 cloudflared 工具与你的 Cloudflare 账户关联起来。

  1. 运行登录命令

    bash 复制代码
    cloudflared tunnel login
  2. 浏览器自动打开

    • 命令运行后,会自动打开你的默认浏览器
    • 如果没有自动打开,命令会显示一个 URL,手动复制到浏览器打开
  3. 选择域名

    • 浏览器中会显示 Cloudflare 登录页面
    • 登录你的 Cloudflare 账户
    • 选择你要使用的域名(就是你刚才添加到 Cloudflare 的域名)
    • 点击"授权"或"Allow"
  4. 验证登录成功

    • 登录成功后,浏览器会显示"Success!"或"成功!"

    • 回到命令行,你应该看到类似这样的输出:

      复制代码
      You have successfully logged in.
  5. 检查证书文件

    • 登录成功后,会在你的用户目录下生成证书文件
    • Windows: C:\Users\你的用户名\.cloudflared\cert.pem
    • Linux: ~/.cloudflared/cert.pem/root/.cloudflared/cert.pem
    • macOS: ~/.cloudflared/cert.pem/Users/你的用户名/.cloudflared/cert.pem
    • 这个文件用于后续的认证,不要删除或泄露

常见问题:

  • Q: 浏览器没有自动打开怎么办?

    A: 手动复制命令输出的 URL 到浏览器打开

  • Q: 提示"unauthorized"怎么办?

    A: 确保你登录的是正确的 Cloudflare 账户,并且域名已经添加到该账户

3.2 创建 Tunnel

Tunnel 是连接你服务器和 Cloudflare 的通道,我们需要创建一个。

  1. 创建命名 Tunnel

    bash 复制代码
    cloudflared tunnel create clawdbot-tunnel
    • clawdbot-tunnel 是 Tunnel 的名称,你可以改成任何你喜欢的名字
  2. 查看输出信息

    命令运行后,会显示类似这样的输出:

    复制代码
    Tunnel credentials written to /root/.cloudflared/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json
    +--------------------------------+----------------------------------+
    | TUNNEL ID                      | NAME                             |
    +--------------------------------+----------------------------------+
    | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx | clawdbot-tunnel                  |
    +--------------------------------+----------------------------------+
  3. 记住 Tunnel ID

    • 输出中的 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 就是你的 Tunnel ID
    • 重要: 请复制并保存这个 ID,后续配置会用到
    • 同时注意证书文件的路径(如 /root/.cloudflared/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json
  4. 验证 Tunnel 创建成功

    bash 复制代码
    cloudflared tunnel list
    • 应该能看到你刚才创建的 Tunnel

✅ 完成检查:

  • 已成功登录 Cloudflare
  • 已创建 Tunnel
  • 已保存 Tunnel ID 和证书文件路径

3.3 创建配置文件

配置文件告诉 Tunnel 如何路由流量。

  1. 确定配置文件位置

    • Windows: C:\Users\你的用户名\.cloudflared\config.yml
    • Linux: ~/.cloudflared/config.yml/root/.cloudflared/config.yml
    • macOS: ~/.cloudflared/config.yml/Users/你的用户名/.cloudflared/config.yml
  2. 创建配置文件

    Windows (PowerShell):

    powershell 复制代码
    # 创建配置文件目录(如果不存在)
    New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.cloudflared"
    
    # 创建配置文件
    notepad "$env:USERPROFILE\.cloudflared\config.yml"

    Linux:

    bash 复制代码
    # 创建配置文件目录(如果不存在)
    mkdir -p ~/.cloudflared
    
    # 创建配置文件
    nano ~/.cloudflared/config.yml
    # 或者使用 vi: vi ~/.cloudflared/config.yml

    macOS:

    bash 复制代码
    # 创建配置文件目录(如果不存在)
    mkdir -p ~/.cloudflared
    
    # 创建配置文件(使用 nano,对新手更友好)
    nano ~/.cloudflared/config.yml
    # 或者使用 vi: vi ~/.cloudflared/config.yml
    # 或者使用 TextEdit(图形界面):
    # open -a TextEdit ~/.cloudflared/config.yml
  3. 编辑配置文件内容

    将以下内容复制到配置文件中,记得替换以下内容:

    • xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx → 你的 Tunnel ID
    • /root/.cloudflared/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json → 你的证书文件完整路径
    • clawdbot.yourdomain.com → 你的域名(例如:clawdbot.example.com
    • 8080 → ClawdBot 的端口(默认通常是 8080,根据实际情况修改)
    • 3000 → ClawdBot API 的端口(如果有,根据实际情况修改)
    yaml 复制代码
    tunnel: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    credentials-file: /root/.cloudflared/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json
    
    ingress:
      # ClawdBot Web UI
      - hostname: clawdbot.yourdomain.com
        service: http://localhost:8080
        originRequest:
          noHappyEyeballs: true
          connectTimeout: 30s
          tcpKeepAlive: 30s
          keepAliveConnections: 100
          keepAliveTimeout: 90s
          httpHostHeader: clawdbot.yourdomain.com
    
      # ClawdBot API(如果有单独的 API 服务)
      - hostname: api.clawdbot.yourdomain.com
        service: http://localhost:3000
        originRequest:
          noHappyEyeballs: true
          connectTimeout: 30s
          tcpKeepAlive: 30s
          keepAliveConnections: 100
          keepAliveTimeout: 90s
          httpHostHeader: api.clawdbot.yourdomain.com
    
      # 捕获所有其他请求(必须放在最后)
      - service: http_status:404

    简化版本(如果只有一个服务):

    yaml 复制代码
    tunnel: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    credentials-file: /root/.cloudflared/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json
    
    ingress:
      - hostname: clawdbot.yourdomain.com
        service: http://localhost:8080
      - service: http_status:404
  4. 保存配置文件

    • Windows (记事本):Ctrl+S 保存,然后关闭
    • Linux (nano):Ctrl+O 保存,按 Enter 确认,然后按 Ctrl+X 退出
    • Linux (vi):Esc,输入 :wq,按 Enter

配置文件说明:

  • tunnel: 你的 Tunnel ID
  • credentials-file: 证书文件路径
  • ingress: 路由规则列表
  • hostname: 你的域名
  • service: 本地服务地址(localhost:端口
  • originRequest: 连接优化选项(可选,但建议保留)

✅ 完成检查:

  • 配置文件已创建
  • Tunnel ID 和证书路径已正确填写
  • 域名和端口已根据实际情况修改
  • 配置文件格式正确(注意 YAML 的缩进,使用空格,不要用 Tab)

3.4 配置 DNS 记录

现在需要在 Cloudflare 中配置 DNS 记录,将你的域名指向 Tunnel。

  1. 登录 Cloudflare Dashboard

  2. 进入 DNS 设置

    • 左侧菜单点击"DNS" → "记录"(Records)
  3. 添加 CNAME 记录

    点击"添加记录"(Add record),填写:

    复制代码
    类型: CNAME
    名称: clawdbot(或者你想要的子域名)
    目标: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.cfargotunnel.com
    代理状态: 已代理(橙色云朵图标,必须开启!)
    TTL: 自动

    重要说明:

    • xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 是你的 Tunnel ID
    • 代理状态必须开启(显示为橙色云朵),这样才能通过 Cloudflare 访问
    • 如果显示为灰色云朵,点击一下切换为橙色
  4. 如果有 API 子域名,也添加记录

    复制代码
    类型: CNAME
    名称: api.clawdbot
    目标: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.cfargotunnel.com
    代理状态: 已代理(橙色云朵)
  5. 保存记录

    • 点击"保存"(Save)
    • DNS 记录可能需要几分钟到几小时生效,通常几分钟内就会生效
  6. 验证 DNS 记录

    bash 复制代码
    # Windows PowerShell
    nslookup clawdbot.yourdomain.com
    
    # Linux
    dig clawdbot.yourdomain.com
    # 或
    nslookup clawdbot.yourdomain.com
    • 应该返回 Cloudflare 的 IP 地址(通常是 104.x.x.x 或类似的地址)

✅ 完成检查:

  • DNS 记录已添加
  • 代理状态已开启(橙色云朵)
  • DNS 解析正常(返回 Cloudflare IP)

3.5 测试运行 Tunnel

在正式配置为服务之前,我们先测试一下 Tunnel 是否能正常工作。

  1. 确保 ClawdBot 正在运行

    • 如果还没有安装 ClawdBot,可以先跳过这一步,或者使用一个简单的测试服务
    • 如果 ClawdBot 已安装,确保它正在运行并监听 localhost:8080
  2. 运行 Tunnel(前台测试)

    bash 复制代码
    cloudflared tunnel run clawdbot-tunnel
    • clawdbot-tunnel 是你创建 Tunnel 时使用的名称
  3. 查看输出

    如果配置正确,你会看到类似这样的输出:

    复制代码
    +----------------------------------------------------------------------------+
    |  Your quick Tunnel has been created! Visit it at (it may take some time  |
    |  to be reachable):                                                         |
    |  https://clawdbot.yourdomain.com                                          |
    +----------------------------------------------------------------------------+
  4. 测试访问

    • 打开浏览器,访问:https://clawdbot.yourdomain.com
    • 如果能看到 ClawdBot 的界面,说明 Tunnel 配置成功!
    • 如果显示错误,检查:
      • ClawdBot 是否正在运行
      • 端口是否正确
      • 配置文件是否正确
  5. 停止测试

    • Ctrl+C 停止 Tunnel
    • 这只是测试,接下来我们会配置为自动运行的服务

常见问题:

  • Q: 提示"Unable to fetch tunnel"怎么办?

    A: 检查 Tunnel ID 是否正确,证书文件是否存在

  • Q: 提示"DNS lookup failed"怎么办?

    A: 等待几分钟让 DNS 生效,或者检查 DNS 记录是否正确配置

  • Q: 访问域名显示 502 错误怎么办?

    A: 检查 ClawdBot 是否正在运行,端口是否正确,配置文件中的 service 地址是否正确

✅ 完成检查:

  • Tunnel 能正常启动
  • 通过域名能访问到 ClawdBot(或至少能连接到服务)
  • 没有错误信息

3.6 配置为系统服务(自动启动)

测试成功后,我们需要将 Tunnel 配置为系统服务,这样它会在系统启动时自动运行,并且如果崩溃了会自动重启。

Windows 系统

方法一:使用 NSSM(推荐)

  1. 下载 NSSM

  2. 以管理员身份打开 PowerShell

    • 右键"开始"菜单 → "Windows PowerShell (管理员)"
  3. 安装服务

    powershell 复制代码
    # 进入 NSSM 目录(根据你的实际路径修改)
    cd C:\nssm\win64
    
    # 安装服务
    .\nssm.exe install CloudflaredTunnel "C:\Windows\System32\cloudflared.exe" "tunnel --config C:\Users\你的用户名\.cloudflared\config.yml run clawdbot-tunnel"
    • 记得替换:
      • C:\Users\你的用户名\.cloudflared\config.yml → 你的配置文件路径
      • clawdbot-tunnel → 你的 Tunnel 名称
  4. 配置服务

    • NSSM 会打开一个配置窗口
    • 在"详细信息"标签页,可以设置:
      • Display name: Cloudflare Tunnel
      • Description: Cloudflare Tunnel for ClawdBot
    • 点击"安装服务"
  5. 启动服务

    powershell 复制代码
    .\nssm.exe start CloudflaredTunnel
  6. 查看服务状态

    powershell 复制代码
    .\nssm.exe status CloudflaredTunnel

方法二:使用任务计划程序

  1. 打开任务计划程序

    • Win+R,输入 taskschd.msc,按 Enter
  2. 创建基本任务

    • 右侧点击"创建基本任务"
    • 名称:Cloudflare Tunnel
    • 描述:自动启动 Cloudflare Tunnel
  3. 设置触发器

    • 选择"计算机启动时"
  4. 设置操作

    • 选择"启动程序"
    • 程序或脚本:C:\Windows\System32\cloudflared.exe(或你的 cloudflared 路径)
    • 添加参数:tunnel --config C:\Users\你的用户名\.cloudflared\config.yml run clawdbot-tunnel
    • 起始于:C:\Windows\System32\(或你的 cloudflared 所在目录)
  5. 完成设置

    • 勾选"当单击完成时,打开此任务属性的对话框"
    • 在"常规"标签页,勾选"使用最高权限运行"
    • 点击"确定"
Linux 系统
  1. 创建 systemd 服务文件

    bash 复制代码
    sudo nano /etc/systemd/system/cloudflared.service
  2. 编辑服务文件内容

    ini 复制代码
    [Unit]
    Description=Cloudflare Tunnel
    After=network.target
    
    [Service]
    Type=simple
    User=root
    ExecStart=/usr/local/bin/cloudflared tunnel --config /root/.cloudflared/config.yml run clawdbot-tunnel
    Restart=on-failure
    RestartSec=5s
    
    [Install]
    WantedBy=multi-user.target
    • 记得根据实际情况修改:
      • User=root → 如果使用其他用户,改成对应用户
      • /root/.cloudflared/config.yml → 你的配置文件路径
      • clawdbot-tunnel → 你的 Tunnel 名称
      • /usr/local/bin/cloudflared → 你的 cloudflared 路径(可以用 which cloudflared 查看)
  3. 保存文件

    • Ctrl+O 保存,Enter 确认,Ctrl+X 退出
  4. 重新加载 systemd

    bash 复制代码
    sudo systemctl daemon-reload
  5. 启用服务(开机自启)

    bash 复制代码
    sudo systemctl enable cloudflared
  6. 启动服务

    bash 复制代码
    sudo systemctl start cloudflared
  7. 查看服务状态

    bash 复制代码
    sudo systemctl status cloudflared
    • 如果显示"active (running)",说明服务运行正常
  8. 查看日志

    bash 复制代码
    sudo journalctl -u cloudflared -f
    • Ctrl+C 退出日志查看
macOS 系统

macOS 使用 launchd 来管理系统服务,这是 macOS 的守护进程管理器。

  1. 创建 launchd plist 文件

    bash 复制代码
    # 创建 LaunchAgents 目录(如果不存在)
    mkdir -p ~/Library/LaunchAgents
    
    # 创建 plist 文件
    nano ~/Library/LaunchAgents/com.cloudflare.cloudflared.plist
  2. 编辑 plist 文件内容

    将以下内容复制到文件中,记得替换以下内容:

    • /Users/你的用户名/.cloudflared/config.yml → 你的配置文件完整路径
    • clawdbot-tunnel → 你的 Tunnel 名称
    • /usr/local/bin/cloudflared → 你的 cloudflared 路径(可以用 which cloudflared 查看)
    xml 复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.cloudflare.cloudflared</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/local/bin/cloudflared</string>
            <string>tunnel</string>
            <string>--config</string>
            <string>/Users/你的用户名/.cloudflared/config.yml</string>
            <string>run</string>
            <string>clawdbot-tunnel</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <dict>
            <key>SuccessfulExit</key>
            <false/>
        </dict>
        <key>StandardOutPath</key>
        <string>/Users/你的用户名/.cloudflared/cloudflared.log</string>
        <key>StandardErrorPath</key>
        <string>/Users/你的用户名/.cloudflared/cloudflared.error.log</string>
    </dict>
    </plist>
  3. 保存文件

    • Ctrl+O 保存,Enter 确认,Ctrl+X 退出
  4. 加载服务

    bash 复制代码
    launchctl load ~/Library/LaunchAgents/com.cloudflare.cloudflared.plist
  5. 启动服务

    bash 复制代码
    launchctl start com.cloudflare.cloudflared
  6. 查看服务状态

    bash 复制代码
    launchctl list | grep cloudflared
    • 如果看到服务在列表中,说明服务已加载
  7. 查看日志

    bash 复制代码
    # 查看标准输出日志
    tail -f ~/.cloudflared/cloudflared.log
    
    # 查看错误日志
    tail -f ~/.cloudflared/cloudflared.error.log
    • Ctrl+C 退出日志查看
  8. 启用开机自启

    • launchd 服务默认会在登录时自动启动(因为放在 ~/Library/LaunchAgents/
    • 如果需要系统启动时运行(不登录用户),需要放在 /Library/LaunchDaemons/(需要管理员权限)

管理服务命令:

bash 复制代码
# 停止服务
launchctl stop com.cloudflare.cloudflared

# 启动服务
launchctl start com.cloudflare.cloudflared

# 卸载服务(停止并移除)
launchctl unload ~/Library/LaunchAgents/com.cloudflare.cloudflared.plist

# 重新加载服务(修改配置后)
launchctl unload ~/Library/LaunchAgents/com.cloudflare.cloudflared.plist
launchctl load ~/Library/LaunchAgents/com.cloudflare.cloudflared.plist

常见问题:

  • Q: 提示"Operation not permitted"怎么办?

    A: macOS 可能需要授予终端"完全磁盘访问权限":

    • 打开"系统设置" → "隐私与安全性" → "完全磁盘访问权限"
    • 添加"终端"或"iTerm"到允许列表
  • Q: 服务无法启动怎么办?

    A: 检查日志文件 ~/.cloudflared/cloudflared.error.log 查看错误信息

✅ 完成检查:

  • 服务已创建并启动
  • 服务状态显示为运行中
  • 重启系统后服务能自动启动(可选测试)

第四步:安装 ClawdBot

现在我们需要安装 ClawdBot。由于 ClawdBot 可能有不同的安装方式,这里提供几种常见的方法。

4.1 获取 ClawdBot

在安装 ClawdBot 之前,你需要先获取 ClawdBot 的安装包或源码。根据 ClawdBot 的发布方式,有以下几种方法:

方法一:从 GitHub 下载(如果开源)

  1. 克隆仓库

    bash 复制代码
    # 克隆 ClawdBot 仓库
    git clone https://github.com/clawdbot/clawdbot.git
    cd clawdbot
  2. 查看输出

    如果克隆成功,你会看到类似这样的输出:

    复制代码
    Cloning into 'clawdbot'...
    remote: Enumerating objects: 100, done.
    remote: Counting objects: 100% (100/100), done.
    remote: Compressing objects: 100% (80/80), done.
    remote: Total 100 (delta 20), reused 100 (delta 20), pack-reused 0
    Receiving objects: 100% (100/100), 5.23 MiB | 2.50 MiB/s, done.
    Resolving deltas: 100% (20/20), done.
  3. 查看项目结构

    bash 复制代码
    ls -la

    应该能看到项目文件,如 README.mdpackage.jsondocker-compose.yml

方法二:下载预编译版本

  1. 访问发布页面

  2. 选择版本

    • 找到最新版本(Latest release)
    • 根据你的系统选择对应的版本:
      • Linux: clawdbot-linux-amd64.tar.gzclawdbot-linux-arm64.tar.gz
      • macOS: clawdbot-darwin-amd64.tar.gz(Intel)或 clawdbot-darwin-arm64.tar.gz(Apple Silicon)
      • Windows: clawdbot-windows-amd64.zip
  3. 下载文件

    bash 复制代码
    # Linux/macOS 使用 wget
    wget https://github.com/clawdbot/clawdbot/releases/latest/download/clawdbot-linux-amd64.tar.gz
    
    # 或使用 curl
    curl -L -o clawdbot-linux-amd64.tar.gz https://github.com/clawdbot/clawdbot/releases/latest/download/clawdbot-linux-amd64.tar.gz
  4. 验证下载

    bash 复制代码
    ls -lh clawdbot-*.tar.gz

    应该能看到下载的文件及其大小

方法三:使用包管理器

如果 ClawdBot 提供官方包:

bash 复制代码
# 使用 npm(如果是 Node.js 应用)
npm install -g clawdbot

# 使用 pip(如果是 Python 应用)
pip install clawdbot

# 使用 Homebrew(macOS)
brew install clawdbot

# 使用 apt(Debian/Ubuntu)
sudo apt install clawdbot

✅ 完成检查:

  • 已获取 ClawdBot 源码或安装包
  • 已确认文件完整性
  • 已了解 ClawdBot 的系统要求

4.2 使用 Docker 安装(推荐)

如果 ClawdBot 提供 Docker 镜像,这是最简单的安装方式。

  1. 安装 Docker

    • Windows: 下载 Docker Desktop:https://www.docker.com/products/docker-desktop

    • macOS: 下载 Docker Desktop for Mac:https://www.docker.com/products/docker-desktop

      • 根据你的 Mac 架构选择:
        • Intel Mac:下载 Intel 版本
        • Apple Silicon Mac (M1/M2/M3):下载 Apple Silicon 版本
      • 安装后,在"应用程序"中找到 Docker,启动它
      • 等待 Docker 启动完成(菜单栏会显示 Docker 图标)
    • Linux:

      bash 复制代码
      # Ubuntu/Debian
      curl -fsSL https://get.docker.com -o get-docker.sh
      sudo sh get-docker.sh
      
      # 启动 Docker
      sudo systemctl start docker
      sudo systemctl enable docker
  2. 创建 docker-compose.yml

    Linux:

    bash 复制代码
    mkdir -p /opt/clawdbot
    cd /opt/clawdbot
    nano docker-compose.yml

    macOS:

    bash 复制代码
    mkdir -p ~/clawdbot
    cd ~/clawdbot
    nano docker-compose.yml
    # 或使用 TextEdit: open -a TextEdit docker-compose.yml
  3. 编辑 docker-compose.yml

    yaml 复制代码
    version: '3.8'
    
    services:
      clawdbot:
        image: clawdbot/clawdbot:latest  # 根据实际镜像名称修改
        container_name: clawdbot
        restart: unless-stopped
        ports:
          - "127.0.0.1:8080:8080"  # 只监听 localhost
        environment:
          - NODE_ENV=production
          - PORT=8080
        volumes:
          - ./data:/app/data
          - ./logs:/app/logs
        networks:
          - clawdbot-network
    
    networks:
      clawdbot-network:
        driver: bridge
    • 根据 ClawdBot 的实际配置修改镜像名称、端口、环境变量等
  4. 启动服务

    bash 复制代码
    docker-compose up -d

    预期输出:

    复制代码
    Creating network "clawdbot_clawdbot-network" with driver "bridge"
    Pulling clawdbot (clawdbot/clawdbot:latest)...
    latest: Pulling from clawdbot/clawdbot
    abc123def456: Pull complete
    ...
    Status: Downloaded newer image for clawdbot/clawdbot:latest
    Creating clawdbot ... done
  5. 查看容器状态

    bash 复制代码
    docker-compose ps

    预期输出:

    复制代码
    NAME                COMMAND             SERVICE             STATUS              PORTS
    clawdbot             "/app/entrypoint"   clawdbot             Up 5 seconds        127.0.0.1:8080->8080/tcp
    • 如果 STATUS 显示为 "Up",说明容器运行正常
  6. 查看日志

    bash 复制代码
    docker-compose logs -f

    预期输出示例:

    复制代码
    clawdbot  | [INFO] Starting ClawdBot server...
    clawdbot  | [INFO] Server listening on http://0.0.0.0:8080
    clawdbot  | [INFO] Database connection established
    clawdbot  | [INFO] ClawdBot is ready!
    • Ctrl+C 退出日志查看
    • 如果看到错误信息,检查配置是否正确
  7. 验证服务运行

    bash 复制代码
    curl http://localhost:8080

    预期输出:

    • 如果返回 HTML 内容或 JSON 数据,说明服务正常

    • 如果返回状态码 200,说明服务正常

    • 示例:

      bash 复制代码
      curl -I http://localhost:8080

      输出:

      复制代码
      HTTP/1.1 200 OK
      Content-Type: text/html; charset=utf-8
      ...
  8. 检查端口监听

    bash 复制代码
    # Linux/macOS
    netstat -tlnp | grep 8080
    # 或
    ss -tlnp | grep 8080
    
    # Windows
    netstat -ano | findstr :8080

    预期输出(Linux/macOS):

    复制代码
    tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      12345/docker-proxy
    • 确认只监听 127.0.0.1:8080(localhost),而不是 0.0.0.0:8080

✅ 完成检查:

  • Docker 容器已成功启动
  • 容器状态显示为 "Up"
  • 日志中没有错误信息
  • 可以通过 http://localhost:8080 访问服务
  • 端口只监听 localhost(127.0.0.1)

常见问题:

  • Q: 容器启动失败怎么办?

    A: 检查日志:docker-compose logs clawdbot,查看具体错误信息

  • Q: 无法访问 localhost:8080 怎么办?

    A:

    1. 检查容器是否运行:docker-compose ps
    2. 检查端口映射:docker-compose port clawdbot 8080
    3. 检查防火墙设置
  • Q: 日志显示端口被占用怎么办?

    A:

    1. 检查是否有其他服务占用 8080 端口:netstat -tlnp | grep 8080
    2. 修改 docker-compose.yml 中的端口映射,如改为 127.0.0.1:8081:8080
    3. 同时记得修改 Tunnel 配置文件中的端口

4.3 手动安装

如果 ClawdBot 需要手动安装(不使用 Docker):

  1. 解压文件

    Linux:

    bash 复制代码
    # 解压文件
    tar -xzf clawdbot-linux-amd64.tar.gz
    
    # 查看输出
    # 应该会显示解压的文件列表

    macOS:

    bash 复制代码
    # Intel Mac
    tar -xzf clawdbot-darwin-amd64.tar.gz
    # 或 Apple Silicon Mac (M1/M2/M3)
    tar -xzf clawdbot-darwin-arm64.tar.gz

    Windows:

    • 使用解压软件(如 7-Zip、WinRAR)解压 clawdbot-windows-amd64.zip

    • 或使用 PowerShell:

      powershell 复制代码
      Expand-Archive -Path clawdbot-windows-amd64.zip -DestinationPath .
  2. 进入目录

    bash 复制代码
    cd clawdbot
    ls -la

    预期输出:

    复制代码
    total 12345
    drwxr-xr-x  5 user user    4096 Jan  1 12:00 .
    drwxr-xr-x  3 user user    4096 Jan  1 12:00 ..
    -rwxr-xr-x  1 user user 1234567 Jan  1 12:00 clawdbot
    -rw-r--r--  1 user user     123 Jan  1 12:00 README.md
    -rw-r--r--  1 user user     456 Jan  1 12:00 config.example.yml
  3. 检查可执行文件权限

    bash 复制代码
    # Linux/macOS
    chmod +x clawdbot
    
    # 验证权限
    ls -l clawdbot

    应该显示 -rwxr-xr-x(有执行权限)

  4. 配置环境变量

    bash 复制代码
    # 复制示例配置文件(如果有)
    cp config.example.yml config.yml
    # 或
    cp .env.example .env
    
    # 编辑配置文件
    nano .env
    # 或
    nano config.yml

    内容示例:

    复制代码
    NODE_ENV=production
    PORT=8080
    HOST=127.0.0.1
    DATABASE_URL=postgresql://user:pass@localhost:5432/clawdbot
    LOG_LEVEL=info
  5. 安装依赖(如果需要)

    如果是 Node.js 应用:

    bash 复制代码
    npm install

    预期输出:

    复制代码
    npm WARN deprecated ...
    added 234 packages in 30s

    如果是 Python 应用:

    bash 复制代码
    pip install -r requirements.txt

    预期输出:

    复制代码
    Collecting ...
    Installing collected packages: ...
    Successfully installed ...
  6. 测试启动(前台运行)

    bash 复制代码
    # 方式一:直接运行可执行文件
    ./clawdbot
    
    # 方式二:Node.js 应用
    npm start
    # 或
    node index.js
    
    # 方式三:Python 应用
    python app.py
    # 或
    python3 app.py

    预期输出示例:

    复制代码
    [INFO] Starting ClawdBot...
    [INFO] Loading configuration from config.yml
    [INFO] Connecting to database...
    [INFO] Database connection established
    [INFO] Starting HTTP server on http://127.0.0.1:8080
    [INFO] ClawdBot is ready!
    • 如果看到类似输出,说明启动成功
    • Ctrl+C 停止服务
  7. 验证服务运行

    打开新的终端窗口,测试访问:

    bash 复制代码
    curl http://localhost:8080

    预期输出:

    • 返回 HTML 内容或 JSON 数据
    • 或返回状态码 200
    bash 复制代码
    # 检查端口监听
    netstat -tlnp | grep 8080
    # 或
    ss -tlnp | grep 8080

    预期输出:

    复制代码
    tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      12345/clawdbot
    • 确认只监听 127.0.0.1:8080
  8. 配置为系统服务(后台运行)

    参考 Tunnel 的服务配置方法,为 ClawdBot 创建系统服务:

    Linux (systemd):

    bash 复制代码
    sudo nano /etc/systemd/system/clawdbot.service

    内容:

    ini 复制代码
    [Unit]
    Description=ClawdBot Service
    After=network.target
    
    [Service]
    Type=simple
    User=your-user
    WorkingDirectory=/opt/clawdbot
    ExecStart=/opt/clawdbot/clawdbot
    Restart=on-failure
    RestartSec=5s
    EnvironmentFile=/opt/clawdbot/.env
    
    [Install]
    WantedBy=multi-user.target

    启用并启动:

    bash 复制代码
    sudo systemctl daemon-reload
    sudo systemctl enable clawdbot
    sudo systemctl start clawdbot
    sudo systemctl status clawdbot

    macOS (launchd):

    bash 复制代码
    nano ~/Library/LaunchAgents/com.clawdbot.plist

    内容:

    xml 复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.clawdbot</string>
        <key>ProgramArguments</key>
        <array>
            <string>/Users/your-user/clawdbot/clawdbot</string>
        </array>
        <key>WorkingDirectory</key>
        <string>/Users/your-user/clawdbot</string>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <true/>
    </dict>
    </plist>

    加载服务:

    bash 复制代码
    launchctl load ~/Library/LaunchAgents/com.clawdbot.plist
    launchctl start com.clawdbot

    Windows (NSSM 或任务计划程序):

    • 参考 Tunnel 的 Windows 服务配置方法

✅ 完成检查:

  • 文件已成功解压
  • 可执行文件有执行权限
  • 配置文件已创建并填写
  • 依赖已安装(如果需要)
  • 服务可以正常启动
  • 可以通过 http://localhost:8080 访问
  • 端口只监听 localhost
  • 已配置为系统服务(可选)

常见问题:

  • Q: 提示"权限被拒绝"怎么办?

    A: 给可执行文件添加执行权限:chmod +x clawdbot

  • Q: 提示"找不到命令"怎么办?

    A:

    1. 检查文件路径是否正确
    2. 使用完整路径运行:/完整路径/clawdbot
    3. 或添加到 PATH 环境变量
  • Q: 服务启动后立即退出怎么办?

    A:

    1. 检查日志文件(如果有)
    2. 检查配置文件是否正确
    3. 检查依赖是否完整安装
    4. 尝试前台运行查看详细错误:./clawdbot(不要加 -d 参数)
  • Q: 数据库连接失败怎么办?

    A:

    1. 检查数据库服务是否运行
    2. 检查 DATABASE_URL 配置是否正确
    3. 检查数据库用户权限

4.4 重要配置:只监听 localhost

非常重要: ClawdBot 应该只监听 localhost127.0.0.1,不要监听 0.0.0.0

原因:

  • Tunnel 会从本地连接服务
  • 只监听 localhost 可以防止外部直接访问
  • 提高安全性

如何配置:

Docker 方式:

yaml 复制代码
ports:
  - "127.0.0.1:8080:8080"  # ✅ 正确:只监听 localhost
  # - "8080:8080"  # ❌ 错误:监听所有接口

手动安装方式:

Node.js 应用:

javascript 复制代码
// ✅ 正确
app.listen(8080, '127.0.0.1', () => {
  console.log('Server running on http://127.0.0.1:8080');
});

// ❌ 错误
// app.listen(8080, '0.0.0.0', () => {
//   console.log('Server running on http://0.0.0.0:8080');
// });

Python 应用:

python 复制代码
# ✅ 正确
app.run(host='127.0.0.1', port=8080)

# ❌ 错误
# app.run(host='0.0.0.0', port=8080)

Go 应用:

go 复制代码
// ✅ 正确
http.ListenAndServe("127.0.0.1:8080", nil)

// ❌ 错误
// http.ListenAndServe("0.0.0.0:8080", nil)

验证配置:

bash 复制代码
# 检查端口监听
netstat -tlnp | grep 8080
# 或
ss -tlnp | grep 8080

预期输出(正确):

复制代码
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN

错误输出(需要修改):

复制代码
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
  • 如果看到 0.0.0.0:8080,说明监听所有接口,需要修改配置

4.5 安装后验证清单

完成 ClawdBot 安装后,请按照以下清单进行验证:

基础验证:

  • ClawdBot 服务正在运行
  • 可以通过 http://localhost:8080 访问
  • 返回正确的响应(HTML 或 JSON)
  • 端口只监听 127.0.0.1:8080(不是 0.0.0.0:8080
  • 日志中没有错误信息

功能验证:

  • Web 界面可以正常加载(如果有)
  • API 接口可以正常响应(如果有)
  • 数据库连接正常(如果使用数据库)
  • 配置文件正确加载

安全验证:

  • 服务只监听 localhost,外部无法直接访问
  • 防火墙规则正确配置
  • 敏感信息(如密码、密钥)不在配置文件中明文存储

性能验证:

  • 服务响应时间正常(< 1秒)
  • 内存和 CPU 使用率正常
  • 日志文件正常生成(如果有)

验证命令汇总:

bash 复制代码
# 1. 检查服务状态(Docker)
docker-compose ps

# 2. 检查服务状态(手动安装)
systemctl status clawdbot  # Linux
launchctl list | grep clawdbot  # macOS

# 3. 测试 HTTP 访问
curl http://localhost:8080
curl -I http://localhost:8080

# 4. 检查端口监听
netstat -tlnp | grep 8080  # Linux
ss -tlnp | grep 8080  # Linux (另一种方式)
netstat -ano | findstr :8080  # Windows

# 5. 查看日志
docker-compose logs -f  # Docker
journalctl -u clawdbot -f  # Linux systemd
tail -f ~/.cloudflared/clawdbot.log  # 自定义日志路径

✅ 全部验证通过后,可以继续下一步:配置 Zero-Trust 登录

如何配置:

如果使用 Docker:

yaml 复制代码
ports:
  - "127.0.0.1:8080:8080"  # ✅ 正确:只监听 localhost
  # - "8080:8080"  # ❌ 错误:监听所有接口

如果手动配置:

javascript 复制代码
// Node.js 示例
app.listen(8080, '127.0.0.1', () => {
  console.log('Server running on http://127.0.0.1:8080');
});
python 复制代码
# Python 示例
app.run(host='127.0.0.1', port=8080)

✅ 完成检查:

  • ClawdBot 已安装
  • ClawdBot 正在运行
  • ClawdBot 只监听 localhost(127.0.0.1)
  • 可以通过 http://localhost:8080 访问(本地测试)

第五步:配置 Zero-Trust 登录

现在我们要配置 Zero-Trust,这样只有授权的用户才能访问 ClawdBot。

5.1 启用 Zero Trust

  1. 登录 Cloudflare Dashboard

  2. 选择计划

    • 如果是首次使用,会提示选择计划
    • 选择"免费"计划(Free plan),完全够用
    • 免费版支持最多 50 用户
  3. 设置团队名称

    • 输入一个团队名称(例如:my-team
    • 这个名称会用于生成登录 URL
    • 点击"继续"

5.2 配置身份提供商(登录方式)

Zero Trust 支持多种登录方式,我们选择最简单的方式。

选项 A:使用 One-time PIN(最简单,推荐零基础用户)
  1. 进入认证设置

    • Zero Trust Dashboard → "Access" → "Authentication" → "Login methods"
  2. 启用 One-time PIN

    • 找到"One-time PIN"选项
    • 点击"启用"(Enable)
    • 这样用户可以通过邮箱接收验证码登录
  3. 配置邮箱域名(可选)

    • 可以限制只有特定邮箱域名的用户才能登录
    • 例如:只允许 @example.com 的用户登录
    • 如果不需要限制,可以跳过
选项 B:使用 Google/Microsoft/GitHub 登录(推荐)
  1. 进入认证设置

    • Zero Trust Dashboard → "Access" → "Authentication" → "Login methods"
    • 点击"Add new"
  2. 选择提供商

    • 选择"Google"(或其他你喜欢的提供商)
  3. 配置 Google OAuth(以 Google 为例)

    步骤 3.1:创建 Google OAuth 应用

    • 访问:https://console.cloud.google.com/
    • 创建新项目或选择现有项目
    • 进入"API 和服务" → "凭据"
    • 点击"创建凭据" → "OAuth 客户端 ID"
    • 如果提示配置 OAuth 同意屏幕,先完成配置:
      • 用户类型:外部
      • 应用名称:ClawdBot Access
      • 支持邮箱:你的邮箱
      • 保存并继续
    • 创建 OAuth 客户端 ID:
      • 应用类型:Web 应用
      • 名称:ClawdBot Zero Trust
      • 授权重定向 URI:https://你的团队名称.cloudflareaccess.com/cdn-cgi/access/callback
      • 点击"创建"
    • 重要: 复制"客户端 ID"和"客户端密钥"

    步骤 3.2:在 Cloudflare 中配置

    • 回到 Cloudflare Zero Trust Dashboard
    • 在 Google 登录配置中:
      • Client ID: 粘贴刚才复制的客户端 ID
      • Client Secret: 粘贴刚才复制的客户端密钥
    • 点击"保存"
  4. 测试登录

    • 配置完成后,可以测试一下登录是否正常

5.3 创建访问策略(Access Policy)

访问策略定义了谁可以访问 ClawdBot。

  1. 进入应用设置

    • Zero Trust Dashboard → "Access" → "Applications"
    • 点击"Add an application"
  2. 选择应用类型

    • 选择"Self-hosted"(自托管应用)
  3. 配置应用信息

    复制代码
    Application name: ClawdBot Web UI
    Session duration: 24 hours(会话持续时间,用户登录后 24 小时内不需要重新登录)
    Application domain: clawdbot.yourdomain.com(你的域名)
  4. 配置策略(Policy)

    点击"Add a policy",配置第一个策略:

    策略 1:允许特定邮箱(推荐用于小团队)

    复制代码
    Policy name: Allow Team Members
    Action: Allow(允许)
    Include:
      - Emails: user1@example.com, user2@example.com
    • 在"Emails"中输入允许访问的邮箱地址,多个邮箱用逗号分隔

    策略 2:允许所有已认证用户(如果使用 One-time PIN)

    复制代码
    Policy name: Allow Authenticated Users
    Action: Allow
    Include:
      - Emails: *@example.com(允许特定域名)
      - 或选择 "Everyone"(允许所有人,只要通过认证)

    策略 3:要求 MFA(多因素认证,可选)

    复制代码
    Policy name: Require MFA
    Action: Allow
    Include:
      - Everyone
    Require:
      - MFA: Required
  5. 保存应用

    • 点击"Save application"
    • 应用创建成功
  6. 为 API 子域名创建应用(如果有)

    • 如果 ClawdBot 有单独的 API 子域名,重复上述步骤
    • Application domain: api.clawdbot.yourdomain.com
    • 可以配置更严格的策略(例如:只允许管理员)

5.4 验证 Zero-Trust 配置

  1. 访问应用

    • 打开浏览器,访问:https://clawdbot.yourdomain.com
    • 注意: 使用 https://,不是 http://
  2. 应该看到登录页面

    • 如果配置正确,会看到 Cloudflare Zero Trust 的登录页面
    • 而不是直接看到 ClawdBot 界面
  3. 测试登录

    • 使用配置的身份提供商登录(One-time PIN 或 Google 等)
    • 登录成功后,应该能看到 ClawdBot 界面
  4. 测试访问控制

    • 使用不在允许列表中的邮箱尝试登录(如果配置了邮箱限制)
    • 应该被拒绝访问

✅ 完成检查:

  • Zero Trust 已启用
  • 身份提供商已配置
  • 访问策略已创建
  • 通过域名访问会显示登录页面
  • 登录后能正常访问 ClawdBot
  • 未授权用户无法访问

第六步:测试和验证

现在让我们全面测试一下整个系统是否正常工作。

6.1 测试 Tunnel 连接

  1. 检查 Tunnel 状态

    bash 复制代码
    # Linux
    sudo systemctl status cloudflared
    
    # macOS
    launchctl list | grep cloudflared
    # 或查看日志
    tail -f ~/.cloudflared/cloudflared.log
    
    # Windows
    # 在服务管理器中查看 CloudflaredTunnel 服务状态
  2. 查看 Tunnel 信息

    bash 复制代码
    cloudflared tunnel info clawdbot-tunnel
  3. 查看 Tunnel 路由

    bash 复制代码
    cloudflared tunnel route dns list
  4. 测试 DNS 解析

    bash 复制代码
    # Windows
    nslookup clawdbot.yourdomain.com
    
    # Linux / macOS
    dig clawdbot.yourdomain.com
    # 或使用 nslookup
    nslookup clawdbot.yourdomain.com
    • 应该返回 Cloudflare 的 IP 地址

6.2 测试 Zero-Trust 登录

  1. 清除浏览器缓存和 Cookie

    • Windows/Linux:Ctrl+Shift+Delete 清除缓存
    • macOS:Cmd+Shift+Delete 清除缓存
    • 或者使用隐私模式/无痕模式
  2. 访问应用

    • 打开浏览器,访问:https://clawdbot.yourdomain.com
  3. 验证登录流程

    • 看到 Cloudflare Zero Trust 登录页面
    • 能够成功登录
    • 登录后能看到 ClawdBot 界面
    • 功能正常(可以测试 ClawdBot 的基本功能)
  4. 测试会话持久性

    • 登录后,关闭浏览器标签页
    • 重新打开标签页,访问:https://clawdbot.yourdomain.com
    • 应该不需要重新登录(在会话有效期内)

6.3 测试 API 访问(如果有)

  1. 使用浏览器访问 API

    bash 复制代码
    # 在浏览器中访问
    https://api.clawdbot.yourdomain.com/health
    • 应该会触发 Zero-Trust 登录
  2. 使用命令行测试(需要 Cookie)

    bash 复制代码
    # 先登录获取 Cookie,然后使用 Cookie 访问
    curl -v -H "Cookie: CF_Authorization=your-token" https://api.clawdbot.yourdomain.com/api/v1/status

6.4 测试安全性

  1. 测试直接访问(应该失败)

    bash 复制代码
    # 尝试直接访问服务器 IP 和端口
    curl http://你的服务器IP:8080
    • 应该返回连接被拒绝或超时
    • 这说明服务只监听 localhost,外部无法直接访问
  2. 测试未授权访问

    • 使用不在允许列表中的邮箱尝试登录
    • 应该被拒绝访问
  3. 检查安全头

    bash 复制代码
    curl -I https://clawdbot.yourdomain.com
    • 应该看到 Cloudflare 的安全头

6.5 性能测试

  1. 测试响应时间

    bash 复制代码
    time curl https://clawdbot.yourdomain.com
  2. 查看 Cloudflare Analytics

    • 登录 Cloudflare Dashboard
    • 进入你的域名 → Analytics
    • 查看流量、错误率、响应时间等数据

✅ 完成检查:

  • Tunnel 运行正常
  • DNS 解析正确
  • Zero-Trust 登录正常
  • 能正常访问 ClawdBot
  • 安全性测试通过
  • 性能正常

常见问题详细解答

Q1: Tunnel 无法启动

症状:

复制代码
Error: Unable to fetch tunnel: Get https://api.cloudflare.com/client/v4/accounts/.../cfd_tunnel/...: unauthorized

可能原因和解决方案:

  1. 证书文件丢失或损坏

    bash 复制代码
    # 重新登录
    cloudflared tunnel login
  2. Tunnel ID 错误

    • 检查配置文件中的 Tunnel ID 是否正确
    • 运行 cloudflared tunnel list 查看正确的 Tunnel ID
  3. 证书文件路径错误

    • 检查配置文件中的 credentials-file 路径是否正确
    • 确认文件确实存在
  4. 权限问题(Linux)

    bash 复制代码
    # 检查文件权限
    ls -la ~/.cloudflared/
    # 如果权限不对,修改权限
    chmod 600 ~/.cloudflared/*.json

Q2: DNS 解析失败

症状:

复制代码
DNS lookup failed for clawdbot.yourdomain.com

可能原因和解决方案:

  1. DNS 记录未正确配置

    • 检查 Cloudflare Dashboard 中的 DNS 记录
    • 确认记录类型是 CNAME
    • 确认目标是 Tunnel-ID.cfargotunnel.com
    • 确认代理状态是"已代理"(橙色云朵)
  2. DNS 传播延迟

    • DNS 更改可能需要几分钟到几小时生效
    • 等待一段时间后重试
    • 可以使用 dignslookup 检查 DNS 是否已生效
  3. 域名服务器未更改

    • 如果使用自己的域名,确认域名服务器已更改为 Cloudflare 提供的地址
    • 在域名注册商处检查域名服务器设置

Q3: 访问显示 502 Bad Gateway

症状:

访问域名时显示 502 错误

可能原因和解决方案:

  1. ClawdBot 服务未运行

    bash 复制代码
    # 检查服务状态
    # Linux
    sudo systemctl status clawdbot
    # 或
    docker ps
    
    # Windows
    # 在服务管理器中查看 ClawdBot 服务
  2. 端口不正确

    • 检查 ClawdBot 实际监听的端口
    • 检查 Tunnel 配置文件中的端口是否正确
    bash 复制代码
    # Linux
    netstat -tlnp | grep 8080
    ss -tlnp | grep 8080
    
    # Windows
    netstat -ano | findstr :8080
  3. 服务只监听 localhost

    • 确认 ClawdBot 监听的是 127.0.0.1localhost
    • 不要监听 0.0.0.0(虽然通常也可以,但为了安全建议只监听 localhost)
  4. 测试本地连接

    bash 复制代码
    curl http://localhost:8080
    • 如果本地也无法访问,说明 ClawdBot 服务有问题
    • 检查 ClawdBot 的日志

Q4: Zero-Trust 登录后无法访问

症状:

登录成功,但显示 502 或 404 错误

可能原因和解决方案:

  1. Tunnel 配置问题

    • 检查 Tunnel 配置文件中的服务地址
    • 确认 service: http://localhost:8080 正确
  2. ClawdBot 服务问题

    • 参考 Q3 的解决方案
  3. Zero-Trust 配置问题

    • 检查 Zero-Trust 应用配置中的域名是否正确
    • 确认应用状态是"启用"

Q5: 连接超时

症状:

Tunnel 连接建立,但请求超时

可能原因和解决方案:

  1. 增加超时时间

    yaml 复制代码
    # ~/.cloudflared/config.yml
    originRequest:
      connectTimeout: 60s  # 增加到 60 秒
  2. 检查服务器资源

    bash 复制代码
    # 检查 CPU 和内存使用
    top
    # 或
    htop
  3. 检查网络连接

    bash 复制代码
    # 测试到 Cloudflare 的连接
    ping 1.1.1.1

Q6: 访问被拒绝(403 Forbidden)

症状:

Zero-Trust 返回 403 Forbidden

可能原因和解决方案:

  1. 访问策略配置问题

    • 检查 Zero-Trust 应用的访问策略
    • 确认你的邮箱在允许列表中
    • 检查策略的"Action"是"Allow"而不是"Deny"
  2. 设备策略要求

    • 如果配置了设备策略,确认你的设备满足要求
    • 可以暂时禁用设备策略测试
  3. 查看 Zero-Trust 日志

    • 进入 Cloudflare Dashboard → Zero Trust → Logs → Access
    • 查看被拒绝的原因

Q7: API 返回 CORS 错误

症状:

复制代码
Access to XMLHttpRequest at 'https://api.clawdbot.yourdomain.com' from origin 'https://clawdbot.yourdomain.com' has been blocked by CORS policy

可能原因和解决方案:

  1. 在 ClawdBot 中配置 CORS

    javascript 复制代码
    // Node.js 示例
    const cors = require('cors');
    app.use(cors({
      origin: 'https://clawdbot.yourdomain.com',
      credentials: true
    }));
  2. 在 Cloudflare 中配置 CORS 规则

    • 进入 Cloudflare Dashboard → Rules → Transform Rules
    • 创建规则添加 CORS 头

Q8: 服务频繁重启

症状:

Tunnel 或 ClawdBot 服务频繁重启

可能原因和解决方案:

  1. 查看日志找出错误

    bash 复制代码
    # Cloudflare Tunnel 日志
    sudo journalctl -u cloudflared -n 100
    
    # ClawdBot 日志
    docker-compose logs -f clawdbot
    # 或
    tail -f /var/log/clawdbot.log
  2. 检查资源限制

    • 检查服务器内存和 CPU 使用情况
    • 如果资源不足,考虑升级服务器
  3. 配置自动重启策略

    ini 复制代码
    # systemd 服务配置
    [Service]
    Restart=on-failure
    RestartSec=5s
    StartLimitInterval=0

Q9: Windows 服务无法启动

症状:

Windows 服务显示"启动失败"

可能原因和解决方案:

  1. 检查路径是否正确

    • 确认 cloudflared.exe 的路径正确
    • 确认配置文件的路径正确
  2. 检查权限

    • 确认服务使用的账户有足够权限
    • 可以尝试使用管理员账户运行
  3. 查看事件查看器

    • 打开"事件查看器"(Event Viewer)
    • 查看"Windows 日志" → "应用程序"
    • 查找相关错误信息

Q10: 忘记 Tunnel ID 或证书文件

症状:

不知道 Tunnel ID 或找不到证书文件

解决方案:

  1. 查看 Tunnel 列表

    bash 复制代码
    cloudflared tunnel list
    • 会显示所有 Tunnel 及其 ID
  2. 查看证书文件位置

    bash 复制代码
    # Windows
    dir C:\Users\你的用户名\.cloudflared\
    
    # Linux
    ls -la ~/.cloudflared/
  3. 如果文件丢失

    • 如果证书文件丢失,需要重新登录:cloudflared tunnel login
    • 如果 Tunnel ID 丢失,可以创建新的 Tunnel,或联系 Cloudflare 支持

进阶配置(可选)

1. 多 Tunnel 负载均衡

如果你有多个服务器或想要提高可用性,可以配置多个 Tunnel。

  1. 创建多个 Tunnel

    bash 复制代码
    cloudflared tunnel create clawdbot-tunnel-1
    cloudflared tunnel create clawdbot-tunnel-2
  2. 配置多个 Tunnel 实例

    • 在不同服务器上运行不同的 Tunnel
    • 或在同一服务器上运行多个 Tunnel 实例(使用不同端口)
  3. 配置负载均衡

    • 在 Cloudflare Dashboard 中配置负载均衡规则
    • 或使用 DNS 轮询

2. 健康检查和自动故障转移

配置健康检查,当服务不可用时自动切换。

yaml 复制代码
ingress:
  - hostname: clawdbot.yourdomain.com
    service: http://localhost:8080
    originRequest:
      # 健康检查
      httpHostHeader: clawdbot.yourdomain.com
      # 重试配置
      retries: 3
      retryTimeout: 10s
      # 超时配置
      connectTimeout: 30s
      tcpKeepAlive: 30s

3. 监控和告警

  1. 使用 Cloudflare Analytics

    • 进入 Cloudflare Dashboard → Analytics
    • 查看流量、错误率、响应时间
  2. 配置外部监控

    • 使用 Uptime Robot、Pingdom 等服务
    • 监控 URL: https://clawdbot.yourdomain.com/health
  3. 设置告警

    • 在 Cloudflare 中配置告警规则
    • 当错误率超过阈值时发送通知

4. 性能优化

  1. 启用 Cloudflare 缓存

    • 在 Cloudflare Dashboard 中配置缓存规则
    • 对静态资源启用缓存
  2. 启用 Brotli 压缩

    • Cloudflare 自动提供压缩
    • 可以在 Dashboard 中查看压缩统计
  3. 优化 Tunnel 配置

    yaml 复制代码
    originRequest:
      keepAliveConnections: 100
      keepAliveTimeout: 90s
      tcpKeepAlive: 30s

5. 安全加固

  1. 配置 WAF 规则

    • 进入 Cloudflare Dashboard → Security → WAF
    • 创建自定义规则阻止可疑请求
  2. 启用 Bot Fight Mode

    • 进入 Security → Bots
    • 启用 Bot Fight Mode(免费版)或 Super Bot Fight Mode(付费版)
  3. 配置速率限制

    • 进入 Security → WAF → Rate limiting rules
    • 创建规则限制 API 请求频率
  4. 启用设备策略

    • 在 Zero-Trust 中配置设备合规性检查
    • 要求设备满足特定条件才能访问

🎉 恭喜!部署完成

如果你已经完成了以上所有步骤,恭喜你!你已经成功部署了 ClawdBot,并通过 Cloudflare Tunnel 和 Zero-Trust 实现了安全访问。

📝 部署检查清单

  • Cloudflare 账户已注册
  • 域名已添加到 Cloudflare
  • Cloudflare Tunnel 已安装
  • Tunnel 已创建并配置
  • DNS 记录已配置
  • Tunnel 已配置为系统服务
  • ClawdBot 已安装并运行
  • Zero-Trust 已启用
  • 身份提供商已配置
  • 访问策略已创建
  • 所有测试通过

🔒 安全特性总结

通过这个配置,你已经实现了:

  1. 零公网暴露:服务器不开放任何公网端口
  2. 加密传输:所有流量通过 HTTPS 加密
  3. 身份验证:只有授权用户才能访问
  4. 访问控制:基于策略的细粒度访问控制
  5. DDoS 防护:自动获得 Cloudflare 防护
  6. 审计日志:记录所有访问行为

📚 后续维护

  1. 定期更新

    • 保持 cloudflared 最新版本
    • 保持 ClawdBot 最新版本
  2. 备份配置

    • 定期备份 Tunnel 配置文件
    • 备份证书文件(安全存储)
  3. 监控告警

    • 设置异常访问告警
    • 定期查看访问日志
  4. 定期审计

    • 审查访问日志
    • 检查访问策略配置
    • 更新用户权限

🆘 需要帮助?

如果遇到问题:

  1. 查看日志

    • Tunnel 日志:sudo journalctl -u cloudflared -f
    • ClawdBot 日志:查看应用日志
  2. 检查配置

    • 验证配置文件格式
    • 检查 DNS 记录
    • 检查 Zero-Trust 策略
  3. 参考文档

  4. 寻求帮助

    • Cloudflare 社区论坛
    • ClawdBot 社区(如果有)

相关推荐
放下华子我只抽RuiKe5几秒前
机器学习终章:集成学习的巅峰与全流程实战复盘
开发语言·人工智能·python·机器学习·数据挖掘·机器人·集成学习
TImCheng06094 分钟前
竞争红海里用AI破局:从这3个高频、重复、有数据的业务环节入手
人工智能
学术小白人5 分钟前
【见刊通知】第二届绿色能源与机电工程国际学术会议(ICGEME 2025)
人工智能·机器人·能源·期刊·投稿·电气工程·rdlink研发家
Light608 分钟前
当OpenClaw遇见SAP协议:打造下一代高效AI Agent通信架构
人工智能·架构
键盘侠伍十七8 分钟前
OpenClaw 架构深度解析
人工智能·ai·语言模型·agent·智能体·openclaw
不当菜鸡的程序媛9 分钟前
神经网络——bias 偏置项(bias term) 或者截距项(intercept term)
人工智能·神经网络·算法
姜太小白9 分钟前
【SQLServer】SQL Server 2022 连接证书错误解决
网络·数据库·sqlserver
Red丶哞10 分钟前
RustFS 使用 S3 Python SDK(Boto3)文档
开发语言·python
゛anqiaoyun11 分钟前
WebSocket告警无声音
网络·websocket·网络协议
铁打的阿秀13 分钟前
Java 打印pdf添加水印实现
java·python·pdf