ClawdBot + Cloudflare Tunnel + Zero-Trust 零基础保姆教程
🎯 本教程专为零基础用户设计,手把手教你从零开始部署 ClawdBot,并通过 Cloudflare Tunnel 和 Zero-Trust 实现安全访问。即使你完全不懂技术,只要跟着步骤一步步来,也能成功部署!
本文用ai输出在安全的ClawdBot 安装中, 有什么问题可以沟通
📋 目录
- 准备工作
- [第一步:注册和准备 Cloudflare](#第一步:注册和准备 Cloudflare)
- [第二步:安装 Cloudflare Tunnel](#第二步:安装 Cloudflare Tunnel)
- [第三步:配置 Cloudflare Tunnel](#第三步:配置 Cloudflare Tunnel)
- [第四步:安装 ClawdBot](#第四步:安装 ClawdBot)
- [第五步:配置 Zero-Trust 登录](#第五步:配置 Zero-Trust 登录)
- 第六步:测试和验证
- 常见问题详细解答
- 进阶配置(可选)
🎯 准备工作
在开始之前,请确保你已经准备好以下内容:
✅ 必需清单
- Cloudflare 账户(免费版即可,我们会在教程中教你注册)
- 一个域名(可以是新买的,也可以是已有的)
- 一台服务器(Windows 或 Linux 都可以,甚至可以是你的家用电脑)
- ClawdBot 安装包(我们会告诉你如何获取)
- 基本的网络连接(能上网就行)
💡 重要说明
Q: 我没有域名怎么办?
A: 不用担心!你可以:
- 直接在 Cloudflare 购买域名(推荐,最简单,价格透明,无隐藏费用)
- 或者在其他域名注册商购买后添加到 Cloudflare
- 或者使用 Cloudflare Tunnel 的临时域名进行测试
Q: 我没有服务器怎么办?
A: 你可以:
- 使用家里的电脑(Windows 或 Linux 都可以)
- 租用一台云服务器(阿里云、腾讯云等,最便宜的每月几十元)
- 使用树莓派等设备
Q: 我是完全零基础,能学会吗?
A: 完全可以!本教程会详细解释每一步,包括:
- 每个命令的作用
- 每个配置的含义
- 常见错误的解决方法
- 截图说明(用文字描述)
第一步:注册和准备 Cloudflare
1.1 注册 Cloudflare 账户
-
访问 Cloudflare 官网
- 打开浏览器,访问:https://dash.cloudflare.com/sign-up
- 或者访问:https://www.cloudflare.com/ 然后点击右上角的"注册"
-
填写注册信息
邮箱:你的邮箱地址(建议使用常用邮箱) 密码:设置一个强密码(至少8位,包含大小写字母和数字) -
验证邮箱
- 注册后,Cloudflare 会发送验证邮件到你的邮箱
- 打开邮箱,点击验证链接
- 如果没有收到邮件,检查垃圾邮件文件夹
-
登录 Cloudflare Dashboard
- 验证后,访问:https://dash.cloudflare.com/
- 使用刚才注册的邮箱和密码登录
1.2 添加域名到 Cloudflare
如果你已经有域名:
-
添加域名
- 登录 Cloudflare Dashboard 后,点击"添加站点"(Add a Site)
- 输入你的域名(例如:example.com),点击"添加站点"
-
选择计划
- 选择"免费"计划(Free plan),点击"继续"
-
扫描 DNS 记录
- Cloudflare 会自动扫描你域名的现有 DNS 记录
- 检查记录是否正确,点击"继续"
-
更改域名服务器(Nameservers)
-
Cloudflare 会给你两个域名服务器地址,例如:
alice.ns.cloudflare.com bob.ns.cloudflare.com -
重要: 你需要去你的域名注册商(如阿里云、GoDaddy 等)修改域名服务器
-
具体步骤:
- 登录你的域名注册商网站
- 找到"DNS 管理"或"域名服务器"设置
- 将原来的域名服务器替换为 Cloudflare 提供的两个地址
- 保存更改
-
注意: DNS 更改可能需要 24-48 小时生效,通常几分钟到几小时
-
-
等待激活
- 更改域名服务器后,回到 Cloudflare Dashboard
- 点击"检查名称服务器",等待 Cloudflare 验证
- 验证成功后,你的域名就成功添加到 Cloudflare 了
如果你没有域名:
你有两个选择:
选择一:直接在 Cloudflare 购买域名(推荐,最简单)
Cloudflare 提供域名注册服务,价格透明,没有隐藏费用,而且购买后自动配置,非常方便!
-
进入域名注册页面
- 登录 Cloudflare Dashboard
- 点击左侧菜单的"注册域名"(Register Domains)
- 或者访问:https://dash.cloudflare.com/?to=/:account/registrar
-
搜索域名
- 在搜索框中输入你想要的域名(例如:
myclawdbot) - 选择你喜欢的域名后缀(如
.com、.xyz、.net等) - 点击"搜索"
- 在搜索框中输入你想要的域名(例如:
-
查看价格
- Cloudflare 会显示域名的价格
- 优势: Cloudflare 的域名价格通常是成本价,没有加价
- 例如:
.com域名通常约 8-10/年,`.xyz` 域名通常约 1-3/年
-
添加到购物车
- 选择你想要的域名
- 点击"添加到购物车"
- 可以同时购买多个域名
-
结账
- 点击"结账"(Checkout)
- 填写注册信息:
- 注册人信息(姓名、地址、电话等)
- 邮箱地址
- 支付方式(支持信用卡、PayPal 等)
- 重要: 确保信息准确,这些信息会用于 WHOIS 记录
-
完成购买
- 确认订单信息
- 完成支付
- 购买成功后,域名会自动添加到你的 Cloudflare 账户
- 无需手动配置域名服务器,Cloudflare 会自动管理
-
验证域名
- 购买完成后,在 Cloudflare Dashboard 中应该能看到你的域名
- 域名状态应该显示为"有效"(Active)
- 可以直接跳到"1.3 验证域名状态"步骤
Cloudflare 购买域名的优势:
- ✅ 价格透明:没有隐藏费用,价格通常是成本价
- ✅ 自动配置:购买后自动添加到 Cloudflare,无需手动配置
- ✅ 免费隐私保护:自动启用 WHOIS 隐私保护(免费)
- ✅ 免费 SSL:自动提供 SSL 证书
- ✅ 无转移费用:如果将来要转移域名,没有额外费用
- ✅ 统一管理:域名和 DNS 在同一个平台管理,非常方便
选择二:使用临时域名测试(免费,但有限制)
如果你想先测试,可以使用 Cloudflare Tunnel 提供的临时域名:
-
创建临时 Tunnel
bashcloudflared tunnel --url http://localhost:8080- 这会创建一个临时的 Tunnel,并给你一个临时域名(如
xxxxx.trycloudflare.com) - 这个域名可以用于测试,但每次重启 Tunnel 可能会变化
- 这会创建一个临时的 Tunnel,并给你一个临时域名(如
-
注意限制
- 临时域名每次可能不同
- 不适合生产环境使用
- 建议测试完成后购买正式域名
推荐: 如果你打算长期使用,建议直接在 Cloudflare 购买域名,价格便宜且配置简单。
1.3 验证域名状态
在 Cloudflare Dashboard 中:
- 左侧菜单选择你的域名
- 你应该看到域名状态显示为"有效"(Active)
- DNS 记录中应该有一些默认记录
✅ 完成检查:
- Cloudflare 账户已注册并验证
- 域名已添加到 Cloudflare
- 域名服务器已更改(如果使用自己的域名)
- 域名状态显示为"有效"
第二步:安装 Cloudflare Tunnel
Cloudflare Tunnel 是一个工具,它会在你的服务器和 Cloudflare 之间建立一个安全的加密隧道。
2.1 Windows 系统安装
方法一:使用 Chocolatey(推荐,最简单)
-
安装 Chocolatey(如果还没有)
- 以管理员身份打开 PowerShell
- 运行以下命令:
powershellSet-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'))- 等待安装完成(可能需要几分钟)
-
使用 Chocolatey 安装 cloudflared
powershellchoco install cloudflared -y- 等待安装完成
-
验证安装
powershellcloudflared --version- 如果显示版本号(如
cloudflared 2024.x.x),说明安装成功
- 如果显示版本号(如
方法二:手动下载安装
-
下载 cloudflared
- 访问:https://github.com/cloudflare/cloudflared/releases/latest
- 找到
cloudflared-windows-amd64.exe(如果是 64 位系统) - 点击下载
-
安装到系统
- 将下载的文件重命名为
cloudflared.exe - 复制到
C:\Windows\System32\目录 - 或者创建一个文件夹(如
C:\cloudflared\),将文件放进去,然后添加到系统 PATH
- 将下载的文件重命名为
-
添加到 PATH(如果放在自定义文件夹)
- 右键"此电脑" → "属性" → "高级系统设置" → "环境变量"
- 在"系统变量"中找到
Path,点击"编辑" - 点击"新建",输入
C:\cloudflared\(你的文件夹路径) - 点击"确定"保存
-
验证安装
- 打开新的 PowerShell 窗口
- 运行:
cloudflared --version - 如果显示版本号,说明安装成功
2.2 Linux 系统安装
Ubuntu/Debian 系统
-
下载安装包
bashcurl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb -
安装
bashsudo dpkg -i cloudflared.deb- 如果提示缺少依赖,运行:
sudo apt-get install -f
- 如果提示缺少依赖,运行:
-
验证安装
bashcloudflared --version
CentOS/RHEL/Rocky Linux 系统
-
下载安装包
bashcurl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm -o cloudflared.rpm -
安装
bashsudo rpm -i cloudflared.rpm -
验证安装
bashcloudflared --version
通用方法(所有 Linux 系统)
-
下载二进制文件
bashwget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -
移动到系统路径
bashsudo mv cloudflared-linux-amd64 /usr/local/bin/cloudflared sudo chmod +x /usr/local/bin/cloudflared -
验证安装
bashcloudflared --version
2.3 macOS 系统安装(Mac mini)
macOS 系统安装 cloudflared 有多种方法,推荐使用 Homebrew,这是最简单的方式。
方法一:使用 Homebrew(推荐,最简单)
-
安装 Homebrew(如果还没有)
- 打开"终端"(Terminal)应用
- 运行以下命令:
bash/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"- 按照提示完成安装(可能需要输入管理员密码)
- 安装完成后,根据提示运行额外的命令(通常是添加 Homebrew 到 PATH)
-
使用 Homebrew 安装 cloudflared
bashbrew install cloudflared- 等待安装完成(可能需要几分钟)
-
验证安装
bashcloudflared --version- 如果显示版本号(如
cloudflared 2024.x.x),说明安装成功
- 如果显示版本号(如
方法二:使用 MacPorts
如果你使用 MacPorts 而不是 Homebrew:
-
安装 cloudflared
bashsudo port install cloudflared -
验证安装
bashcloudflared --version
方法三:手动下载安装
-
下载 cloudflared
- 访问:https://github.com/cloudflare/cloudflared/releases/latest
- 找到
cloudflared-darwin-amd64.tgz(Intel Mac)或cloudflared-darwin-arm64.tgz(Apple Silicon Mac,如 M1/M2/M3) - 点击下载
-
解压文件
bash# Intel Mac tar -xzf cloudflared-darwin-amd64.tgz # Apple Silicon Mac (M1/M2/M3) tar -xzf cloudflared-darwin-arm64.tgz -
移动到系统路径
bashsudo mv cloudflared /usr/local/bin/cloudflared sudo chmod +x /usr/local/bin/cloudflared- 或者移动到
/opt/homebrew/bin/(如果使用 Homebrew 但想手动安装)
- 或者移动到
-
验证安装
bashcloudflared --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 账户关联起来。
-
运行登录命令
bashcloudflared tunnel login -
浏览器自动打开
- 命令运行后,会自动打开你的默认浏览器
- 如果没有自动打开,命令会显示一个 URL,手动复制到浏览器打开
-
选择域名
- 浏览器中会显示 Cloudflare 登录页面
- 登录你的 Cloudflare 账户
- 选择你要使用的域名(就是你刚才添加到 Cloudflare 的域名)
- 点击"授权"或"Allow"
-
验证登录成功
-
登录成功后,浏览器会显示"Success!"或"成功!"
-
回到命令行,你应该看到类似这样的输出:
You have successfully logged in.
-
-
检查证书文件
- 登录成功后,会在你的用户目录下生成证书文件
- 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 的通道,我们需要创建一个。
-
创建命名 Tunnel
bashcloudflared tunnel create clawdbot-tunnelclawdbot-tunnel是 Tunnel 的名称,你可以改成任何你喜欢的名字
-
查看输出信息
命令运行后,会显示类似这样的输出:
Tunnel credentials written to /root/.cloudflared/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json +--------------------------------+----------------------------------+ | TUNNEL ID | NAME | +--------------------------------+----------------------------------+ | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx | clawdbot-tunnel | +--------------------------------+----------------------------------+ -
记住 Tunnel ID
- 输出中的
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx就是你的 Tunnel ID - 重要: 请复制并保存这个 ID,后续配置会用到
- 同时注意证书文件的路径(如
/root/.cloudflared/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json)
- 输出中的
-
验证 Tunnel 创建成功
bashcloudflared tunnel list- 应该能看到你刚才创建的 Tunnel
✅ 完成检查:
- 已成功登录 Cloudflare
- 已创建 Tunnel
- 已保存 Tunnel ID 和证书文件路径
3.3 创建配置文件
配置文件告诉 Tunnel 如何路由流量。
-
确定配置文件位置
- Windows:
C:\Users\你的用户名\.cloudflared\config.yml - Linux:
~/.cloudflared/config.yml或/root/.cloudflared/config.yml - macOS:
~/.cloudflared/config.yml或/Users/你的用户名/.cloudflared/config.yml
- Windows:
-
创建配置文件
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.ymlmacOS:
bash# 创建配置文件目录(如果不存在) mkdir -p ~/.cloudflared # 创建配置文件(使用 nano,对新手更友好) nano ~/.cloudflared/config.yml # 或者使用 vi: vi ~/.cloudflared/config.yml # 或者使用 TextEdit(图形界面): # open -a TextEdit ~/.cloudflared/config.yml -
编辑配置文件内容
将以下内容复制到配置文件中,记得替换以下内容:
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 的端口(如果有,根据实际情况修改)
yamltunnel: 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简化版本(如果只有一个服务):
yamltunnel: 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 -
保存配置文件
- Windows (记事本): 按
Ctrl+S保存,然后关闭 - Linux (nano): 按
Ctrl+O保存,按Enter确认,然后按Ctrl+X退出 - Linux (vi): 按
Esc,输入:wq,按Enter
- Windows (记事本): 按
配置文件说明:
tunnel: 你的 Tunnel IDcredentials-file: 证书文件路径ingress: 路由规则列表hostname: 你的域名service: 本地服务地址(localhost:端口)originRequest: 连接优化选项(可选,但建议保留)
✅ 完成检查:
- 配置文件已创建
- Tunnel ID 和证书路径已正确填写
- 域名和端口已根据实际情况修改
- 配置文件格式正确(注意 YAML 的缩进,使用空格,不要用 Tab)
3.4 配置 DNS 记录
现在需要在 Cloudflare 中配置 DNS 记录,将你的域名指向 Tunnel。
-
登录 Cloudflare Dashboard
- 访问:https://dash.cloudflare.com/
- 选择你的域名
-
进入 DNS 设置
- 左侧菜单点击"DNS" → "记录"(Records)
-
添加 CNAME 记录
点击"添加记录"(Add record),填写:
类型: CNAME 名称: clawdbot(或者你想要的子域名) 目标: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.cfargotunnel.com 代理状态: 已代理(橙色云朵图标,必须开启!) TTL: 自动重要说明:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx是你的 Tunnel ID- 代理状态必须开启(显示为橙色云朵),这样才能通过 Cloudflare 访问
- 如果显示为灰色云朵,点击一下切换为橙色
-
如果有 API 子域名,也添加记录
类型: CNAME 名称: api.clawdbot 目标: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.cfargotunnel.com 代理状态: 已代理(橙色云朵) -
保存记录
- 点击"保存"(Save)
- DNS 记录可能需要几分钟到几小时生效,通常几分钟内就会生效
-
验证 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 是否能正常工作。
-
确保 ClawdBot 正在运行
- 如果还没有安装 ClawdBot,可以先跳过这一步,或者使用一个简单的测试服务
- 如果 ClawdBot 已安装,确保它正在运行并监听
localhost:8080
-
运行 Tunnel(前台测试)
bashcloudflared tunnel run clawdbot-tunnelclawdbot-tunnel是你创建 Tunnel 时使用的名称
-
查看输出
如果配置正确,你会看到类似这样的输出:
+----------------------------------------------------------------------------+ | Your quick Tunnel has been created! Visit it at (it may take some time | | to be reachable): | | https://clawdbot.yourdomain.com | +----------------------------------------------------------------------------+ -
测试访问
- 打开浏览器,访问:
https://clawdbot.yourdomain.com - 如果能看到 ClawdBot 的界面,说明 Tunnel 配置成功!
- 如果显示错误,检查:
- ClawdBot 是否正在运行
- 端口是否正确
- 配置文件是否正确
- 打开浏览器,访问:
-
停止测试
- 按
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(推荐)
-
下载 NSSM
- 访问:https://nssm.cc/download
- 下载最新版本的 Windows 版本
- 解压到一个文件夹(如
C:\nssm\)
-
以管理员身份打开 PowerShell
- 右键"开始"菜单 → "Windows PowerShell (管理员)"
-
安装服务
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 名称
- 记得替换:
-
配置服务
- NSSM 会打开一个配置窗口
- 在"详细信息"标签页,可以设置:
- Display name:
Cloudflare Tunnel - Description:
Cloudflare Tunnel for ClawdBot
- Display name:
- 点击"安装服务"
-
启动服务
powershell.\nssm.exe start CloudflaredTunnel -
查看服务状态
powershell.\nssm.exe status CloudflaredTunnel
方法二:使用任务计划程序
-
打开任务计划程序
- 按
Win+R,输入taskschd.msc,按 Enter
- 按
-
创建基本任务
- 右侧点击"创建基本任务"
- 名称:
Cloudflare Tunnel - 描述:
自动启动 Cloudflare Tunnel
-
设置触发器
- 选择"计算机启动时"
-
设置操作
- 选择"启动程序"
- 程序或脚本:
C:\Windows\System32\cloudflared.exe(或你的 cloudflared 路径) - 添加参数:
tunnel --config C:\Users\你的用户名\.cloudflared\config.yml run clawdbot-tunnel - 起始于:
C:\Windows\System32\(或你的 cloudflared 所在目录)
-
完成设置
- 勾选"当单击完成时,打开此任务属性的对话框"
- 在"常规"标签页,勾选"使用最高权限运行"
- 点击"确定"
Linux 系统
-
创建 systemd 服务文件
bashsudo nano /etc/systemd/system/cloudflared.service -
编辑服务文件内容
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查看)
- 记得根据实际情况修改:
-
保存文件
- 按
Ctrl+O保存,Enter确认,Ctrl+X退出
- 按
-
重新加载 systemd
bashsudo systemctl daemon-reload -
启用服务(开机自启)
bashsudo systemctl enable cloudflared -
启动服务
bashsudo systemctl start cloudflared -
查看服务状态
bashsudo systemctl status cloudflared- 如果显示"active (running)",说明服务运行正常
-
查看日志
bashsudo journalctl -u cloudflared -f- 按
Ctrl+C退出日志查看
- 按
macOS 系统
macOS 使用 launchd 来管理系统服务,这是 macOS 的守护进程管理器。
-
创建 launchd plist 文件
bash# 创建 LaunchAgents 目录(如果不存在) mkdir -p ~/Library/LaunchAgents # 创建 plist 文件 nano ~/Library/LaunchAgents/com.cloudflare.cloudflared.plist -
编辑 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> -
保存文件
- 按
Ctrl+O保存,Enter确认,Ctrl+X退出
- 按
-
加载服务
bashlaunchctl load ~/Library/LaunchAgents/com.cloudflare.cloudflared.plist -
启动服务
bashlaunchctl start com.cloudflare.cloudflared -
查看服务状态
bashlaunchctl list | grep cloudflared- 如果看到服务在列表中,说明服务已加载
-
查看日志
bash# 查看标准输出日志 tail -f ~/.cloudflared/cloudflared.log # 查看错误日志 tail -f ~/.cloudflared/cloudflared.error.log- 按
Ctrl+C退出日志查看
- 按
-
启用开机自启
- launchd 服务默认会在登录时自动启动(因为放在
~/Library/LaunchAgents/) - 如果需要系统启动时运行(不登录用户),需要放在
/Library/LaunchDaemons/(需要管理员权限)
- launchd 服务默认会在登录时自动启动(因为放在
管理服务命令:
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 下载(如果开源)
-
克隆仓库
bash# 克隆 ClawdBot 仓库 git clone https://github.com/clawdbot/clawdbot.git cd clawdbot -
查看输出
如果克隆成功,你会看到类似这样的输出:
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. -
查看项目结构
bashls -la应该能看到项目文件,如
README.md、package.json、docker-compose.yml等
方法二:下载预编译版本
-
访问发布页面
- 访问 ClawdBot 的 GitHub Releases 页面:https://github.com/clawdbot/clawdbot/releases
- 或访问 ClawdBot 的官方网站
-
选择版本
- 找到最新版本(Latest release)
- 根据你的系统选择对应的版本:
- Linux:
clawdbot-linux-amd64.tar.gz或clawdbot-linux-arm64.tar.gz - macOS:
clawdbot-darwin-amd64.tar.gz(Intel)或clawdbot-darwin-arm64.tar.gz(Apple Silicon) - Windows:
clawdbot-windows-amd64.zip
- Linux:
-
下载文件
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 -
验证下载
bashls -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 镜像,这是最简单的安装方式。
-
安装 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 图标)
- 根据你的 Mac 架构选择:
-
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
-
-
创建 docker-compose.yml
Linux:
bashmkdir -p /opt/clawdbot cd /opt/clawdbot nano docker-compose.ymlmacOS:
bashmkdir -p ~/clawdbot cd ~/clawdbot nano docker-compose.yml # 或使用 TextEdit: open -a TextEdit docker-compose.yml -
编辑 docker-compose.yml
yamlversion: '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 的实际配置修改镜像名称、端口、环境变量等
-
启动服务
bashdocker-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 -
查看容器状态
bashdocker-compose ps预期输出:
NAME COMMAND SERVICE STATUS PORTS clawdbot "/app/entrypoint" clawdbot Up 5 seconds 127.0.0.1:8080->8080/tcp- 如果 STATUS 显示为 "Up",说明容器运行正常
-
查看日志
bashdocker-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退出日志查看 - 如果看到错误信息,检查配置是否正确
- 按
-
验证服务运行
bashcurl http://localhost:8080预期输出:
-
如果返回 HTML 内容或 JSON 数据,说明服务正常
-
如果返回状态码 200,说明服务正常
-
示例:
bashcurl -I http://localhost:8080输出:
HTTP/1.1 200 OK Content-Type: text/html; charset=utf-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:
- 检查容器是否运行:
docker-compose ps - 检查端口映射:
docker-compose port clawdbot 8080 - 检查防火墙设置
- 检查容器是否运行:
-
Q: 日志显示端口被占用怎么办?
A:
- 检查是否有其他服务占用 8080 端口:
netstat -tlnp | grep 8080 - 修改 docker-compose.yml 中的端口映射,如改为
127.0.0.1:8081:8080 - 同时记得修改 Tunnel 配置文件中的端口
- 检查是否有其他服务占用 8080 端口:
4.3 手动安装
如果 ClawdBot 需要手动安装(不使用 Docker):
-
解压文件
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.gzWindows:
-
使用解压软件(如 7-Zip、WinRAR)解压
clawdbot-windows-amd64.zip -
或使用 PowerShell:
powershellExpand-Archive -Path clawdbot-windows-amd64.zip -DestinationPath .
-
-
进入目录
bashcd 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 -
检查可执行文件权限
bash# Linux/macOS chmod +x clawdbot # 验证权限 ls -l clawdbot应该显示
-rwxr-xr-x(有执行权限) -
配置环境变量
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 -
安装依赖(如果需要)
如果是 Node.js 应用:
bashnpm install预期输出:
npm WARN deprecated ... added 234 packages in 30s如果是 Python 应用:
bashpip install -r requirements.txt预期输出:
Collecting ... Installing collected packages: ... Successfully installed ... -
测试启动(前台运行)
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停止服务
-
验证服务运行
打开新的终端窗口,测试访问:
bashcurl 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
-
配置为系统服务(后台运行)
参考 Tunnel 的服务配置方法,为 ClawdBot 创建系统服务:
Linux (systemd):
bashsudo 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启用并启动:
bashsudo systemctl daemon-reload sudo systemctl enable clawdbot sudo systemctl start clawdbot sudo systemctl status clawdbotmacOS (launchd):
bashnano ~/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>加载服务:
bashlaunchctl load ~/Library/LaunchAgents/com.clawdbot.plist launchctl start com.clawdbotWindows (NSSM 或任务计划程序):
- 参考 Tunnel 的 Windows 服务配置方法
✅ 完成检查:
- 文件已成功解压
- 可执行文件有执行权限
- 配置文件已创建并填写
- 依赖已安装(如果需要)
- 服务可以正常启动
- 可以通过
http://localhost:8080访问 - 端口只监听 localhost
- 已配置为系统服务(可选)
常见问题:
-
Q: 提示"权限被拒绝"怎么办?
A: 给可执行文件添加执行权限:
chmod +x clawdbot -
Q: 提示"找不到命令"怎么办?
A:
- 检查文件路径是否正确
- 使用完整路径运行:
/完整路径/clawdbot - 或添加到 PATH 环境变量
-
Q: 服务启动后立即退出怎么办?
A:
- 检查日志文件(如果有)
- 检查配置文件是否正确
- 检查依赖是否完整安装
- 尝试前台运行查看详细错误:
./clawdbot(不要加-d参数)
-
Q: 数据库连接失败怎么办?
A:
- 检查数据库服务是否运行
- 检查 DATABASE_URL 配置是否正确
- 检查数据库用户权限
4.4 重要配置:只监听 localhost
非常重要: ClawdBot 应该只监听 localhost 或 127.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
-
登录 Cloudflare Dashboard
- 访问:https://dash.cloudflare.com/
- 点击左侧菜单的"Zero Trust"
-
选择计划
- 如果是首次使用,会提示选择计划
- 选择"免费"计划(Free plan),完全够用
- 免费版支持最多 50 用户
-
设置团队名称
- 输入一个团队名称(例如:
my-team) - 这个名称会用于生成登录 URL
- 点击"继续"
- 输入一个团队名称(例如:
5.2 配置身份提供商(登录方式)
Zero Trust 支持多种登录方式,我们选择最简单的方式。
选项 A:使用 One-time PIN(最简单,推荐零基础用户)
-
进入认证设置
- Zero Trust Dashboard → "Access" → "Authentication" → "Login methods"
-
启用 One-time PIN
- 找到"One-time PIN"选项
- 点击"启用"(Enable)
- 这样用户可以通过邮箱接收验证码登录
-
配置邮箱域名(可选)
- 可以限制只有特定邮箱域名的用户才能登录
- 例如:只允许
@example.com的用户登录 - 如果不需要限制,可以跳过
选项 B:使用 Google/Microsoft/GitHub 登录(推荐)
-
进入认证设置
- Zero Trust Dashboard → "Access" → "Authentication" → "Login methods"
- 点击"Add new"
-
选择提供商
- 选择"Google"(或其他你喜欢的提供商)
-
配置 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: 粘贴刚才复制的客户端密钥
- 点击"保存"
-
测试登录
- 配置完成后,可以测试一下登录是否正常
5.3 创建访问策略(Access Policy)
访问策略定义了谁可以访问 ClawdBot。
-
进入应用设置
- Zero Trust Dashboard → "Access" → "Applications"
- 点击"Add an application"
-
选择应用类型
- 选择"Self-hosted"(自托管应用)
-
配置应用信息
Application name: ClawdBot Web UI Session duration: 24 hours(会话持续时间,用户登录后 24 小时内不需要重新登录) Application domain: clawdbot.yourdomain.com(你的域名) -
配置策略(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 -
保存应用
- 点击"Save application"
- 应用创建成功
-
为 API 子域名创建应用(如果有)
- 如果 ClawdBot 有单独的 API 子域名,重复上述步骤
- Application domain:
api.clawdbot.yourdomain.com - 可以配置更严格的策略(例如:只允许管理员)
5.4 验证 Zero-Trust 配置
-
访问应用
- 打开浏览器,访问:
https://clawdbot.yourdomain.com - 注意: 使用
https://,不是http://
- 打开浏览器,访问:
-
应该看到登录页面
- 如果配置正确,会看到 Cloudflare Zero Trust 的登录页面
- 而不是直接看到 ClawdBot 界面
-
测试登录
- 使用配置的身份提供商登录(One-time PIN 或 Google 等)
- 登录成功后,应该能看到 ClawdBot 界面
-
测试访问控制
- 使用不在允许列表中的邮箱尝试登录(如果配置了邮箱限制)
- 应该被拒绝访问
✅ 完成检查:
- Zero Trust 已启用
- 身份提供商已配置
- 访问策略已创建
- 通过域名访问会显示登录页面
- 登录后能正常访问 ClawdBot
- 未授权用户无法访问
第六步:测试和验证
现在让我们全面测试一下整个系统是否正常工作。
6.1 测试 Tunnel 连接
-
检查 Tunnel 状态
bash# Linux sudo systemctl status cloudflared # macOS launchctl list | grep cloudflared # 或查看日志 tail -f ~/.cloudflared/cloudflared.log # Windows # 在服务管理器中查看 CloudflaredTunnel 服务状态 -
查看 Tunnel 信息
bashcloudflared tunnel info clawdbot-tunnel -
查看 Tunnel 路由
bashcloudflared tunnel route dns list -
测试 DNS 解析
bash# Windows nslookup clawdbot.yourdomain.com # Linux / macOS dig clawdbot.yourdomain.com # 或使用 nslookup nslookup clawdbot.yourdomain.com- 应该返回 Cloudflare 的 IP 地址
6.2 测试 Zero-Trust 登录
-
清除浏览器缓存和 Cookie
- Windows/Linux: 按
Ctrl+Shift+Delete清除缓存 - macOS: 按
Cmd+Shift+Delete清除缓存 - 或者使用隐私模式/无痕模式
- Windows/Linux: 按
-
访问应用
- 打开浏览器,访问:
https://clawdbot.yourdomain.com
- 打开浏览器,访问:
-
验证登录流程
- 看到 Cloudflare Zero Trust 登录页面
- 能够成功登录
- 登录后能看到 ClawdBot 界面
- 功能正常(可以测试 ClawdBot 的基本功能)
-
测试会话持久性
- 登录后,关闭浏览器标签页
- 重新打开标签页,访问:
https://clawdbot.yourdomain.com - 应该不需要重新登录(在会话有效期内)
6.3 测试 API 访问(如果有)
-
使用浏览器访问 API
bash# 在浏览器中访问 https://api.clawdbot.yourdomain.com/health- 应该会触发 Zero-Trust 登录
-
使用命令行测试(需要 Cookie)
bash# 先登录获取 Cookie,然后使用 Cookie 访问 curl -v -H "Cookie: CF_Authorization=your-token" https://api.clawdbot.yourdomain.com/api/v1/status
6.4 测试安全性
-
测试直接访问(应该失败)
bash# 尝试直接访问服务器 IP 和端口 curl http://你的服务器IP:8080- 应该返回连接被拒绝或超时
- 这说明服务只监听 localhost,外部无法直接访问
-
测试未授权访问
- 使用不在允许列表中的邮箱尝试登录
- 应该被拒绝访问
-
检查安全头
bashcurl -I https://clawdbot.yourdomain.com- 应该看到 Cloudflare 的安全头
6.5 性能测试
-
测试响应时间
bashtime curl https://clawdbot.yourdomain.com -
查看 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
可能原因和解决方案:
-
证书文件丢失或损坏
bash# 重新登录 cloudflared tunnel login -
Tunnel ID 错误
- 检查配置文件中的 Tunnel ID 是否正确
- 运行
cloudflared tunnel list查看正确的 Tunnel ID
-
证书文件路径错误
- 检查配置文件中的
credentials-file路径是否正确 - 确认文件确实存在
- 检查配置文件中的
-
权限问题(Linux)
bash# 检查文件权限 ls -la ~/.cloudflared/ # 如果权限不对,修改权限 chmod 600 ~/.cloudflared/*.json
Q2: DNS 解析失败
症状:
DNS lookup failed for clawdbot.yourdomain.com
可能原因和解决方案:
-
DNS 记录未正确配置
- 检查 Cloudflare Dashboard 中的 DNS 记录
- 确认记录类型是 CNAME
- 确认目标是
Tunnel-ID.cfargotunnel.com - 确认代理状态是"已代理"(橙色云朵)
-
DNS 传播延迟
- DNS 更改可能需要几分钟到几小时生效
- 等待一段时间后重试
- 可以使用
dig或nslookup检查 DNS 是否已生效
-
域名服务器未更改
- 如果使用自己的域名,确认域名服务器已更改为 Cloudflare 提供的地址
- 在域名注册商处检查域名服务器设置
Q3: 访问显示 502 Bad Gateway
症状:
访问域名时显示 502 错误
可能原因和解决方案:
-
ClawdBot 服务未运行
bash# 检查服务状态 # Linux sudo systemctl status clawdbot # 或 docker ps # Windows # 在服务管理器中查看 ClawdBot 服务 -
端口不正确
- 检查 ClawdBot 实际监听的端口
- 检查 Tunnel 配置文件中的端口是否正确
bash# Linux netstat -tlnp | grep 8080 ss -tlnp | grep 8080 # Windows netstat -ano | findstr :8080 -
服务只监听 localhost
- 确认 ClawdBot 监听的是
127.0.0.1或localhost - 不要监听
0.0.0.0(虽然通常也可以,但为了安全建议只监听 localhost)
- 确认 ClawdBot 监听的是
-
测试本地连接
bashcurl http://localhost:8080- 如果本地也无法访问,说明 ClawdBot 服务有问题
- 检查 ClawdBot 的日志
Q4: Zero-Trust 登录后无法访问
症状:
登录成功,但显示 502 或 404 错误
可能原因和解决方案:
-
Tunnel 配置问题
- 检查 Tunnel 配置文件中的服务地址
- 确认
service: http://localhost:8080正确
-
ClawdBot 服务问题
- 参考 Q3 的解决方案
-
Zero-Trust 配置问题
- 检查 Zero-Trust 应用配置中的域名是否正确
- 确认应用状态是"启用"
Q5: 连接超时
症状:
Tunnel 连接建立,但请求超时
可能原因和解决方案:
-
增加超时时间
yaml# ~/.cloudflared/config.yml originRequest: connectTimeout: 60s # 增加到 60 秒 -
检查服务器资源
bash# 检查 CPU 和内存使用 top # 或 htop -
检查网络连接
bash# 测试到 Cloudflare 的连接 ping 1.1.1.1
Q6: 访问被拒绝(403 Forbidden)
症状:
Zero-Trust 返回 403 Forbidden
可能原因和解决方案:
-
访问策略配置问题
- 检查 Zero-Trust 应用的访问策略
- 确认你的邮箱在允许列表中
- 检查策略的"Action"是"Allow"而不是"Deny"
-
设备策略要求
- 如果配置了设备策略,确认你的设备满足要求
- 可以暂时禁用设备策略测试
-
查看 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
可能原因和解决方案:
-
在 ClawdBot 中配置 CORS
javascript// Node.js 示例 const cors = require('cors'); app.use(cors({ origin: 'https://clawdbot.yourdomain.com', credentials: true })); -
在 Cloudflare 中配置 CORS 规则
- 进入 Cloudflare Dashboard → Rules → Transform Rules
- 创建规则添加 CORS 头
Q8: 服务频繁重启
症状:
Tunnel 或 ClawdBot 服务频繁重启
可能原因和解决方案:
-
查看日志找出错误
bash# Cloudflare Tunnel 日志 sudo journalctl -u cloudflared -n 100 # ClawdBot 日志 docker-compose logs -f clawdbot # 或 tail -f /var/log/clawdbot.log -
检查资源限制
- 检查服务器内存和 CPU 使用情况
- 如果资源不足,考虑升级服务器
-
配置自动重启策略
ini# systemd 服务配置 [Service] Restart=on-failure RestartSec=5s StartLimitInterval=0
Q9: Windows 服务无法启动
症状:
Windows 服务显示"启动失败"
可能原因和解决方案:
-
检查路径是否正确
- 确认 cloudflared.exe 的路径正确
- 确认配置文件的路径正确
-
检查权限
- 确认服务使用的账户有足够权限
- 可以尝试使用管理员账户运行
-
查看事件查看器
- 打开"事件查看器"(Event Viewer)
- 查看"Windows 日志" → "应用程序"
- 查找相关错误信息
Q10: 忘记 Tunnel ID 或证书文件
症状:
不知道 Tunnel ID 或找不到证书文件
解决方案:
-
查看 Tunnel 列表
bashcloudflared tunnel list- 会显示所有 Tunnel 及其 ID
-
查看证书文件位置
bash# Windows dir C:\Users\你的用户名\.cloudflared\ # Linux ls -la ~/.cloudflared/ -
如果文件丢失
- 如果证书文件丢失,需要重新登录:
cloudflared tunnel login - 如果 Tunnel ID 丢失,可以创建新的 Tunnel,或联系 Cloudflare 支持
- 如果证书文件丢失,需要重新登录:
进阶配置(可选)
1. 多 Tunnel 负载均衡
如果你有多个服务器或想要提高可用性,可以配置多个 Tunnel。
-
创建多个 Tunnel
bashcloudflared tunnel create clawdbot-tunnel-1 cloudflared tunnel create clawdbot-tunnel-2 -
配置多个 Tunnel 实例
- 在不同服务器上运行不同的 Tunnel
- 或在同一服务器上运行多个 Tunnel 实例(使用不同端口)
-
配置负载均衡
- 在 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. 监控和告警
-
使用 Cloudflare Analytics
- 进入 Cloudflare Dashboard → Analytics
- 查看流量、错误率、响应时间
-
配置外部监控
- 使用 Uptime Robot、Pingdom 等服务
- 监控 URL:
https://clawdbot.yourdomain.com/health
-
设置告警
- 在 Cloudflare 中配置告警规则
- 当错误率超过阈值时发送通知
4. 性能优化
-
启用 Cloudflare 缓存
- 在 Cloudflare Dashboard 中配置缓存规则
- 对静态资源启用缓存
-
启用 Brotli 压缩
- Cloudflare 自动提供压缩
- 可以在 Dashboard 中查看压缩统计
-
优化 Tunnel 配置
yamloriginRequest: keepAliveConnections: 100 keepAliveTimeout: 90s tcpKeepAlive: 30s
5. 安全加固
-
配置 WAF 规则
- 进入 Cloudflare Dashboard → Security → WAF
- 创建自定义规则阻止可疑请求
-
启用 Bot Fight Mode
- 进入 Security → Bots
- 启用 Bot Fight Mode(免费版)或 Super Bot Fight Mode(付费版)
-
配置速率限制
- 进入 Security → WAF → Rate limiting rules
- 创建规则限制 API 请求频率
-
启用设备策略
- 在 Zero-Trust 中配置设备合规性检查
- 要求设备满足特定条件才能访问
🎉 恭喜!部署完成
如果你已经完成了以上所有步骤,恭喜你!你已经成功部署了 ClawdBot,并通过 Cloudflare Tunnel 和 Zero-Trust 实现了安全访问。
📝 部署检查清单
- Cloudflare 账户已注册
- 域名已添加到 Cloudflare
- Cloudflare Tunnel 已安装
- Tunnel 已创建并配置
- DNS 记录已配置
- Tunnel 已配置为系统服务
- ClawdBot 已安装并运行
- Zero-Trust 已启用
- 身份提供商已配置
- 访问策略已创建
- 所有测试通过
🔒 安全特性总结
通过这个配置,你已经实现了:
- ✅ 零公网暴露:服务器不开放任何公网端口
- ✅ 加密传输:所有流量通过 HTTPS 加密
- ✅ 身份验证:只有授权用户才能访问
- ✅ 访问控制:基于策略的细粒度访问控制
- ✅ DDoS 防护:自动获得 Cloudflare 防护
- ✅ 审计日志:记录所有访问行为
📚 后续维护
-
定期更新
- 保持 cloudflared 最新版本
- 保持 ClawdBot 最新版本
-
备份配置
- 定期备份 Tunnel 配置文件
- 备份证书文件(安全存储)
-
监控告警
- 设置异常访问告警
- 定期查看访问日志
-
定期审计
- 审查访问日志
- 检查访问策略配置
- 更新用户权限
🆘 需要帮助?
如果遇到问题:
-
查看日志
- Tunnel 日志:
sudo journalctl -u cloudflared -f - ClawdBot 日志:查看应用日志
- Tunnel 日志:
-
检查配置
- 验证配置文件格式
- 检查 DNS 记录
- 检查 Zero-Trust 策略
-
参考文档
-
寻求帮助
- Cloudflare 社区论坛
- ClawdBot 社区(如果有)