当前位置: 首页 > news >正文

别再手动改hosts了!用Docker Compose一键部署Authelia SSO,顺便搞定Traefik反向代理

一键部署Authelia SSO与Traefik反向代理的Docker Compose实战指南在当今复杂的网络环境中管理多个Web应用的认证流程往往成为开发者的痛点。手动配置hosts文件、逐个设置访问权限不仅耗时耗力还容易出错。本文将介绍如何利用Docker Compose快速搭建Authelia单点登录系统并集成Traefik作为反向代理实现开箱即用的安全访问控制方案。1. 技术栈概述与准备工作Authelia是一款开源的单点登录(SSO)和双因素认证(2FA)系统专为自托管应用设计。它支持多种认证方式能与反向代理无缝集成为内部应用提供统一的认证入口。Traefik则是现代化的反向代理和负载均衡工具支持自动服务发现和Lets Encrypt证书管理。部署前准备已安装Docker和Docker Compose的Linux服务器推荐Ubuntu 20.04有效的域名用于SSL证书申请基础命令行操作知识提示虽然本文使用.example.com作为演示域名实际部署时请替换为您自己的域名。2. Docker Compose编排文件解析以下是经过优化的docker-compose.yml文件集成了Authelia、Redis、Traefik和演示站点version: 3.8 networks: sso-network: driver: bridge services: authelia: image: authelia/authelia:latest container_name: authelia volumes: - ./authelia/config:/config networks: - sso-network environment: - TZAsia/Shanghai labels: - traefik.enabletrue - traefik.http.routers.authelia.ruleHost(auth.yourdomain.com) - traefik.http.routers.authelia.entrypointswebsecure - traefik.http.routers.authelia.tls.certresolverletsencrypt - traefik.http.services.authelia.loadbalancer.server.port9091 redis: image: redis:alpine container_name: redis volumes: - ./redis/data:/data networks: - sso-network restart: unless-stopped traefik: image: traefik:v2.6 container_name: traefik ports: - 80:80 - 443:443 volumes: - ./traefik/config:/etc/traefik - /var/run/docker.sock:/var/run/docker.sock networks: - sso-network command: - --api.insecuretrue - --providers.dockertrue - --providers.docker.exposedbydefaultfalse - --entrypoints.web.address:80 - --entrypoints.websecure.address:443 - --certificatesresolvers.letsencrypt.acme.emailyouremail.com - --certificatesresolvers.letsencrypt.acme.storage/etc/traefik/acme.json - --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypointweb whoami: image: containous/whoami container_name: whoami networks: - sso-network labels: - traefik.enabletrue - traefik.http.routers.whoami.ruleHost(app.yourdomain.com) - traefik.http.routers.whoami.entrypointswebsecure - traefik.http.routers.whoami.tls.certresolverletsencrypt - traefik.http.routers.whoami.middlewaresautheliadocker关键配置说明使用独立的Docker网络sso-network确保服务间隔离Authelia配置挂载到本地./authelia/config目录Traefik配置自动SSL证书申请Whoami服务作为演示应用受Authelia保护3. Authelia详细配置在./authelia/config目录下创建两个关键配置文件configuration.ymltheme: light jwt_secret: your_secure_jwt_secret_here default_redirection_url: https://app.yourdomain.com server: host: 0.0.0.0 port: 9091 authentication_backend: file: path: /config/users_database.yml password: algorithm: argon2id iterations: 3 memory: 65536 parallelism: 4 access_control: default_policy: deny rules: - domain: auth.yourdomain.com policy: bypass - domain: app.yourdomain.com policy: two_factor session: name: authelia_session secret: your_session_secret_here expiration: 1h inactivity: 5m domain: yourdomain.com storage: encryption_key: your_encryption_key_here local: path: /config/db.sqlite3 notifier: filesystem: filename: /config/notifications.txtusers_database.ymlusers: admin: displayname: Admin User password: $argon2id$v19$m65536,t3,p4$dGhlc2FsdHlzdHJpbmc$thehashedpassword email: adminyourdomain.com groups: - admins developer: displayname: Developer password: $argon2id$v19$m65536,t3,p4$YW5vdGhlcnNhbHQ$anotherhashedpassword email: devyourdomain.com生成密码哈希的命令docker run --rm authelia/authelia:latest authelia hash-password yourpassword4. Traefik配置优化在./traefik/config目录下创建traefik.ymlapi: dashboard: true insecure: true entryPoints: web: address: :80 http: redirections: entryPoint: to: websecure scheme: https websecure: address: :443 providers: docker: endpoint: unix:///var/run/docker.sock exposedByDefault: false certificatesResolvers: letsencrypt: acme: email: youremail.com storage: /etc/traefik/acme.json httpChallenge: entryPoint: web性能优化参数serversTransport: maxIdleConnsPerHost: 200 forwardingTimeouts: dialTimeout: 30s responseHeaderTimeout: 0s log: level: INFO format: json5. 部署与测试流程启动服务栈docker-compose up -d验证服务状态docker-compose ps测试访问流程直接访问https://app.yourdomain.com应跳转到Authelia登录页使用users_database.yml中的凭证登录成功认证后应返回Whoami服务页面管理界面Traefik仪表板:https://traefik.yourdomain.comAuthelia管理API:https://auth.yourdomain.com/api/常见问题排查# 查看Authelia日志 docker logs authelia # 检查Redis连接 docker exec -it redis redis-cli ping # 验证Traefik配置 docker exec traefik traefik check-config6. 生产环境增强建议安全加固措施替换所有示例中的密钥和密码启用数据库存储替代SQLite配置SMTP通知服务设置适当的备份策略性能扩展方案# 在docker-compose.yml中添加 authelia: deploy: resources: limits: cpus: 1 memory: 512M reservations: memory: 256M healthcheck: test: [CMD, authelia, healthcheck] interval: 30s timeout: 5s retries: 3监控集成Prometheus指标端点日志收集到ELK或Loki健康检查报警实际部署中发现合理配置会话超时和密码策略能显著提升安全性。对于团队协作场景建议结合LDAP或Active Directory进行用户管理而非文件存储方式。
http://www.zskr.cn/news/1319017.html

