各位佬好,我最近在折腾一套自用的 Docker 服务平台,想请教一下前端的认证/登录层应该怎么选型,问下大家实际自托管多个 Web 服务时,一般是怎么做统一登录保护的?
我的需求大概是这样的:
我会在服务器上部署多个自用 Web 服务,比如一些前端页面、数据展示面板、API 管理界面等。这些服务基本只给我自己或者少数可信用户使用,不希望直接公网裸奔。
理想访问流程是:
访问 https://app.example.com
↓
网关检查当前是否已登录
↓
未登录或登录状态过期
↓
跳转到 https://app.example.com/login
↓
登录成功后跳回原来的前端页面
我希望实现的核心能力:
-
所有 Docker 服务可以共用一套登录系统,不需要每个服务自己写登录逻辑。
-
只维护一套用户和密码,后续新增服务时可以很方便地接入。
-
支持登录失败次数限制、防暴力破解、黑名单或封禁机制。
-
支持 Docker Compose 部署,方便迁移和备份。
-
内存占用不要太高,适合小服务器长期运行。
-
后续如果服务增多,可以比较方便地扩展,比如新增一个服务后,只需要加域名、端口和认证规则。
我目前调研到几个方案:
方案 1:Authelia
看起来比较轻量,适合反向代理前面做统一认证。支持 forward_auth、MFA、访问规则、失败登录封禁等。缺点可能是用户管理界面比较弱,更偏配置文件维护。
初版就是尝试的这个,但是感觉有点简陋的界面…
方案 2:Authentik
感觉像是更完整的自托管身份平台,有 Web 管理后台,可以管理用户、组、应用、登录流程、Proxy Provider / Outpost 等。看起来更适合以后服务多了之后统一管理权限,但资源消耗和部署复杂度应该比 Authelia 高一些。
方案 3:Keycloak
更企业级,OIDC / OAuth2 / SAML 都很完整,适合多租户、标准身份体系。但我感觉对个人自用服务来说可能有点重,配置复杂度也比较高。
方案 4:OAuth2 Proxy + 第三方登录
可以接 GitHub / Google / Microsoft / Keycloak / Authentik 等 OAuth2/OIDC Provider。优点是轻量,可以直接用第三方账号登录;缺点是它本身不是完整用户系统,如果想自己维护本地用户,可能还需要搭配其他身份提供方。
方案 5:ZITADEL
看起来更偏开发者平台和 SaaS 身份基础设施,能力很强,但我不确定个人服务器自用是否有必要。
我现在比较纠结的是:
-
自用 Docker 服务平台,应该用什么方案会更好一些。
-
如果只允许我自己的 GitHub 账号登录,用 OAuth2 Proxy 是否会更简单?
-
对于小服务器,比如 2C2G / 4G 内存这种配置,哪种方案长期运行更稳?
3 个帖子 - 3 位参与者