Aucun nom public d'une autre app dracodev n'est codé en dur dans le code vivant : nouveau module app/services/draco_urls.py (env > config > défaut officiel, jamais de -dev en défaut). CSP connect-src/frame-src, bouton SSO ObsiGate, révocations SSO, événements agent, preset MCP TikTak, barre commune, panneau Spark (injection hôte DRACO_PANNEAU_CONFIG), refs croisées (hôte configuré + officiel reconnus, URL d'affichage reconstruite, aucune donnée stockée migrée), User-Agent OG, liens Gitea. Variables ajoutées DRACO_AGENT_URL/TIKTAK_URL/KANBANTE_URL/FLOWDECK_URL, réutilisées DRACO_SSO_URL/OAUTH_REDIRECT_URI/AGENT_EVENEMENTS_URL/GITEA_URL/APP_BASE_URL. Version 7.82.0.
132 lines
5.7 KiB
Bash
132 lines
5.7 KiB
Bash
# ── Gitea ──
|
|
GITEA_URL=https://git.dracodev.net
|
|
GITEA_TOKEN=change-me
|
|
# Laissez VIDES pour activer le login local seul : depuis v7.46.0 les valeurs de
|
|
# substitution (`test-id`, `test-secret`, `change-me`) comptent comme « provider
|
|
# non configuré » — avant, /auth/login redirigeait vers Gitea avec un client_id
|
|
# invalide (authentification OAuth impossible).
|
|
GITEA_OAUTH_CLIENT_ID=
|
|
GITEA_OAUTH_CLIENT_SECRET=
|
|
GITEA_WEBHOOK_SECRET=
|
|
|
|
# ── GitHub ──
|
|
GITHUB_OAUTH_CLIENT_ID=
|
|
GITHUB_OAUTH_CLIENT_SECRET=
|
|
|
|
# ── OAuth2 ──
|
|
# Laisser VIDE = redirect URI dynamique (dérivée du Host/X-Forwarded-* de la requête).
|
|
# Ne définir QUE si on veut forcer une URI exacte — elle DOIT être enregistrée
|
|
# dans l'application OAuth2 côté Gitea/GitHub (Settings → Applications).
|
|
# Exemple : OAUTH_REDIRECT_URI=https://flowdeck.dracodev.net/auth/callback
|
|
OAUTH_REDIRECT_URI=
|
|
|
|
# ── URLs publiques dracodev — dev/prod (v7.82.0) ──
|
|
# AUCUN nom public n'est codé en dur dans le code vivant : tout passe
|
|
# par ces variables (résolution : env > config > défaut). Les DÉFAUTS
|
|
# sont les noms OFFICIELS (production, sans suffixe). Un environnement
|
|
# DEV déclare ses noms en -dev ici — le .env survit aux déploiements
|
|
# par release (passé par environment:/env_file: au conteneur).
|
|
# Laisser vide = défaut officiel indiqué en commentaire.
|
|
DRACO_SSO_URL= # ObsiGate, émettrice SSO — défaut https://og.dracodev.net ; dev : https://og-dev.dracodev.net
|
|
DRACO_AGENT_URL= # Service d'agents Spark — défaut https://agent.dracodev.net ; dev : https://agent-dev.dracodev.net
|
|
TIKTAK_URL= # TikTak (preset MCP, barre, refs) — défaut https://tiktak.dracodev.net ; dev : https://tiktak-dev.dracodev.net
|
|
KANBANTE_URL= # Kanbante (barre, refs) — défaut https://kanbante.dracodev.net ; dev : https://kanbante-dev.dracodev.net
|
|
FLOWDECK_URL= # URL publique de CETTE instance — défaut : dérivée d'OAUTH_REDIRECT_URI, sinon https://flowdeck.dracodev.net ; dev : https://flowdeck-dev.dracodev.net
|
|
# SSO draco (Fusion ACC-3.2) — secret partagé avec l'émettrice ObsiGate.
|
|
DRACO_SESSION_SECRET=
|
|
DRACO_SESSION_SECRET_PREV=
|
|
DRACO_SSO_MACHINE_KEY=
|
|
# Événements vers le journal du service d'agents (Fusion, Lot 2).
|
|
# AGENT_EVENEMENTS_URL vide = dérivée de DRACO_AGENT_URL (+ /api/v1/evenements).
|
|
AGENT_EVENEMENTS_URL=
|
|
AGENT_EVENEMENTS_CLE=
|
|
|
|
# ── Connecteurs OAuth (v7.56.0) — Google / Microsoft 365 ──
|
|
# Vidés = connecteur « non configuré » (le menu + affiche la raison).
|
|
# Le redirect URI à enregistrer est dérivé d'APP_BASE_URL :
|
|
# {APP_BASE_URL}/api/agent/connectors/oauth/google/callback
|
|
# {APP_BASE_URL}/api/agent/connectors/oauth/ms365/callback
|
|
GOOGLE_CLIENT_ID=
|
|
GOOGLE_CLIENT_SECRET=
|
|
MS_CLIENT_ID=
|
|
MS_CLIENT_SECRET=
|
|
|
|
# ── App ──
|
|
APP_SECRET_KEY=change-me-to-random
|
|
APP_HOST=0.0.0.0
|
|
APP_PORT=8080
|
|
LOG_LEVEL=INFO
|
|
DEFAULT_LANG=fr
|
|
|
|
# ── Database ──
|
|
# SQLite UNIQUEMENT (le code ne lit que le préfixe sqlite:///, tout autre
|
|
# schéma retombe silencieusement sur /data/flowdeck.db).
|
|
DATABASE_URL=sqlite:////data/flowdeck.db
|
|
|
|
# ── Sync ──
|
|
SYNC_INTERVAL=60
|
|
GITEA_CACHE_TTL=30
|
|
|
|
# ── Backups (v5.2.0) ──
|
|
# Sauvegarde automatique quotidienne du fichier SQLite (fichiers datés).
|
|
BACKUP_ENABLED=true
|
|
BACKUP_DIR=/data/backups
|
|
BACKUP_INTERVAL_HOURS=24
|
|
BACKUP_KEEP=30
|
|
|
|
# ── Forge projects sync (v5.2.0) ──
|
|
# Rafraîchissement périodique de la table `projects` depuis les forges connectées.
|
|
PROJECT_SYNC_ENABLED=true
|
|
PROJECT_SYNC_INTERVAL_HOURS=1
|
|
|
|
# ── Public API v2 (v6.3.0) ──
|
|
# PUBLIC_API_INSECURE_OK=true autorise le token de dev fd-public-key (jamais en prod).
|
|
PUBLIC_API_INSECURE_OK=false
|
|
API_V2_RATE_LIMIT_PER_TOKEN=300
|
|
|
|
# ── Email notifications (v4.9.0) ──
|
|
# Laisser SMTP_HOST vide = pas d'envoi d'email (seulement les notifications in-app).
|
|
SMTP_HOST=
|
|
SMTP_PORT=587
|
|
SMTP_USER=
|
|
SMTP_PASSWORD=
|
|
SMTP_FROM=FlowDeck <[email protected]>
|
|
SMTP_USE_TLS=true
|
|
APP_BASE_URL=http://localhost:8080
|
|
|
|
# ── SSO / Enterprise (v6.7.0) ──
|
|
# Fallback de démarrage uniquement : dès qu'un admin enregistre une configuration
|
|
# dans Settings → Admin → SSO / Enterprise, la table `sso_config` prime sur le .env.
|
|
# Le bouton SSO n'apparaît sur la page de connexion que si une config est active.
|
|
# SSO_PROVIDER=saml # saml | oidc (vide = SSO désactivé)
|
|
# SSO_NAME=Company SSO # libellé du bouton
|
|
# SSO_ONLY=false # true = refuser le login local (les admins gardent le leur)
|
|
# SSO_AUTO_PROVISION=true # créer le compte au premier login SSO
|
|
# SAML :
|
|
# SSO_ENTITY_ID=https://idp.example.com/saml/metadata
|
|
# SSO_SSO_URL=https://idp.example.com/saml/sso
|
|
# SSO_SLO_URL=https://idp.example.com/saml/slo
|
|
# SSO_X509_CERTIFICATE=-----BEGIN CERTIFICATE-----
|
|
# SSO_SIGN_REQUESTS=false # signer les AuthnRequests / LogoutRequest
|
|
# OIDC :
|
|
# SSO_ISSUER_URL=https://auth.example.com/realms/flowdeck
|
|
# SSO_CLIENT_ID=
|
|
# SSO_CLIENT_SECRET=
|
|
# SSO_SCOPE=openid profile email
|
|
# Mapping (JSON) :
|
|
# SSO_ATTRIBUTE_MAPPING={"email":"email","full_name":"name","groups":"groups"}
|
|
# SSO_GROUPS_MAPPING=[{"sso_group":"FlowDeck Admins","workspace_role":"admin","workspace_id":1}]
|
|
# SSO_DEFAULT_WORKSPACE_ID=0
|
|
|
|
# ── Web tools de l'agent (v7.46.0) ──
|
|
# Skills « recherche-marche », « veille-techno », « debug-web ».
|
|
# web_search → EXA (recherche sémantique + extraits, ~10 $/mois offerts)
|
|
# fetch_url → aucune config : lecture d'une page, garde-fou SSRF actif
|
|
# search_code → GitHub public (10 req/min sans jeton, 30 avec)
|
|
# Sans EXA_API_KEY, web_search bascule sur DuckDuckGo (repli dégradé, sans
|
|
# compte mais parsé au HTML) : utilisable, moins fiable.
|
|
WEB_SEARCH_PROVIDER=exa
|
|
EXA_API_KEY=
|
|
GITHUB_TOKEN=
|
|
WEB_FETCH_MAX_CHARS=20000
|