{ config, containerCfg, pkgs, lib, builder, name,... }: let version = "3"; serverCfg = config.syscfg.server; in { # paths = [{ # path="${serverCfg.dataPath}/authentik/media"; # owner = "1000:1000"; # mode = "0755"; # }{ # path="${serverCfg.dataPath}/authentik/templates"; # owner = "1000:1000"; # mode = "0755"; # }]; containers = { server = builder.mkContainer { subdomain = containerCfg.subdomain; image = "ghcr.io/traefik/traefik:${version}"; ip = containerCfg.ip; secret = name; extraLabels = { "traefik.http.routers.${containerCfg.subdomain}.priority" = "10"; "traefik.http.routers.${containerCfg.subdomain}.service" = "api@internal"; "traefik.http.routers.${containerCfg.subdomain}.middlewares" = "authentik"; "traefik.http.middlewares.authentik.forwardauth.address" = "http://authentik-server:9000/outpost.goauthentik.io/auth/traefik"; "traefik.http.middlewares.authentik.forwardauth.trustForwardHeader" = "true"; "traefik.http.middlewares.authentik.forwardauth.authResponseHeaders" = "X-authentik-username,X-authentik-groups,X-authentik-email,X-authentik-name,X-authentik-uid,X-authentik-jwt,X-authentik-meta-jwks,X-authentik-meta-outpost,X-authentik-meta-provider,X-authentik-meta-app,X-authentik-meta-version"; }; overrides = { cmd = [ "--api" "--providers.docker=true" "--global.checknewversion=false" "--global.sendanonymoususage=false" "--api.debug=true" "--api.insecure=true" "--api.dashboard=true" "--providers.docker.exposedByDefault=false" "--entrypoints.web.address=:80" "--entrypoints.web-secure.address=:443" "--entrypoints.web.http.redirections.entrypoint.to=web-secure" "--entrypoints.web.http.redirections.entrypoint.scheme=https" "--entrypoints.web-secure.transport.respondingtimeouts.readtimeout=0s" "--entrypoints.web-secure.proxyprotocol.trustedips=127.0.0.1/32,192.168.1.1/16,10.10.0.0/16" "--certificatesresolvers.default.acme.email=acme@${serverCfg.hostDomain}" "--certificatesresolvers.default.acme.storage=/acme.json" "--certificatesresolvers.default.acme.dnschallenge.provider=${containerCfg.extra.provider}" # "--acme.domains.main=*.${serverCfg.hostDomain}" # "--acme.domains.sans=${serverCfg.hostDomain}" "--entrypoints.websecure.http.tls.certresolver=default" "--entrypoints.websecure.http.tls.domains[0].main=*.${serverCfg.hostDomain}" "--entrypoints.websecure.http.tls.domains[0].sans=${serverCfg.hostDomain}" ]; ports = [ "443:443" "80:80" ]; volumes = [ "/var/run/docker.sock:/var/run/docker.sock:ro" # "${serverCfg.configPath}/traefik/traefik.yaml:/etc/traefik/traefik.yaml" # "${serverCfg.configPath}/traefik/access.log:/etc/traefik/access.log" # "${serverCfg.configPath}/traefik/acme.json:/acme.json" ]; }; }; }; }