Authelia Block

Table of Contents

Global Setup
SHB OIDC integration
OIDC Integration
SHB Forward Auth
Forward Auth
Tests
Options Reference

Defined in /modules/blocks/authelia.nix.

This block sets up an Authelia service for Single-Sign On integration.

Global Setup

Authelia cannot work without SSL and LDAP. So setting up the Authelia block requires to setup the SSL block first and the LLDAP block first.

SSL is required to encrypt the communication and LDAP is used to handle users and group assignments. Authelia will allow access to a given resource only if the user that is authenticated is a member of the corresponding LDAP group.

Afterwards, assuming the LDAP service runs on the same machine, the Authelia configuration can be done with:

shb.authelia = {
  enable = true;
  domain = "example.com";
  subdomain = "auth";
  ssl = config.shb.certs.certs.letsencrypt."example.com";

  ldapHostname = "127.0.0.1";
  ldapPort = config.shb.lldap.ldapPort;
  dcdomain = config.shb.lldap.dcdomain;

  smtp = {
    host = "smtp.eu.mailgun.org";
    port = 587;
    username = "postmaster@mg.example.com";
    from_address = "authelia@example.com";
    password.result = config.shb.sops.secrets."authelia/smtp_password".result;
  };

  secrets = {
    jwtSecret.result = config.shb.sops.secrets."authelia/jwt_secret".result;
    ldapAdminPassword.result = config.shb.sops.secrets."authelia/ldap_admin_password".result;
    sessionSecret.result = config.shb.sops.secrets."authelia/session_secret".result;
    storageEncryptionKey.result = config.shb.sops.secrets."authelia/storage_encryption_key".result;
    identityProvidersOIDCHMACSecret.result = config.shb.sops.secrets."authelia/hmac_secret".result;
    identityProvidersOIDCIssuerPrivateKey.result = config.shb.sops.secrets."authelia/private_key".result;
  };
};

shb.certs.certs.letsencrypt."example.com".extraDomains = [ "auth.example.com" ];

shb.sops.secrets."authelia/jwt_secret".request = config.shb.authelia.secrets.jwtSecret.request;
shb.sops.secrets."authelia/ldap_admin_password" = {
  request = config.shb.authelia.secrets.ldapAdminPassword.request;
  settings.key = "lldap/user_password";
};
shb.sops.secrets."authelia/session_secret".request = config.shb.authelia.secrets.sessionSecret.request;
shb.sops.secrets."authelia/storage_encryption_key".request = config.shb.authelia.secrets.storageEncryptionKey.request;
shb.sops.secrets."authelia/hmac_secret".request = config.shb.authelia.secrets.identityProvidersOIDCHMACSecret.request;
shb.sops.secrets."authelia/private_key".request = config.shb.authelia.secrets.identityProvidersOIDCIssuerPrivateKey.request;
shb.sops.secrets."authelia/smtp_password".request = config.shb.authelia.smtp.password.request;

This assumes secrets are setup with SOPS as mentioned in the secrets setup section of the manual. It’s a bit annoying to setup all those secrets but it’s only necessary once. Use nix run nixpkgs#openssl -- rand -hex 64 to generate them.

Crucially, the shb.authelia.secrets.ldapAdminPasswordFile must be the same as the shb.lldap.ldapUserPassword defined for the LLDAP block. This is done using Sops’ key option.

SHB OIDC integration

For services provided by SelfHostBlocks that handle OIDC integration, integrating with this block is done by configuring the service itself and linking it to this Authelia block through the endpoint option and by sharing a secret:

shb.<service>.sso = {
  enable = true;
  endpoint = "https://${config.shb.authelia.subdomain}.${config.shb.authelia.domain}";

  secret.result = config.shb.sops.secrets."<service>/sso/secret".result;
  secretForAuthelia.result = config.shb.sops.secrets."<service>/sso/secretForAuthelia".result;
};

