Pocket ID ist ein einfacher OIDC-Anbieter, der es Benutzern ermöglicht, sich mit ihren Passkeys bei Ihren Diensten zu authentifizieren.
Das Ziel von Pocket ID ist es, einfach und benutzerfreundlich zu sein. Es gibt andere selbst gehostete OIDC Anbieter wie Keycloak oder Authentik, aber diese sind oft zu komplex für einfache Anwendungsfälle.
Eine Besonderheit von Pocket ID ist, dass es nur die Passkey-Authentifizierung unterstützt, was bedeutet, dass du kein Passwort benötigen. Zum Beispiel kannst du jetzt einen physischen Yubikey verwenden, um dich einfach und sicher bei all deinen selbst gehosteten Diensten anzumelden.
1. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu)
- TRAEFIK V2 + 3 – REVERSE-PROXY MIT CROWDSEC IM STACK EINRICHTEN
2. Ordner anlegen
Zuerst legen wir uns passende Ordner-Strukturen an.
mkdir -p /opt/containers/pocket-id
3. Compse Datei anlegen
nano /opt/containers/pocket-id/compose.yml
Inhalt
services: pocketid: image: stonith404/pocket-id:latest container_name: pocket-id restart: unless-stopped env_file: .env volumes: - "./data:/app/backend/data" labels: - "traefik.enable=true" - "traefik.http.routers.pocket-id.entrypoints=websecure" - "traefik.http.routers.pocket-id.rule=Host(`pocket-id.deinedomain.de`)" - "traefik.http.routers.pocket-id.tls=true" - "traefik.http.routers.pocket-id.tls.certresolver=http_resolver" - "traefik.http.routers.pocket-id.service=pocket-id" - "traefik.http.services.pocket-id.loadbalancer.server.port=80" - "traefik.docker.network=proxy" - "traefik.http.routers.pocket-id.middlewares=default@file" networks: - proxy networks: proxy: external: true
Noch anzupassen:
- Eure Traefik URL pocket-id.deinedomain.de
3.1 .ENV Datei anlegen
nano /opt/containers/pocket-id/.env
Inhalt
# Bitte die Domain wie oben anpassen PUBLIC_APP_URL=https://pocket-id.deinedomain.de
4. Pocket ID starten
Nun starten wir den Container mittels folgendem Befehl:
docker compose -f /opt/containers/pocket-id/compose.yml up -d
Der Container ist in wenigen Sekunden gebaut.
Ruft nun im Browser die gewählte Domain auf und dann solltet ihr folgendes sehen.
Für das erstellen des ersten Benutzers bzw. Passkeys geht ihr bitte auf folgende Seite
https://pocket-id.deinedomain.de/login/setup
Dort könnt ihr dann den ersten Benutzer anlegen
Folgt den Anweisungen und dann solltet ihr im Admin bereich laden.
Der Erstellung der OIDC Clients ist wirklich einfach, alle nötigen Infos findet ihr hier bei GitHub:
https://github.com/stonith404/pocket-id?tab=readme-ov-file#add-pocket-id-as-an-oidc-provider
5. Beispiel Config für Pingvin Share
Pingvin Share ist auch hier als Anleitung verfügbar und wurde von selben Entwickler programmiert wie Pocket-ID. Wir nehmen Pingvin Share mal als Beispiel für das OIDC Setup.
Bei Pocket-ID unter OIDC Clients klickt ihr auf Add Client, wählt einen Namen und füllt die Callback URLs aus.
Name: Pingvin Share
Callback URLs: https://<your-domain>/api/oauth/callback/oidc
Speichert euch die Client ID and das Secret und wechselt in eure Pingvin Share Instanz und ruft folgende Seite auf:
Admin/Configuration/Social Login
https://pingvinshare.deinedomain.de/
admin/config/oauth
Dort Scrollt ihr ganz runter bis OpenID Connect und aktiviert dieses. Füllt nun dort folgende Felder aus:
OpenID Connect Discovery URI: https://pocket-id.deinedomain.de/.well-known/openid-configuration
OpenID Connect username claim: preferred_username
OpenID Connect Client ID: Habt ihr unter OIDC Clients in Pocket ID erstellt
OpenID Connect Client secret: Habt ihr unter OIDC Clients in Pocket ID erstellt
Wichtig ist das der Benutzername vom Pocket-ID OIDC Client und dem Pingvin-Share identisch sind.
Nun als letzes geht ihr in Pingvin Share auf die Account Einstellunge (/account)
Und aktiviert den Social Login
Nun solltet ihr euch mit Pocket-ID einloggen können.
Quellen:
https://stonith404.github.io/pingvin-share/introduction
https://github.com/stonith404/pocket-id
Hallo, ich habe da wohl einen Knoten im Kopf. Bei mir läuft die Aktivierung in Pingvin auf einen Timeout. Ich kann die Anmeldung nicht aktivieren. Dein Hinweis “Wichtig ist das der Benutzername vom Pocket-ID OIDC Client und dem Pingvin-Share identisch sind”
habe ich nicht verstanden. Im OIDC Client gibt es kein Benutzername. Welche müssen den überein stimmen. Danke für ein Aufklärung. Gruß Andreas.
Top Anleitung und ein wirklich starkes Tool. Hat sofort auf Anhieb funktioniert mit deiner Anleitung,
Ich werde mich jetzt an der Integration in weitere Dienste versuchen.
Vielleicht können wir hier auch eine kleine Sammlung aufbauen mit Services, die hier bereitgestellt wurden?
Sollte ich einen Dienst ans Laufen bekommen, werde ich mich auf jeden Fall melden.