etouch docs
Guides

Deploiement

Guide de deploiement Coolify pour la plateforme etouch (staging et production)

etouch est deploye sur un VPS gere par Coolify avec des environnements staging et production.

  • Frontend : apps/web (Next.js 15)
  • API : apps/api (Hono + GraphQL)
  • Workers : packages/workers (BullMQ)

1. Variables d'environnement

Coolify utilise des Environment Groups pour centraliser les variables. Trois groupes :

  1. etouch-shared -- secrets identiques en staging/production
  2. etouch-staging -- URLs et credentials staging
  3. etouch-production -- URLs et credentials production

1.1 Variables partagees (etouch-shared)

VariableDescription
NODE_ENV=productionMode production
LOG_LEVELinfo en prod, debug en staging
REDIS_URLConnection Redis (BullMQ)
R2_BUCKETBucket Cloudflare R2
R2_ENDPOINTEndpoint S3-compatible
R2_PUBLIC_BASE_URLCDN public pour R2
R2_ACCESS_KEY_ID / R2_SECRET_ACCESS_KEYCredentials R2
RESEND_API_KEY / RESEND_FROM_EMAILEmail delivery
EMAIL_SERVICEresend, sendgrid ou console
INSEE_INTEGRATION_KEYAPI INSEE (optionnel)
CLOUDFLARE_IMAGES_ACCOUNT_ID / CLOUDFLARE_IMAGES_API_TOKENCloudflare Images
WORKFLOW_WEBHOOK_SECRETWebhook workflows (optionnel)

Generer des secrets uniques par environnement :

  • AUTH_JWT_SECRET -- minimum 32 caracteres
  • BETTER_AUTH_SECRET -- openssl rand -base64 32

1.2 Overrides staging (etouch-staging)

VariableValeur staging
DATABASE_URLPostgreSQL staging (Neon)
AUTH_BASE_URLhttps://etouch-staging.e-do.studio
API_BASE_URLhttps://etouch-staging.e-do.studio/api
NEXT_PUBLIC_SITE_URLhttps://etouch-staging.e-do.studio
NEXT_PUBLIC_API_URLhttps://etouch-staging.e-do.studio/api
CORS_ORIGINhttps://etouch-staging.e-do.studio
INTERNAL_API_URLhttp://etouch-api-staging:3000

1.3 Overrides production (etouch-production)

VariableValeur production
DATABASE_URLNeon production
AUTH_BASE_URLhttps://etouch.e-do.studio
API_BASE_URLhttps://etouch.e-do.studio/api
NEXT_PUBLIC_SITE_URLhttps://etouch.e-do.studio
NEXT_PUBLIC_API_URLhttps://etouch.e-do.studio/api
CORS_ORIGINhttps://etouch.e-do.studio
INTERNAL_API_URLhttp://etouch-api:3000

2. Configuration des services Coolify

2.1 Service API (apps/api)

  • Type : Docker (Dockerfile existant)
  • Base directory : /
  • Dockerfile : /apps/api/Dockerfile
  • Port conteneur : 3000
  • Healthcheck : GET /healthz
  • Domaines : aucun (le web app proxy via /api/*)

Le conteneur API execute automatiquement prisma migrate deploy au demarrage (avec retries). Desactiver avec SKIP_MIGRATIONS=true.

2.2 Service Web (apps/web)

  • Type : Node.js (Next.js)
  • Base directory : /
  • Port : 3000
  • Domaines : staging etouch-staging.e-do.studio, prod etouch.e-do.studio
  • Healthcheck : GET /api/health
EtapeCommande
Installpnpm install --frozen-lockfile --config.prod=false -r
Buildpnpm prisma:generate && pnpm --filter @etouch/db build && pnpm --filter @etouch/web build
Startpnpm --filter @etouch/web start -- --hostname 0.0.0.0 --port 3000

Les requetes /api/* sont proxiees vers le conteneur API via INTERNAL_API_URL.

2.3 Workers (packages/workers)

  • Type : Service Node.js background
  • Domaines/ports : aucun
  • Healthcheck : desactive
EtapeCommande
Installpnpm install --frozen-lockfile --config.prod=false -r
Buildpnpm prisma:generate && pnpm --filter @etouch/db build && pnpm --filter @etouch/workers build
Startpnpm prisma:deploy && pnpm --filter @etouch/workers start

3. Checklist de deploiement

  1. DNS pointe vers le VPS Coolify pour staging et production
  2. Environment Groups attaches a chaque application
  3. INTERNAL_API_URL reference le bon conteneur API
  4. Redis et PostgreSQL accessibles depuis le VPS
  5. prisma migrate deploy s'execute correctement
  6. Certificats Let's Encrypt emis via Coolify
  7. Workers en ligne et traitant les queues BullMQ

4. Commandes utiles

  • Deploiement staging : push sur la branche staging ou "Redeploy" dans Coolify
  • Deploiement production : meme approche une fois staging valide
  • Migrations manuelles : pnpm prisma:deploy dans le conteneur API
  • Inspection des queues : se connecter a Redis et monitorer BullMQ