Dotfiles/setup/modules
Amir Alexander Abdelbaki be757fda5a feat(ansipa): nginx gateway — reverse proxy + portal start-page
Add an nginx service that fronts all three web UIs on a single hostname/port
and serves a portal landing page, designed to sit behind the operator's own
TLS-terminating reverse proxy.

- Each backend is proxied at the path it already serves natively — FreeIPA
  /ipa, CheckMK /cmk, Keycloak under a configured /auth relative path — so no
  fragile path rewriting is needed and one upstream proxy line exposes
  everything. FreeIPA's strict Host/Referer anti-CSRF checks are satisfied by
  pinning Host to the IPA hostname and rewriting Referer.
- Honors incoming X-Forwarded-Proto/For so it works behind a second reverse
  proxy (double-proxy verified: portal, FreeIPA, CheckMK and Keycloak all
  reachable through two layers, and a CheckMK login POST completes to an
  authenticated session through the gateway).
- Keycloak: KC_HTTP_RELATIVE_PATH=/auth + KC_PROXY_HEADERS=xforwarded so it
  builds correct URLs behind the gateway; deliberately not forwarding
  X-Forwarded-Port (this gateway is :80 internally; the public port is the
  upstream proxy's) to avoid https://host:80 redirects.
- .env.example documents ANSIPA_HTTP_PORT and gives the exact upstream
  reverse-proxy snippet (nginx location block + Caddy one-liner).

Portal is a static cyberqueer-themed page linking to /ipa/ui/, /cmk/, /auth/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MUhrcFU8J1Hnf7vNqNxZNi
2026-07-02 12:36:28 +02:00
..
Desktop-Environments fix(de): disable greetd so ly is the sole greeter on hyprlua/hyprland 2026-07-02 11:28:15 +02:00
FreeipaAnsible feat(ansipa): nginx gateway — reverse proxy + portal start-page 2026-07-02 12:36:28 +02:00
lib fix(de): disable greetd so ly is the sole greeter on hyprlua/hyprland 2026-07-02 11:28:15 +02:00
optional-Modules/apps fix(ansipa): FreeIPA enrollment for Arch/Fedora/RHEL + autofs AUR workaround 2026-07-02 11:27:46 +02:00
core-packages.sh fix(core-packages): make PipeWire the jack/pulse provider to avoid DE conflict 2026-06-27 13:25:49 +02:00
core.sh fix(modules): resolve rust/rustup conflict and greetd config-dir abort 2026-06-27 04:15:36 +02:00
package-managers.sh chore: add inline comments across all modules and configs 2026-06-25 13:07:06 +02:00
shell-setup.sh fix(shell-setup): set default shell without a password prompt 2026-06-27 02:13:32 +02:00