Prérequis Prérequis Dernière mise à jour : 2026-05-10 Outils CLI Outil Version Notes Node.js 22.x ( node:22-bookworm-slim en CI/prod) Pas Alpine — better-sqlite3 n'a pas de prebuilt musl npm 10.x (vient avec Node 22) Docker 24+ Pour docker compose up qdrant en dev Docker Compose v2 (intégré à Docker) poppler-utils Récent Fournit pdftoppm (rendu PDF→PNG 300 DPI) tesseract-ocr 5.x Pour OCR auto des PDFs scannés tesseract-ocr-fra + tesseract-ocr-eng Packs langues git Récent Installation system deps (Ubuntu/Debian) sudo apt-get install -y poppler-utils tesseract-ocr tesseract-ocr-fra tesseract-ocr-eng Pour ajouter d'autres langues d'OCR : sudo apt-get install -y tesseract-ocr-ita tesseract-ocr-deu # Puis dans .env : # OCR_LANGUAGES=fra+eng+ita+deu Sans ces outils, pdfjs-dist continuera à extraire les PDFs natifs, mais (1) aucun PNG ne sera généré (échec non-fatal logué warn), (2) un PDF scanné finira avec 0 chunks. Services externes (à avoir tournants) Qdrant (vector DB) Port 6333 Dev local : docker compose -f docker-compose.dev.yml up -d qdrant (depuis la racine du projet) Prod : container Qdrant sur Unraid au même endroit (volume /mnt/user/appdata/boardgame-referee/qdrant) TEI bge-m3 (embeddings) Port 8099 (custom — par défaut TEI utiliserait 80) Lance le service Unraid text-embeddings-inference (template XML dans unraid/) En dev local sans GPU : faisable sur CPU mais lent — préférer pointer TEI_URL vers l'instance Unraid via SSH tunnel ou exposition LAN TEI Reranker bge-v2-m3 Port 8990 (8090 était déjà pris) Service Unraid text-embeddings-reranker VM oracle (Claude Code CLI) VM avec compte SSH oracle configuré (cf. securite/ssh-oracle.md) Claude Code installé dans /home/oracle/.claude/ Credentials Anthropic dans /home/oracle/.claude/.credentials.json Wrapper /home/oracle/bin/oracle-claude.sh (ForceCommand) Optionnel SMTP : si tu veux les notifications de register et le password reset par mail. Sinon SMTP_HOST vide → désactivé silencieusement. BGG API token : pour le forum sync. Optionnel, l'API publique fonctionne sans (rate-limit moins strict avec token). Cas spécial : dev sur la machine qui héberge Claude Si tu lances le backend sur la même machine que le binaire claude (ex. ton laptop dev), le SSH boucle sur lui-même. Active le mode local : CLAUDE_USE_LOCAL=true CLAUDE_LOCAL_BIN=claude CLAUDE_LOCAL_WORKDIR=/path/to/workdir/with/CLAUDE.md Les vars CLAUDE_SSH_* sont alors ignorées (mais peuvent rester en place). Ne jamais activer en prod : le container Docker n'a pas accès à claude localement.