Nomploy Nomad Packs

← All packs

authentik v0.1.0

Identity

authentik — an open-source Identity Provider and SSO: OAuth2/OIDC, SAML, LDAP, forward-auth, MFA, and flows. Deployed all-in-one with its PostgreSQL and Redis plus the server and worker in a single host-networked Nomad job.

nomad-pack run authentik --registry nomploy
4 tasks http 9000db 5432redis 6379 1 volume image ghcr.io/goauthentik/server:latest
Variables 18
values.hcl

Save as values.hcl, edit, then run:

nomad-pack run authentik -f values.hcl --registry nomploy
# The name of the Nomad job.
job_name = "authentik"

# The Nomad namespace to deploy into.
namespace = "default"

# The datacenters to deploy to.
datacenters = ["*"]

# The authentik server/worker image (both tasks use it). Pin a tag in production.
image = "ghcr.io/goauthentik/server:latest"

# Host port for the authentik web UI / API.
port = 9000

# AUTHENTIK_SECRET_KEY — a long random value used to sign sessions/tokens. CHANGE THIS (e.g. `openssl rand -base64 50`) and keep it stable.
secret_key = "CHANGE_ME_authentik_secret_key_use_openssl_rand_base64_50"

# Initial password for the built-in `akadmin` user, set on first start. CHANGE THIS. Empty = you set the password via the first-run flow at /if/flow/initial-setup/.
bootstrap_password = ""

# Email for the initial akadmin user (used with bootstrap_password).
bootstrap_email = "admin@example.com"

# Resources for the authentik server task.
server_resources = {
    cpu    = 500
    memory = 512
  }

# Resources for the authentik worker task.
worker_resources = {
    cpu    = 500
    memory = 512
  }

# PostgreSQL image backing authentik.
postgres_image = "postgres:16-alpine"

# Host port PostgreSQL listens on. authentik connects on 127.0.0.1.
db_port = 5432

# Password for the authentik Postgres user. CHANGE THIS. (DB name and user are both "authentik".)
db_password = "authentik"

# Docker named volume for the Postgres data dir (users, apps, flows). Back it up.
db_data_volume = "authentik_db_data"

# Redis image (cache/queues; ephemeral, no volume).
redis_image = "redis:7-alpine"

# Host port Redis listens on.
redis_port = 6379

# Resources for the PostgreSQL task.
postgres_resources = {
    cpu    = 500
    memory = 512
  }

# Placement constraints — pin the job to one node so the Postgres local volume stays put (single all-in-one alloc). On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []
NameTypeDefaultDescription
job_name string
"authentik"
The name of the Nomad job.
namespace string
"default"
The Nomad namespace to deploy into.
datacenters list
["*"]
The datacenters to deploy to.
image string
"ghcr.io/goauthentik/server:latest"
The authentik server/worker image (both tasks use it). Pin a tag in production.
port number
9000
Host port for the authentik web UI / API.
secret_key set me string
"CHANGE_ME_authentik_secret_key_use_openssl_rand_base64_50"
AUTHENTIK_SECRET_KEY — a long random value used to sign sessions/tokens. CHANGE THIS (e.g. `openssl rand -base64 50`) and keep it stable.
bootstrap_password key string
""
Initial password for the built-in `akadmin` user, set on first start. CHANGE THIS. Empty = you set the password via the first-run flow at /if/flow/initial-setup/.
bootstrap_email set me string
"admin@example.com"
Email for the initial akadmin user (used with bootstrap_password).
server_resources object
{
    cpu    = 500
    memory = 512
  }
Resources for the authentik server task.
worker_resources object
{
    cpu    = 500
    memory = 512
  }
Resources for the authentik worker task.
postgres_image string
"postgres:16-alpine"
PostgreSQL image backing authentik.
db_port number
5432
Host port PostgreSQL listens on. authentik connects on 127.0.0.1.
db_password key string
"authentik"
Password for the authentik Postgres user. CHANGE THIS. (DB name and user are both "authentik".)
db_data_volume string
"authentik_db_data"
Docker named volume for the Postgres data dir (users, apps, flows). Back it up.
redis_image string
"redis:7-alpine"
Redis image (cache/queues; ephemeral, no volume).
redis_port number
6379
Host port Redis listens on.
postgres_resources object
{
    cpu    = 500
    memory = 512
  }
Resources for the PostgreSQL task.
constraints list
[]
Placement constraints — pin the job to one node so the Postgres local volume stays put (single all-in-one alloc). On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
Readme

authentik

authentik — an open-source Identity Provider / SSO: OAuth2 & OpenID Connect, SAML, LDAP, proxy/forward-auth, MFA, and customizable login flows. Put it in front of your apps for single sign-on. All-in-one: authentik's server and worker plus PostgreSQL and Redis, in one host-networked Nomad job.

Usage

nomad-pack registry add nomploy github.com/Nomploy/nomad-packs \
  --var secret_key=$(openssl rand -base64 50) --var bootstrap_password=<secret>
nomad-pack run authentik --registry nomploy \
  --var secret_key=$(openssl rand -base64 50) --var bootstrap_password=<secret>

In nomploy: create a Compose service, type Nomad Pack, pack authentik, set secret_key (and bootstrap_password), then Deploy. Open http://<node-ip>:9000; if you didn't set a bootstrap password, complete /if/flow/initial-setup/.

Key variables

Variable Default Notes
image ghcr.io/goauthentik/server:latest Pin a tag in production.
port 9000 Web UI / API (HTTP).
secret_key placeholder Change it (openssl rand -base64 50); keep it stable.
bootstrap_password / bootstrap_email "" / admin@example.com Optional first-boot akadmin.
db_password authentik Postgres password. Change this.
db_data_volume authentik_db_data Users/apps/flows. Back it up.
db_port / redis_port 5432 / 6379 Bundled dependency ports.
constraints [] Pin to a node so the DB volume stays put.

Per-task resources: server_resources, worker_resources, postgres_resources.

Notes