相关文章:

  • python系列【仅供参考】:mongo4.0.0 加用户认证 motor和pymongo的auth连接
  • RISC-V开发板结合Python实现B站消息监测:硬件极客的IoT实践
  • 告别黑盒渲染!用Nvdiffrast手把手教你从零搭建可微渲染管线(PyTorch版)
  • 社会学论文降AI工具免费推荐:2026年社会学毕业论文AIGC超标4.8元一次过知网完整指南 - 还在做实验的师兄
  • 零售自助收银系统架构全解析:从硬件选型到防损运营
  • 怕AI论文被导师秒识破?2026年亲测有效的4个‘降AIGC率’方法,附免费工具入口! - 降AI实验室
  • 如何在3分钟内免费安装Chrome视频下载插件:新手完整指南
  • 深圳超出圈的纹眉老店,久匠凭什么征服同城女生?十年技术实力过硬 - 企业博客发布
  • 专业的成都儿童摄影底片全送服务好
  • 从DVWA靶场看Web安全:一个漏洞的四种防御等级,你的代码在第几层?
  • Perplexity本地化部署终极方案:支持中文长文本解析、自定义工具调用与企业微信集成(仅限内网环境)
  • 0基础装完龙虾不知道干嘛?用15分钟帮你激活造物主身份
  • 【紧急预警】Perplexity症状查询功能存在3类合规风险!NMPA最新AI辅助诊断备案要求下,基层医院必须在72小时内完成的5项配置校准
  • 嵌入式工程师进阶指南:从体系结构到系统设计的成长路径与核心书单
  • Hitboxer终极指南:免费专业解决游戏按键冲突的SOCD重映射工具
  • D2DX完整指南:5个简单步骤让《暗黑破坏神2》在现代PC上完美运行
  • FPGA新手避坑指南:手把手教你配置Xilinx 7系列GTX的10G光通信IP核(Vivado 2022.1)
  • 终极窗口隐身术:3分钟学会用Boss-Key打造你的数字安全区
  • Python开发者如何快速接入Taotoken调用多模型API服务
  • 2026年5月市政污水SS浓度计公司排名:工程选型实测榜 - 仪表品牌排行榜
  • 华为2288H V5服务器U盘装CentOS 7.5,手把手解决‘dracut timeout’报错
  • 1345. 跳跃游戏 IV
  • Backtrader 终极指南:Python量化交易回测框架完全解析
  • Perplexity财经数据查询:5步精准定位上市公司财报关键指标,错过等于丢掉决策先机
  • 从EduCoder实训到真实项目:如何用Java+JSP+百度地图API分析共享单车热门路线
  • 绕过中间商!三步教你找到真正的硫化氢检测仪源头厂家 - 品牌推荐大师
  • 告别SSH断连烦恼:用Tmux在服务器后台挂程序,保姆级配置教程(含Mac本地安装)
  • 2026年5月DN50管段式电磁流量计国产厂家精选推荐 - 仪表品牌排行榜
  • Kubernetes etcd 技术指南
  • 透明计费如何帮助精准预测与控制AI功能月度开支