File size: 8,373 Bytes
7d5b986
fc30527
 
 
 
 
 
 
 
 
7d5b986
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fc30527
7d5b986
fc30527
 
7d5b986
53f4d56
 
 
 
 
 
fc30527
 
7d5b986
 
 
 
 
 
fc30527
7d5b986
 
 
 
 
 
 
 
 
 
 
 
 
 
fc30527
 
 
53f4d56
 
fc30527
 
53f4d56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b0f08c7
 
 
53f4d56
 
fc30527
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0c80c8c
 
 
 
 
 
 
fc30527
 
 
 
 
 
 
 
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
123
124
125
126
127
128
129
130
131
132
133
134
# Variables d'environnement supportΓ©es par Picarones.
#
# Copier en ``.env`` et remplir selon votre dΓ©ploiement :
#
#     cp .env.example .env
#     editor .env
#
# ``docker-compose.yml`` lit ``.env`` automatiquement. Pour un appel
# direct ``docker run``, ajouter ``--env-file .env``.

# ════════════════════════════════════════════════════════════════════
# Mode de dΓ©ploiement
# ════════════════════════════════════════════════════════════════════
#
# Picarones supporte deux modes de dΓ©ploiement, chacun avec un profil
# de sΓ©curitΓ© distinct :
#
# β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
# β”‚ Mode public         β”‚ HuggingFace Space, dΓ©mo en ligne, anonyme   β”‚
# β”‚                     β”‚ β†’ ``PICARONES_PUBLIC_MODE=1``                β”‚
# β”‚                     β”‚ β†’ CSRF dΓ©sactivΓ© (anonyme)                   β”‚
# β”‚                     β”‚ β†’ cloud OCR/LLM bloquΓ©s                      β”‚
# β”‚                     β”‚ β†’ rate limit par IP                          β”‚
# β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
# β”‚ Mode institutionnel β”‚ DΓ©ploiement BnF, universitΓ©, archive         β”‚
# │                     │ → derrière SSO (Shibboleth/CAS/OIDC)         │
# β”‚                     β”‚ β†’ ``PICARONES_CSRF_REQUIRED=1``              β”‚
# β”‚                     β”‚ β†’ ``PICARONES_CSRF_SECRET=<32 bytes hex>``   β”‚
# β”‚                     β”‚   OBLIGATOIRE β€” l'app refuse de dΓ©marrer     β”‚
# β”‚                     β”‚   sans secret (Sprint S6.9).                 β”‚
# β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

# ──────────────────────────────────────────────────────────────────
# Mode public (HuggingFace Space, dΓ©mo)
# ──────────────────────────────────────────────────────────────────

# Active le mode public.  Valeurs acceptΓ©es : ``1``, ``true``, ``yes``.
# En mode public : OCR cloud bloquΓ©s, browse roots confinΓ©s,
# entity_extractor dΓ©sactivΓ© (sauf allowlist), rate limit par IP.
#
# NB : docker-compose.yml force ``PICARONES_PUBLIC_MODE=1`` PAR DÉFAUT
# (fail-closed).  Mettre ``0`` ici uniquement pour un dΓ©ploiement
# institutionnel contrôlé (derrière SSO + reverse-proxy TLS).
PICARONES_PUBLIC_MODE=

# ──────────────────────────────────────────────────────────────────
# Mode institutionnel (production)
# ──────────────────────────────────────────────────────────────────

# Active la protection CSRF (double-submit cookie + HMAC).
# OBLIGATOIRE en production, en complΓ©ment d'un SSO.
PICARONES_CSRF_REQUIRED=

# Secret HMAC pour signer les tokens CSRF.
# OBLIGATOIRE si ``PICARONES_CSRF_REQUIRED=1`` β€” sans secret stable,
# tous les tokens sont invalidΓ©s Γ  chaque redΓ©marrage du process,
# ce qui dΓ©grade gravement l'UX (toutes les sessions actives reΓ§oivent
# 403 jusqu'Γ  reload manuel).
#
# GΓ©nΓ©rer une fois et persister dans le secret manager institutionnel
# (Vault / AWS Secrets Manager / Kubernetes Secret) :
#
#     openssl rand -hex 32
#
# Ne JAMAIS committer ce secret.  Ne JAMAIS le mettre dans un Dockerfile
# ni dans un docker-compose.yml versionnΓ©.
PICARONES_CSRF_SECRET=

# Liste de chemins (sΓ©parateur : ``:`` Unix / ``;`` Windows) que
# ``/api/corpus/browse`` et ``/api/reports`` autorisent. Surcharge
# le dΓ©faut.
PICARONES_BROWSE_ROOTS=

# Allowlist (sΓ©parateur virgule) des dotted paths d'extracteurs NER
# autorisΓ©s via le champ ``entity_extractor`` du payload web.
# Vide = le champ dΓ©clenche un import+appel dynamique : fail-closed
# (refusΓ© en mode public, tolΓ©rΓ© seulement pour l'opΓ©rateur local).
# Renseigner explicitement en institutionnel, ex :
#     monpkg.ner:SpacyExtractor,autrepkg.ner:Fn
PICARONES_ENTITY_EXTRACTOR_ALLOWLIST=

# ──────────────────────────────────────────────────────────────────
# docker-compose β€” rΓ©seau & images
# ──────────────────────────────────────────────────────────────────

# Interface de bind du port hΓ΄te (docker-compose.yml).
# DΓ©faut fail-closed : 127.0.0.1 (accessible uniquement en local).
# Mettre ``0.0.0.0`` pour exposer délibérément (derrière TLS/proxy).
PICARONES_BIND=127.0.0.1

# Image Ollama (docker-compose.yml, profil ``ollama``).
# DΓ©faut : ollama/ollama:latest.  Γ‰pingler une version pour la
# reproductibilitΓ© institutionnelle, ex : OLLAMA_IMAGE=ollama/ollama:0.3.14
OLLAMA_IMAGE=

# Plafonds applicatifs.
PICARONES_MAX_UPLOAD_MB=100
PICARONES_MAX_CONCURRENT_JOBS=2
PICARONES_RATE_LIMIT_PER_HOUR=5

# Surcharge la Content-Security-Policy si nΓ©cessaire.
PICARONES_CSP=

# ──────────────────────────────────────────────────────────────────
# ClΓ©s API LLM (optionnel β€” uniquement si vous utilisez un pipeline LLM)
# ──────────────────────────────────────────────────────────────────
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
MISTRAL_API_KEY=

# ──────────────────────────────────────────────────────────────────
# ClΓ©s API OCR cloud (optionnel)
# ──────────────────────────────────────────────────────────────────
GOOGLE_APPLICATION_CREDENTIALS=
AZURE_DOC_INTEL_ENDPOINT=
AZURE_DOC_INTEL_KEY=

# ──────────────────────────────────────────────────────────────────
# RΓ©seau / port d'exposition.
#
# NB : variable utilisΓ©e UNIQUEMENT par ``docker-compose.yml`` pour
# mapper le port hΓ΄te (cf. ligne ``${PICARONES_PORT:-7860}:7860``).
# Le code Python ne la lit pas β€” pour changer le port serveur,
# utiliser ``picarones serve --port <N>`` ou modifier le CMD du
# Dockerfile.
# ──────────────────────────────────────────────────────────────────
PICARONES_PORT=7860

# ──────────────────────────────────────────────────────────────────
# Persistance (Sprint A8) β€” chemin de la base SQLite des jobs.
# Override pour sortir du conteneur (volume montΓ©).
# ──────────────────────────────────────────────────────────────────
PICARONES_JOBS_DB=