Spaces:
Sleeping
Sleeping
File size: 9,573 Bytes
7d5b986 fc30527 7d5b986 fc30527 7d5b986 fc30527 7d5b986 53f4d56 1a47738 fc30527 7d5b986 fc30527 7d5b986 fc30527 53f4d56 fc30527 53f4d56 101e6ba 53f4d56 b0f08c7 53f4d56 fc30527 3858bc7 fc30527 3858bc7 fc30527 3858bc7 1a47738 3858bc7 fc30527 3858bc7 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 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | # 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 (chemin local) met ``PICARONES_PUBLIC_MODE=1``
# par dΓ©faut. Mettre ``0`` uniquement pour un dΓ©ploiement institutionnel
# contrôlé (derrière SSO + reverse-proxy TLS). CSRF n'est PAS forcé par
# le compose local (théÒtre sans secret stable) β voir
# docker-compose.prod.yml qui exige PICARONES_CSRF_SECRET.
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 entity_extractor est REFUSΓ cΓ΄tΓ© web dans TOUS les
# modes (import+appel dynamique = surface rΓ©seau trop puissante,
# mΓͺme hors mode public/derriΓ¨re SSO). La CLI reste libre.
# Renseigner explicitement pour autoriser des dotted paths prΓ©cis :
# 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.
# MAX_UPLOAD_MB : plafond dur PAR fichier (streaming, rejet 413).
# MAX_TOTAL_UPLOAD_MB : plafond dur CUMULΓ par requΓͺte d'upload.
PICARONES_MAX_UPLOAD_MB=100
PICARONES_MAX_TOTAL_UPLOAD_MB=500
PICARONES_MAX_CONCURRENT_JOBS=2
PICARONES_RATE_LIMIT_PER_HOUR=5
# Attribut ``Secure`` des cookies (CSRF, langue). Vide = auto :
# ``Secure`` UNIQUEMENT sur HuggingFace Space (HTTPS certain).
# DΓ©couplΓ© de PUBLIC_MODE : Β« mutualisΓ© Β» n'implique pas Β« HTTPS Β»
# (le compose local est public_mode=1 mais http://127.0.0.1).
# Forcer ``1`` derrière un reverse-proxy TLS (fait par
# docker-compose.prod.yml), ``0`` pour un dΓ©bogage explicite.
# NB : CSRF requis + cookies non-Secure + dΓ©ploiement exposΓ©
# (HF Space / mode public) β refus de dΓ©marrage (config incohΓ©rente).
PICARONES_SECURE_COOKIES=
# Surcharge la Content-Security-Policy si nΓ©cessaire.
# La CSP par dΓ©faut conserve ``script-src/style-src 'unsafe-inline'``
# (dette connue : ~30 handlers onclick inline dans la SPA, migration
# vers addEventListener planifiΓ©e). En institutionnel durci, fournir
# ici une CSP sans unsafe-inline une fois le frontend migrΓ©.
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=
|