Server
Deployment
Déploiement du serveur
Cette page décrit comment déployer l'API (Bun + Hono + ORPC) et configurer la base de données PostgreSQL.
Prérequis
- PostgreSQL accessible (DB gérée par Drizzle ORM)
- Variables d'environnement renseignées (voir
apps/server/.env-example) - Runtime: Bun
Variables d'environnement
Fichier .env (copier depuis apps/server/.env-example):
DATABASE_URL— chaîne de connexion PostgreSQLCORS_ORIGIN— origine autorisée (ex:http://localhost:3001)BETTER_AUTH_SECRET,BETTER_AUTH_URL— Better AuthDOCUMENT_PROCESSOR_URL— URL du microservice document-processor (ex:http://localhost:8001)INDEX_API_URL— URL de l'Index API du chatbot (ex:http://localhost:8502)RESEND_API_KEY,EMAIL_FROM— emails (reset / notifications)MICROSOFT_CLIENT_ID,MICROSOFT_CLIENT_SECRET,MICROSOFT_TENANT_ID— OAuth MicrosoftI18N_JSON— JSON i18n inline pour le frontend (alternatif à/app/i18n.json)
Ports & routes
- Health:
GET /,GET /health,GET /ready - Auth:
POST/GET /api/auth/** - RPC:
/rpc/*(ORPC) - CORS dynamique pour
localhost+CORS_ORIGIN
Dossier base de données
apps/server/src/db/index.ts— initialisation Drizzle (DATABASE_URL)schema/— définitions Drizzle (auth.ts,naivi.ts)
- Config Drizzle:
apps/server/drizzle.config.ts - Migrations (générées):
apps/server/drizzle/
Procédure (local / on-prem)
- Installer dépendances à la racine
bun install- Créer
.envdansapps/server/à partir de.env-example - (Optionnel) Générer et appliquer migrations avec Drizzle
# dans apps/server
bun run db:generate # génère SQL dans ./drizzle
bun run db:push # pousse le schéma courant
# ou
bun run db:migrate # applique les migrations existantes- Démarrer le serveur en dev
# dans apps/server
bun run devLe serveur Hono est exposé par Bun (port géré par Bun, logs dans la console). Health endpoints doivent renvoyer OK.
- Build/Start (prod)
# build TS
bun run build
# démarrer depuis dist
bun run startConteneurisation (exemple Dockerfile minimal)
FROM oven/bun:1 AS base
WORKDIR /app
COPY apps/server/package.json apps/server/tsconfig.json apps/server/tsconfig.paths.json ./
COPY apps/server/src ./src
RUN bun install
RUN bun run build
FROM oven/bun:1
WORKDIR /app
COPY --from=base /app/dist ./dist
ENV NODE_ENV=production
# DATABASE_URL, CORS_ORIGIN, BETTER_AUTH_*, RESEND_*, MICROSOFT_* fournis à l'exécution
CMD ["bun", "run", "dist/src/index.js"]Réseaux & CORS
- Assurez-vous que
CORS_ORIGINpointe vers l'URL du front (ex: Vitehttp://localhost:3001). - Les cookies de session sont envoyés avec
credentials: truecôté ORPC.
Observabilité
- Logs via
hono/logger - Health/Ready endpoints pour probes (Kubernetes/HELM)
Intégration Frontend
- Auth client (
apps/web/src/lib/auth-client.ts) doit utiliser une URL cohérente avec le montage serveur:- Si l'auth est montée sur
/api/auth/**, utilisezbaseURL = ${VITE_SERVER_URL}/api/auth(voir mémoire: les différences d'env peuvent sinon provoquer des 404 sur/sign-in/email).
- Si l'auth est montée sur
Conseils
- Sécuriser
.envet secrets (ne pas exposer côté client) - Séparer les environnements (dev/staging/prod) avec des
DATABASE_URLdistinctes - Automatiser les migrations via CI/CD (Drizzle
db:generate,db:migrate)
Kalli