5.2 KiB
REBOURS — Guide de déploiement
Architecture
Internet → Traefik (Coolify, SSL auto)
├── /api/*, /admin/* → Fastify (Node.js + AdminJS)
│ └── PostgreSQL
└── /* → Nginx (fichiers statiques Astro)
Environnement de développement
Prérequis
- Node.js >= 22
- Docker (pour PostgreSQL local)
- pnpm
1. Lancer PostgreSQL
docker compose up -d
PostgreSQL sera accessible sur localhost:5432 avec :
- DB:
rebours - User:
rebours - Password:
rebours
2. Configurer le .env
cp .env.example .env
# Éditer les valeurs (Stripe keys, etc.)
Variables dev minimales :
STRIPE_SECRET_KEY=sk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...
DOMAIN=http://localhost:4321
PORT=8888
DATABASE_URL=postgresql://rebours:rebours@localhost:5432/rebours
ADMIN_EMAIL=admin@rebours.studio
ADMIN_PASSWORD=changeme
COOKIE_SECRET=dev-cookie-secret-at-least-32-characters-long
3. Initialiser la base de données
# Première fois : créer les tables
pnpm db:migrate
# Insérer les produits et le compte admin
pnpm db:seed
4. Lancer le projet
pnpm dev
- Site : http://localhost:4321
- Admin : http://localhost:4321/admin (proxié vers Fastify :8888)
- Prisma Studio :
pnpm db:studio→ http://localhost:5555
Commandes utiles
| Commande | Description |
|---|---|
pnpm dev |
Astro dev + Fastify (hot reload) |
pnpm build |
Build statique (prisma generate + astro build) |
pnpm db:migrate |
Créer/appliquer les migrations |
pnpm db:seed |
Seeder les produits + admin |
pnpm db:studio |
Prisma Studio (UI pour la DB) |
docker compose up -d |
Lancer PostgreSQL local |
docker compose down |
Stopper PostgreSQL local |
Déploiement sur Coolify
Prérequis
- Un serveur avec Coolify installé
- Un domaine pointant vers le serveur (rebours.studio)
1. Créer la ressource sur Coolify
- New Resource → Docker Compose
- Source : connecter le repo Git
- Compose file : sélectionner
docker-compose.prod.yml
2. Configurer les variables d'environnement
Dans l'onglet Environment Variables de Coolify, ajouter :
| Variable | Valeur | Build Variable ? |
|---|---|---|
DATABASE_URL |
postgresql://rebours:MOT_DE_PASSE@postgres:5432/rebours |
Oui |
POSTGRES_PASSWORD |
MOT_DE_PASSE (même que dans DATABASE_URL) |
Non |
STRIPE_SECRET_KEY |
sk_live_... |
Non |
STRIPE_WEBHOOK_SECRET |
whsec_... |
Non |
DOMAIN |
https://rebours.studio |
Non |
PORT |
3000 |
Non |
ADMIN_EMAIL |
admin@rebours.studio |
Non |
ADMIN_PASSWORD |
MOT_DE_PASSE_ADMIN |
Non |
COOKIE_SECRET |
Chaîne aléatoire 64 chars | Non |
DATABASE_URLdoit être coché Build Variable carastro builden a besoin pour requêter les produits au build time.
3. Configurer les domaines
Dans l'onglet Domains :
- Service
nginx:rebours.studio(port 80) - Service
fastify:rebours.studio(port 3000)
Coolify générera automatiquement les labels Traefik. Si tu utilises les labels du docker-compose.prod.yml, assure-toi qu'ils ne sont pas en conflit avec ceux générés par Coolify.
4. Déployer
Cliquer Deploy. Coolify va :
- Builder l'image Docker (install deps + prisma generate + astro build)
- Démarrer PostgreSQL + attendre le healthcheck
- Démarrer Fastify (qui lance
prisma migrate deployautomatiquement) - Démarrer Nginx (qui sert les fichiers statiques)
5. Seeder la base (première fois)
Après le premier déploiement, exécuter le seed dans le container Fastify :
# Via Coolify terminal ou SSH
docker exec -it <container-fastify> sh -c "node prisma/seed.mjs"
Ou dans le terminal Coolify du service fastify :
node prisma/seed.mjs
6. Vérifier
- Site : https://rebours.studio
- Admin : https://rebours.studio/admin
- Login avec
ADMIN_EMAIL/ADMIN_PASSWORD
Fonctionnement de l'auto-build
Quand tu modifies un produit dans l'admin (/admin) :
- AdminJS sauvegarde en DB (PostgreSQL)
- Un hook
afterdéclenchepnpm build(debounce 5s) - Astro rebuild les pages statiques depuis la DB
- Les fichiers
dist/sont écrits dans le volume partagé - Nginx sert les nouvelles pages immédiatement
En dev (
NODE_ENV !== production), le build auto est désactivé.
Stripe
Webhook en production
Le webhook doit pointer vers :
https://rebours.studio/api/webhook
Events écoutés : checkout.session.completed
Ajouter un produit achetable
- Créer le prix dans le Dashboard Stripe
- Dans l'admin
/admin→ Products → éditer le produit - Remplir
stripePriceIdavec leprice_xxxde Stripe - Remplir
stripeKeyavec l'identifiant utilisé par le front (ex:mon_produit) - Le rebuild auto mettra à jour le site
Migrations DB
En dev
pnpm db:migrate
En prod (automatique)
Le CMD du Dockerfile exécute prisma migrate deploy au démarrage du container. Les nouvelles migrations sont appliquées automatiquement à chaque déploiement.
Ajouter une migration manuellement
# Modifier prisma/schema.prisma puis :
pnpm db:migrate
# Commit le dossier prisma/migrations/