You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DigitalOcean网络防火墙中放行Certbot验证与GitHub Action的连接?

如何在DigitalOcean网络防火墙中放行Certbot验证与GitHub Action的连接?

Hey,我来帮你搞定这个问题!你这种把 staging 环境设成私有后遇到的 Certbot 和 GitHub Action 连接问题太常见了,分两部分给你说具体怎么配置:

一、解决Certbot的验证问题

Certbot 默认用 HTTP-01 验证方式,需要 Let's Encrypt 的验证服务器能访问你的 Droplet 的 80 端口来确认域名所有权——这就是现在被你的防火墙挡住的原因。有两种解决思路:

方法1:放行Let's Encrypt的验证IP段(推荐长期使用)

  • 打开 DigitalOcean 控制面板,找到你绑定这个 Droplet 的防火墙规则
  • 添加一条入站规则:
    • 协议选择 TCP
    • 端口范围填 80
    • 来源填入 Let's Encrypt 公开的验证 IP 段(你可以通过命令 curl https://letsencrypt.org/docs/ip-addresses/ 获取最新的,这些IP段会定期更新,记得隔段时间检查下)
  • 保存规则后,重新运行 Certbot 验证,应该就能顺利通过了

方法2:改用DNS-01验证(无需开放80端口)

如果你不想开放80端口给外部,完全可以切换到DNS验证方式:

  • 运行 Certbot 时加上参数 certbot certonly --preferred-challenges dns
  • 按照提示配置你的域名服务商的 API 密钥,Certbot 会自动在你的DNS记录里添加验证条目,全程不需要开放80/443端口,特别适合私有 staging 环境

二、放行GitHub Action的连接

GitHub Actions 的运行器IP是动态的,但 GitHub 会定期公布官方的IP范围列表,你只需要把这些IP段添加到防火墙规则里就行:

  • 先获取最新的 GitHub Actions IP 范围:运行命令 curl https://api.github.com/meta,返回结果里的 actions 字段就是你需要的所有IP段
  • 回到 DigitalOcean 防火墙,添加一条入站规则:
    • 协议根据你的需求选(比如如果是部署用SSH就选TCP,端口22;如果是访问网站就选TCP,端口80/443)
    • 端口范围填你需要开放的端口
    • 来源把刚才获取到的所有 GitHub Actions IP 段逐一添加进去(DigitalOcean 防火墙支持同时添加多个IP段)
  • 保存规则后,GitHub Action 就能正常连接到你的 Droplet 了

另外还有个进阶小技巧:如果你的 GitHub Action 只是临时需要连接,也可以用 DigitalOcean 的 API 密钥在 Action 流程里临时添加当前运行器的IP到防火墙,完成部署后再移除——不过这个需要额外配置API权限,适合有一定技术基础的情况。

备注:内容来源于stack exchange,提问作者Juliver Galleto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 10:14:38