# SSO / OIDC Status **Identity Provider:** Authentik at `https://sso.vish.gg` (runs on Calypso) **Last updated:** 2026-03-21 --- ## Configured Services | Service | URL | Authentik App Slug | Method | Notes | |---------|-----|--------------------|--------|-------| | Grafana (Atlantis) | `gf.vish.gg` | — | OAuth2 generic | Pre-existing | | Grafana (homelab-vm) | monitoring stack | — | OAuth2 generic | Pre-existing | | Mattermost (matrix-ubuntu) | `mm.crista.love` | — | OpenID Connect | Pre-existing | | Mattermost (homelab-vm) | — | — | GitLab-compat OAuth2 | Pre-existing | | Reactive Resume | `rx.vish.gg` | — | OAuth2 | Pre-existing | | Homarr | `dash.vish.gg` | — | OIDC | Pre-existing | | Headscale | `headscale.vish.gg` | — | OIDC | Pre-existing | | Headplane | — | — | OIDC | Pre-existing | | **Paperless-NGX** | `docs.vish.gg` | `paperless` | django-allauth OIDC | Added 2026-03-16. Forward Auth removed from NPM 2026-03-21 (was causing redirect loop) | | **Hoarder** | `hoarder.thevish.io` | `hoarder` | NextAuth OIDC | Added 2026-03-16 | | **Portainer** | `pt.vish.gg` | `portainer` | OAuth2 | Migrated to pt.vish.gg 2026-03-16 | | **Immich (Calypso)** | `192.168.0.250:8212` | `immich` | immich-config.json OAuth2 | Renamed to "Immich (Calypso)" 2026-03-16 | | **Immich (Atlantis)** | `atlantis.tail.vish.gg:8212` | `immich-atlantis` | immich-config.json OAuth2 | Added 2026-03-16 | | **Gitea** | `git.vish.gg` | `gitea` | OpenID Connect | Added 2026-03-16 | | **Actual Budget** | `actual.vish.gg` | `actual-budget` | OIDC env vars | Added 2026-03-16. Forward Auth removed from NPM 2026-03-21 (was causing redirect loop) | | **Vaultwarden** | `pw.vish.gg` | `vaultwarden` | SSO_ENABLED (testing image) | Added 2026-03-16, SSO works but local login preferred due to 2FA/security key | --- ## Authentik Provider Reference | Provider PK | Name | Client ID | Used By | |-------------|------|-----------|---------| | 2 | Gitea OAuth2 | `7KamS51a0H7V8HyIsfMKNJ8COstZEFh4Z8Em6ZhO` | Gitea | | 3 | Portainer OAuth2 | `fLLnVh8iUyJYdw5HKdt1Q7LHKJLLB8tLZwxmVhNs` | Portainer | | 4 | Paperless (legacy Forward Auth) | — | Superseded by pk=18 | | 11 | Immich (Calypso) | `XSHhp1Hys1ZyRpbpGUv4iqu1y1kJXX7WIIFETqcL` | Immich Calypso | | 18 | Paperless-NGX OIDC | `paperless` | Paperless docs.vish.gg | | 19 | Hoarder | `hoarder` | Hoarder | | 20 | Vaultwarden | `vaultwarden` | Vaultwarden | | 21 | Actual Budget | `actual-budget` | Actual Budget | | 22 | Immich (Atlantis) | `immich-atlantis` | Immich Atlantis | --- ## User Account Reference | Service | Login email/username | Notes | |---------|---------------------|-------| | Authentik (`vish`) | `admin@thevish.io` | Primary SSO identity | | Gitea | `admin@thevish.io` | Updated 2026-03-16 | | Paperless | `vish` / `admin@thevish.io` | OAuth linked to `vish` username | | Hoarder | `admin@thevish.io` | | | Portainer | `vish` (username match) | | | Immich (both) | `admin@thevish.io` | oauthId=`vish` | | Vaultwarden | `your-email@example.com` | Left as-is to preserve 2FA/security key | | Actual Budget | auto-created on first login | `ACTUAL_USER_CREATION_MODE=login` | --- ## Known Issues / Quirks ### Vaultwarden SSO - Requires `vaultwarden/server:testing` image (SSO not compiled into `:latest`) - `SSO_AUTHORITY` must include trailing slash to match Authentik's issuer URI - `SSO_ALLOW_UNKNOWN_EMAIL_VERIFICATION=true` required (Authentik sends `email_verified: False` by default) - A custom email scope mapping `email_verified true` (pk=`51d15142`) returns `True` for Authentik - SSO login works but local login kept as primary due to security key/2FA dependency ### Authentik email scope - Default Authentik email mapping hardcodes `email_verified: False` - Custom mapping `email_verified true` (pk=`51d15142`) created and applied to Vaultwarden provider - All other providers use the default mapping (most apps don't check this field) ### Gitea OAuth2 source name case - Gitea sends `Authentik` (capital A) as the callback path - Both `authentik` and `Authentik` redirect URIs registered in Authentik provider pk=2 ### Portainer - Migrated from `http://vishinator.synology.me:10000` to `https://pt.vish.gg` on 2026-03-16 - Client secret was stale — resynced from Authentik provider ### Immich (Atlantis) network issues - Container must be on `immich-stack_default` network (not `immich_default` or `atlantis_default`) - When recreating container manually, always reconnect to `immich-stack_default` before starting --- ## Services Without SSO (candidates) | Service | OIDC Support | Effort | Notes | |---------|-------------|--------|-------| | Paperless (Atlantis) | ✅ same as Calypso | Low | Separate older instance | | Audiobookshelf | ✅ `AUTH_OPENID_*` env vars | Low | | | BookStack (Seattle) | ✅ `AUTH_METHOD=oidc` | Low | | | Seafile | ✅ `seahub_settings.py` | Medium | WebDAV at `dav.vish.gg` | | NetBox | ✅ `SOCIAL_AUTH_OIDC_*` | Medium | | | PhotoPrism | ✅ `PHOTOPRISM_AUTH_MODE=oidc` | Medium | | | Firefly III | ✅ via `stack.env` | Medium | | | Mastodon | ✅ `.env.production` | Medium | |