### [雨云搭建 Authelia 统一登录网关](https://www.jiyueip.com/article/12340) **Published:** 2026-07-28T11:01:15 **Author:** 斑斓助理 **Excerpt:** 用雨云 KVM 云服务器部署 Authelia 统一认证网关:Nginx auth_request 给多应用加 SSO 与 TOTP 二次验证,含优惠码 admin01 五折。 前面陆陆续续在雨云上搭了不少自托管应用——网盘、密码库、书签、看板……每个都单独记账号密码,既难记又不安全,有的应用自身还不支持二次验证。Authelia 是一个开源认证网关,放在反向代理前面,给多个内部应用提供统一登录(SSO)和 TOTP 二次验证。本文在雨云 KVM 云服务器上部署 Authelia,并通过 Nginx 的 `auth_request` 把 Vaultwarden、Cloudreve 等应用护在身后,做到”一次登录、处处通行”。 ## 为什么需要统一认证网关 - **一处登录,处处通行**:多个应用共享一套账号和会话,不用每个都登一遍。 - **统一开 2FA**:很多轻量应用自身没有二次验证,交给网关统一做 TOTP,安全水位整体拉高。 - **集中防护**:弱口令、爆破、会话过期都在网关这一层处理,后面的应用可以关掉各自的公网暴露。 - **和监控类工具不重叠**:它管的是”谁能进”,不是”网站在不在”(那是 Uptime Kuma 的事)。 ## 一、架构与前置 典型架构是:用户 → Nginx 反向代理 → Authelia 校验 → 后端应用。 前置准备: 1. 一台雨云 KVM 云服务器(优惠码 **admin01** 五折,7 天无理由退款),系统 Debian 12,到手先按 [VPS 到手第一件事](https://www.jiyueip.com/article/12226) 做安全初始化。 2. 已经跑好 Nginx 反代(可参考 [手动搭建 LNMP](https://www.jiyueip.com/article/12237) 或后面用 [Portainer 管容器](https://www.jiyueip.com/article/12310)),并且你的应用已经通过域名访问。 3. 新手选型看 [VPS 怎么选不踩坑](https://www.jiyueip.com/article/12235)。 Authelia 自身监听 `9091`,它不直接对外服务页面,而是由 Nginx 通过子请求调用。 ## 二、用 Docker 跑起 Authelia 目录与 `docker-compose.yml` 示例: ```yaml services: authelia: image: authelia/authelia:latest container_name: authelia restart: unless-stopped volumes: - ./config:/config ports: - "9091:9091" environment: - TZ=Asia/Shanghai ``` `config/configuration.yml` 关键点(节选): ```yaml theme: dark jwt_secret: 换成随机长字符串 session: secret: 换成另一个随机长字符串 expiration: 1h inactivity: 30m access_control: default_policy: deny rules: - domain: auth.example.com policy: bypass # 登录页自身放行 - domain: app.example.com policy: one_factor # 至少密码 - domain: secret.example.com policy: two_factor # 强制二次验证 totp: issuer: 雨云自托管 ``` 用户可以直接写在 `config/users_database.yml` 里(演示够用),生产也可接 LDAP/OpenID。生成随机密钥用: ```bash openssl rand -hex 32 ``` ## 三、Nginx 接入 auth\_request 在 Nginx 的 server 块里,先放一段 Authelia 登录页与校验端点的转发: ```nginx location /authelia { internal; proxy_pass http://127.0.0.1:9091; proxy_set_header Host $host; } location /authelia/ { proxy_pass http://127.0.0.1:9091/; } ``` 然后给需要保护的应用加一行校验(以 [Vaultwarden 密码库](https://www.jiyueip.com/article/12245) 或 [Cloudreve 网盘](https://www.jiyueip.com/article/12334) 为例): ```nginx location / { auth_request /authelia; error_page 401 =302 https://auth.example.com/?rd=$scheme://$http_host$request_uri; proxy_pass http://127.0.0.1:应用端口; } ``` 注意:Authelia 的登录域名(上面 `bypass` 那条)一定要放行,否则会自己把自己挡在门外,陷入登录死循环。 ## 四、把应用护进来 按上面的模板,把 [Vaultwarden](https://www.jiyueip.com/article/12245)、[Cloudreve](https://www.jiyueip.com/article/12334)、甚至 [Nextcloud 网盘](https://www.jiyueip.com/article/11975) 的 location 都加上 `auth_request`。效果: - 访客先被弹到统一登录页,输密码 + TOTP; - 通过后带上会话 Cookie,才能进后端应用; - 后端应用可以只监听内网或 `127.0.0.1`,进一步缩小攻击面。 ## 合规提醒 认证网关只用于保护你自己部署、拥有合法权限的应用,使用时注意: 1. 遵守《网络安全法》及相关规定,不将认证机制用于突破任何网络管控或他人系统的鉴权。 2. JWT 密钥、session 密钥、2FA 恢复码都属于高敏感凭据,不要写进会公开的地方,定期轮换。 3. 仅对授权范围内的应用启用保护,不要对无关第三方服务做中间人式拦截。 **Tags:** 云服务器, 建站教程, 雨云, 雨云优惠码 **Categories:** 行业洞察 ---