Haben Sie Fragen? Senden Sie uns doch eine Nachricht

OneSystems GmbH

OneSystems GmbH

System Management aus der Schweiz

+41 44 586 40 18
Email: info@onesystems.ch

OneSystems GmbH
Grindlenstrasse 9, 9630 Wattwil, Schweiz

Open in Google Maps
  • Home
  • Dienstleistungen
    • E-Mail
      • b1gMail Plugins
    • Hosting
    • Nextcloud
    • Monitoring
  • Blog
  • Hilfe & Support
    • Remote Support
  • Kontakt
  • Home
  • Blog
  • Docker
  • Einen eigenen Identitätsanbieter betreiben (Teil 2)
18. Juli 2025

Einen eigenen Identitätsanbieter betreiben (Teil 2)

Einen eigenen Identitätsanbieter betreiben (Teil 2)

by Michael Kleger / Dienstag, 15 August 2023 / Published in Docker, Identitätsanbieter

Da ich mich wie bereits im ersten Artikel beschrieben habe für authentik entschieden habe, kommt hier die Anleitung wie das System installiert wird.

Wichtig, hierbei handelt es sich um eine Basis Installation und Konfiguration!

 

OneSystems GmbH - Nextcloud

Was wird alles benötigt?

Voraussetzung

  • Docker Server mit installiertem Docker-Compose
  • Einen Reverse Proxy oder Load Balancer
  • Eigene öffentliche Domäne mit zugang zum DNS
  • Eine Firewall oder wenn nicht anders vorhanden einen Router der die Infos mit NAT an den Reverse Proxy weitergibt
  • Öffentliches TLS Zertifikat (z.B. Let’s Encrypt)

 

Container bereitstellen

Authentik

Das Bereitstellen ist auf der offiziellen Dokumentation gut beschreiben und bedarf eigentlich keiner separaten Anleitung:

https://goauthentik.io/docs/installation/docker-compose

 

Als alternative kann auch unsere Docker-Compose Konfiguration verwendet werden:

---
version: "3.4"

services:
  postgresql:
    image: docker.io/library/postgres:12-alpine
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
      start_period: 20s
      interval: 30s
      retries: 5
      timeout: 5s
    volumes:
      - /docker/authentik/database:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: <authentik-db-pwd>
      POSTGRES_USER: <authentik-user>
      POSTGRES_DB: <authentik-db>

  redis:
    image: docker.io/library/redis:alpine
    command: --save 60 1 --loglevel warning
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
      start_period: 20s
      interval: 30s
      retries: 5
      timeout: 3s
    volumes:
      - /docker/authentik/redis:/data

  server:
    image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2023.6.1}
    restart: unless-stopped
    command: server
    environment:
      AUTHENTIK_REDIS__HOST: redis
      AUTHENTIK_POSTGRESQL__HOST: postgresql
      AUTHENTIK_POSTGRESQL__USER: <authentik-user>
      AUTHENTIK_POSTGRESQL__NAME: <authentik-db>
      AUTHENTIK_POSTGRESQL__PASSWORD: <authentik-db-pwd>
      AUTHENTIK_SECRET_KEY: <authentik-secret>
      AUTHENTIK_EMAIL__HOST: mail.onesystems.ch
      AUTHENTIK_EMAIL__PORT: 25
      AUTHENTIK_EMAIL__TIMEOUT: 10
      AUTHENTIK_EMAIL__FROM: authentik@onesystems.ch
    volumes:
      - /docker/authentik/media:/media
      - /docker/authentik/templates:/templates
      - /docker/authentik/geoip:/geoip
    ports:
      - "2030:9000"
      - "2031:9443"
    depends_on:
      - postgresql
      - redis

  worker:
    image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2023.6.1}
    restart: unless-stopped
    command: worker
    environment:
      AUTHENTIK_REDIS__HOST: redis
      AUTHENTIK_POSTGRESQL__HOST: postgresql
      AUTHENTIK_POSTGRESQL__USER: <authentik-user>
      AUTHENTIK_POSTGRESQL__NAME: <authentik-db>
      AUTHENTIK_POSTGRESQL__PASSWORD: <authentik-db-pwd>
      AUTHENTIK_SECRET_KEY: <authentik-secret>
      AUTHENTIK_EMAIL__HOST: <email-server>
      AUTHENTIK_EMAIL__PORT: 25
      AUTHENTIK_EMAIL__TIMEOUT: 10
      AUTHENTIK_EMAIL__FROM: <from-mail>
    user: root
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /docker/authentik/media:/media
      - /docker/authentik/certs:/certs
      - /docker/authentik/templates:/templates
      - /docker/authentik/geoip:/geoip

    depends_on:
      - postgresql
      - redis

  geoipupdate:
    image: ghcr.io/maxmind/geoipupdate:latest
    restart: unless-stopped
    volumes:
      - /docker/authentik/geoip:/usr/share/GeoIP
    environment:
      - GEOIPUPDATE_ACCOUNT_ID=<maxmind-user>
      - GEOIPUPDATE_LICENSE_KEY=<maxmind-api-key>
      - GEOIPUPDATE_EDITION_IDS=GeoLite2-ASN GeoLite2-City GeoLite2-Country
      - GEOIPUPDATE_FREQUENCY=8

Damit der Composer die Conatainer auch einrichten und starten kann müssen noch folgende Ordner angelegt werden auf dem Docker Host:

  • /docker/authentik/database
  • /docker/authentik/redis
  • /docker/authentik/media
  • /docker/authentik/templates
  • /docker/authentik/certs
  • /docker/authentik/geoip

 

Reverse Proxy (NPM)

