OOKNET                             [ /  search the index  ]  
──────────────────────────────────────────────────────────────────────────────────────
══════════════════════════════════════════════════════════════════════════════════════
OOKNET   [ /  search  ]  
────────────────────────────────────────────────
════════════════════════════════════════════════
 
 
main @ 55 LINES
 
[ HISTORY ]  [ UP ]
 

{
  config,
  lib,
  ook,
  ...
}: let
  inherit (lib) mkIf elem;
  inherit (ook.lib.container) mkContainerLabel;
  inherit (config.ooknet.server) services;
  inherit (config.ooknet.server.authentik) domain port stateDir postgres;
in {
  config = mkIf (elem "authentik" services) {
    virtualisation.oci-containers.containers = {
      authentik-server = {
        image = "ghcr.io/goauthentik/server:2025.8.4";
        autoStart = true;
        hostname = "authentik-server";
        cmd = ["server"];
        ports = [
          "${toString port}:9000"
          "9443:9443"
        ];
        volumes = [
          "${stateDir}/media:/media"
          "${stateDir}/custom-templates:/templates"
        ];
        labels = mkContainerLabel {
          name = "auth";
          inherit domain port;
          homepage = {
            group = "infrastructure";
            description = "SSO & Identity Provider";
          };
        };
        environment = {
          AUTHENTIK_REDIS__HOST = "authentik-redis";
          AUTHENTIK_POSTGRESQL__HOST = "authentik-postgres";
          AUTHENTIK_POSTGRESQL__NAME = postgres.database;
          AUTHENTIK_POSTGRESQL__USER = postgres.user;
        };
        environmentFiles = [
          config.age.secrets.authentik-env.path
        ];
        dependsOn = ["authentik-postgres" "authentik-redis"];
        networks = ["authentik"];
      };
    };
    users.users.authentik = {
      isSystemUser = true;
      group = "authentik";
    };
    users.groups.authentik = {};
  };
}

{
  config,
  lib,
  ook,
  ...
}: let
  inherit (lib) mkIf elem;
  inherit (ook.lib.container) mkContainerLab
el;
  inherit (config.ooknet.server) services;
  inherit (config.ooknet.server.authentik) d
omain port stateDir postgres;
in {
  config = mkIf (elem "authentik" services) 
{
    virtualisation.oci-containers.containers
 = {
      authentik-server = {
        image = "ghcr.io/goauthentik/server:
2025.8.4";
        autoStart = true;
        hostname = "authentik-server";
        cmd = ["server"];
        ports = [
          "${toString port}:9000"
          "9443:9443"
        ];
        volumes = [
          "${stateDir}/media:/media"
          "${stateDir}/custom-templates:/tem
plates"
        ];
        labels = mkContainerLabel {
          name = "auth";
          inherit domain port;
          homepage = {
            group = "infrastructure";
            description = "SSO & Identity Pr
ovider";
          };
        };
        environment = {
          AUTHENTIK_REDIS__HOST = "authentik
-redis";
          AUTHENTIK_POSTGRESQL__HOST = "auth
entik-postgres";
          AUTHENTIK_POSTGRESQL__NAME = postg
res.database;
          AUTHENTIK_POSTGRESQL__USER = postg
res.user;
        };
        environmentFiles = [
          config.age.secrets.authentik-env.p
ath
        ];
        dependsOn = ["authentik-postgres" "a
uthentik-redis"];
        networks = ["authentik"];
      };
    };
    users.users.authentik = {
      isSystemUser = true;
      group = "authentik";
    };
    users.groups.authentik = {};
  };
}
 
──────────────────────────────────────────────────────────────────────────────────────
OOKNET
────────────────────────────────────────────────
OOKNET