96043efe46
Passkey-Login wie in ausgaben-next/werte-next: auf der Login-Seite "Mit Passkey anmelden", Verwaltung der eigenen Passkeys unter /einstellungen (Button oben rechts). Das Passwort bleibt als Alternative bestehen. - lib/webauthn.ts, lib/passkeys.ts sowie API-Routen unter /api/passkey - proxy.ts: /api/passkey/authenticate ohne Session erreichbar - Styles als eigene CSS-Klassen in globals.css (kein Tailwind in diesem Projekt), passend zum vorhandenen login-*/app-*-Schema - Tabelle tabletten_passkeys in der DB medizin: app-spezifischer Name, damit sich Apps desselben Stacks nicht gegenseitig Passkeys anzeigen oder loeschen - RP-Konfiguration ueber TABLETTEN_RP_*, da sich die .env auf dem Server mit anderen Apps teilt, die RP_ID/RP_ORIGIN bereits belegen Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
43 lines
1.7 KiB
YAML
43 lines
1.7 KiB
YAML
# Docker Compose für Production Server mit Traefik
|
|
services:
|
|
tabletten-app:
|
|
image: docker.citysensor.de/tabletten:latest
|
|
container_name: tabletten
|
|
restart: unless-stopped
|
|
environment:
|
|
- NODE_ENV=production
|
|
- DB_HOST=${DB_HOST}
|
|
- DB_USER=${DB_USER}
|
|
- DB_PASS=${DB_PASS}
|
|
- DB_NAME=${DB_NAME}
|
|
- AUTH_USERS=${AUTH_USERS}
|
|
- AUTH_SECRET=${AUTH_SECRET}
|
|
# Passkeys (WebAuthn): Host bzw. volle URL der Anwendung.
|
|
# Eigene Variablennamen, weil sich mehrere Apps im Stack eine .env teilen
|
|
# und RP_ID/RP_ORIGIN dort bereits von werte-next belegt sind.
|
|
- RP_ID=${TABLETTEN_RP_ID:-tabletten.fuerst-stuttgart.de}
|
|
- RP_ORIGIN=${TABLETTEN_RP_ORIGIN:-https://tabletten.fuerst-stuttgart.de}
|
|
- RP_NAME=${TABLETTEN_RP_NAME:-Tabletten-Check}
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.tabletten.entrypoints=http
|
|
- traefik.http.routers.tabletten.rule=Host(`tabletten.fuerst-stuttgart.de`)
|
|
- traefik.http.middlewares.tabletten-https-redirect.redirectscheme.scheme=https
|
|
- traefik.http.routers.tabletten.middlewares=tabletten-https-redirect
|
|
- traefik.http.routers.tabletten-secure.entrypoints=https
|
|
- traefik.http.routers.tabletten-secure.rule=Host(`tabletten.fuerst-stuttgart.de`)
|
|
- traefik.http.routers.tabletten-secure.tls=true
|
|
- traefik.http.routers.tabletten-secure.tls.certresolver=letsencrypt
|
|
- traefik.http.routers.tabletten-secure.service=tabletten
|
|
- traefik.http.services.tabletten.loadbalancer.server.port=3000
|
|
networks:
|
|
- proxy
|
|
- gitea-internal
|
|
networks:
|
|
proxy:
|
|
name: dockge_default
|
|
external: true
|
|
gitea-internal:
|
|
name: gitea_gitea-internal
|
|
external: true
|