Skip to main content

Coolify

Patrimo est conçu pour être auto-hébergé via Coolify, une plateforme open-source de déploiement.

Pré-requis

  • Un serveur Coolify opérationnel
  • Un domaine ou sous-domaine pointant vers votre serveur
  • Le secret GitHub COOLIFY_DEPLOY_WEBHOOK configuré dans le dépôt (voir section Déclenchement du déploiement)

Créer le service applicatif

  1. New ResourceApplicationDocker Compose
  2. Sélectionnez votre dépôt GitHub, branche main
  3. Compose file : docker-compose.prod.yaml

Coolify clone le dépôt depuis GitHub et build les images Docker directement depuis le code source — aucun registre d'images externe n'est nécessaire.

Fichier dédié production

docker-compose.prod.yaml est un fichier standalone prod — il ne nécessite aucun fichier d'override. docker-compose.yml (.yml) est réservé au dev local. L'extension .yaml est détectée automatiquement par Coolify.

Variables d'environnement

Dans l'onglet Environment Variables de Coolify, configurez :

POSTGRES_DB=patrimo
POSTGRES_USER=patrimo
POSTGRES_PASSWORD=<mot_de_passe_fort>
DATABASE_URL=postgresql://patrimo:<password>@db:5432/patrimo
AUTH_SECRET=<openssl rand -base64 32>
AUTH_URL=https://patrimo.votre-domaine.com
AUTHENTIK_CLIENT_ID= # laisser vide si non utilisé
AUTHENTIK_CLIENT_SECRET= # laisser vide si non utilisé
AUTHENTIK_ISSUER= # laisser vide si non utilisé
GEMINI_API_KEY= # laisser vide si non utilisé
NODE_ENV

NODE_ENV=production est déjà défini dans l'image buildée — ne pas le redéfinir dans Coolify pour éviter les conflits.

DATABASE_URL

En Coolify, le host de la base de données est le nom du service tel que défini dans Coolify (ex. patrimo-db), pas db comme en Docker Compose local. Ajustez DATABASE_URL en conséquence.

Domaine et SSL

  1. Onglet Domains → ajoutez patrimo.votre-domaine.com
  2. Coolify génère automatiquement un certificat Let's Encrypt
  3. Vérifiez que AUTH_URL correspond exactement au domaine HTTPS configuré

Migrations au déploiement

Les migrations s'exécutent automatiquement via entrypoint.sh (prisma migrate deploy puis node server.js). Aucune configuration supplémentaire dans Coolify n'est nécessaire.

Créer le premier utilisateur

Via la console Coolify (terminal dans le container) :

# Générer le hash du mot de passe
node -e "require('bcryptjs').hash('votre_mot_de_passe', 12).then(console.log)"

# Insérer en base via psql ou Prisma Studio

Healthcheck

Coolify gère le healthcheck applicatif directement via sa configuration de service (GET /api/health). Ce healthcheck n'est pas défini dans docker-compose.prod.yaml — il est entièrement géré par Coolify.

La base de données dispose d'un healthcheck pg_isready défini dans docker-compose.prod.yaml, qui garantit que PostgreSQL est prêt avant le démarrage de l'application.

Déclenchement du déploiement

Le redéploiement est déclenché depuis la CI, non par surveillance de branche dans Coolify.

Flux :

  1. Un push sur main déclenche le pipeline GitHub Actions
  2. Les jobs e2e et docs s'exécutent et valident le build
  3. Le job deploy appelle le webhook Coolify via curl -fsSL -X GET "$COOLIFY_DEPLOY_WEBHOOK"
  4. Coolify reçoit le webhook, clone le dépôt depuis GitHub, rebuild les images depuis le code source et redéploie les services

Configuration dans Coolify :

  1. Service → onglet Webhooks → copiez l'URL du webhook de déploiement
  2. Dans GitHub, ajoutez ce secret dans votre dépôt : SettingsSecrets and variablesActionsCOOLIFY_DEPLOY_WEBHOOK = URL copiée

Site de documentation (optionnel)

Le service docs est inclus dans docker-compose.prod.yaml et se déploie avec l'app. Il expose le port 80 (servi par nginx) et est routé par Coolify via domaine.

Pour le déployer sur un domaine séparé, configurez dans Coolify un custom domain sur le service docs : docs.patrimo.votre-domaine.com.

Voir aussi