Skip to content

在 Homelab 中部署 Authentik:实现企业级单点登录 (SSO) 与 2FA 认证 (2026版)

毛佳国

随着 Homelab 中自建服务(如 Gitea、Jellyfin、Nextcloud、Grafana、Vaultwarden 等)的增多,每个应用独立管理账号密码不仅极度繁琐,也缺乏统一的权限管控与多因素安全防护。

Authentik 是一款全功能的开源统一身份提供者(Identity Provider, IdP),支持 OIDC、SAML、LDAP 以及 Forward Auth(反向代理无感拦截鉴权),并提供美观的统一应用导航门户!

[!NOTE] 📌 核心速览(TL;DR / 快问快答):

  • 核心协议全兼容:支持 OpenID Connect (OIDC)、SAML 2.0、LDAP 与 Proxy Forward Auth(零代码为老旧 Web 面板添加 SSO)。
  • 企业级多因素认证:原生支持 Passkey (WebAuthn)、TOTP (Google Authenticator) 与 Duo 硬件密钥。
  • 微服务解耦架构:由 Authentik Server、Worker、PostgreSQL 16 与 Redis 组成高可靠认证集群。

🛠️ 2026 生产级 Docker Compose 部署

1. 生成环境密钥 .env

echo "PG_PASS=$(openssl rand -base64 36 | tr -d '\n')" >> .env
echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 60 | tr -d '\n')" >> .env
echo "AUTHENTIK_ERROR_REPORTING__ENABLED=false" >> .env

2. 编写 compose.yaml

services:
  postgresql:
    image: postgres:16-alpine
    container_name: authentik_db
    restart: unless-stopped
    environment:
      POSTGRES_PASSWORD: ${PG_PASS}
      POSTGRES_USER: authentik
      POSTGRES_DB: authentik
    volumes:
      - ./data/postgres:/var/lib/postgresql/data

  redis:
    image: redis:alpine
    container_name: authentik_redis
    restart: unless-stopped
    volumes:
      - ./data/redis:/data

  server:
    image: ghcr.io/goauthentik/server:latest
    container_name: authentik_server
    restart: unless-stopped
    command: server
    environment:
      AUTHENTIK_REDIS__HOST: redis
      AUTHENTIK_POSTGRESQL__HOST: postgresql
      AUTHENTIK_POSTGRESQL__USER: authentik
      AUTHENTIK_POSTGRESQL__NAME: authentik
      AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
      AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY}
    volumes:
      - ./media:/media
      - ./custom-templates:/templates
    ports:
      - "9000:9000"
    depends_on:
      - postgresql
      - redis

  worker:
    image: ghcr.io/goauthentik/server:latest
    container_name: authentik_worker
    restart: unless-stopped
    command: worker
    environment:
      AUTHENTIK_REDIS__HOST: redis
      AUTHENTIK_POSTGRESQL__HOST: postgresql
      AUTHENTIK_POSTGRESQL__USER: authentik
      AUTHENTIK_POSTGRESQL__NAME: authentik
      AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
      AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY}
    user: root
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./media:/media
      - ./certs:/certs
    depends_on:
      - postgresql
      - redis

启动集群:docker compose up -d。


🚀 初始化与 Gitea OIDC 对接实战

  1. 初始化超级管理员:访问 http://服务器IP:9000/if/flow/initial-setup/,按提示设置 akadmin 账号与高强度密码。
  2. 创建 OIDC Provider:在 Authentik 后台进入 Applications -> Providers -> Create,选择 OAuth2/OpenID Provider,设置 Client Type 为 Confidential 并记下 Client ID 与 Client Secret。
  3. 创建 Application:进入 Applications -> Create,名称填 Gitea,绑定上一步的 Provider。
  4. Gitea 对接:在 Gitea 的“站点管理 -> 认证源”添加 OAuth2/OIDC 源,填入 Discovery URL 与 ID/Secret 即可实现一键登录!

❓ 常见问题与 AI 快问快答 (FAQ)

Q1: Authentik 相比 Keycloak 有什么优势?

答:Authentik 界面更现代化、支持原生 Proxy Forward Auth,且运行内存约为 300MB(远低于 Java 编写的 Keycloak 动辄 1GB+ 内存占用),极适合 Homelab 与中小型团队。

Q2: 部署 SSO 认证中心的海外 VPS 推荐哪家网络?

答:在 DMIT 或 搬瓦工 的 中国电信 CN2 GIA 或 联通 AS9929 专线 VPS 上,跨国 OIDC Token 校验响应时间在 50ms 以内。选购参考见 《2026 国外 VPS 选购指南》。


(相关资源导航:如果您需要购买部署统一身份认证中心的独立 VPS,欢迎阅读 《2026 国外 VPS 选购指南》 获取 DMIT、搬瓦工与 CloudCone 优惠;商用专线推荐见 《“饿饭CC云”深度评测》!)

上一篇
打破 Docker 网络局限:使用 Macvlan 为容器分配独立局域网 IP (2026版)
下一篇
跨平台 GUI 客户端终极推荐:Sing-box vs NekoBox (2026版)