compose.yaml.j2 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. services:
  2. {{ service_name | default('authentik-server') }}:
  3. image: ghcr.io/goauthentik/server:2025.6.3
  4. container_name: {{ container_name | default('authentik-server') }}
  5. command: server
  6. env_file:
  7. - .env.authentik
  8. {% if ports_enabled %}
  9. ports:
  10. - "{{ ports_http | default(9000) }}:9000"
  11. - "{{ ports_https | default(9443) }}:9443"
  12. {% endif %}
  13. {% if network_enabled %}
  14. networks:
  15. - {{ network_name | default('bridge') }}
  16. {% endif %}
  17. {% if traefik_enabled %}
  18. labels:
  19. - traefik.enable=true
  20. - traefik.http.services.{{ service_name | default('authentik') }}.loadbalancer.server.port=9000
  21. - traefik.http.services.{{ service_name | default('authentik') }}.loadbalancer.server.scheme=http
  22. - traefik.http.routers.{{ service_name | default('authentik') }}-http.rule=Host(`{{ traefik_host }}`)
  23. - traefik.http.routers.{{ service_name | default('authentik') }}-http.entrypoints={{ traefik_entrypoint | default('web') }}
  24. {% if traefik_tls_enabled %}
  25. - traefik.http.routers.{{ service_name | default('authentik') }}-https.rule=Host(`{{ traefik_host }}`)
  26. - traefik.http.routers.{{ service_name | default('authentik') }}-https.entrypoints={{ traefik_tls_entrypoint | default('websecure') }}
  27. - traefik.http.routers.{{ service_name | default('authentik') }}-https.tls=true
  28. - traefik.http.routers.{{ service_name | default('authentik') }}-https.tls.certresolver={{ traefik_tls_certresolver }}
  29. {% endif %}
  30. {% endif %}
  31. volumes:
  32. - ./media:/media
  33. - ./custom-templates:/templates
  34. depends_on:
  35. - {{ service_name | default('authentik') }}-postgres
  36. - {{ service_name | default('authentik') }}-redis
  37. restart: {{ restart_policy | default('unless-stopped') }}
  38. {{ service_name | default('authentik') }}-worker:
  39. image: ghcr.io/goauthentik/server:2025.6.3
  40. container_name: {{ service_name | default('authentik') }}-worker
  41. command: worker
  42. env_file:
  43. - .env.authentik
  44. user: root
  45. volumes:
  46. - /run/docker.sock:/run/docker.sock
  47. - ./media:/media
  48. - ./certs:/certs
  49. - ./custom-templates:/templates
  50. {% if network_enabled %}
  51. networks:
  52. - {{ network_name | default('bridge') }}
  53. {% endif %}
  54. depends_on:
  55. - {{ service_name | default('authentik') }}-postgres
  56. - {{ service_name | default('authentik') }}-redis
  57. restart: {{ restart_policy | default('unless-stopped') }}
  58. {{ service_name | default('authentik') }}-redis:
  59. image: docker.io/library/redis:8.2.1
  60. container_name: {{ service_name | default('authentik') }}-redis
  61. command: --save 60 1 --loglevel warning
  62. healthcheck:
  63. test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
  64. start_period: 20s
  65. interval: 30s
  66. retries: 5
  67. timeout: 3s
  68. volumes:
  69. - redis_data:/data
  70. {% if network_enabled %}
  71. networks:
  72. - {{ network_name | default('bridge') }}
  73. {% endif %}
  74. restart: {{ restart_policy | default('unless-stopped') }}
  75. {% if not database_external %}
  76. {{ service_name | default('authentik') }}-postgres:
  77. image: docker.io/library/postgres:17.6
  78. container_name: {{ service_name | default('authentik') }}-db
  79. env_file:
  80. - .env.postgres
  81. healthcheck:
  82. test: ["CMD-SHELL", "pg_isready -U {{ database_user | default('authentik') }}"]
  83. start_period: 30s
  84. interval: 10s
  85. timeout: 10s
  86. retries: 5
  87. volumes:
  88. - database_data:/var/lib/postgresql/data
  89. {% if network_enabled %}
  90. networks:
  91. - {{ network_name | default('bridge') }}
  92. {% endif %}
  93. restart: {{ restart_policy | default('unless-stopped') }}
  94. {% endif %}
  95. volumes:
  96. database_data:
  97. driver: local
  98. redis_data:
  99. driver: local
  100. {% if network_enabled %}
  101. networks:
  102. {{ network_name | default('bridge') }}:
  103. {% if network_external %}
  104. external: true
  105. {% endif %}
  106. {% endif %}