自托管认证系统选型对比

在容器化(Podman/Docker)部署环境下,主流的自托管身份验证系统各具特点,需根据服务器资源与实际需求进行选择:

维度AuthentikAutheliaCaddy-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)

详细操作步骤

步骤一:在联网电脑上下载定制二进制文件

  1. 访问 Caddy 官方定制下载页面:[caddyserver.com/download](https://caddyserver.com/download)
  2. 在左侧 Platform 下拉框中,根据服务器架构精准选择:Linux amd64
  3. 在右侧 Plugins 搜索框中输入 caddy-security
  4. 勾选 [github.com/greenpau/caddy-security](https://github.com/greenpau/caddy-security)
  5. 点击页面下方的 Download 按钮,下载得到一个名为 caddy 的二进制程序(无后缀名,切勿直接去 GitHub 下载纯源码 ZIP 包)。

步骤二:上传并配置执行权限

  1. 将下载好的 caddy 二进制文件通过 SCP 或 SFTP 工具上传到 Debian 服务器的指定目录(例如:/root/caddy_bin/caddy)。
  2. 在服务器终端执行命令,务必赋予该文件可执行权限:

    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 爆发导致的服务器假死或失联。

标签: none

添加新评论