shb.sops.secret."<service>/sso/secret".request = config.shb.<service>.sso.secret.request;
shb.sops.secret."<service>/sso/secretForAuthelia" = {
  request = config.shb.<service>.sso.secretForAuthelia.request;
  settings.key = "<service>/sso/secret";
};

To share a secret between the service and Authelia, we generate a secret with nix run nixpkgs#openssl -- rand -hex 64 under <service>/sso/secret then we ask Sops to use the same password for <service>/sso/secretForAuthelia thanks to the settings.key option. The difference between both secrets is one if owned by the authelia user while the other is owned by the user of the <service> we are configuring.

OIDC Integration

To integrate a service handling OIDC integration not provided by SelfHostBlocks with this Authelia block, the necessary configuration is:

shb.authelia.oidcClients = [
  {
    client_id = "<service>";
    client_secret.source = shb.sops.secret."<service>/sso/secretForAuthelia".response.path;
    scopes = [ "openid" "email" "profile" ];
    redirect_uris = [
      "<provided by service documentation>"
    ];
  }
];

shb.sops.secret."<service>/sso/secret".request = {
  owner = "<service_user>";
};
shb.sops.secret."<service>/sso/secretForAuthelia" = {
  request.owner = "authelia";
  settings.key = "<service>/sso/secret";
};

As in the previous section, we create a shared secret using Sops’ settings.key option.

The configuration for the service itself is much dependent on the service itself. For example for open-webui, the configuration looks like so:

services.open-webui.environment = {
  ENABLE_SIGNUP = "False";
  WEBUI_AUTH = "True";
  ENABLE_FORWARD_USER_INFO_HEADERS = "True";
  ENABLE_OAUTH_SIGNUP = "True";
  OAUTH_UPDATE_PICTURE_ON_LOGIN = "True";
  OAUTH_CLIENT_ID = "open-webui";
  OAUTH_CLIENT_SECRET = "<raw secret>";
  OPENID_PROVIDER_URL = "https://${config.shb.authelia.subdomain}.${config.shb.authelia.domain}/.well-known/openid-configuration";
  OAUTH_PROVIDER_NAME = "Single Sign-On";
  OAUTH_SCOPES = "openid email profile";
  OAUTH_ALLOWED_ROLES = "open-webui_user";
  OAUTH_ADMIN_ROLES = "open-webui_admin";
  ENABLE_OAUTH_ROLE_MANAGEMENT = "True";
};

shb.authelia.oidcClients = [
  {
    client_id = "open-webui";
    client_secret.source = shb.sops.secret."open-webui/sso/secretForAuthelia".response.path;
    scopes = [ "openid" "email" "profile" ];
    redirect_uris = [
      "<provided by service documentation>"
    ];
  }
];

shb.sops.secret."open-webui/sso/secret".request = {
  owner = "open-webui";
};
shb.sops.secret."open-webui/sso/secretForAuthelia" = {
  request.owner = "authelia";
  settings.key = "open-webui/sso/secret";
};

Here, there is no way to give a path for the OAUTH_CLIENT_SECRET, we are obligated to pass the raw secret which is a very bad idea. There are ways around this but they are out of scope for this section. Inspiration can be taken from SelfHostBlocks’ source code.

To access the UI, we will need to create an open-webui_user and open-webui_admin LDAP group and assign our user to it.

SHB Forward Auth

For services provided by SelfHostBlocks that do not handle OIDC integration, this block can provide forward authentication which still allows the service to be protected by Authelia.

The user could still be required to authenticate to the service itself, although some services can automatically users authorized by Authelia.

Integrating with this block is done with the following code:

shb.<services>.authEndpoint = "https://${config.shb.authelia.subdomain}.${config.shb.authelia.domain}";

Forward Auth

To integrate a service that does not handle OIDC integration and which is not provided by SelfHostBlocks with this Authelia block, the necessary configuration is:

