Déploiement¶
Comment mettre LObsTer en production.
Référence complète : demo-conductor/docs/TUTO_MISE_EN_LIGNE.md.
Architecture cible¶
flowchart TB
user[Utilisateur] -->|HTTPS| caddy[Caddy
reverse proxy]
caddy --> front[React frontend
Vite build]
caddy --> api[FastAPI backend
uvicorn]
api --> pg[(PostgreSQL 15
+ PostGIS)]
api --> llm[Claude API
Sonnet 4.6]
api --> stripe[Stripe
webhook]
api --> brevo[Brevo
emails]
api --> r2[R2 storage
rapports PDF]
classDef front fill:#e87722,stroke:#0d1f3c,color:#fff
classDef back fill:#0d1f3c,stroke:#e87722,color:#fff
classDef ext fill:#2a7f7f,stroke:#0d1f3c,color:#fff
class caddy,front front
class api,pg back
class llm,stripe,brevo,r2 ext
Checklist déploiement¶
Phase 1 — Prérequis (15 min)¶
- Acheter domaine (OVH/Gandi) ~10€/an → l-obster.fr acheté ✅
- Créer serveur Hetzner CX22 (4,51€/mois : 2 vCPU, 4 Go RAM, 40 Go SSD)
- Ajouter sa clé SSH au serveur
- Installer Docker :
curl -fsSL https://get.docker.com | sh
Phase 2 — Déploiement (15 min)¶
- Cloner le repo sur le serveur :
git clone ... /root/app - Copier
.env.example→backend/.env - Remplir les variables d'environnement (voir tableau ci-dessous)
- Générer
JWT_SECRET:openssl rand -hex 32 - Configurer DNS A record → IP serveur
-
chmod +x deploy/*.sh && ./deploy/deploy.sh - Attendre build Docker (2-3 min)
- Vérifier
https://l-obster.frcharge en HTTPS
Phase 3 — Intégrations (10 min)¶
- Webhook Stripe :
https://l-obster.fr/api/webhooks/stripe· eventcheckout.session.completed· copier le signing secret - Brevo sender : ajouter
noreply@l-obster.fr· configurer SPF/DKIM DNS - Tester paiement test (carte
4242 4242 4242 4242)
Phase 4 — Sécurité & backups (5 min)¶
- Cron backup :
0 3 * * * /root/app/deploy/backup.sh - UFW firewall : autoriser 22, 80, 443
- Test restauration backup
Variables d'environnement¶
| Variable | Source | Priorité | Note |
|---|---|---|---|
JWT_SECRET |
openssl rand -hex 32 |
🔴 CRITIQUE | Invalide tous les tokens si changé |
DATABASE_URL |
Docker Compose auto | 🟢 auto | — |
STRIPE_SECRET_KEY |
dashboard.stripe.com |
🟡 haute | sk_test_ puis sk_live_ |
STRIPE_WEBHOOK_SECRET |
config webhook | 🟡 haute | whsec_ |
BREVO_API_KEY |
app.brevo.com |
🟡 haute | xkeysib- |
ANTHROPIC_API_KEY |
console.anthropic.com |
🟡 moyenne | sk-ant- |
APP_BASE_URL |
— | 🟢 config | https://l-obster.fr |
CORS_ORIGINS |
— | 🟢 config | https://l-obster.fr |
Vérifications finales¶
- Cadenas HTTPS vert sur le domaine
- Page login fonctionne
- Tunnel souscription complet (test card)
- Email confirmation reçu
- Dashboard admin accessible
Mises à jour¶
Depuis le PC de dev :
bash
git push origin main
Sur le serveur :
bash
cd /root/app && ./deploy/deploy.sh
Passage en mode live Stripe¶
- Remplacer
sk_test_parsk_live_dans.env - Recréer le webhook en mode live
./deploy/deploy.sh
Attention
Avant le switch live, faire au moins 5 transactions test complètes et vérifier les emails Brevo, la génération du rapport, et le téléchargement depuis l'espace client.