PaaS auto-hébergé — alternative à Netlify/Vercel/Heroku avec souveraineté totale sur les données, l'infrastructure et les coûts.
- Docker Engine 29+
cp .env.example .envet remplir les variables (voir ci-dessous)
Copier et remplir les variables d'environnement :
cp .env.example .envDémarrer postgres, redis et l'API (migrations automatiques au démarrage) :
docker compose -f docker-compose.dev.yml up -d --buildOuvrir un shell dans le conteneur API :
docker compose -f docker-compose.dev.yml exec api shUne fois dans le shell, lancer l'API en hot-reload → http://localhost:3001 :
npm run dev:dockerExécuter les tests :
npm testCréer une nouvelle migration Prisma :
npm run db:migrateOuvrir Prisma Studio :
npm run db:studioQuitter le shell (les autres conteneurs restent actifs) :
exit| Variable | Description |
|---|---|
POSTGRES_USER / POSTGRES_PASSWORD / POSTGRES_DB |
Credentials PostgreSQL |
DATABASE_URL |
URL de connexion Prisma (host : localhost hors Docker, ignorée dans Docker) |
JWT_PRIVATE_KEY / JWT_PUBLIC_KEY |
Clés RS256 — auto-générées en dev, obligatoires en prod |
JWT_REFRESH_SECRET |
Secret HMAC pour les refresh tokens |
GITLAB_URL / GITLAB_CLIENT_ID / GITLAB_CLIENT_SECRET / GITLAB_CALLBACK_URL |
OAuth2 GitLab CE (optionnel en dev) |
GHCR_TOKEN |
Token GitHub (write:packages) pour pousser l'image sur GHCR |
Générer les clés JWT pour la production :
./scripts/gen-jwt-keys.sh >> .envDéfinir le token GitHub avec les droits write:packages :
export GHCR_TOKEN=ghp_xxxBuilder et pousser l'image API sur ghcr.io/mendoc/pontis-api :
npm run deploy:apiL'image est taguée avec la version du package.json et :latest.
Reconstruire l'image API (après changement de dépendances) :
docker compose -f docker-compose.dev.yml up -d --build apiVoir les logs de l'API :
docker compose -f docker-compose.dev.yml logs -f apiTout arrêter :
docker compose -f docker-compose.dev.yml downTout arrêter et effacer les volumes (base de données incluse) :
docker compose -f docker-compose.dev.yml down -v/api — Fastify backend (Node.js 20), port 3001 ✅ implémenté
/web — Next.js 14 dashboard (App Router + Tailwind) 🔜 prévu
/worker — BullMQ worker (jobs de build) 🔜 prévu