Kör authentik med Podman utan root

authentik på Debian 13, identitetsleverantören med öppen källkod, i rootless Podman under en egen användare bakom Caddy, så att dina användare loggar in i alla dina appar med ett konto och tvåfaktorsautentisering.

Testad på authentik 2026.8.3 på Debian 13 (trixie) på en server hos Melonslab Uppdaterad 26 september 2026

Rekommenderad server för guiden

VC-S Micro · 2 vCPU · 8 GB Minne · 250 GB Lagring

Månadsvis, ingen bindningstid 7 dagars öppet köp

90 kr/mån

Beställ nu
På den här sidan

Det här sätter du upp

authentik är en identitetsleverantör: den lagrar dina användare, deras lösenord och deras tvåfaktorsmetoder, och dina appar låter authentik kontrollera vem som loggar in. Varje person har ett konto för allt, och när någon slutar stänger du av ett konto i stället för ett i varje app. Apparna ansluter med OpenID Connect, SAML eller LDAP, som de flesta appar du kör själv har stöd för.

Här körs den i en pod med PostgreSQL, under en egen användare som heter authentik, bakom Caddy från Podman-guiden. Som exempel blir den inloggningen för Matrix-servern från Matrix-guiden.

Varje steg nedan har körts på en server hos Melonslab med Debian 13:

  • Den första installationen gjordes via Caddy, och authentiks händelselogg visade varje besökares riktiga adress.
  • En användare som skapades i administrationsgränssnittet loggade in på Matrix med enkel inloggning och fick ett Matrix-konto med sitt namn. Ett befintligt Matrix-konto kopplades på samma sätt.
  • Med en autentiseringsapp uppsatt frågade inloggningen efter en kod, och en felaktig kod nekades.
  • En uppladdad fil fanns kvar efter en omstart av authentik, och allt startade igen av sig självt när servern startades om.

authentik använde omkring 660 MB minne. Den behöver minst 2 GB på servern.

Innan du börjar

Du behöver:

  • en server uppsatt som i Podman-guiden, med Caddy igång och minst 2 GB minne;
  • en A-post och en AAAA-post för auth.example.com som pekar på din server.

Exemplen använder auth.example.com för authentik och 203.0.113.10 för serverns IPv4-adress, som ip -brief address show eth0 visar. Byt ut dem genomgående.

1. Skapa användaren

Som root:

useradd -m -s /bin/bash authentik
loginctl enable-linger authentik
machinectl shell authentik@

Allt fram till steg 5 körs som authentik.

2. Skapa hemligheterna

openssl rand -hex 24 | tr -d '\n' | podman secret create authentik-db-password -
openssl rand -base64 60 | tr -d '\n' | podman secret create authentik-secret-key -

Den första är databasens lösenord. Den andra är authentiks hemliga nyckel, som signerar dess sessioner och token. Ingen av dem skrivs in i filerna nedan.

3. Definiera podden

mkdir -p ~/.config/containers/systemd ~/authentik/data
podman unshare chown 1000:1000 ~/authentik/data

authentik körs som användare 1000 i sina containrar, och chown låter den användaren skriva i katalogen data, där authentik sparar filer du laddar upp, som ikoner för appar.

Skapa ~/.config/containers/systemd/authentik.pod:

[Pod]
PodName=authentik
# Only Caddy, on this server, can reach authentik: the port is not open to the internet.
PublishPort=127.0.0.1:8092:9000
ShmSize=512m

[Install]
WantedBy=default.target

Skapa ~/.config/containers/systemd/authentik-db.container:

[Container]
ContainerName=authentik-db
Image=docker.io/library/postgres:18-alpine
Pod=authentik.pod
Volume=authentik-db:/var/lib/postgresql
Environment=POSTGRES_USER=authentik POSTGRES_DB=authentik
Secret=authentik-db-password,type=env,target=POSTGRES_PASSWORD
AutoUpdate=registry

[Service]
Restart=always

Skapa ~/.config/containers/systemd/authentik-server.container:

[Unit]
After=authentik-db.service

[Container]
ContainerName=authentik-server
Image=ghcr.io/goauthentik/server:2026.8
Pod=authentik.pod
Exec=server
EnvironmentFile=%h/authentik/authentik.env
Secret=authentik-db-password,type=env,target=AUTHENTIK_POSTGRESQL__PASSWORD
Secret=authentik-secret-key,type=env,target=AUTHENTIK_SECRET_KEY
Volume=%h/authentik/data:/data
AutoUpdate=registry

