Commit Graph
41 Commits
Author SHA1 Message Date
Ruben Hensen 96c13c63f7 authentik: serve auth.scoutingmbg.nl
A Gateway listener with its own certificate, the authentik route on both
hostnames, and an authentik brand for auth.scoutingmbg.nl that logs in
through Scouts Online and then sends people to the photos. The
authentik.rubenhensen.nl brand stays as it is.
2026-10-24 18:52:24 +02:00
Ruben Hensen 70151b0ef4 authentik: certificate for auth.scoutingmbg.nl
The login of the Scouting MBG photos moves to the group's own domain; the Gateway listener follows once the certificate is there.
2026-10-24 18:51:27 +02:00
Ruben Hensen 135bca4a83 authentik: log in to immich with Scouts Online
Adds Scouts Online 3 (login.scouting.nl) as an OIDC source. Its userinfo
has the member's roles within the group; a property mapping puts every
member in "MBG leden" and those with an active Kaderlid role also in
"MBG kader", on every login. Members become external users. Family
members can share an email address and immich needs a unique one, so
those get a plus address with their member number.

The immich provider now authenticates through a flow whose only stage
is an identification stage with this one source and no fields, which
sends people straight on to Scouts Online. The source's own flows only
run through the source.
2026-10-24 13:37:12 +02:00
Ruben Hensen 48b0873ca3 authentik: add an OIDC provider for immich
The Scouting MBG photos (immich) will log in through this authentik,
which later passes on Scouts Online. The provider issues immich_role and
immich_quota: admins and the members of "MBG kader" may upload (-1),
everyone else gets a quota of 0, which makes immich refuse uploads.
"MBG leden" and "MBG kader" are filled by the Scouts Online source in a
next step; until then only authentik Admins can use the app.

The scouting blueprints and their secrets are mounted as directories
rather than with subPath, and the blueprint reads the client secret with
!File instead of !Env, so later changes reach authentik without a restart.
2026-10-24 13:19:52 +02:00
Ruben Hensen 278f6fc55f authentik: limit personal apps to authentik Admins
Actual Budget, Argo CD, FreshRSS, Stalwart and Vault had no policy
binding, so any authentik user could sign in to them. Scouts Online
members are about to get accounts in this authentik for immich; bind
each app to the authentik Admins group, as Longhorn already was.
2026-10-24 13:04:33 +02:00
Ruben Hensen 1f04831a97 Replace the Ingresses with Certificate resources
ingress-nginx is gone and every app is served by the Envoy Gateway. The certificates were created by cert-manager's ingress-shim and are owned by the Ingresses, so each app now declares its Certificate itself, with the same name, secret and usages, so nothing gets reissued. gateway-shim can't take over because the certificates live in the app namespaces.

immich drops mbg.hensen.io, which has no route, so that one certificate is reissued through the Gateway's HTTP-01 solver.

Also removes the Longhorn test-port redirect URI and updates comments that still described nginx.
2026-10-23 21:20:25 +02:00
Ruben Hensen 910b792452 longhorn: log in through authentik on the Gateway
Longhorn has no users of its own; nginx guarded it with basic auth using apr1 hashes, which Envoy Gateway does not support. An Envoy Gateway SecurityPolicy now sends visitors through an authentik OIDC application that only admins may use. The client secret lives in Vault at kv/longhorn-oidc and reaches both authentik and Envoy through External Secrets.
2026-10-23 21:07:31 +02:00
Ruben Hensen 69a0661d09 Add HTTPRoutes for the apps behind ingress-nginx
Each app gets an HTTPS listener on the Gateway with its existing certificate, an HTTPRoute, and a ReferenceGrant for that certificate. The routes drop Envoy's 15s request timeout, as nginx has no overall limit either. Argo CD and Longhorn follow separately; the Ingresses stay until the switch-over.
2026-10-23 17:39:04 +02:00
Ruben Hensen 7acb7eaa8c Move every ExternalSecret and the ClusterSecretStore to external-secrets.io/v1
ESO 0.16.2 is the one release that serves both v1beta1 and v1. 0.17
stops serving v1beta1, so manifests still on v1beta1 would fail to sync
from the next hop on. For these resources the schemas are name-identical
(conversion strategy None); only the apiVersion changes.
2026-10-22 21:41:28 +02:00
Ruben Hensen 8cb8b28cd9 cnpg: prepare for the operator upgrade to 1.30
Pin authentik-postgres to the image CNPG filled in at creation
(postgresql:17.4). Later operators default to PostgreSQL 18, and since
1.26 a higher major in the image triggers an offline in-place major
upgrade. immich-postgres already pins its pgvecto.rs image.