shb.nginx.vhosts = [
  {
    subdomain = "<service>";
    domain = "example.com";
    ssl = config.shb.certs.certs.letsencrypt."example.com";
    upstream = "http://127.0.0.1:${toString config.services.<service>.port}/";
  }
];

This configuration assumes usage of the SSL block.

Tests

Specific integration tests are defined in /test/blocks/authelia.nix.

Options Reference

shb.authelia.enable

Whether to enable selfhostblocks.authelia.

Type: boolean

Default: false

Example: true

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.autheliaUser

System user for this Authelia instance.

Type: string

Default: "authelia"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.dcdomain

dc domain for ldap.

Type: string

Example: "dc=mydomain,dc=com"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.domain

domain under which Authelia will be served.

Type: string

Example: "mydomain.com"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.ldapHostname

Hostname of the LDAP authentication backend.

Type: string

Example: "ldap.example.com"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.ldapPort

Port of the LDAP authentication backend.

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Example: "389"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.mount

Mount configuration. This is an output option.

Use it to initialize a block implementing the “mount” contract. For example, with a zfs dataset:

shb.zfs.datasets."authelia" = {
  poolName = "root";
} // config.shb.authelia.mount;

Type: anything (read only)

Default:

{
  path = "/var/lib/authelia-authelia.example.com";
}

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.mount.path

Path to be mounted.

Type: string

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.mountRedis

Mount configuration for Redis. This is an output option.

Use it to initialize a block implementing the “mount” contract. For example, with a zfs dataset:

shb.zfs.datasets."redis-authelia" = {
  poolName = "root";
} // config.shb.authelia.mountRedis;

Type: anything (read only)

Default:

{
  path = "/var/lib/redis-authelia";
}

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.mountRedis.path

Path to be mounted.

Type: string

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.oidcClients

OIDC clients

Type: list of (attribute set of anything)

Default:

[
  {
    authorization_policy = "one_factor";
    client_id = "dummy_client";
    client_name = "Dummy Client so Authelia can start";
    client_secret = {
      source = <derivation dummy.secret>;
    };
    public = false;
    redirect_uris = [ ];
  }
]

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.oidcClients.*.authorization_policy

Require one factor (password) or two factor (device) authentication.

Type: one of “one_factor”, “two_factor”

Default: "one_factor"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.oidcClients.*.client_id

Unique identifier of the OIDC client.

Type: string

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.oidcClients.*.client_name

Human readable description of the OIDC client.

Type: null or string

Default: null

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.oidcClients.*.client_secret

File containing the shared secret with the OIDC client.

Generate with:

nix run nixpkgs#authelia -- \
    crypto hash generate pbkdf2 \
    --variant sha512 \
    --random \
    --random.length 72 \
    --random.charset rfc3986

Type: submodule

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.oidcClients.*.client_secret.source

File containing the value.

Type: absolute path

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.oidcClients.*.client_secret.transform

An optional function to transform the secret.

Type: raw value

Default: null

Example:

v: "prefix-$${v}-suffix"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.oidcClients.*.public

If the OIDC client is public or not.

Type: boolean

Default: false

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.oidcClients.*.redirect_uris

List of uris that are allowed to be redirected to.

Type: list of string

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.oidcClients.*.scopes

Scopes to ask for

Type: list of string

Default: [ ]

Example:

[
  "openid"
  "profile"
  "email"
  "groups"
]

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.port

If given, adds a port to the <subdomain>.<domain> endpoint.

Type: null or 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: null

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.rules

Rule based clients

Type: list of anything

Default: [ ]

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets

Secrets needed by Authelia

Type: submodule

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.identityProvidersOIDCHMACSecret

Identity provider OIDC HMAC secret.

Type: submodule

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.identityProvidersOIDCHMACSecret.request

Request part of the secret contract.

Options set by the requester module enforcing some properties the secret should have.

Type: submodule