[Service]
Restart=always

Skapa ~/.config/containers/systemd/authentik-worker.container:

[Unit]
After=authentik-db.service

[Container]
ContainerName=authentik-worker
Image=ghcr.io/goauthentik/server:2026.8
Pod=authentik.pod
Exec=worker
EnvironmentFile=%h/authentik/authentik.env
# The server already uses these ports in the pod.
Environment=AUTHENTIK_LISTEN__HTTP=[::]:9001 AUTHENTIK_LISTEN__METRICS=[::]:9301
Secret=authentik-db-password,type=env,target=AUTHENTIK_POSTGRESQL__PASSWORD
Secret=authentik-secret-key,type=env,target=AUTHENTIK_SECRET_KEY
Volume=%h/authentik/data:/data
AutoUpdate=registry

[Service]
Restart=always

Och ~/authentik/authentik.env, inställningarna båda delar:

AUTHENTIK_POSTGRESQL__HOST=127.0.0.1
AUTHENTIK_POSTGRESQL__USER=authentik
AUTHENTIK_POSTGRESQL__NAME=authentik
# Caddy's connections reach the pod from the server's own IPv4 address.
AUTHENTIK_LISTEN__TRUSTED_PROXY_CIDRS=203.0.113.10/32

Servern svarar på webbförfrågningar, och workern kör bakgrundsuppgifter. Båda kör samma avbild. I en pod delar de ett nätverk, så workerns två portar flyttas bort från serverns. authentik litar bara på adressen Caddy uppger för varje besökare när anslutningen kommer från adresserna i TRUSTED_PROXY_CIDRS, och med rootless Podman kommer Caddys anslutningar från serverns egen IPv4-adress.

Med taggen 2026.8 får du alla buggfixar i authentik 2026.8. Steg 10 beskriver hur du uppgraderar till nästa version.

4. Starta den

systemctl --user daemon-reload
systemctl --user start authentik-pod

Första starten laddar ner avbilderna, och sedan sätter authentik upp sin databas, vilket tog omkring tre minuter på vår testserver. Kontrollera om authentik är redo:

curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8092/-/health/ready/

Kommandot visar 503 medan authentik fortfarande startar och 200 när den är klar. Fram till dess visar workerns logg varningar om saknade tabeller, men de försvinner av sig själva.

5. Sätt Caddy framför

Gå tillbaka till root med exit, byt till machinectl shell caddy@ och lägg till det här blocket sist i ~/Caddyfile:

auth.example.com {
    reverse_proxy 127.0.0.1:8092
}

Starta om Caddy med systemctl --user restart caddy.

6. Skapa administratörskontot

Öppna https://auth.example.com. authentik visar sin första installationssida för administratören akadmin. Ange din e-postadress och ett starkt lösenord två gånger. Fältet Base URL är redan ifyllt: kontrollera att det är https://auth.example.com och välj Continue.

Logga sedan in som akadmin med lösenordet du just valde. Administrationsgränssnittet finns på https://auth.example.com/if/admin/.

7. Lägg till dina användare

I administrationsgränssnittet:

  • Öppna Directory, sedan Users, och välj New User.
  • Välj Internal User och ange ett Username, ett Display Name och en Email Address. Välj Create.
  • Välj den nya användaren i listan. Välj Set password under Recovery, ange ett lösenord och välj Set Password.

Personen loggar in på https://auth.example.com och kan byta lösenordet under kugghjulsikonen, i User details.

8. Slå på tvåfaktorsautentisering

Var och en gör det här för sitt eget konto, en gång. Välj kugghjulsikonen på https://auth.example.com och sedan Credentials. Välj Enroll under MFA Devices och sedan TOTP Device. Skanna QR-koden med en autentiseringsapp, till exempel den som finns i mobilens lösenordshanterare, och ange koden den visar.

Från och med då frågar authentik efter en kod från appen efter lösenordet. Samma meny har WebAuthn device, för passkeys och säkerhetsnycklar, och Static tokens, engångskoder att skriva ut och spara ifall mobilen försvinner.

9. Anslut en app

