Variables d'environnement
D'où vient chaque variable en Kubernetes et en Docker Compose, et ce qu'elle contrôle.
Variables d'environnement
D'où viennent les valeurs
En Kubernetes, le fichier de valeurs du bot alimente trois objets :
| Objet | Source dans le fichier de valeurs | Contenu |
|---|---|---|
ConfigMap <botId>-configmap | configMap.*, global.botId, global.botName, i18n | URLs, ports, modèles, prompt, traductions |
Secret <botId>-secrets | secrets.* | Clés LiteLLM, identifiants PostgreSQL, secrets d'authentification |
Secret <botId>-registry | imageRegistry.* | Identifiants du registre d'images |
Les correspondances principales entre configMap et les variables d'environnement :
Clé configMap | Variable |
|---|---|
dbName, dbPort | DB_NAME, DB_PORT |
chainlitDbName, chainlitDbPort | CHAINLIT_DB_NAME, CHAINLIT_DB_PORT |
corsOrigin | CORS_ORIGIN |
betterAuthUrl | BETTER_AUTH_URL |
viteServerUrl, viteChatbotUrl, viteBetterAuthCallbackUrl | VITE_SERVER_URL, VITE_CHATBOT_URL, VITE_BETTER_AUTH_CALLBACK_URL |
webAppBaseUrl | WEB_APP_BASE_URL |
indexApiUrl, documentProcessorUrl | INDEX_API_URL, DOCUMENT_PROCESSOR_URL |
litellmApiBase | LITELLM_API_BASE |
botSystemPrompt | BOT_SYSTEM_PROMPT |
ragKChunks, ragTemp, ragQueryModelId, ragEmbeddingModelId, ragBatchSize | RAG_K_CHUNKS, RAG_TEMP, RAG_QUERY_MODEL_ID, RAG_EMBEDDING_MODEL_ID, RAG_BATCH_SIZE |
rerankerModelId, rerankerFetchMultiplier, rerankerCacheDir | RERANKER_MODEL_ID, RERANKER_FETCH_MULTIPLIER, RERANKER_CACHE_DIR |
logLevel | LOG_LEVEL |
ragNExamples | RAG_N_EXAMPLES (sans effet) |
Le conteneur rag-agent reçoit en plus LITELLM_API_KEY, DATABASE_URL, DB_USER et DB_PASSWORD depuis le Secret.
Les valeurs VITE_* ne sont pas compilées dans l'image web : elles sont injectées au démarrage du pod (voir la section Web ci-dessous).
Secrets
Clés du Secret <botId>-secrets, à partir de secrets.* :
| Variable | Rôle |
|---|---|
LITELLM_API_KEY | Clé du proxy LiteLLM (RAG, index, transcription). |
DATABASE_URL, DB_USER, DB_PASSWORD | PostgreSQL principal. |
CHAINLIT_DATABASE_URL, CHAINLIT_DB_USER, CHAINLIT_DB_PASSWORD | Base du chat (retours et logos). |
BETTER_AUTH_SECRET | Secret d'authentification du serveur. |
MICROSOFT_CLIENT_ID, MICROSOFT_CLIENT_SECRET, MICROSOFT_TENANT_ID | Connexion Microsoft. |
Le chart contient aussi des clés (TEAMS_APP_*, OAUTH_AZURE_AD_*, PARTNER_API_KEY) qui ne sont plus lues par les services de ce dépôt.
Serveur (apps/server)
| Variable | Obligatoire | Description |
|---|---|---|
DATABASE_URL | oui | PostgreSQL principal. |
CHAINLIT_DATABASE_URL | oui | Base du chat (chainlit-base), pour les retours et les logos. |
BETTER_AUTH_URL, BETTER_AUTH_SECRET | oui | URL publique du serveur et secret d'authentification (lues par better-auth). |
CORS_ORIGIN | oui | Origine autorisée (l'URL du site web). |
INDEX_API_URL | oui | URL interne de l'Index API. Sans elle, la régénération échoue. |
DOCUMENT_PROCESSOR_URL | non | URL interne du document-processor (défaut http://localhost:8001). |
LITELLM_API_BASE, LITELLM_API_KEY | oui | Transcription audio (proxy LiteLLM). |
TRANSCRIPTION_MODEL_ID | non | Modèle de transcription (voxtral-mini-latest par défaut dans le chart). |
I18N_JSON | non | Traductions en JSON (voir ci-dessous). |
MICROSOFT_* | non | Connexion Microsoft. |
RAG Agent et Index API
Voir Configuration du RAG Agent.
Document processor (apps/document-processor)
| Variable | Défaut | Description |
|---|---|---|
DOC_PROCESSOR_HOST | 0.0.0.0 | Adresse d'écoute. |
DOC_PROCESSOR_PORT | 8001 | Port d'écoute. |
DOC_PROCESSOR_WORKERS | 2 | Nombre de workers de la file de traitement. |
JOB_TIMEOUT_SECONDS | 1800 | Durée maximale d'un job. |
JOB_RESULT_TTL_HOURS | 24 | Conservation des résultats. |
MAX_FILE_SIZE_MB | 50 | Taille maximale d'un fichier. |
MAX_CHUNK_SIZE | 2000 | Taille maximale d'un chunk. |
DEFAULT_CHUNK_OVERLAP | 200 | Recouvrement entre chunks. |
DOCLING_MAX_TOKENS | 512 | Taille des chunks en tokens. |
DOCLING_ENABLE_OCR | true | OCR de Docling. |
DOCLING_OCR_ENGINE | rapidocr | Moteur OCR (easyocr, rapidocr, tesseract-cli, tesserocr). |
DOCLING_OCR_LANGUAGES | en,fr | Langues OCR. RapidOCR ne garde que la première. |
DOCLING_TABLE_MODE | accurate | fast ou accurate. |
DOCLING_LAYOUT_MODEL | heron | Modèle de mise en page. |
DOCLING_DEVICE | auto | auto, cpu ou cuda. |
DOCLING_NUM_THREADS | 4 | Threads de traitement. |
DOCLING_ENABLE_PICTURE_DESCRIPTION | false | Description des images par un modèle vision. |
ENABLE_OCR | false | Tesseract (chemin via TESSERACT_PATH). |
TESSERACT_PATH | — | Chemin de l'exécutable Tesseract, si absent du PATH. |
HF_TOKEN | — | Jeton Hugging Face, pour des téléchargements plus rapides. |
LOG_LEVEL | INFO | Niveau de journalisation. |
Web (apps/web)
| Variable | Description |
|---|---|
VITE_SERVER_URL | URL publique du serveur. |
VITE_CHATBOT_URL | URL du chat. |
VITE_BETTER_AUTH_CALLBACK_URL | URL de retour de l'authentification. |
Au démarrage, le script d'entrée de l'image remplace les marqueurs {{ .Env.VITE_* }} des fichiers HTML par les valeurs de l'environnement du pod. Le navigateur lit ces valeurs dans window.RUNTIME_ENV (apps/web/src/utils/runtime-env.ts).
Argument de build : SHADCN_PRESET, appliqué à l'image web si renseigné.
Documentation (apps/docs)
| Variable | Description |
|---|---|
NEXT_PUBLIC_BOT_NAME | Nom du bot dans l'en-tête. Injecté au build depuis l'argument DOCS_BOT_NAME (défaut : nAI'vi). |
Le site écoute sur le port 5555, fixé dans docs/package.json (scripts dev et start).
Docker Compose (.env à la racine)
Le fichier .env.example sert au développement local avec docker compose up --build -d.
| Variable | Exemple | Description |
|---|---|---|
COMPOSE_PROJECT_NAME | naivi-bots-v2 | Préfixe des conteneurs. |
SERVER_PORT, WEB_PORT, DOCS_PORT | 3000, 3001, 5555 | Ports exposés. |
DOC_PROCESSOR_PORT, INDEX_API_PORT, AGENT_PORT | 8001, 8502, 8000 | Ports exposés des services Python. |
DB_NAME, DB_USER, DB_PASSWORD, DB_PORT | PostgreSQL du compose. | |
CHAINLIT_DB_* | Base du chat. | |
LITELLM_API_BASE, LITELLM_API_KEY | Proxy LiteLLM. | |
BOT_SYSTEM_PROMPT | Prompt RAG (voir Configuration RAG). | |
SHADCN_PRESET | Preset de thème appliqué au build de l'image web. |
Dans le compose, DATABASE_URL est fixé par docker-compose.yml pour pointer vers le service db.
Traductions (i18n)
Les traductions viennent de i18n.json.example, copié dans helm/values.yaml par un script. Le ConfigMap les expose ensuite dans I18N_JSON.
- Modifier
i18n.json.example(c'est la source). - Depuis la racine du dépôt :
python scripts/convert_i18n_to_helm_values.py. Par défaut, le script liti18n.json.exampleet réécrit la sectioni18n:dehelm/values.yaml. - Reporter la section
i18n:mise à jour dans le fichier de valeurs de chaque bot (ces fichiers ne sont pas dans le dépôt).
Pour le développement local, i18n.json à la racine (ou monté dans le conteneur) est lu si I18N_JSON est absent.
Bonnes pratiques
- Ne jamais mettre de secret dans une image, dans
values.yamlversionné ou dans.envcommité. - Garder les URL publiques (
VITE_*,CORS_ORIGIN,BETTER_AUTH_URL) cohérentes entre elles : une seule URL différente casse l'authentification. - Une variable absente déclenche une erreur au premier usage (les services ne valident pas tous leur configuration au démarrage).