Configuration¶
Ce guide explique comment configurer l'application avec les variables d'environnement nécessaires.
Variables d'environnement¶
L'application utilise des variables d'environnement pour la configuration. Les données sensibles ne doivent jamais être committées dans le code.
Backend¶
Le backend nécessite les variables suivantes :
| Variable | Description | Requis | Exemple |
|---|---|---|---|
NOTION_TOKEN |
Token d'authentification Notion | Oui | secret_xxxxxxxxxxxxx |
DATABASE_ID |
ID de la base de données Notion | Oui | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
GCS_URI |
URI du bucket GCS pour Delta Lake | Oui | gs://notion-dataascode/data_leads |
GOOGLE_APPLICATION_CREDENTIALS |
Chemin vers le fichier credentials GCS | Oui | /path/to/credentials.json |
HMAC_KEY |
Clé HMAC pour l'authentification GCS | Oui | GOOG1EXXX... |
HMAC_SECRET |
Secret HMAC pour l'authentification GCS | Oui | your-hmac-secret |
LOGFIRE_TOKEN |
Token Logfire pour l'observabilité | Oui | logfire_xxxxxxxxxxxxx |
PYTHONUNBUFFERED |
Mode non-bufferisé Python | Non | 1 |
Frontend¶
Le frontend nécessite la variable suivante au moment du build :
| Variable | Description | Requis | Valeur par défaut |
|---|---|---|---|
NEXT_PUBLIC_API_URL |
URL de l'API backend | Non | http://localhost:8000 |
Variables NEXT_PUBLIC
Les variables préfixées par NEXT_PUBLIC_ sont injectées dans le code frontend au moment du build et sont visibles côté client. Ne mettez jamais de secrets dans ces variables.
Configuration pour le développement local¶
Créer le fichier .env¶
Créez un fichier .env à la racine du projet :
# .env
NOTION_TOKEN=secret_xxxxxxxxxxxxx
DATABASE_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
# Google Cloud Storage
GCS_URI=gs://notion-dataascode/data_leads
GOOGLE_APPLICATION_CREDENTIALS=/path/to/gcs-credentials.json
HMAC_KEY=GOOG1EXXX...
HMAC_SECRET=your-hmac-secret
# Observabilité
LOGFIRE_TOKEN=logfire_xxxxxxxxxxxxx
Important
Le fichier .env est déjà dans le .gitignore. Ne le committez jamais !
Stockage local vs GCS
- Développement local : Vous pouvez omettre
GCS_URIetGOOGLE_APPLICATION_CREDENTIALS. Les données seront stockées localement dansbackend/data_leads/ - Production/GCS : Configurez
GCS_URIetGOOGLE_APPLICATION_CREDENTIALSpour utiliser Google Cloud Storage
Backend¶
Le backend charge automatiquement le fichier .env si vous utilisez python-dotenv.
Frontend¶
Pour le frontend, créez un fichier .env.local dans le dossier frontend/ :
Configuration avec Docker¶
Fichier .env pour Docker Compose¶
Docker Compose lit automatiquement le fichier .env à la racine :
# .env (à la racine)
NOTION_TOKEN=secret_xxxxxxxxxxxxx
DATABASE_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
NEXT_PUBLIC_API_URL=http://localhost:8000
Lancer avec Docker¶
Variables en ligne de commande¶
Vous pouvez aussi passer les variables directement :
Configuration pour la production¶
Variables d'environnement via build args¶
Pour le frontend en production, passez l'URL de l'API au build :
docker build \
--build-arg NEXT_PUBLIC_API_URL=https://api.example.com \
-f Dockerfile.frontend \
-t frontend-prod .
Secrets Docker¶
Pour la production, utilisez Docker secrets plutôt que des variables d'environnement :
# docker-compose.prod.yml
services:
backend:
secrets:
- notion_token
- database_id
secrets:
notion_token:
external: true
database_id:
external: true
Gestionnaires de secrets¶
Pour la production, considérez l'utilisation de :
- Docker Secrets : Pour Docker Swarm
- Kubernetes Secrets : Pour Kubernetes
- AWS Secrets Manager : Pour AWS
- Azure Key Vault : Pour Azure
- HashiCorp Vault : Solution multi-cloud
Obtenir les tokens Notion¶
1. Créer une intégration Notion¶
- Aller sur https://www.notion.so/my-integrations
- Cliquer sur "New integration"
- Donner un nom à votre intégration
- Copier le "Internal Integration Token" → C'est votre
NOTION_TOKEN
2. Obtenir l'ID de la database¶
- Ouvrir votre database dans Notion
- L'URL ressemble à :
https://www.notion.so/xxxxxxxxxxxx?v=yyyyyyyy - Le
xxxxxxxxxxxxest votreDATABASE_ID
3. Donner accès à la database¶
- Ouvrir votre database dans Notion
- Cliquer sur "..." en haut à droite
- "Add connections" → Sélectionner votre intégration
Configurer Google Cloud Storage (optionnel)¶
1. Créer un Service Account GCS¶
- Aller sur Google Cloud Console
- Créer un nouveau projet ou sélectionner un projet existant
- Aller dans "IAM & Admin" → "Service Accounts"
- Créer un Service Account avec les permissions :
Storage Object Admin(pour lire/écrire dans le bucket)
2. Créer et télécharger la clé JSON¶
- Cliquer sur le Service Account créé
- Onglet "Keys" → "Add Key" → "Create new key"
- Choisir le format JSON
- Télécharger le fichier JSON → C'est votre fichier credentials
3. Créer un bucket GCS¶
# Avec la CLI gcloud
gsutil mb -p YOUR_PROJECT_ID gs://notion-dataascode
# Définir les permissions
gsutil iam ch serviceAccount:YOUR_SERVICE_ACCOUNT@YOUR_PROJECT.iam.gserviceaccount.com:roles/storage.objectAdmin gs://notion-dataascode
4. Configurer les variables d'environnement¶
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/credentials.json"
export GCS_URI="gs://notion-dataascode/data_leads"
export HMAC_KEY="GOOG1EXXX..."
export HMAC_SECRET="your-hmac-secret"
Configurer Logfire (observabilité)¶
1. Créer un compte Logfire¶
- Aller sur https://logfire.pydantic.dev
- Créer un compte (gratuit pour commencer)
- Créer un nouveau projet
2. Obtenir le token¶
- Dans le dashboard Logfire, aller dans "Settings" → "API Keys"
- Créer une nouvelle API key
- Copier le token → C'est votre
LOGFIRE_TOKEN
3. Configuration¶
4. Visualiser les logs et traces¶
Une fois l'application lancée, tous les logs et traces seront visibles dans le dashboard Logfire : - URL : https://logfire.pydantic.dev - Traces des requêtes API en temps réel - Logs structurés avec recherche - Métriques de performance - Graphiques et dashboards automatiques
Validation de la configuration¶
Pour vérifier que votre configuration est correcte :
# Backend
uv run python -c "import os; print('NOTION_TOKEN:', 'OK' if os.getenv('NOTION_TOKEN') else 'MISSING')"
# Test de connexion à l'API
curl http://localhost:8000/docs
Sécurité¶
Bonnes pratiques de sécurité
- ✅ Utilisez
.envpour le développement local - ✅ Ajoutez
.envau.gitignore - ✅ Ajoutez
*credentials*.jsonau.gitignore - ✅ Utilisez des secrets managers en production
- ✅ Rotez régulièrement les tokens et credentials
- ✅ Utilisez des Service Accounts avec permissions minimales (least privilege)
- ❌ Ne committez jamais de secrets dans Git
- ❌ N'utilisez jamais
ARGpour les secrets dans Dockerfile - ❌ Ne loggez jamais les secrets ou credentials
Prochaines étapes¶
- Docker : Déployer avec Docker
- API Backend : Utiliser l'API