caddy认证插件下载
自托管认证系统选型对比
在容器化(Podman/Docker)部署环境下,主流的自托管身份验证系统各具特点,需根据服务器资源与实际需求进行选择:
| 维度 | Authentik | Authelia | Caddy-Security (Authp) |
|---|---|---|---|
| 核心定位 | 全功能身份提供商 (IdP) | 轻量级反向代理认证网关 | Caddy 专属轻量级认证插件 |
| 配置方式 | Web UI 界面为主 | YAML 配置文件为主 | Caddyfile 配置 + Web UI 门户 |
| 资源消耗 | 较高(微服务架构,需多容器) | 极低(Go 语言编写,单二进制) | 极低(与 Caddy 共享进程,约 30-80MB) |
| 最低配置 | 1核 2GB 内存(1GB 易 OOM 崩溃) | 1核 512MB 内存 | 1核 512MB 内存 |
| 数据库依赖 | 必须(PostgreSQL + Redis) | 非必须(默认支持内嵌 SQLite) | 不需要(默认保存为本地 JSON 文件) |
| 用户自服务 | 支持(注册、找回密码、绑定 2FA) | 非常有限(不支持公开注册) | 支持(用户门户、绑定 2FA/生物识别) |
1核1G 环境下的最佳选择:Caddy-Security
对于 1核1G 内存的云服务器,Caddy-Security 是兼顾“轻量化”与“可视化管理”的理想方案。
- 优势:它直接编译进 Caddy 内部,无需额外运行独立容器,内存占用极小。自带现代化的 Web 登录页和用户门户,支持用户自助绑定双因子认证(2FA)及社交登录(OAuth2/OIDC)。
- 局限:与 Caddy 反向代理深度绑定,若更换网关(如 Nginx)则无法平滑迁移。
离线环境下的“偷梁换柱”挂载部署方案
在服务器无法连接外网(包括 GitHub)且内存仅有 1G 的情况下,直接在服务器上进行源码编译或通过 Podman 构建镜像会瞬间飙高磁盘 IO 和 CPU,导致服务器卡死。最稳妥的方案是:在外部联网电脑下载定制的二进制文件,上传后直接挂载覆盖官方容器内的标准文件。
环境前提
- 宿主机系统:Debian (x86_64 / amd64 架构)
- 已有本地镜像:
docker.1ms.run/caddy:latest(约 63.4 MB)
详细操作步骤
步骤一:在联网电脑上下载定制二进制文件
- 访问 Caddy 官方定制下载页面:
[caddyserver.com/download](https://caddyserver.com/download) - 在左侧 Platform 下拉框中,根据服务器架构精准选择:
Linux amd64。 - 在右侧 Plugins 搜索框中输入
caddy-security。 - 勾选
[github.com/greenpau/caddy-security](https://github.com/greenpau/caddy-security)。 - 点击页面下方的 Download 按钮,下载得到一个名为
caddy的二进制程序(无后缀名,切勿直接去 GitHub 下载纯源码 ZIP 包)。
步骤二:上传并配置执行权限
- 将下载好的
caddy二进制文件通过 SCP 或 SFTP 工具上传到 Debian 服务器的指定目录(例如:/root/caddy_bin/caddy)。 在服务器终端执行命令,务必赋予该文件可执行权限:
chmod +x /root/caddy_bin/caddy
步骤三:通过 Podman 挂载运行
使用现有的官方纯净版镜像启动容器,通过卷挂载(-v)将带有插件的二进制文件替换进去,并加上 :ro(只读)保护:
podman run -d --name my-caddy \
-p 80:80 -p 443:443 \
-v ./Caddyfile:/etc/caddy/Caddyfile \
-v ./data:/data \
-v ./config:/config \
-v /root/caddy_bin/caddy:/usr/bin/caddy:ro \
docker.1ms.run/caddy:latest
步骤四:验证插件是否生效
容器成功运行后,执行以下命令查看 Caddy 已加载的模块:
podman exec -it my-caddy caddy list-modules | grep security
若输出结果中包含 http.handlers.security,说明插件已成功在离线环境下加载。
挂载法与镜像构建法的性能对比
| 评估维度 | 直接挂载文件(偷梁换柱法) | 重新构建/导入新镜像 |
|---|---|---|
| 运行期资源占用 | 极低(两者运行的二进制完全相同) | 极低(两者运行的二进制完全相同) |
| 构建/导入期 IO | 零(完全在外部机器完成) | 极高(构建临时层或解压 Tar 包会瞬间飙满磁盘 IO) |
| 可移植性 | 较差(迁移时需同时带走配置文件和物理二进制文件) | 极佳(封装为独立镜像,随处一键拉起) |
| 版本管理 | 较模糊(容器标签失去参考意义) | 清晰(可通过镜像 Tag 精准控制) |
结论:对 1核1G 且磁盘性能有限的低配云服务器,直接挂载法是最佳实践。它完全转嫁了编译和解压的负担,避免了因 IO 爆发导致的服务器假死或失联。