mediaDrop/config.example.json
Nicolas fe8bd26bb7 Initial commit: mediaDrop — serveur de dépôt de fichiers médias
Serveur TypeScript (Fastify 5) permettant de déposer des fichiers médias
dans des dossiers nommés, via une page web de glisser-déposer.

- Authentification OpenID Connect gérée côté serveur (Authorization Code +
  PKCE, client confidentiel, openid-client) ; session via cookie chiffré
  (@fastify/secure-session).
- Configuration dans un fichier JSON (schéma fourni) ; l'environnement ne
  porte que le pointeur MEDIADROP_CONFIG.
- Cibles de dépôt nommées : liste { name, label, dir }, sélection par
  ?target=, première cible par défaut.
- Upload multipart en streaming : nom de fichier dérivé côté serveur (pas
  de path traversal), liste blanche de types MIME, plafond de taille.
- TypeScript strict, ESLint + Prettier sans warning, 46 tests Vitest.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 23:06:53 +02:00

23 lines
735 B
JSON

{
"$schema": "./config.schema.json",
"port": 3000,
"host": "0.0.0.0",
"publicUrl": "http://localhost:3000",
"targets": [
{ "name": "photos", "label": "Photos", "dir": "./uploads/photos" },
{ "name": "videos", "label": "Vidéos", "dir": "./uploads/videos" }
],
"maxFileSizeMb": 512,
"logLevel": "info",
"allowedMimeTypes": ["image/jpeg", "image/png", "image/webp", "video/mp4", "audio/mpeg"],
"session": {
"key": "REMPLACER_PAR_32_OCTETS_BASE64_openssl_rand_base64_32",
"maxAgeHours": 12
},
"oidc": {
"issuer": "https://auth.exemple.fr/realms/mon-realm",
"clientId": "mediadrop",
"clientSecret": "REMPLACER_PAR_LE_SECRET_DU_CLIENT",
"scopes": ["openid", "profile", "email"]
}
}