Files
chlova/.env.example
T
Kantin-Petit ef382274fe fix(ollama): bump 0.6.8 -> 0.30.10 pour modèles :cloud (v0.34.2)
0.6.8 renvoie 412 sur les tags :cloud. Bump image (prod+dev) + .env.example
oriente vers un tag cloud valide.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016w5jRe87MGdd6AMvXQcHNi
2026-06-23 15:51:05 +02:00

78 lines
5.3 KiB
Bash

# CHLOVA — variables d'environnement (TEMPLATE)
# Copier en `.env` et renseigner. NE JAMAIS committer `.env` ni de vraie valeur.
# L'agent ne voit jamais ces secrets en clair : il manipule des références.
# ── Ollama (proxy cloud) ───────────────────────────────────────────────
# Le conteneur Ollama local proxifie vers ollama.com. Egress doit autoriser
# ollama.com. Joignable uniquement sur le réseau Docker interne.
OLLAMA_BASE_URL=http://ollama:11434
OLLAMA_API_KEY= # SECRET — clé API Ollama cloud
# Modèle cloud (suffixe :cloud), doit supporter le tool-calling. Choisir un tag
# VALIDE listé sur ollama.com (ex. qwen3-coder:480b-cloud, gpt-oss:120b-cloud).
# Requiert Ollama >= 0.30 (image bumpée). Vérifier : `ollama pull <tag>`.
OLLAMA_MODEL=qwen3-coder:480b-cloud
# ── MCP n8n : NATIF (instance n8n ≥ 2.18.4) ────────────────────────────
# Pas de conteneur dédié : n8n sert son propre MCP. Activer côté instance
# (env d'instance + activation par workflow), puis copier l'URL + le token
# depuis n8n → Connection details. URL = endpoint MCP de l'instance (interne).
# Chemin natif n8n = /mcp-server/http. Préférer l'hôte INTERNE (réseau Docker) ;
# si le MCP n'est routé que via le domaine public, utiliser l'URL publique (TLS)
# et autoriser ce domaine en egress (voir infra/networks.md).
MCP_N8N_URL=http://n8n:5678/mcp-server/http # ou https://<n8n-public>/mcp-server/http
MCP_N8N_AUTH_TOKEN= # SECRET — "MCP Access Token" n8n (Bearer)
# ── MCP Portainer (passerelle HTTP portainer/portainer-mcp) ────────────
PORTAINER_URL=http://portainer:9000 # API Portainer, interne (même hôte)
# Secret de PASSERELLE (front-gate) : même valeur côté backend et côté serveur
# MCP. Envoyé en Authorization: Bearer. N'autorise que l'accès à la passerelle.
PORTAINER_MCP_AUTH_TOKEN= # SECRET — secret de passerelle (au choix)
# Clé API Portainer de l'utilisateur `chlova` (RESTREINTE) : envoyée en header
# X-Portainer-API-Key. C'est elle qui cloisonne l'accès réel de CHLOVA.
PORTAINER_API_KEY= # SECRET — Access token Portainer de chlova
# Phase 1 : DOIT rester true (le boot échoue sinon). Phase 2 : peut passer false
# pour autoriser les écritures Portainer (sous gatekeeper + review).
PORTAINER_READ_ONLY=true
MCP_PORTAINER_URL=http://mcp-portainer:17717/mcp
# ── Surface Telegram (OPTIONNELLE) ─────────────────────────────────────
# Si vide, la surface Telegram n'est pas démarrée. Le backend exige alors une
# AUTRE surface (API/UI ci-dessous), sinon il refuse de démarrer (fail-closed).
TELEGRAM_BOT_TOKEN= # SECRET — token du bot (vide = pas de Telegram)
TELEGRAM_ALLOWED_USER_IDS= # liste d'IDs autorisés, séparés par virgule
# ── Backend CHLOVA ─────────────────────────────────────────────────────
CHLOVA_ENV=development # development | production
CHLOVA_LOG_LEVEL=info
# Gate de phase : 1 = lecture seule (défaut, fail-safe) ; 2 = écriture sous
# gatekeeper + cycle need-review. Toute valeur autre que "2" retombe sur 1.
CHLOVA_PHASE=1
CHLOVA_DB_PATH=./data/chlova.db # SQLite : table assets (need-review, Phase 2)
# Alertes (Phase 3) : URL du webhook n8n qui envoie le mail (workflow
# workflows-n8n/chlova-alerts.v1.0.0.json). Vide = alertes log-only (fail-safe).
# Peut contenir un token de chemin → secret, jamais commité.
ALERT_WEBHOOK_URL= # ex. http://n8n:5678/webhook/chlova-alert
# ── API/UI (Phase 4) — surface exposée, login fort ─────────────────────
# L'API/UI n'est ACTIVE que si les 4 valeurs ci-dessous sont présentes.
# Générer hash + secrets : `npm run provision-auth -- <user> <password>`.
CHLOVA_ADMIN_USER=
CHLOVA_ADMIN_PASSWORD_HASH= # SECRET — hash scrypt
CHLOVA_TOTP_SECRET= # SECRET — secret TOTP (2FA)
CHLOVA_JWT_SECRET= # SECRET — clé de signature JWT
# Origine CORS autorisée en DEV (Vite). En prod le SPA est servi same-origin.
CHLOVA_WEB_ORIGIN= # ex. http://localhost:5173 (dev uniquement)
# Racine du SPA buildé servi same-origin. Défaut image = /app/web. Vide = pas de SPA.
CHLOVA_WEB_ROOT= # laisser vide en conteneur (défaut /app/web)
# ── Auto-extension (Phase 5) ───────────────────────────────────────────
# Si true, l'agent peut créer des assets en need-review (écrit + commit +
# versionne + documente). Désactivé par défaut (fail-safe). Requiert un dépôt
# git monté dans le conteneur à CHLOVA_REPO_ROOT.
CHLOVA_AUTOEXT_ENABLED=false
CHLOVA_REPO_ROOT=. # chemin du dépôt (working copy GitOps)
# Domaine public derrière Traefik (label compose).
CHLOVA_DOMAIN=chlova.example.com
# Phase 1 : aucun port publié (Telegram en long-polling). Renseigné en P3+ si API/UI.
# CHLOVA_HTTP_PORT=8080