LANgenoten artikel

Mijn eerste poging met Authentik als centrale voordeur

Lees of reageer op LANgenoten →

Ik ben de afgelopen dagen bezig geweest om Authentik toe te voegen aan mijn homelab. Niet omdat ik per se nóg een extra service wilde draaien, maar omdat ik inmiddels aardig wat applicaties via Nginx Proxy Manager publiek bereikbaar heb gemaakt.

Denk aan dingen als Radarr, Sonarr, Prowlarr, Bazarr, SABnzbd, qBittorrent, Profilarr en nog een hele reeks media- en downloadtools. Veel van die applicaties hebben hun eigen login, sommige zijn wat beperkt qua authenticatie, en bij elkaar voelt dat toch wat rommelig.

Het idee was dus:

Eén centrale voordeur met MFA, groepen en een nette loginpagina vóór mijn publieke services.

Authentik draait bij mij niet thuis, maar op een VPS. Die VPS is stabieler dan mijn thuisserver en draait ook al een paar belangrijke services. Mail draait op een andere VPS, dus deze VPS wordt nu eigenlijk mijn centrale authenticatie-server.

De globale opzet is nu:

Internet → Nginx Proxy Manager thuis → Authentik op VPS → interne applicatie

Omdat Authentik op een VPS draait en Nginx Proxy Manager thuis, liep ik wel tegen wat routing-gedoe aan. Eerst probeerde ik alles via de publieke Authentik-url te laten lopen, maar dat gaf problemen met Host-headers, Caddy en de Authentik outpost-routes. Uiteindelijk bleek het veel netter om de bestaande WireGuard-tunnel tussen mijn VPS en thuisnetwerk te gebruiken.

Nginx Proxy Manager praat nu via WireGuard direct met Authentik. Daarna werkte de forward-auth flow ineens een stuk logischer.

Wat werkt goed?

Radarr, Sonarr en Prowlarr werken eigenlijk netjes. Die ondersteunen een soort external authentication. Daardoor log ik eerst in via Authentik en daarna kom ik direct in de applicatie.

Ook Bazarr werkt inmiddels goed, maar dat kostte wat meer uitzoekwerk. Bazarr heeft alleen basic of form authentication. Uiteindelijk werkt het bij mij met Bazarr op form authentication, terwijl Authentik een HTTP Basic header meestuurt. Dat voelt een beetje als een workaround, maar het werkt wel: na Authentik kom ik direct in Bazarr.

Ik heb inmiddels meerdere media- en admin-tools achter Authentik gezet en ook een eigen loginpagina gemaakt met een donkere cyberpunk/homelab-stijl. Dat was leuk, maar ook wat frustrerend. Authentik custom CSS wordt breder toegepast dan je in eerste instantie zou verwachten. Op een gegeven moment zag de loginpagina er mooi uit, maar waren de admin-interface en user-interface half kapot gestyled. Uiteindelijk heb ik daar een balans in gevonden: de loginpagina is aangepast, maar de beheerinterface blijft bruikbaar.

Wat viel tegen?

Ik had vooraf toch een beetje het idee dat Authentik ervoor zou zorgen dat ik overal nog maar één keer hoefde in te loggen. Dat is niet helemaal hoe het werkt.

Authentik kan prima als centrale voordeur werken:

Gebruiker → Authentik → applicatie

Maar daarna kan de applicatie zelf alsnog om een eigen login vragen.

Dat hangt heel erg van de applicatie af. Sommige apps ondersteunen external auth of OIDC/LDAP/SAML. Andere apps hebben gewoon hun eigen loginformulier, sessie-cookie of API-key systeem. Dan kan Authentik daar niet zomaar echte SSO van maken.

Ik heb geprobeerd om voor meerdere apps HTTP Basic forwarding vanuit Authentik te gebruiken, maar dat werkt niet overal. Bij Bazarr werkt het, maar bij veel andere services niet of niet netjes. Dan kom je alsnog uit op dubbele login:

Authentik login → app-login

Dat voelt in eerste instantie alsof Authentik alleen maar extra werk oplevert. Tegelijk is het wél een extra beveiligingslaag. De loginpagina van bijvoorbeeld SABnzbd of qBittorrent hangt dan niet meer direct aan het internet; eerst moet je door Authentik met MFA.

Huidige compromis

Voor nu heb ik het pragmatisch opgelost:

  • Radarr, Sonarr en Prowlarr gebruiken external auth.
  • Bazarr werkt via Authentik met Basic-header forwarding.
  • Andere admin/media-tools staan achter Authentik, maar vragen soms nog hun eigen login.
  • Voor die apps heb ik waar nodig dezelfde sterke admin-login ingesteld, opgeslagen in mijn password manager.
  • Gevoelige apps zijn alleen voor de juiste Authentik-groepen zichtbaar.

Dat is geen perfecte SSO-oplossing, maar wel een stuk overzichtelijker en veiliger dan alles los publiek aanbieden.

Wat moet ik nog uitzoeken?

Ik wil nog een betere oplossing vinden voor services waarbij Basic Auth forwarding niet werkt en ik dus alsnog apart moet inloggen. Vooral bij apps zoals SABnzbd, qBittorrent, Autobrr en vergelijkbare tools wil ik nog kijken wat de beste balans is tussen gemak en veiligheid.

Ook wil ik nog goed nadenken over gebruikersgerichte apps zoals Jellyfin, Nextcloud en Immich.

Die wil ik niet zomaar achter forward-auth zetten. Zeker bij Jellyfin heb ik meerdere gebruikers en allerlei clients, zoals tv-apps en mobiele apps. Als ik daar Authentik verkeerd tussen zet, breek ik waarschijnlijk meer dan me lief is.

Voor dat soort apps wil ik later liever echte integratie gebruiken:

Immich → OIDC
Nextcloud → OIDC/SAML/LDAP
Jellyfin → eventueel LDAP of SSO-plugin

Maar dat wordt een apart project.

Voorlopige conclusie

Authentik is niet magisch “één login voor alles”. Dat was wel even een reality check.

Wat het wél goed doet:

  • centrale login vóór publieke services;
  • MFA op applicaties die dat zelf niet goed ondersteunen;
  • toegang regelen met groepen;
  • minder losse loginpagina’s direct aan het internet;
  • een net dashboard voor mijn services.

Voor echte single sign-on moet de applicatie zelf daar goed mee om kunnen gaan. Bij sommige apps werkt dat mooi, bij andere blijft het voorlopig een extra voordeur met daarna nog een eigen login.

Al met al ben ik wel blij met de setup. Het was meer werk dan verwacht, vooral door de combinatie van Nginx Proxy Manager thuis, Authentik op een VPS, Caddy en WireGuard. Maar nu de basis staat, is het toevoegen van extra apps relatief eenvoudig.

De volgende stap wordt vooral finetunen: welke apps blijven alleen achter Authentik, welke krijgen echte SSO, en voor welke apps accepteer ik voorlopig gewoon dubbele login.

Lees of reageer op LANgenoten →

← Terug naar het logboek