Aller au contenu

Deploiement ERP sur Coolify

Principe

Une seule ressource Coolify (Private Repository) qui deploie: - l application ERP (frontend) - Supabase self-hosted - la documentation

Aucun autre mode de deploiement n est supporte.

Etape 0 - Prerequis

  • VPS avec Coolify installe
  • DNS A pour:
  • oben-services.com
  • supabase.oben-services.com
  • doc.oben-services.com
  • Ports 80 et 443 ouverts
  • Acces au repo Git prive

Etape 1 - Creer la ressource Coolify (UI)

  1. Projects -> ton projet -> Add Resource -> Private Repository
  2. Choisis le repo ERP (branche main)
  3. Build Pack = Docker Compose
  4. Compose file = docker-compose.yml
  5. Save

Etape 2 - Generer le fichier .env (script)

Si tu n as pas le repo local:

git clone <URL_DU_REPO_PRIVE>
cd ERP

Puis lance:

./scripts/generate-env.sh \
  --domain oben-services.com \
  --supabase-base-url https://supabase.oben-services.com \
  --out ./.env

Details: - --domain (requis): domaine frontend; alimente SITE_URL, ALLOWED_ORIGINS, GOTRUE_SITE_URL, SMTP_ADMIN_EMAIL. - --supabase-base-url (optionnel): base publique Supabase; defaut https://supabase.<domain>. - --out (optionnel): ecrit le fichier et applique chmod 600 (sinon affiche dans le terminal). - --erp-config-out (optionnel): genere erp-config.js avec la config publique. - Le script genere les secrets et laisse SMTP_* a completer.

Etape 3 - Verifier les variables critiques

Ouvre .env et verifie: - SITE_URL = https://oben-services.com - SUPABASE_PUBLIC_URL = https://supabase.oben-services.com - API_EXTERNAL_URL = https://supabase.oben-services.com - ALLOWED_ORIGINS = https://oben-services.com - Ajoute https://www.oben-services.com si tu utilises aussi www - ADDITIONAL_REDIRECT_URLS = optionnel (ex: https://www.oben-services.com) - SMTP_* = obligatoire pour envoyer les invitations email - GOTRUE_SMTP_* = doit correspondre a tes infos SMTP

Ne commit jamais .env.

Etape 4 - Importer le .env dans Coolify

  1. Ouvre la ressource -> Environment Variables
  2. Import le contenu complet du .env
  3. Save

Etape 5 - Configurer les domaines

Dans la ressource -> Domains:

  • Service erp_frontend
  • Domain: oben-services.com
  • Port: 80
  • Path: /

  • Service kong

  • Domain: supabase.oben-services.com
  • Port: 8000
  • Path: /

  • Service erp_docs

  • Domain: doc.oben-services.com
  • Port: 80
  • Path: /

Etape 6 - Deployer

Clique Deploy et attends que les services soient en Running/Healthy.

Etape 7 - Verifications rapides

Depuis ton PC:

curl -I https://oben-services.com
curl -I https://supabase.oben-services.com
curl -I https://doc.oben-services.com
curl https://oben-services.com/erp-config.js

Test Edge Functions:

ANON_KEY="<TA_ANON_KEY>"
curl -i https://supabase.oben-services.com/functions/v1/hello \
  -H "Authorization: Bearer $ANON_KEY" \
  -H "apikey: $ANON_KEY"

Etape 8 - Creer le premier Admin

L application est en acces par invitation. Il faut un premier compte Admin:

Option A (simple): exposer le service studio temporairement 1. Ajoute un domaine temporaire dans Coolify pour le service studio. 2. Ouvre l interface Studio, cree un utilisateur. 3. Dans Auth, edite l utilisateur et ajoute app_metadata.role = "Admin".

Option B (SQL via Postgres) 1. Connecte-toi a Postgres (psql). 2. Execute:

update auth.users
set raw_app_meta_data = coalesce(raw_app_meta_data, '{}'::jsonb)
  || jsonb_build_object('role', 'Admin')
where email = 'admin@exemple.com';

Ensuite, connecte-toi avec ce compte et utilise le referentiel Acces pour inviter les autres utilisateurs.

Acces temporaire a Studio (pas a pas)

Studio ne doit pas rester public. L idee est de l exposer juste le temps de creer le premier Admin.

  1. Cree un sous-domaine DNS (ex: studio.supabase.oben-services.com) pointe vers le VPS.
  2. Dans Coolify, ouvre la ressource ERP -> Domains.
  3. Ajoute un domaine pour le service studio:
  4. Service: studio
  5. Domain: studio.supabase.oben-services.com
  6. Port: 3000
  7. Path: /
  8. (Recommande) Active une protection:
  9. Auth Coolify si disponible, ou
  10. Restriction IP (ton IP uniquement).
  11. Accede a Studio via https://studio.supabase.oben-services.com.
  12. Cree l Admin, puis supprime ce domaine dans Coolify et retire la zone DNS.

Etape 9 - Mise a jour

  • Pousse un commit sur la branche.
  • Redeploie la ressource Coolify.

Depannage express

  • Argument list too long (Coolify): met a jour le repo et redeploie, le compose utilise .env via env_file.
  • 503 sur /functions/v1/hello: runtime Edge Functions en panne.
  • 403 CORS: verifie ALLOWED_ORIGINS.
  • Emails d invitation absents: verifie SMTP_*.