Authelia项目Docker部署指南

Authelia项目Docker部署指南

【免费下载链接】authelia The Single Sign-On Multi-Factor portal for web apps 【免费下载链接】authelia 项目地址: https://gitcode.com/GitHub_Trending/au/authelia

前言

Authelia是一款开源的认证与授权服务,可以作为单点登录(SSO)解决方案的前置保护层。本文将详细介绍如何在Docker环境中部署Authelia服务,帮助开发者快速搭建安全认证系统。

容器镜像说明

Authelia官方提供了多个容器镜像源,包括:

  • authelia/authelia
  • docker.io/authelia/authelia

这些镜像都包含相同的内容,用户可以根据自己的网络环境选择合适的镜像源。

环境准备

在开始部署前,强烈建议新手用户先了解Authelia的基本概念和工作原理。需要准备以下内容:

  1. 确保已安装Docker和Docker Compose
  2. 准备配置文件目录结构
  3. 生成必要的密钥文件

容器配置详解

环境变量

Authelia容器支持以下特殊环境变量:

变量名默认值说明
PUID0容器运行时降权后的用户ID
PGID0容器运行时降权后的组ID
UMASKN/A设置容器运行时的umask值

权限管理

容器运行时权限有三种管理方式:

  1. 推荐方式:通过Docker daemon配置直接指定运行用户

    • 优点:进程不会获得特权
    • 注意:需要手动设置文件系统权限
  2. 环境变量方式:使用PUID/PGID环境变量

    • 优点:自动设置文件权限
    • 缺点:入口点会以root身份运行
  3. 用户命名空间:使用Docker的用户命名空间功能

    • 高级用法,需要额外配置

Docker Compose部署方案

独立部署示例

这是最基本的部署方式,仅包含Authelia服务本身。

前提条件
  1. 配置文件路径:data/authelia/config/configuration.yml
  2. 密钥目录:data/authelia/secrets/,包含:
    • JWT_SECRET:用于密码重置的JWT密钥
    • SESSION_SECRET:会话密钥
    • STORAGE_PASSWORD:PostgreSQL密码
    • STORAGE_ENCRYPTION_KEY:存储加密密钥
  3. 使用PostgreSQL数据库
  4. 存在名为net的外部桥接网络
使用Docker Secrets
secrets:
  JWT_SECRET:
    file: './data/authelia/secrets/JWT_SECRET'
  SESSION_SECRET:
    file: './data/authelia/secrets/SESSION_SECRET'
  STORAGE_PASSWORD:
    file: './data/authelia/secrets/STORAGE_PASSWORD'
  STORAGE_ENCRYPTION_KEY:
    file: './data/authelia/secrets/STORAGE_ENCRYPTION_KEY'

services:
  authelia:
    image: 'docker.io/authelia/authelia:latest'
    restart: 'unless-stopped'
    networks:
      net: {}
    secrets: 
      - JWT_SECRET
      - SESSION_SECRET
      - STORAGE_PASSWORD
      - STORAGE_ENCRYPTION_KEY
    environment:
      AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET_FILE: '/run/secrets/JWT_SECRET'
      AUTHELIA_SESSION_SECRET_FILE: '/run/secrets/SESSION_SECRET'
      AUTHELIA_STORAGE_POSTGRES_PASSWORD_FILE: '/run/secrets/STORAGE_PASSWORD'
      AUTHELIA_STORAGE_ENCRYPTION_KEY_FILE: '/run/secrets/STORAGE_ENCRYPTION_KEY'
    volumes:
      - './data/authelia/config:/config'

networks:
  net:
    external: true
使用卷挂载密钥
services:
  authelia:
    image: 'docker.io/authelia/authelia:latest'
    restart: 'unless-stopped'
    networks:
      net: {}
    environment:
      AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET_FILE: '/secrets/JWT_SECRET'
      AUTHELIA_SESSION_SECRET_FILE: '/secrets/SESSION_SECRET'
      AUTHELIA_STORAGE_POSTGRES_PASSWORD_FILE: '/secrets/STORAGE_PASSWORD'
      AUTHELIA_STORAGE_ENCRYPTION_KEY_FILE: '/secrets/STORAGE_ENCRYPTION_KEY'
    volumes:
      - './data/authelia/config:/config'
      - './data/authelia/secrets:/secrets'

networks:
  net:
    external: true

常见问题解答

如何在宿主机上运行反向代理?

如果需要在宿主机而非容器中运行反向代理,需要添加端口映射配置:

services:
  authelia:
    ports:
      - '127.0.0.1:9091:9091'

这样配置后,宿主机上的服务可以通过127.0.0.1:9091访问Authelia。

如何调试容器启动问题?

当日志无法提供足够信息时,可以尝试以下调试方法:

  1. 创建调试用的compose.debug.yml文件:
services:
  authelia:
    healthcheck:
      disable: true
    environment:
      AUTHELIA_LOG_LEVEL: 'trace'
    command: 'sleep 3300'
  1. 启动容器:
docker compose up -f compose.yml -f compose.debug.yml -d
  1. 进入容器交互模式:
docker exec -it authelia sh
authelia

最佳实践建议

  1. 生产环境建议使用特定版本标签而非latest
  2. 密钥文件应设置严格的权限(600)
  3. 定期备份配置文件和数据
  4. 监控容器资源使用情况
  5. 保持Authelia版本更新

通过以上步骤,您应该能够成功在Docker环境中部署Authelia服务。根据实际需求调整配置,确保系统安全稳定运行。

【免费下载链接】authelia The Single Sign-On Multi-Factor portal for web apps 【免费下载链接】authelia 项目地址: https://gitcode.com/GitHub_Trending/au/authelia

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值