Damit ein Zertifikat und der IDP direkt und ohne zusätzlichen Port erreichbar ist greife ich auf den Nginx Proxy Manger (NPM) zurück, es können natürlich auch Caddy, HAProxy oder Traefik dafür verwendet werden.

https://nginxproxymanager.com/setup/#using-mysql-mariadb-database

 

Anmelden

Am NPM kann man sich mit den folgenden Daten Anmelden:

Url: http://dockerhost:81

Benutzer: admin@example.com

Passwort: changeme

 

Zertifikat hinzufügen

Nach dem Anmelden und dem zurücksetzen der Standard Anmeldedaten sollte entweder das Offizielle Zertifikat oder ein Let’s Encrypt Konto erstellt werden. «SSL Certificates -> Add SSL Certificate» öffnen und hinzufügen.

 

Proxy Host hinzufügen

Über «Hosts -> Proxy Hosts» kann nun der erste Eintrag für authentik erstellt werden.

Sobald alles vorbereitet ist, muss nur noch der öffentliche DNS und die Firewall konfiguriert werden damit der Dienst von Extern erreichbar wird.

 

Basis Konfiguration

Anmelden

Am System kann man sich, sofern alles funktioniert hat beim Erstellen der Container mit der im NPM hinterlegten Domäne Anmelden+.

  • Benutzer: https://id.domain.ch/if/user
  • Administration: https://id.domain.ch/if/admin

 

Tenants

Für den wiedererkennungswert sollte unter «System -> Tenants» einen neuen Eintrag erstellt werden mit den Angaben unter der der Dienst von extern erreichbar ist. Als Idee wäre hier z.B. id.domain.ch oder auth.domain.ch zu verwenden.

Weiter kann nun auch der Name, Logo und Favicon angepasst werden damit auf den ersten blick klar ist wem der Dienst gehört.

 

Benutzerverwaltung

Diejenigen die bereits ein Microsoft Active Directory oder LDAP-Dienst betreiben können nun die bestehenden Benutzer und Gruppen mit dem authentik System Synchronisieren, alternativ kann auch darauf verzichtet werden und die Benutzer von Hand im System angelegt werden.

Die Synchronisation kann unter «Directory -> Federation & Social login» eingerichtet werden, dabei kann auf eine grössere auswahl an Providern zurückgegriffen werden.

  • Apple
  • Azure AD
  • Discord
  • Facebook
  • GitHub
  • Googel
  • LDAP
  • Mailcow
  • Okta
  • OpenID
  • Patreon
  • Plex
  • Reddit
  • SAMML
  • Twitch
  • Twitter

 

  • Tweet
Tagged under: Identitätsanbieter, Identity provider, IDP, LDAP, SAML, SSO

About Michael Kleger

What you can read next

Migration von Datenbanken in Docker: So gelingt das Upgrade sicher und sauber
Raspberry PI Docker Swarm Cluster
Docker Desktop unter Ubuntu installieren

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden..

Letzten Beiträge

  • Dateien mit Sonderzeichen sicher löschen

    Beim Arbeiten auf Linux-Servern kann es vorkomm...
  • Migration von Datenbanken in Docker: So gelingt das Upgrade sicher und sauber

    Datenbank-Upgrades gehören zu den Aufgaben, die...
  • Automatisierte Backups mit Docker, Cron, Nextcloud Talk & E-Mail

    In diesem Beitrag zeige ich, wie man mit einem ...
  • Windows Server 2025 bereinigen

    Wenn man den Windows Server 2025 (sowie auch äl...
  • Anmelden über die Webcam unter Ubuntu einrichten

    Das einfache Anmelden über die Webcam wie man e...

Neueste Kommentare

  • Michael Kleger bei Mac OS X 10.11El Capitan‎: ISO für Installation erstellen
  • Danyel Gloser bei Mac OS X 10.11El Capitan‎: ISO für Installation erstellen
  • Wie kann man unter Ubuntu den Bildschirm teilen? - OneSystems GmbH bei Flatpack unter Ubuntu installieren
  • Der Weg von Windows zu Linux (Teil 1) - OneSystems GmbH bei Yubikey Manager und Yubico Authenticator unter Ubuntu installieren
  • Michael Kleger bei Eigener CardDAV- und CalDAV Server mit Baikal

Categories

  • b1gMail
  • CentOS
  • Debian
  • Docker
  • Identitätsanbieter
  • Linux
  • Mac OSX
  • Microsoft Exchange
  • Microsoft Outlook
  • Migration
  • Mint
  • Monitoring
  • Neuigkeiten
  • Nextcloud
  • PowerShell
  • Python
  • Raspberry Pi
  • Sicherheit
  • Tipps und Tricks
  • Ubuntu
  • VMware
  • Webseiten
  • Webserver
  • Windows
  • Windows zu Linux

Der IT-Dienstleister OneSystems GmbH mit Sitz in Wattwil versteht sich als Full-Service-Dienstleister für die Umsetzung und Betreuung von IT-Infrastrukturen, Internetseiten und individueller Programmierung. Wir betreuen Kunden aus der ganzen Schweiz, Deutschland und Österreich.

Wir legen grossen Wert auf eine technisch einwandfreie Umsetzung nach aktuellen Standards bei nachhaltiger Qualität.

Letzten Blog Posts

  • Dateien mit Sonderzeichen sicher löschen

  • Migration von Datenbanken in Docker: So gelingt das Upgrade sicher und sauber

  • Automatisierte Backups mit Docker, Cron, Nextcloud Talk & E-Mail

Kontakt

Email: Kontaktformular

OneSystems GmbH
Grindlenstrasse 9
9630 Wattwil
Schweiz

Copyright © 2018-2025 OneSystems GmbH, Alle Rechte vorbehalten.
Impressum | Datenschutzerklärung | AGBs | Kontakt

TOP