Default: ""

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.identityProvidersOIDCHMACSecret.request.group

Linux group owning the secret file.

Type: string

Default: "root"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.identityProvidersOIDCHMACSecret.request.mode

Mode of the secret file.

Type: string

Default: "0400"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.identityProvidersOIDCHMACSecret.request.owner

Linux user owning the secret file.

Type: string

Default: "authelia"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.identityProvidersOIDCHMACSecret.request.restartUnits

Systemd units to restart after the secret is updated.

Type: list of string

Default:

[
  "authelia-shb.authelia.subdomain.shb.authelia.domain"
]

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.identityProvidersOIDCHMACSecret.result

Result part of the secret contract.

Options set by the provider module that indicates where the secret can be found.

Type: submodule

Default:

{
  path = "/run/secrets/secret";
}

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.identityProvidersOIDCHMACSecret.result.path

Path to the file containing the secret generated out of band.

This path will exist after deploying to a target host, it is not available through the nix store.

Type: absolute path

Default: "/run/secrets/secret"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.identityProvidersOIDCIssuerPrivateKey

Identity provider OIDC issuer private key.

Generate one with nix run nixpkgs#openssl -- genrsa -out keypair.pem 2048

Type: submodule

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.identityProvidersOIDCIssuerPrivateKey.request

Request part of the secret contract.

Options set by the requester module enforcing some properties the secret should have.

Type: submodule

Default: ""

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.identityProvidersOIDCIssuerPrivateKey.request.group

Linux group owning the secret file.

Type: string

Default: "root"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.identityProvidersOIDCIssuerPrivateKey.request.mode

Mode of the secret file.

Type: string

Default: "0400"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.identityProvidersOIDCIssuerPrivateKey.request.owner

Linux user owning the secret file.

Type: string

Default: "authelia"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.identityProvidersOIDCIssuerPrivateKey.request.restartUnits

Systemd units to restart after the secret is updated.

Type: list of string

Default:

[
  "authelia-shb.authelia.subdomain.shb.authelia.domain"
]

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.identityProvidersOIDCIssuerPrivateKey.result

Result part of the secret contract.

Options set by the provider module that indicates where the secret can be found.

Type: submodule

Default:

{
  path = "/run/secrets/secret";
}

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.identityProvidersOIDCIssuerPrivateKey.result.path

Path to the file containing the secret generated out of band.

This path will exist after deploying to a target host, it is not available through the nix store.

Type: absolute path

Default: "/run/secrets/secret"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.jwtSecret

JWT secret.

Type: submodule

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.jwtSecret.request

Request part of the secret contract.

Options set by the requester module enforcing some properties the secret should have.

Type: submodule

Default: ""

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.jwtSecret.request.group

Linux group owning the secret file.

Type: string

Default: "root"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.jwtSecret.request.mode

Mode of the secret file.

Type: string

Default: "0400"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.jwtSecret.request.owner

Linux user owning the secret file.

Type: string

Default: "authelia"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.jwtSecret.request.restartUnits

Systemd units to restart after the secret is updated.

Type: list of string

Default:

[
  "authelia-shb.authelia.subdomain.shb.authelia.domain"
]

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.jwtSecret.result

Result part of the secret contract.

Options set by the provider module that indicates where the secret can be found.

Type: submodule

Default:

{
  path = "/run/secrets/secret";
}

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.jwtSecret.result.path

Path to the file containing the secret generated out of band.

This path will exist after deploying to a target host, it is not available through the nix store.

Type: absolute path

Default: "/run/secrets/secret"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.ldapAdminPassword

LDAP admin user password.

Type: submodule

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.ldapAdminPassword.request

Request part of the secret contract.

Options set by the requester module enforcing some properties the secret should have.

Type: submodule

Default: ""

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.ldapAdminPassword.request.group

Linux group owning the secret file.

Type: string

Default: "root"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.ldapAdminPassword.request.mode

Mode of the secret file.

