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 社区(如果有)

相关推荐
会员源码网2 小时前
交易所 K 线模块无法启动?核心源码排查位置与实战解决方案
网络·elasticsearch
星夜落月2 小时前
从零部署Wallos:打造专属预算管理平台
服务器·前端·网络·建站
电饭叔2 小时前
DataFrame和 Series 索引
android·python
郝学胜-神的一滴2 小时前
Linux网络编程之Socket函数:构建通信的桥梁
linux·服务器·网络·c++·程序人生
CELLGENE BIOSCIENCE2 小时前
精准检测,洞见未来|赛唐生物应邀出席2026张江药谷产业发展闭门交流会,共话药物质量安全新篇章
大数据·人工智能
穿过锁扣的风2 小时前
决策树:从入门到实战,解锁 AI 分类预测的核心利器
数据结构·python·决策树
爱学习的阿磊2 小时前
用Python实现自动化的Web测试(Selenium)
jvm·数据库·python
啊阿狸不会拉杆2 小时前
《机器学习导论》第 1 章 - 引言
人工智能·python·算法·机器学习·ai·numpy·matplotlib
coldstarry2 小时前
sheng的学习笔记-AI-adaboost(Adaptive Boosting)
人工智能·笔记·学习