- A26 — champ `standalone` mort supprimé (0 lecteur) ; `sqlite:////data/…` ne produit plus de chemin UNC sous Windows ; `.env.example` ne promet plus PostgreSQL ; raise au boot si `APP_SECRET_KEY` vaut la valeur par défaut - A33 — rate limit : préfixes manquants (`/scim/v2/`, `/workspace/`, `/db/` + non-GET sur `/s/` et `/f/`), limite lue dans `settings.rate_limit_requests` (60 annoncés / 100 codés en dur), clé `X-Forwarded-For` seulement derrière un proxy local (anti-spoof), `_store` épuré (mémoire bornée) + test dédié - A34 — `_spawn()` : les 10 schedulers loggent leur exception et redémarrent après 10 s au lieu de mourir en silence ; 2 `logger.debug` de scheduler → warning - A35 — OpenAPI régénéré 439 → 511 chemins (`info.version 7.3.9`), README (était v6.7.0), compteur API_GUIDE, titre dupliqué retiré du ROADMAP ; le drift Python 3.12/3.13 reste noté (rebuild d'image à valider) - A36 — 4 dépendances mortes purgées de requirements.txt (aiosqlite, slowapi, loguru, packaging = 0 import) ; pyproject reste sans [project] : Docker et la CI installent requirements.txt, dupliquer les 22 deps créerait 2 sources - A43 — 15 `datetime.utcnow()` → `now(UTC).replace(tzinfo=None)` (format ISO naïf identique, warnings de dépréciation divisés : 2374 → 926) suite **1029/1029** · `ruff check app tests` OK · docs/ROADMAP/CHANGELOG/WORKLOAD à jour
85 lines
3.0 KiB
Bash
85 lines
3.0 KiB
Bash
# ── Gitea ──
|
|
GITEA_URL=https://git.dracodev.net
|
|
GITEA_TOKEN=change-me
|
|
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=
|
|
|
|
# ── 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
|