Type: string

Default: "0400"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.ldapAdminPassword.request.owner

Linux user owning the secret file.

Type: string

Default: "authelia"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.ldapAdminPassword.request.restartUnits

Systemd units to restart after the secret is updated.

Type: list of string

Default:

[
  "authelia-shb.authelia.subdomain.shb.authelia.domain"
]

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.ldapAdminPassword.result

Result part of the secret contract.

Options set by the provider module that indicates where the secret can be found.

Type: submodule

Default:

{
  path = "/run/secrets/secret";
}

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.ldapAdminPassword.result.path

Path to the file containing the secret generated out of band.

This path will exist after deploying to a target host, it is not available through the nix store.

Type: absolute path

Default: "/run/secrets/secret"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.sessionSecret

Session secret.

Type: submodule

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.sessionSecret.request

Request part of the secret contract.

Options set by the requester module enforcing some properties the secret should have.

Type: submodule

Default: ""

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.sessionSecret.request.group

Linux group owning the secret file.

Type: string

Default: "root"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.sessionSecret.request.mode

Mode of the secret file.

Type: string

Default: "0400"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.sessionSecret.request.owner

Linux user owning the secret file.

Type: string

Default: "authelia"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.sessionSecret.request.restartUnits

Systemd units to restart after the secret is updated.

Type: list of string

Default:

[
  "authelia-shb.authelia.subdomain.shb.authelia.domain"
]

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.sessionSecret.result

Result part of the secret contract.

Options set by the provider module that indicates where the secret can be found.

Type: submodule

Default:

{
  path = "/run/secrets/secret";
}

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.sessionSecret.result.path

Path to the file containing the secret generated out of band.

This path will exist after deploying to a target host, it is not available through the nix store.

Type: absolute path

Default: "/run/secrets/secret"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.storageEncryptionKey

Storage encryption key.

Type: submodule

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.storageEncryptionKey.request

Request part of the secret contract.

Options set by the requester module enforcing some properties the secret should have.

Type: submodule

Default: ""

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.storageEncryptionKey.request.group

Linux group owning the secret file.

Type: string

Default: "root"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.storageEncryptionKey.request.mode

Mode of the secret file.

Type: string

Default: "0400"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.storageEncryptionKey.request.owner

Linux user owning the secret file.

Type: string

Default: "authelia"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.storageEncryptionKey.request.restartUnits

Systemd units to restart after the secret is updated.

Type: list of string

Default:

[
  "authelia-shb.authelia.subdomain.shb.authelia.domain"
]

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.storageEncryptionKey.result

Result part of the secret contract.

Options set by the provider module that indicates where the secret can be found.

Type: submodule

Default:

{
  path = "/run/secrets/secret";
}

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.secrets.storageEncryptionKey.result.path

Path to the file containing the secret generated out of band.

This path will exist after deploying to a target host, it is not available through the nix store.

Type: absolute path

Default: "/run/secrets/secret"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.smtp

If a string is given, writes notifications to the given path.Otherwise, send notifications by smtp.

https://www.authelia.com/configuration/notifications/introduction/

Type: string or null or (submodule)

Default: "/tmp/authelia-notifications"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.ssl

Path to SSL files

Type: null or (anything)

Default: null

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.ssl.paths

Paths where the files for the certificate will be located.

This option is the contract output of the shb.certs.certs SSL block.

Type: anything

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.ssl.paths.cert

Path to the cert file.

Type: absolute path

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.ssl.paths.key

Path to the key file.

Type: absolute path

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.ssl.systemdService

Systemd oneshot service used to generate the certificate. Ends with the .service suffix.

Use this if downstream services must wait for the certificates to be generated before starting.

Type: string

Example: "cert-generator.service"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>
shb.authelia.subdomain

Subdomain under which Authelia will be served.

Type: string

Example: "auth"

Declared by:

<selfhostblocks/modules/blocks/authelia.nix>