Skip to content

Configuration

pedrokarim edited this page Jun 11, 2026 · 1 revision

Configuration

Deux niveaux de configuration : les variables d'environnement (.env) et la configuration d'upload (config/uploads.json, modifiable aussi depuis l'UI Uploads → Configuration).

Variables d'environnement

Variable Rôle Exemple Requis
AUTH_SECRET Secret NextAuth (openssl rand -base64 32) g7Boa…ck8=
AUTH_URL URL de base / hôte NextAuth v5 http://localhost:3000 recommandé
PORT Port du serveur 3000 (.env d'exemple : 4001) optionnel
UPLOAD_PATH Dossier racine des uploads ./uploads optionnel
NEXT_PUBLIC_API_URL URL publique de l'API (client) http://localhost:3000 optionnel
NEXT_PUBLIC_APP_DOMAIN Domaine public de l'app ascencia.re optionnel
NEXT_PUBLIC_IMAGE_DOMAIN Domaine de service des images img.ascencia.re optionnel
MINECRAFT_SKIN_API_URL Microservice skin Minecraft (optionnel) http://localhost:3089 optionnel
GOOGLE_API_KEY Clé du provider IA (module ai-image-gen) optionnel
THEME_DB_PATH Surcharge du chemin de la base SQLite des thèmes optionnel

⚠️ NextAuth v5 : la variable est AUTH_URL, pas NEXTAUTH_URL.

Configuration d'upload (config/uploads.json)

Chargée par lib/upload-config.ts (getConfig()), avec repli sur lib/defaultConfig.ts en cas d'erreur. Schéma (lib/types/upload-config.ts) :

{
  "allowedTypes": { "images": true, "documents": true, "archives": true },

  "limits": {
    "maxFileSize": 10,          // en Mo
    "minFileSize": 1,           // en Ko
    "maxFilesPerUpload": 50,
    "maxFilesPerType": { "images": 30, "documents": 20, "archives": 10 }
  },

  "filenamePattern": "{random}", // ex: "{timestamp}-{random}-{original}"

  "thumbnails": {
    "enabled": true,
    "maxWidth": 200, "maxHeight": 200,
    "quality": 80,
    "format": "auto",            // auto | jpeg | png | webp
    "preserveFormat": true,
    "fit": "cover",              // cover | contain | fill | inside | outside
    "background": "rgba(255,255,255,0)",
    "progressive": true, "blur": 0, "sharpen": false, "metadata": true
  },

  "storage": {
    "path": "./uploads",
    "structure": "flat",         // flat | type | date
    "preserveFilenames": false,
    "replaceExisting": false,
    "thumbnailsPath": "thumbnails",
    "dateFormat": { "folderStructure": "YYYY/MM", "timezone": "Europe/Paris" },
    "permissions": { "files": "0644", "directories": "0755" }
  },

  "domains": {
    "list": [
      { "id": "default", "name": "Default", "url": "http://localhost:3000", "isDefault": true }
    ],
    "defaultDomain": "default",
    "useSSL": true,
    "pathPrefix": "/uploads"
  }
}

Détails importants

  • Unités de taille : maxFileSize est en Mo (taille > maxFileSize × 1024 × 1024) ; minFileSize est en Ko (taille < minFileSize × 1024).
  • Types & extensions (les booléens allowedTypes activent/désactivent ; les extensions sont fixées dans le code) :
    • Images : jpg, jpeg, png, gif, webp
    • Documents : pdf, doc, docx, txt
    • Archives : zip, rar
  • Miniatures : générées via Sharp uniquement pour les images, écrites dans {uploads}/{thumbnailsPath}/thumb_<nom>.
  • Domaines : l'URL finale d'un fichier est construite à partir du domaine par défaut + pathPrefix (+ useSSL). Gérables depuis l'UI Paramètres → Domaines.

💡 La configuration d'upload est aussi éditable sans toucher au fichier, depuis l'interface : Uploads → Configuration (réservé aux admins).

➡️ Suite : Fonctionnalités ou Clés API.

Clone this wiki locally