Variables d'environnement
Variables d'environnement
Dernière mise à jour : 2026-05-10
Toutes les variables sont déclarées dans src/config.ts (Zod schema avec validation au boot). Le fichier .env.example les documente avec commentaires. Aucune variable ne doit apparaître ailleurs que dans config.ts (sauf drizzle.config.ts qui s'exécute hors du build TS).
⚠️ Quand tu ajoutes une variable, mets à jour 3 fichiers en parallèle : src/config.ts, .env.example, unraid/boardgame-referee.xml. Sans le XML, l'admin Unraid ne pourra pas la setter via l'UI.
Légende
- 🔐 = secret (jamais versionné, jamais loggé)
- ⚠️ = critique (requis ou blocage au boot)
- 🌐 = service URL externe
Serveur
| Variable |
Type |
Défaut |
Rôle |
PORT |
number |
3000 |
Port d'écoute Hono |
LOG_LEVEL |
enum |
info (prod) / debug (dev) |
Filtrage logs (debug/info/warn/error) |
TRUST_PROXY ⚠️ |
bool |
false |
Active la confiance dans X-Forwarded-* (mettre true derrière NPM) |
CORS_ORIGIN ⚠️ |
string |
* |
Whitelist origines, virgule-séparées. Supporte CIDR IPv4 (192.168.10.0/24) |
COOKIE_SECRET 🔐⚠️ |
string |
(requis, ≥16 chars hex) |
Secret de signature des cookies session |
Base de données / fichiers
| Variable |
Type |
Défaut |
Rôle |
DB_PATH |
string |
/app/data/database.db |
Chemin SQLite |
PDF_DIR |
string |
/app/pdfs |
Dossier PDFs uploadés + PNG rendus |
CARD_IMAGE_CACHE_DIR |
string |
/app/data/card-images-cache |
Cache des images cartes resize sharp |
Sources de cartes (data dirs)
| Variable |
Type |
Défaut |
MAGIC_CARDS_DATA_DIR |
string |
/app/data/magic-cards |
LORCANA_CARDS_DATA_DIR |
string |
/app/data/lorcana-cards |
TM_CARDS_DATA_DIR |
string |
/app/data/terraforming-mars-cards |
ARK_NOVA_CARDS_DATA_DIR |
string |
/app/data/ark-nova-cards |
(FAB est bundlé via @flesh-and-blood/cards npm — pas de data dir.)
Embeddings et Vector DB
| Variable |
Type |
Défaut |
Rôle |
TEI_URL 🌐⚠️ |
URL |
http://localhost:8099 |
TEI bge-m3 (embeddings) |
TEI_RERANKER_URL 🌐⚠️ |
URL |
http://localhost:8990 |
TEI reranker bge-v2-m3 |
QDRANT_URL 🌐⚠️ |
URL |
http://localhost:6333 |
Qdrant vector DB |
CARD_WARM_TIMEOUT_MS |
number |
30000 |
Timeout préchargement collections cartes au boot |
Claude (génération)
| Variable |
Type |
Défaut |
Rôle |
CLAUDE_USE_LOCAL |
bool |
false |
Mode dev local (bypass SSH) |
CLAUDE_LOCAL_BIN |
string |
claude |
Binaire CLI (mode local) |
CLAUDE_LOCAL_WORKDIR |
string |
(optionnel) |
Workdir CLI (mode local) |
CLAUDE_SSH_HOST ⚠️ |
string |
(requis prod) |
Host SSH VM oracle |
CLAUDE_SSH_USER ⚠️ |
string |
oracle |
User SSH (toujours oracle) |
CLAUDE_SSH_KEY_PATH 🔐 |
string |
/app/ssh/id_ed25519 |
Clé privée ed25519 dédiée |
CLAUDE_SSH_WORKDIR |
string |
/home/oracle/work |
Workdir VM (préfixe ForceCommand) |
RAG (HyDE, decompose, fusion)
| Variable |
Type |
Défaut |
Rôle |
HYDE_ENABLED |
bool |
true |
Active HyDE (passage hypothétique) |
HYDE_MODEL |
string |
claude-haiku-4-5-20251001 |
Modèle HyDE |
HYDE_TIMEOUT_MS |
number |
25000 |
Timeout HyDE (tunnel SSH baseline ~5s, marge confortable) |
DECOMPOSE_TIMEOUT_MS |
number |
25000 |
Timeout decompose-query Haiku |
HAIKU_RETRY_ENABLED |
bool |
true |
Retry 1× sur timeout/parse fail |
RAG_FUSION_V2_ENABLED |
bool |
true |
Active fusion RRF v2 + blending position-aware |
CONTEXTUAL_MODEL |
string |
claude-haiku-4-5-20251001 |
Modèle Contextual Retrieval B (1 appel/chunk) |
CONTEXTUAL_CACHE_DIR |
string |
/app/data |
Dossier cache JSON contextes |
CONFLICT_MODEL |
string |
(fallback CONTEXTUAL_MODEL) |
Modèle détection conflits extension |
CONFLICT_SIMILARITY_THRESHOLD |
number |
0.65 |
Seuil similarité cosine pour déclencher l'analyse de conflit |
OCR
| Variable |
Type |
Défaut |
Rôle |
OCR_ENABLED |
bool |
true |
Active l'auto-détection PDFs scannés |
OCR_ENGINE |
enum |
tesseract |
(Phase 1 : tesseract uniquement) |
OCR_LANGUAGES |
string |
fra+eng |
Concat tesseract |
OCR_CACHE_DIR |
string |
/app/data |
Cache JSON ocr-v1-<slug>.json |
OCR_AUTO_THRESHOLD_CHARS_PER_PAGE |
number |
50 |
Seuil sous lequel on déclenche l'OCR |
OCR_CONCURRENCY |
number |
2 |
Pool workers tesseract |
OCR_MIN_CONFIDENCE |
number |
40 |
Confiance tesseract (0-100, log warn si en-dessous) |
Premier admin (boot)
| Variable |
Type |
Défaut |
Rôle |
FIRST_ADMIN_USERNAME ⚠️ |
string |
admin |
Username créé/réinitialisé au boot |
FIRST_ADMIN_PASSWORD 🔐⚠️ |
string |
(requis, ≥8 chars) |
Password initial (hashé argon2) |
SMTP (optionnel)
| Variable |
Type |
Défaut |
Rôle |
SMTP_HOST |
string |
(vide = désactivé) |
Host SMTP |
SMTP_PORT |
number |
587 |
|
SMTP_USER 🔐 |
string |
|
|
SMTP_PASS 🔐 |
string |
|
|
SMTP_FROM |
string |
|
Header From |
SMTP_SECURE |
bool |
false |
TLS |
Méta-game
(Tous désactivés par défaut. Activer à la carte selon les TCG suivis.)
| Variable |
Type |
Défaut |
META_SYNC_ENABLED |
bool |
false |
META_SYNC_HOUR |
number |
4 |
META_SYNC_INTERVAL_HOURS |
number |
168 (hebdo) |
META_RETENTION_DAYS |
number |
90 |
META_MTG_SET |
string |
(vide = skip) |
META_MTG_FORMATS |
string |
(vide = skip) |
META_TOURNAMENT_ENABLED |
bool |
false |
META_TOURNAMENT_FORMATS |
string |
standard,modern,pioneer,... |
META_TOURNAMENT_ARCHIVE_HTML |
bool |
true |
META_TOURNAMENT_RATE_LIMIT_MS |
number |
1500 |
META_RIFTBOUND_ENABLED |
bool |
false |
META_RIFTBOUND_TOURNAMENT_ENABLED |
bool |
false |
META_RIFTBOUND_TOURNAMENT_MAX_PLACEMENT |
number |
4 |
META_RIFTBOUND_TOURNAMENT_FORMAT_ID |
number |
2 (Spiritforged) |
META_RIFTBOUND_RATE_LIMIT_MS |
number |
300 |
META_FAB_TOURNAMENT_ENABLED |
bool |
false |
META_FAB_TOURNAMENT_FORMATS |
string |
classic-constructed,blitz,living-legend,silver-age |
META_FAB_TOURNAMENT_MAX_DECKS |
number |
50 |
META_FAB_TOURNAMENT_MAX_AGE_DAYS |
number |
60 |
META_FAB_RATE_LIMIT_MS |
number |
1500 |
META_FAB_USER_AGENT |
string |
Mozilla/5.0 (compatible; boardgame-referee/1.0; +https://referee.thymon.fr) |
Forums BGG
| Variable |
Type |
Défaut |
BGG_API_TOKEN 🔐 |
string |
(vide, optionnel) |
BGG_FORUM_SYNC_ENABLED |
bool |
false |
BGG_FORUM_SYNC_HOUR |
number |
3 |
BGG_FORUM_SYNC_INTERVAL_HOURS |
number |
72 |
Vision
| Variable |
Type |
Défaut |
Rôle |
VISION_SSH_IMAGES_PATH |
string |
/projet/boardgame-pdfs |
Chemin côté VM oracle des PNG (Read tool) |
No comments to display
No comments to display