Skip to content

Template · Auth

Authentik

Flexible identity provider (server + worker) with PostgreSQL and Redis.

Deploy on Skiffly

Opens the dashboard with this template pre-selected. Sign in with GitHub if you are new; the free tier needs no card.

  • Postgrespostgres:17
  • Redisredis:7-alpine
  • Authentikghcr.io/goauthentik/server:2025.8
  • Authentik Workerghcr.io/goauthentik/server:2025.8
Upstream documentation

What gets deployed

4 services in the environment you pick, on the private network of the project.

About this template

ghcr.io/goauthentik/server:2025.8 as server and worker, PostgreSQL 17, Redis. Finish setup at /if/flow/initial-setup/.

After deploy

Open /if/flow/initial-setup/ on the public URL to create the akadmin user.

Postgres

Image: postgres:17

  • Port 5432/tcp
  • 10 GB volume at /var/lib/postgresql/data
  • 1 vCPU · 1 GB

Redis

Image: redis:7-alpine

  • Port 6379/tcp
  • 2 GB volume at /data
  • 0.5 vCPU · 512 MB

redis-server --appendonly yes --dir /data

Authentik

Image: ghcr.io/goauthentik/server:2025.8

  • Port 9000/http
  • Public domain with TLS
  • 2 GB volume at /media
  • 1 vCPU · 1 GB
  • /-/health/live/

/lifecycle/ak server

Authentik Worker

Image: ghcr.io/goauthentik/server:2025.8

  • 1 vCPU · 1 GB

/lifecycle/ak worker

Variables

Generated secrets never leave the platform; references are resolved on the private network. Anything marked required is asked for at deploy time.

Postgres

NameValue
POSTGRES_USERpostgresSuperuser name
POSTGRES_PASSWORDgenerated (password)Generated at deploy
POSTGRES_DBauthentikDatabase created on first start
PGDATA/var/lib/postgresql/data/pgdata
DATABASE_URLpostgresql://${{self.POSTGRES_USER}}:${{self.POSTGRES_PASSWORD}}@${{self.SKIFFLY_PRIVATE_DOMAIN}}:5432/${{self.POSTGRES_DB}}Connection string on the private network

Redis

NameValue
REDIS_URLredis://${{self.SKIFFLY_PRIVATE_DOMAIN}}:6379Private network only, no auth

Authentik

NameValue
AUTHENTIK_SECRET_KEYgenerated (secret)
AUTHENTIK_POSTGRESQL__HOST${{Postgres.SKIFFLY_PRIVATE_DOMAIN}}
AUTHENTIK_POSTGRESQL__USER${{Postgres.POSTGRES_USER}}
AUTHENTIK_POSTGRESQL__NAME${{Postgres.POSTGRES_DB}}
AUTHENTIK_POSTGRESQL__PASSWORD${{Postgres.POSTGRES_PASSWORD}}
AUTHENTIK_REDIS__HOST${{Redis.SKIFFLY_PRIVATE_DOMAIN}}
AUTHENTIK_ERROR_REPORTING__ENABLEDfalse
AUTHENTIK_DISABLE_UPDATE_CHECKtrue

Authentik Worker

NameValue
AUTHENTIK_SECRET_KEY${{Authentik.AUTHENTIK_SECRET_KEY}}
AUTHENTIK_POSTGRESQL__HOST${{Postgres.SKIFFLY_PRIVATE_DOMAIN}}
AUTHENTIK_POSTGRESQL__USER${{Postgres.POSTGRES_USER}}
AUTHENTIK_POSTGRESQL__NAME${{Postgres.POSTGRES_DB}}
AUTHENTIK_POSTGRESQL__PASSWORD${{Postgres.POSTGRES_PASSWORD}}
AUTHENTIK_REDIS__HOST${{Redis.SKIFFLY_PRIVATE_DOMAIN}}
AUTHENTIK_ERROR_REPORTING__ENABLEDfalse
AUTHENTIK_DISABLE_UPDATE_CHECKtrue

Deploy button for your README

Add a one-click deploy link to your repository or docs. Two variants: for light and dark backgrounds.

Deploy on SkifflyDeploy on Skiffly
Markdown · Light background
[![Deploy on Skiffly](https://skiffly.dev/button.svg)](https://skiffly.dev/templates/authentik)
Markdown · Dark background
[![Deploy on Skiffly](https://skiffly.dev/button-dark.svg)](https://skiffly.dev/templates/authentik)
HTML
<a href="https://skiffly.dev/templates/authentik"><img src="https://skiffly.dev/button.svg" alt="Deploy on Skiffly" height="32"></a>

Deploy Authentik in one click

Volumes, secrets and domain pre-wired. Runs on EU nodes, paid per minute from a prepaid balance.