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)¶
- Projects -> ton projet -> Add Resource -> Private Repository
- Choisis le repo ERP (branche
main) - Build Pack = Docker Compose
- Compose file =
docker-compose.yml - 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¶
- Ouvre la ressource -> Environment Variables
- Import le contenu complet du
.env - 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.
- Cree un sous-domaine DNS (ex:
studio.supabase.oben-services.com) pointe vers le VPS. - Dans Coolify, ouvre la ressource ERP -> Domains.
- Ajoute un domaine pour le service
studio: - Service:
studio - Domain:
studio.supabase.oben-services.com - Port:
3000 - Path:
/ - (Recommande) Active une protection:
- Auth Coolify si disponible, ou
- Restriction IP (ton IP uniquement).
- Accede a Studio via
https://studio.supabase.oben-services.com. - 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
.envviaenv_file. - 503 sur /functions/v1/hello: runtime Edge Functions en panne.
- 403 CORS: verifie
ALLOWED_ORIGINS. - Emails d invitation absents: verifie
SMTP_*.