Initial commit: MKV → AVI web app (Docker + Keycloak OIDC)

- App FastAPI : recherche dans un dossier média, download original ou
  conversion en AVI Xvid (tone-mapping HDR→SDR, audio FR auto, MP3 stéréo)
- Auth Keycloak OIDC (Authlib) optionnelle
- 3 composes : app seule, stack local (keycloak.local), production (NPM)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-04 00:28:51 +02:00
commit fd2e0689bf
15 changed files with 1328 additions and 0 deletions
+27
View File
@@ -0,0 +1,27 @@
services:
mkv2avi:
build: .
image: mkv2avi:latest
container_name: mkv2avi
ports:
- "8080:8000"
volumes:
# Dossier média à parcourir (monté en lecture seule = originaux protégés)
- ${MEDIA_DIR:-./media}:/media:ro
# Dossier de sortie des AVI convertis
- ${OUTPUT_DIR:-./output}:/output
environment:
# Nombre de conversions simultanées (1 = en série, recommandé sans GPU)
- MAX_WORKERS=1
# --- Authentification Keycloak (laisser vide = auth désactivée) ---
- OIDC_ISSUER=${OIDC_ISSUER:-}
- OIDC_CLIENT_ID=${OIDC_CLIENT_ID:-}
- OIDC_CLIENT_SECRET=${OIDC_CLIENT_SECRET:-}
# URL de retour ; laisser vide pour la déduire automatiquement
- OIDC_REDIRECT_URI=${OIDC_REDIRECT_URI:-}
- OIDC_POST_LOGOUT_REDIRECT_URI=${OIDC_POST_LOGOUT_REDIRECT_URI:-}
# Secret de signature des cookies de session (À CHANGER)
- SESSION_SECRET=${SESSION_SECRET:-dev-insecure-change-me}
# true si servi en HTTPS (derrière NPM en TLS)
- SESSION_HTTPS_ONLY=${SESSION_HTTPS_ONLY:-false}
restart: unless-stopped