10 - Variables d'environnement par service (où trouver quoi)
Sur ton setup Coolify, les variables ne vivent pas dans un fichier
.env posé sur le serveur : chaque ressource a un onglet Environment
Variables dans l'interface Coolify. Tu y colles les paires CLE=valeur
ci-dessous. Les valeurs marquées « secret » sont chiffrées et masquées par
Coolify.
📌 Beaucoup de secrets (mots de passe Postgres/Mongo, clés) sont générés automatiquement par Coolify quand tu ajoutes la ressource depuis le catalogue. Dans ce cas tu n'as rien à inventer : tu les retrouves dans l'onglet Environment Variables de la ressource. Les blocs ci-dessous servent (a) à comprendre à quoi sert chaque variable, (b) à savoir où obtenir celles qui viennent de l'extérieur (OpenRouter, Anthropic…).
Générer un secret fort quand il faut en créer un :
openssl rand -base64 32
Repères communs
# Domaine racine (sert à construire les sous-domaines *-it)
DOMAIN=engwe-france.fr
# Email Let's Encrypt / contact
ACME_EMAIL=seerassiakoley03@gmail.com
GENERIC_TIMEZONE=Europe/Paris
PostgreSQL
POSTGRES_USER=engwe_admin
POSTGRES_PASSWORD=<secret> # généré par Coolify - à récupérer, pas à inventer
POSTGRES_DB=postgres # base par défaut
- Où trouver : onglet Environment Variables de la ressource PostgreSQL dans Coolify (Coolify le génère à la création).
- Bases additionnelles déjà créées dedans :
n8n,nocodb(voir la mémoire projet). Tu peux en créer d'autres pour tes apps. - Fiche mot de passe existante : docs/fiches/mot de passe postgresql.png.
MongoDB
MONGO_INITDB_ROOT_USERNAME=engwe_admin
MONGO_INITDB_ROOT_PASSWORD=<secret> # généré par Coolify - à récupérer
- Où trouver : Environment Variables de la ressource MongoDB dans Coolify.
Mongo Express (UI MongoDB - mongo-it.engwe-france.fr)
# Connexion à la base
ME_CONFIG_MONGODB_ADMINUSERNAME=engwe_admin # = user Mongo ci-dessus
ME_CONFIG_MONGODB_ADMINPASSWORD=<secret> # = password Mongo ci-dessus
ME_CONFIG_MONGODB_URL=mongodb://engwe_admin:<password>@mongo:27017/
ME_CONFIG_MONGODB_ENABLE_ADMIN=true
# Auth basique de l'UI (2e barrière en plus du HTTPS) - À TOI de la définir
ME_CONFIG_BASICAUTH=true
ME_CONFIG_BASICAUTH_USERNAME=admin
ME_CONFIG_BASICAUTH_PASSWORD=<secret à choisir>
mongodans l'URL = nom de service interne de MongoDB. ⚠️ Ne marche que si Mongo Express est sur le même réseau Docker que MongoDB (chez toi c'était déjà le cas - voir la mémoire sur l'isolation réseau).ME_CONFIG_BASICAUTH_*: à inventer toi-même (login/mot de passe de la page).openssl rand -base64 24pour le mot de passe.
n8n (n8n-it.engwe-france.fr)
# Base PostgreSQL partagée
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=postgres # nom de service interne de Postgres
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=n8n
DB_POSTGRESDB_USER=engwe_admin # = POSTGRES_USER
DB_POSTGRESDB_PASSWORD=<password Postgres>
# Accès web (HTTPS derrière le proxy)
N8N_HOST=n8n-it.engwe-france.fr
N8N_PORT=5678
N8N_PROTOCOL=https
WEBHOOK_URL=https://n8n-it.engwe-france.fr/
N8N_EDITOR_BASE_URL=https://n8n-it.engwe-france.fr/
N8N_PROXY_HOPS=1
# Sécurité - NE JAMAIS perdre ni changer cette clé après création de credentials
N8N_ENCRYPTION_KEY=<secret> # généré par Coolify, ou openssl rand -base64 32
GENERIC_TIMEZONE=Europe/Paris
N8N_RUNNERS_ENABLED=true
N8N_ENCRYPTION_KEY: chiffre les identifiants stockés dans n8n. Si tu la perds ou la modifies, tous tes credentials n8n deviennent illisibles. Sauvegarde-la précieusement.
NocoDB (data-it.engwe-france.fr)
# Métadonnées NocoDB stockées dans PostgreSQL (base `nocodb`)
NC_DB=pg://postgres:5432?u=engwe_admin&p=<password Postgres>&d=nocodb
NC_AUTH_JWT_SECRET=<secret> # signe les tokens - openssl rand -base64 32
NC_PUBLIC_URL=https://data-it.engwe-france.fr
NC_DISABLE_TELE=true
NC_AUTH_JWT_SECRET: à générer ; ne pas changer après coup (déconnecte tous les utilisateurs).
Open WebUI (chat-it.engwe-france.fr) - pas encore déployé
# Deux connexions compatibles OpenAI séparées par ";" (même ordre) :
# 1) OpenRouter (Claude + des centaines de modèles) 2) LiteLLM (Claude direct)
OPENAI_API_BASE_URLS=https://openrouter.ai/api/v1;http://litellm:4000/v1
OPENAI_API_KEYS=<OPENROUTER_API_KEY>;<LITELLM_MASTER_KEY>
WEBUI_SECRET_KEY=<secret> # sessions - openssl rand -base64 32
ENABLE_OLLAMA_API=false # pas de modèle local
WEBUI_URL=https://chat-it.engwe-france.fr
LiteLLM (passerelle Claude direct) - pas encore déployé
LITELLM_MASTER_KEY=<secret à choisir> # clé interne Open WebUI ↔ LiteLLM - openssl rand -base64 24
ANTHROPIC_API_KEY=sk-ant-... # clé Anthropic (voir ci-dessous)
OPENROUTER_API_KEY=sk-or-v1-... # optionnel : router aussi OpenRouter via LiteLLM
Clés externes : où les obtenir
| Variable | Où la créer | Format |
|---|---|---|
OPENROUTER_API_KEY |
https://openrouter.ai/keys | sk-or-v1-… |
ANTHROPIC_API_KEY |
https://console.anthropic.com/ | sk-ant-… |
LITELLM_MASTER_KEY |
tu la choisis (openssl rand -base64 24) |
libre |
Uptime Kuma
Aucune variable d'environnement obligatoire : la config (compte admin, sondes, notifications) se fait dans l'interface web au premier lancement, et est stockée dans son fichier SQLite (volume Docker). Voir docs/09-uptime-kuma.md.
Rappels sécurité
- Un secret ne se met jamais dans le code ni dans un dépôt Git - seulement dans l'onglet Environment Variables de Coolify.
- Le modèle historique tout-en-un (parcours Docker Compose) reste dans docker/.env.example pour référence.
- Si un secret a pu fuiter : régénère-le et redéploie la ressource concernée.
