{ config, containerCfg, pkgs, lib, builder, name,... }: let version = "3"; serverCfg = config.syscfg.server; in { paths = [{ path="${serverCfg.dataPath}/traefik"; owner = "1000:1000"; mode = "0755"; }]; containers = { server = builder.mkContainer { subdomain = containerCfg.subdomain; image = "ghcr.io/traefik/traefik:${version}"; ip = containerCfg.ip; port = 8080; 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"; }; extraOptions = [ "--user=:994" ]; #PODMAN GROUP FOR SOCKET ACCESS 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=/custom/acme.json" "--certificatesresolvers.default.acme.dnschallenge.provider=${containerCfg.extra.provider}" "--entrypoints.web-secure.http.tls=true" "--entrypoints.web-secure.http.tls.certresolver=default" "--entrypoints.web-secure.http.tls.domains[0].main=*.${serverCfg.hostDomain}" "--entrypoints.web-secure.http.tls.domains[0].sans=${serverCfg.hostDomain}" ]; ports = [ "443:443" "80:80" ]; volumes = [ "/var/run/podman/podman.sock:/var/run/docker.sock" #PODMAN GROUP FOR SOCKET ACCESS # "${serverCfg.configPath}/traefik/traefik.yaml:/etc/traefik/traefik.yaml" # "${serverCfg.configPath}/traefik/access.log:/etc/traefik/access.log" "${serverCfg.configPath}/traefik:/custom/acme.json" ]; }; }; }; }