name: cloudflare-manager description: 管理Cloudflare DNS记录、隧道(cloudflared)和零信任策略。用于指向域名、通过隧道暴露本地服务以及更新入口规则。 metadata: {“openclaw”:{“requires”:{“bins”:[“python3”,“cloudflared”],“env”:[“CLOUDFLARE_API_TOKEN”,“CLOUDFLARE_ZONE_ID”]},“install”:[{“id”:“cf-setup”,“kind”:“exec”,“command”:“bash scripts/install.sh”}]}}
Cloudflare 管理器
用于管理Cloudflare基础设施和本地隧道入口的标准化系统。
前提条件
- 二进制文件:必须安装
python3和cloudflared。 - 凭证:
CLOUDFLARE_API_TOKEN(最低Zone权限)和CLOUDFLARE_ZONE_ID。
设置
- 在环境变量或本地
.env文件中定义凭证。 - 初始化本地环境:
bash scripts/install.sh。
核心工作流
1. DNS管理
通过Cloudflare API添加、列出或删除DNS记录。
- 列出:
python3 $WORKSPACE/skills/cloudflare-manager/scripts/cf_manager.py list-dns - 添加:
python3 $WORKSPACE/skills/cloudflare-manager/scripts/cf_manager.py add-dns --type A --name <子域名> --content <IP地址>
2. 隧道入口(本地)
更新 /etc/cloudflared/config.yml 并重启隧道服务。
- 更新:
python3 $WORKSPACE/skills/cloudflare-manager/scripts/cf_manager.py update-ingress --hostname <主机名> --service <服务URL> - 安全:使用
--dry-run在应用前预览配置更改。
安全与权限
- Sudo使用:
update-ingress命令需要sudo权限来写入系统目录和重启cloudflared服务。 - 最小权限原则:使用
references/sudoers.example中的模式配置受限的sudo访问权限。 - 令牌隔离:确保API令牌的范围仅限于特定区域和权限。
参考
- Sudoers模式:参见 references/sudoers.example。
- 隧道逻辑:参见 references/tunnel-guide.md。