Files
tabletten/compose.yml
T
admin 96043efe46 V 1.3.0 Anmeldung per Passkey (WebAuthn)
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>
2026-08-09 20:17:11 +02:00

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