espace-paie-odentas/MIGRATION_GOTENBERG.md
odentas 04e9d54292 feat: Migrer génération PDF de PDFMonkey vers Gotenberg
- Remplacer PDFMonkey par Gotenberg (auto-hébergé sur VPS)
- Créer template Handlebars pour contrats (lib/templates/contract.hbs)
- Créer formateur de données (lib/contract-data-formatter.ts)
- Ajouter helpers Handlebars pour conditions et transformations
- Mettre à jour API route generate-pdf pour utiliser Gotenberg
- Ajouter GOTENBERG_URL dans .env.local (http://localhost:3001 pour dev)
- Créer script tunnel-gotenberg.sh pour dev local
- Ajouter documentation MIGRATION_GOTENBERG.md

Avantages:
- Souveraineté des données (pas d'API externe)
- Performance (génération locale)
- Coût (0€ vs abonnement PDFMonkey)
- Sécurité (Gotenberg non exposé publiquement)
2025-12-27 22:22:45 +01:00

3.4 KiB

Migration de PDFMonkey vers Gotenberg

Résumé des changements

Le bouton "Créer PDF" sur la page staff/contrats/[id] utilise désormais Gotenberg (auto-hébergé sur le VPS) au lieu de PDFMonkey.

Fichiers modifiés

1. API Route

  • Fichier: app/api/contrats/[id]/generate-pdf/route.ts
  • Changements:
    • Remplacement de l'appel à PDFMonkey par Gotenberg
    • Utilisation de templates Handlebars au lieu de Liquid
    • Suppression de la fonction de polling
    • Génération PDF instantanée

2. Nouveaux fichiers créés

Template Handlebars

  • Fichier: lib/templates/contract.hbs
  • Description: Template HTML/CSS pour générer les contrats de travail
  • Format: Handlebars (conversion depuis Liquid)

Helpers Handlebars

  • Fichier: lib/handlebars-helpers.ts (déjà existant, mis à jour)
  • Description: Helpers personnalisés pour les conditions et transformations

Formateur de données

  • Fichier: lib/contract-data-formatter.ts
  • Description: Prépare et formate les données du contrat avant génération

Scripts

  • Fichier: tunnel-gotenberg.sh
  • Description: Script pour créer un tunnel SSH vers Gotenberg (dev local)

Dépendances ajoutées

npm install handlebars
npm install --save-dev @types/handlebars

Configuration

Variables d'environnement

Développement local (.env.local)

GOTENBERG_URL=http://localhost:3001

Production (Coolify / VPS)

GOTENBERG_URL=http://gotenberg:3000

Note

: En production, l'app Next.js et Gotenberg sont sur le même réseau Docker coolify, donc gotenberg:3000 fonctionne directement.

Utilisation en développement

  1. Créer un tunnel SSH vers Gotenberg:

    ./tunnel-gotenberg.sh
    

    Ou manuellement :

    ssh -L 3001:gotenberg:3000 renaud@144.91.113.70 -N
    
  2. Lancer le serveur Next.js:

    npm run dev
    
  3. Tester la génération:

    • Aller sur staff/contrats/[id]
    • Cliquer sur "Créer PDF"
    • Le PDF est généré via Gotenberg et uploadé sur S3

Flux de génération

  1. Frontend : Clic sur "Créer PDF"
  2. API Route : Récupère les données du contrat depuis Supabase
  3. Formatter : Formate les données pour le template
  4. Template : Compile le template Handlebars avec les données
  5. Gotenberg : Convertit le HTML en PDF
  6. S3 : Upload du PDF généré
  7. Supabase : Mise à jour du contrat avec l'URL du PDF

Avantages

  • Souveraineté des données : Aucune donnée ne sort du VPS
  • Performance : Génération locale, pas de latence réseau
  • Coût : 0€ (vs abonnement PDFMonkey)
  • Sécurité : Gotenberg n'est pas exposé publiquement

Déploiement

Le code s'auto-déploie sur Coolify lors d'un push. En production :

  • GOTENBERG_URL=http://gotenberg:3000 est déjà configuré
  • Pas besoin de tunnel, tout communique via le réseau Docker interne

Rollback (si nécessaire)

Pour revenir à PDFMonkey en cas de problème :

  1. Restaurer app/api/contrats/[id]/generate-pdf/route.ts depuis le commit précédent
  2. Remettre PDFMONKEY_URL et PDFMONKEY_API_KEY dans les variables d'environnement

Support

  • Guide complet : Voir gotenberg-integration-guide.md
  • Documentation Gotenberg : https://gotenberg.dev/
  • Logs Gotenberg : sudo docker logs gotenberg (sur le VPS)

Date de migration : 27 décembre 2025