English | 简体中文
这个 GitHub Actions 工作流可以自动编译带有自定义插件的 Caddy 服务器。
- ✅ 支持自定义 Caddy 版本
- ✅ 通过配置文件管理插件列表
- ✅ 支持多平台编译(Linux、macOS、Windows)
- ✅ 支持多架构(amd64、arm64)
- ✅ 自动创建 Release 发布
- ✅ 定时自动构建
- ✅ 手动触发构建
- Fork 或创建新仓库
- 将工作流文件保存到
.github/workflows/build-caddy.yml - 创建
plugins.txt文件配置需要的插件 - 重要:确保仓库 Actions 有写入权限
- 进入仓库
Settings→Actions→General - 找到
Workflow permissions - 选择
Read and write permissions - 点击
Save
- 进入仓库
编辑 plugins.txt 文件,添加你需要的插件:
# DNS 插件
--with github.com/caddy-dns/cloudflare
--with github.com/caddy-dns/alidns
# 其他插件
--with github.com/mholt/caddy-ratelimit
--with github.com/mholt/caddy-l4
方式一:手动触发
- 进入仓库的 Actions 页面
- 选择 "Build Caddy with Custom Plugins"
- 点击 "Run workflow"
- 选择 Caddy 版本(留空使用最新版)
- 选择是否启用多平台编译(勾选后会编译 Linux/macOS/Windows 多个平台)
方式二:定时自动触发
- 每周一凌晨 2 点自动构建最新版本(仅 Linux amd64)
注意:修改
plugins.txt或推送代码不会触发构建,避免不必要的编译。
- 构建 Linux amd64 版本
- 生成 Artifact 和 tar.gz 压缩包
支持以下平台:
- Linux (amd64, arm64)
- macOS (amd64, arm64)
- Windows (amd64)
勾选 "Enable multi-architecture build" 选项后会编译所有平台版本并创建 Release。
on:
workflow_dispatch: # 手动触发
inputs:
caddy_version:
description: 'Caddy version'
default: 'latest'
enable_multiarch:
description: 'Enable multi-architecture build'
type: boolean
default: false
schedule: # 定时触发
- cron: '0 2 * * 1' # 每周一凌晨2点(UTC时间)修改定时构建时间:
schedule:
- cron: '0 2 * * 1' # 每周一凌晨2点
- cron: '0 0 1 * *' # 每月1号凌晨
- cron: '0 0 * * 0' # 每周日凌晨如需添加推送触发,可以添加:
push: # 代码推送触发
branches:
- main
paths:
- 'plugins.txt'修改 Go 版本:
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.21' # 修改这里修改构建平台:
strategy:
matrix:
include:
- goos: linux
goarch: amd64
# 添加更多平台...github.com/caddy-dns/cloudflare- Cloudflare DNSgithub.com/caddy-dns/alidns- 阿里云 DNSgithub.com/caddy-dns/tencentcloud- DNSPodgithub.com/caddy-dns/route53- AWS Route53
github.com/mholt/caddy-ratelimit- 速率限制github.com/mholt/caddy-l4- Layer 4 代理github.com/mholt/caddy-dynamicdns- 动态 DNSgithub.com/caddyserver/forwardproxy- 正向代理github.com/greenpau/caddy-security- 安全认证github.com/mholt/caddy-webdav- WebDAV 支持
访问 Caddy 官方插件列表 或搜索 GitHub 上的 caddy- 相关项目。
从 Actions 页面或 Releases 页面下载对应平台的文件。
Linux/macOS:
# 解压
tar -xzf caddy-*.tar.gz
# 赋予执行权限
chmod +x caddy
# 移动到系统路径(可选)
sudo mv caddy /usr/local/bin/
# 查看版本和插件
caddy version
caddy list-modulesWindows:
# 解压 zip 文件后直接运行
.\caddy.exe version
.\caddy.exe list-modules运行以下命令查看已安装的插件:
caddy list-modules | grep dns
caddy list-modules | grep security在 plugins.txt 中指定版本:
--with github.com/caddy-dns/cloudflare@v1.2.3
修改工作流文件中的构建命令:
xcaddy build $VERSION \
--with github.com/caddy-dns/cloudflare \
--with github.com/mholt/caddy-ratelimitQ: 构建失败,提示 "GitHub release failed with status: 403"? A: 这是权限问题。解决方法:
- 进入仓库的
Settings→Actions→General - 滚动到
Workflow permissions部分 - 选择
Read and write permissions - 勾选
Allow GitHub Actions to create and approve pull requests(可选) - 点击
Save保存 - 重新运行工作流
Q: 其他构建失败怎么办? A: 检查 Actions 日志,通常是插件路径错误或版本不兼容。
Q: 如何添加私有插件? A: 需要配置 Git 认证,在工作流中添加相应的 token。
Q: 编译时间过长? A: 可以使用 Go 模块缓存,或减少构建的平台数量。
本工作流模板遵循 MIT 许可证。Caddy 本身遵循 Apache 2.0 许可证。
欢迎提交 Issue 和 Pull Request!