Commit graph

20 commits

Author SHA1 Message Date
Simon Bärlocher
da103a59f2
feat(authentik): split-horizon host rewrite + proxy-app mode/group bindings
* `authentik_host_rewrite_domains`: extra hostnames that reach the
  authentik container but make it generate URLs (OIDC issuer, reset
  links) as if requested from the canonical `authentik_domains[0]`.
  Each entry gets its own traefik router and a URL-based loadbalancer
  service that disables passHostHeader and pins X-Forwarded-Host via
  middleware, so server-to-server calls on internal FQDNs keep traffic
  in the LAN while the iss claim stays aligned with the public host.
  Uses a network alias on the canonical FQDN so traefik (sharing the
  network) resolves the URL upstream to this very container.

* proxy-app blueprint:
  - `mode` (default `forward_single`) lets callers pick between proxy,
    forward_single and forward_domain providers in one template.
  - `allowed_groups`: when set, emit one PolicyBinding per group on
    the application; authentik OR-evaluates bindings, so users in any
    listed group pass and others are denied.

Existing inventories with an empty list see no behavioural change.
2026-05-26 14:03:05 +02:00
Simon Bärlocher
02d45026a5
feat: drop blanket recreates, ACME-DNS knobs, notify_push override
- Drop `recreate: always` from collabora/drawio/homarr/opencloud/traefik
  handlers and the authentik_outpost_ldap start task. `up -d` with
  `state: present` already recreates exactly the services whose
  compose definition changed; the blanket recreate was forcing
  restarts even when nothing relevant moved.
- Rewrite the `*_domains` Traefik Host loop to the `Host(\`a\`) ||
  Host(\`b\`)` form across authentik/collabora/garage/nextcloud so the
  rule still matches when traefik can't normalize the comma-form into
  the same canonical shape.
- Traefik: add `traefik_acme_tcp_only` (sets LEGO_EXPERIMENTAL_DNS_TCP_ONLY)
  and `traefik_acme_disable_ans_checks` (disables lego's authoritative-NS
  propagation check) for environments where the DNS path between the
  traefik container and the zone's nameservers is constrained.
- Traefik DMZ collector: two-step merge so a `traefik_dmz_exposed_services`
  entry that sets its own `backend_host` wins over the host fallback;
  lets a route target an internal FQDN covered by the backend cert's
  SANs instead of the raw IP.
- Nextcloud: add `nextcloud_notify_push_domain` override for the
  `occ notify_push:setup` call so the setup check can hit an internal
  FQDN instead of hairpinning through the DMZ. Push router now matches
  every entry in `nextcloud_domains`.
- Nextcloud: also %2F-escape slashes in the postgres user/password
  inside the notify_push DATABASE_URL.
2026-05-20 22:44:41 +02:00
Simon Bärlocher
36e3a4b688
feat: domain list refactor + demo-gymburgdorf fixes
- Refactor: collapse `*_domain` + `*_extra_domains` into a single
  `*_domains` list across authentik, collabora, garage and nextcloud
  roles. First entry is the canonical FQDN (used for OVERWRITEHOST,
  BASE_URL, notify_push setup and garage root_domain).
- Authentik blueprint: guard the OAuth sources block so an empty
  `authentik_login_sources` no longer renders an invalid YAML key.
- Nextcloud: introduce `nextcloud_collabora_public_domain` and set
  Collabora's `public_wopi_url` separately from the server-to-server
  `wopi_url` so browsers can reach Collabora via the public name while
  Nextcloud still talks to it on the internal one.
- Nextcloud: URL-encode the postgres user/password in DATABASE_URL.
2026-05-20 22:13:34 +02:00
c27b4d9488
feat: add blueprints for authentik ldap outpost and render values directly instead of using env vars
Signed-off-by: Bert-Jan Fikse <bert-jan@whatwedo.ch>
2026-04-10 14:33:52 +02:00
21d340de05
fix: correctly reference login_source in blueprint-login-sources 2026-01-14 18:00:56 +01:00
a63da2a29e
chore: reorder blueprints so referenced objects are created before applying 2026-01-14 17:55:31 +01:00
f1f8406c7e
chore: move blueprints to custom folder
otherwise it overwrites default blueprints provided by authentik
2026-01-14 17:37:57 +01:00
fe31369f8c
chore: add healthcheck to authentik and wait for it after deployment 2026-01-14 17:36:52 +01:00
5ed12c64d0
chore: add authentik_login_user_fields to allow showing custom fields, or removing them
e.g when using social + local logins
2026-01-14 16:50:33 +01:00
b00a051b9d
chore: add blueprint stuff to seperate task file 2026-01-14 16:23:52 +01:00
3d3a09025a
feat: allow deletion of ressources via blueprints 2026-01-14 16:22:58 +01:00
f8b9975ae4
chore: add removal of stale blueprints 2026-01-14 16:22:57 +01:00
8828436adf
chore: add minimal readme 2026-01-14 16:22:57 +01:00
d800d43c71
feat: add ability to provision local users using blueprints 2026-01-14 16:22:57 +01:00
359622d17a
feat: add ability to provision entra login sources using blueprints 2026-01-14 15:35:18 +01:00
0106e8801f
feat: add ability to provision outposts using blueprints 2026-01-14 14:31:22 +01:00
438a41356a
feat: add ability to provision proxy apps using blueprints 2026-01-14 14:05:05 +01:00
3f8afa12ef
feat: add ability to provision using blueprints 2026-01-14 13:49:40 +01:00
f814496049
chore: add basic docker-compose for authentik 2026-01-14 12:47:45 +01:00
43327b47f3
chore: add new role boilerplate for authentik 2026-01-14 10:03:06 +01:00