Turn on ENABLE_INSTANCE_MANAGER_INPLACE_UPDATES so the five operator hops
(1.25 -> 1.30, one minor at a time as the docs recommend) swap the
instance manager inside the running pods instead of restarting both
single-instance databases each time.
2026-10-22 15:35:18 +02:00
Ruben Hensen fe678d4b4b ca-bundle: also serve argocd, authentik and actual-budget
Those three namespaces had their own ~190KB copy of patched-ca-bundle.
Let the ca-bundle chart render them too, so the bundle lives in one file.
2026-10-22 09:26:43 +02:00
Ruben Hensen 25a6bf3a05 authentik: mount a CA bundle without the compromised eMudhra roots
Server and worker trusted the leaked eMudhra intermediates through the
Debian bundle (ca-certificates 20250419), Python's ssl module and certifi
2026.01.04. Mount patched-ca-bundle over /etc/ssl/certs and point
SSL_CERT_FILE and REQUESTS_CA_BUNDLE at it until an authentik image ships
a fixed bundle and certifi.
2026-10-21 12:09:41 +02:00
Ruben Hensen 20cf119dbd Extend authentik + FreshRSS session lifetimes
Authentik's default-authentication-login stage ships with
session_duration: seconds=0, so the SSO session died with the browser.
New blueprint raises it to 30 days for every app on that flow.

FreshRSS runs OIDC through Apache mod_auth_openidc, whose defaults are a
5 minute inactivity timeout and a ~7.5 hour max duration in a non-persistent
cookie. Bumped to a 30 day sliding inactivity window (refreshed on every
request) with a 90 day hard cap, and made the cookie persistent so it
survives a browser restart.
2026-09-03 15:21:07 +02:00
Ruben Hensen 499cd6826a Add oidc actualbudget 2 2026-04-10 21:32:19 +02:00
Ruben Hensen 068ac20693 Add oidc actualbudget 2026-04-10 21:23:50 +02:00
Ruben Hensen 579e40d2b3 Update port oidc freshrss 2026-04-10 20:59:59 +02:00
Ruben Hensen 428f14efc1 Add oidc freshrss 2026-04-10 20:49:11 +02:00
Ruben Hensen 0fd7bf1135 Add OIDC to argocd 2026-04-06 18:44:32 +02:00
Ruben Hensen faaf6b6729 Remove most hensen.io refs and move from stalwart.rubenhensen.nl to mail.rubenhensen.nl 2026-04-06 18:09:24 +02:00
Ruben Hensen 07c168220b Revert property mapping 2026-04-05 22:48:35 +02:00
Ruben Hensen 91812829c6 Add property mailalias mapping 2026-04-05 22:36:44 +02:00
Ruben Hensen fd12984bba outpost from direct to cached 2026-03-22 14:44:57 +01:00
Ruben Hensen 7a151c0a2d Add mail changes 2026-03-21 23:30:03 +01:00
Ruben Hensen 264ce4c85b update lb outpost 2026-03-21 20:44:17 +01:00
Ruben Hensen ff44035b4c Change from loadbalancer to nodeport 2026-03-21 19:53:38 +01:00
Ruben Hensen bcd0e47076 Connect Stalwart to Authentik LDAP for user authentication
- Add LDAP directory backend in Stalwart pointing to ldap.rubenhensen.nl
- Expose Authentik LDAP outpost externally via LoadBalancer service
- Add ldap.rubenhensen.nl DNS record
2026-03-17 22:12:56 +01:00
Ruben Hensen 20a7b7ab15 add application ldap 2026-03-15 15:22:09 +01:00
Ruben Hensen 65cbe32b6d Add outpost back 2026-03-15 15:17:53 +01:00
Ruben Hensen 1ef2a27919 Just provider 2026-03-15 15:15:28 +01:00
Ruben Hensen b4a0c2db24 Add only ldap provider 2026-03-15 15:14:49 +01:00
Ruben Hensen 3e9b5950e4 Other ldap blueprint 2026-03-15 15:09:44 +01:00
Ruben Hensen ab0293bd64 invalidation flow added 2026-03-15 14:37:19 +01:00
Ruben Hensen 3977722740 Add LDAP outpost, SOGo on K8s, Stalwart OIDC 2026-03-15 14:30:05 +01:00
Ruben Hensen c51c98e821 Add rubenhensen.nl to all ingresses 2026-03-15 11:46:24 +01:00
Ruben Hensen 8e7c0ad9e3 oidc vault config change authentik3 2026-03-15 11:30:00 +01:00
Ruben Hensen 432243829e oidc vault config change authentik2 2026-03-15 11:28:18 +01:00
Ruben Hensen a8c71e1c73 oidc vault config change authentik 2026-03-15 11:25:10 +01:00
Ruben Hensen d4a75824fd oidc vault config change authentik 2026-03-15 11:13:09 +01:00
Ruben Hensen 66d1ba9d13 Add oidc to Vault 2026-03-15 10:50:18 +01:00
Ruben Hensen 4d551d43b0 cnpg with authentik 2026-03-15 00:27:17 +01:00
Ruben Hensen 7a495bb6fd Add authentik 2026-03-15 00:19:31 +01:00