-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
122 lines (103 loc) · 5.39 KB
/
Copy path.env.example
File metadata and controls
122 lines (103 loc) · 5.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# Application
NODE_ENV=development
PORT=3022
# Helmet / Sécurité HTTP Headers
HELMET_STRICT_TRANSPORT=false # Activer en production avec HTTPS (true)
TRUST_PROXY=false
# Database
DB_IP=127.0.0.1
DB_PORT=3306
DB_USER=user
DB_PWD=your_password
DB_NAME=puna
# MariaDB est actuellement le seul Dialect/BDD pris en compte.
DB_DIALECT=mariadb
# Security Keys (generate your own secure keys)
# Token key for JWT signing
KEY_TK="your_secure_key_tk_here"
# Encryption keys for crypto operations
KEV="your_secure_encryption_key_here_hex_64"
KIV="your_secure_initialization_vector_here_hex_32"
# Session
SESSION_SECRET="your_secure_session_key_here"
SESSION_MAX_AGE=10800000
# CSRF
CSRF_SECRET="your_secure_csrf_key_here"
# API Key — clé d'authentification pour l'en-tête X-KEY-PUNA
# Générer avec : node -e "console.log(require('crypto').randomBytes(16).toString('hex'))"
API_KEY="your_secure_api_key_here"
# Logs - Durées de rétention (en jours)
# Phase de test: durées courtes pour économiser l'espace
# Production: augmenter selon besoins (voir commentaires)
LOG_RETENTION_APP=7 # Logs applicatifs (prod: 30)
LOG_RETENTION_API=14 # Logs API (prod: 60)
LOG_RETENTION_ERROR=30 # Logs erreurs (prod: 90)
LOG_RETENTION_AUDIT=90 # Logs audit/sécurité (prod: 365)
# Console logs (en développement uniquement)
# Mettre à 'false' pour désactiver les logs dans la console même en mode dev
LOG_TO_CONSOLE=true
# API Rate Limiting
# Limite le nombre de soumissions par formulaire pour éviter le spam
RATE_LIMIT_FORM_MAX=30 # Max requêtes par formulaire (défaut: 30)
RATE_LIMIT_FORM_WINDOW_MS=60000 # Fenêtre en ms (défaut: 60000 = 1 minute)
# Login Security — Auto-suspension après trop de tentatives échouées
MAX_FAILED_LOGIN_ATTEMPTS=10 # Nombre max de tentatives échouées avant suspension automatique
# API Upload Limits
# Limites pour les uploads de fichiers et les données de formulaire
API_MAX_FILE_SIZE=10485760 # Taille max par fichier en bytes (défaut: 10 Mo)
API_MAX_TOTAL_SIZE=52428800 # Taille totale max des fichiers en bytes (défaut: 50 Mo)
API_MAX_FILES=10 # Nombre max de fichiers par requête (défaut: 10)
API_MAX_FIELDS=40 # Nombre max de champs dans le JSON (défaut: 40)
API_MAX_FIELD_SIZE=10000 # Taille max par champ texte en bytes (défaut: 10000)
# ALLOWED_EXTENSIONS="" : n'autorise aucun fichier
ALLOWED_EXTENSIONS=".png,.jpg,.jpeg,.webp,.pdf,.doc,.docx,.odt,.txt,.xls,.xlsx,.csv"
# ClamAV — Scan antivirus des fichiers uploadés (optionnel)
# Mettre à true pour activer le scan. Nécessite un daemon ClamAV accessible.
#
# Deux modes de connexion (mutuellement exclusifs) :
# Socket Unix (natif) : définir CLAMAV_SOCKET → CLAMAV_HOST/PORT ignorés
# TCP (Docker) : laisser CLAMAV_SOCKET vide → utilise CLAMAV_HOST + CLAMAV_PORT
#
# Natif (macOS Homebrew) : CLAMAV_SOCKET="/tmp/clamd.socket"
# Docker : CLAMAV_HOST="clamav", CLAMAV_PORT=3310
CLAMAV_ENABLED=true
CLAMAV_SOCKET="/tmp/clamd.socket" # Natif : chemin du socket | Docker : laisser vide
CLAMAV_HOST="127.0.0.1" # Utilisé uniquement si CLAMAV_SOCKET est vide | Docker : clamav
CLAMAV_PORT=3310 # Utilisé uniquement si CLAMAV_SOCKET est vide
# ──────────────────────────────────────────────────────────────────────────────
# SMTP — Envoi d'emails (optionnel, requis pour la réinitialisation de mot de passe)
# ──────────────────────────────────────────────────────────────────────────────
# Toutes les variables SMTP_* doivent être définies pour activer la feature mail.
# Si absentes ou incomplètes, la feature "Mot de passe oublié" est désactivée.
#
# Exemples de providers :
# Gmail : SMTP_HOST=smtp.gmail.com SMTP_PORT=587 (TLS)
# Brevo : SMTP_HOST=smtp-relay.brevo.com SMTP_PORT=587
# Mailtrap : SMTP_HOST=sandbox.smtp.mailtrap.io SMTP_PORT=2525 (dev/test)
# Ethereal : https://ethereal.email (compte de test gratuit)
#
# Pour Gmail, utiliser un "App Password" (pas le mot de passe du compte) :
# https://myaccount.google.com/apppasswords
SMTP_HOST="smtp.example.com"
SMTP_PORT=587
SMTP_USER="[email protected]"
SMTP_PASS="your_smtp_password_here"
SMTP_FROM="Puna <[email protected]>"
# URL de base de l'application (utilisée pour construire les liens dans les emails)
# En production, remplacer par l'URL publique (ex: https://app.example.com)
APP_URL="http://localhost:3022"
# ============================================
# 2FA / TOTP (optionnel)
# ============================================
TOTP_ENABLED=false # true pour activer la double authentification
TOTP_ISSUER=Puna # Nom affiché dans Google Authenticator / Authy
# ============================================
# Admin — Premier utilisateur (requis au premier démarrage)
# ============================================
# Login obligatoire pour créer le super_admin initial.
# Le compte est créé en status "pending" — le mot de passe sera défini à la première connexion.
ADMIN_LOGIN="admin"
ADMIN_EMAIL=""
# MCP
MCP_ENABLED=false
MCP_HASH_SECRET="your_mcp_hash_secret_key_here_hex_64"