Varje app får en application och en provider i authentik. Här är appen Matrix: då loggar man in i Element med sitt authentik-konto. I administrationsgränssnittet:

  • Öppna Applications, sedan Applications, och välj New Application.
  • Ange Matrix som Application Name och välj Next.
  • Välj OAuth2/OpenID Provider och Next.
  • Sätt Authorization Flow till default-provider-authorization-implicit-consent, som loggar in utan att fråga om appen ska godkännas varje gång.
  • Kopiera Client ID och Client Secret.
  • Välj Add entry under Redirect URIs/Origins, behåll Strict och ange https://matrix.example.com/_synapse/client/oidc/callback.
  • Välj Next två gånger, sedan Create Application och Finish.

Utan något under Configure Bindings kan varje användare i authentik logga in i appen. authentiks adress för appen är https://auth.example.com/application/o/matrix/, med namnet i gemener.

Som root byter du sedan till machinectl shell matrix@ och lägger till det här i ~/matrix/synapse.yaml, med id:t och hemligheten du kopierade:

oidc_providers:
  - idp_id: authentik
    idp_name: authentik
    discover: true
    issuer: "https://auth.example.com/application/o/matrix/"
    client_id: "CLIENT_ID"
    client_secret: "CLIENT_SECRET"
    scopes: ["openid", "profile", "email"]
    allow_existing_users: true
    user_mapping_provider:
      config:
        localpart_template: "{{ user.preferred_username }}"
        display_name_template: "{{ user.name }}"

authentik körs på samma server, så Synapse måste nå den via servern i stället för inne i sin egen pod, som i Podman-guiden. Lägg till den här raden i ~/.config/containers/systemd/matrix.pod, under PublishPort:

AddHost=auth.example.com:host-gateway

Starta sedan om Matrix:

systemctl --user daemon-reload
systemctl --user restart matrix-pod

Elements inloggningssida har nu Continue with authentik. Den som loggar in för första gången får ett Matrix-konto med sitt användarnamn från authentik, till exempel @bob:example.com. Med allow_existing_users: true loggar en authentik-användare med samma namn som ett befintligt Matrix-konto in på det kontot, så slå bara på det om namnen i authentik hör till samma personer som i Matrix.

Andra appar följer samma steg, med omdirigeringsadressen från appens egen dokumentation. authentiks dokumentation har en sida för många av dem.

10. Håll den uppdaterad

Slå på Podmans dagliga uppdateringar som authentik:

systemctl --user enable --now podman-auto-update.timer

Då uppdateras authentik automatiskt till den senaste versionen av 2026.8, och PostgreSQL till den senaste av 18. authentik släpper en ny version med några månaders mellanrum, till exempel 2026.11. Uppgradera en version i taget utan att hoppa över någon, eftersom authentik inte kan gå tillbaka till en äldre version: läs versionsanteckningarna, säkerhetskopiera som i steg 11, ändra taggen i både authentik-server.container och authentik-worker.container, och kör systemctl --user daemon-reload och systemctl --user restart authentik-pod.

11. Säkerhetskopiera

Som authentik:

mkdir -p ~/backup
podman exec authentik-db pg_dump -U authentik authentik > ~/backup/authentik-db.sql
tar -czf ~/backup/authentik-data.tar.gz -C ~/authentik data
podman secret inspect --showsecret --format '{{.SecretData}}' authentik-secret-key > ~/backup/authentik-secret-key

Databasen innehåller användarna, deras lösenord och tvåfaktorsmetoder, och varje application. Den hemliga nyckeln behövs för att återställa den. Kopiera ~/backup till en annan maskin och förvara den säkert.

Felsökning

Inloggningen i en app misslyckas, och https://auth.example.com/application/o/matrix/.well-known/openid-configuration visar adresser som börjar med http://. authentik litar inte på Caddy. Kontrollera att AUTHENTIK_LISTEN__TRUSTED_PROXY_CIDRS i steg 3 är serverns IPv4-adress och starta om med systemctl --user restart authentik-server.

Den första installationssidan visar Not Found. authentik håller fortfarande på att sätta upp sig. Vänta en minut efter att hälsokontrollen i steg 4 svarar 200 och öppna https://auth.example.com igen.

Synapse når inte authentik. Raden AddHost från steg 9 saknas i matrix.pod, eller anger ett annat värdnamn.

Kör det på din egen server

VC-S Micro

90 kr/mån

vCPU
2
Minne
8 GB
Lagring
250 GB
Trafik
10 TB
Standard
HDD · RAID 10
  • Full root-åtkomst
  • Nativt /64 IPv6
  • RAID-skyddad lagring
  • Malmö, Sverige
  • Månadsvis, ingen bindningstid
  • 7 dagars öppet köp
Alla guider