Ceci est un guide how-to pour configurer les variables d’environnement dans une installation Discourse auto-hébergée.
Niveau d’utilisateur requis : Administrateur
Les variables d’environnement jouent un rôle crucial dans la configuration de votre instance Discourse. Elles peuvent stocker des données sensibles comme des clés d’API et des mots de passe de base de données, rendant votre installation plus sécurisée et flexible. Dans Discourse, les variables d’environnement sont définies dans le fichier app.yml au sein de la configuration de votre conteneur Docker.
L’ajout de variables d’environnement à un fichier .yml (YAML) est simple. Voici un exemple de base :
# Ceci est un fichier YAML avec des variables d'environnement
env:
VARIABLE_NAME: "Variable Value"
ANOTHER_VARIABLE: "Another Value"
Dans le contexte d’un conteneur Docker Discourse, les variables d’environnement sont stockées dans la section env de votre fichier app.yml.
Voici un exemple de fichier app.yml :
## ceci est le modèle de conteneur Docker Discourse tout-en-un et autonome
##
## Après avoir apporté des modifications à ce fichier, vous devez reconstruire
## /var/discourse/launcher rebuild app
##
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Décommentez ces deux lignes si vous souhaitez ajouter Lets Encrypt (https)
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"
## quels ports TCP/IP ce conteneur doit-il exposer ?
## Si vous souhaitez que Discourse partage un port avec un autre serveur web comme Apache ou nginx,
## consultez https://meta.discourse.org/t/17247 pour plus de détails
expose:
- "80:80" # http
- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Définissez db_shared_buffers à un maximum de 25 % de la mémoire totale.
## sera défini automatiquement par bootstrap en fonction de la RAM détectée, ou vous pouvez le remplacer
db_shared_buffers: "256MB"
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## Combien de requêtes web simultanées sont prises en charge ? Dépend de la mémoire et des cœurs CPU.
## sera défini automatiquement par bootstrap en fonction des CPU détectés, ou vous pouvez le remplacer
UNICORN_WORKERS: 3
## TODO : Le nom de domaine auquel cette instance Discourse répondra
DISCOURSE_HOSTNAME: 'discourse.example.com'
## Décommentez si vous souhaitez que le conteneur soit démarré avec le même
## nom d'hôte (-h option) que celui spécifié ci-dessus (par défaut "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO : Liste des e-mails délimités par des virgules qui seront rendus administrateurs et développeurs
## lors de la première inscription, par exemple 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'user@example.com'
## TODO : Le serveur de messagerie SMTP utilisé pour valider les nouveaux comptes et envoyer des notifications
DISCOURSE_SMTP_ADDRESS: smtp.example.com # (obligatoire)
DISCOURSE_SMTP_PORT: 587 # (facultatif)
DISCOURSE_SMTP_USER_NAME: user@example.com # (facultatif)
DISCOURSE_SMTP_PASSWORD: a_s3cr3t_p@ssword # (facultatif)
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (facultatif, par défaut true)
## Si vous avez ajouté le modèle Lets Encrypt, décommentez ci-dessous pour obtenir un certificat SSL gratuit
#LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## L'adresse CDN pour cette instance Discourse (configurée pour tirer)
#DISCOURSE_CDN_URL: //discourse-cdn.example.com
## Le conteneur Docker est sans état ; toutes les données sont stockées dans /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Les plugins vont ici
## voir https://meta.discourse.org/t/19157 pour plus de détails
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## Toutes les commandes personnalisées à exécuter après la construction
run:
- exec: echo "Début des commandes personnalisées"
## Si vous souhaitez définir l'adresse e-mail "De" pour votre première inscription, décommentez et modifiez :
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
## Après avoir reçu le premier e-mail d'inscription, re-commentez la ligne. Elle ne doit s'exécuter qu'une seule fois.
- exec: echo "Fin des commandes personnalisées"
Commençons par ajouter des variables d’environnement à votre site ! ![]()
Les instructions suivantes sont rédigées pour une Installation Discourse Standard
Connexion à votre serveur
Utilisez un outil comme PuTTY ou le terminal sur les systèmes basés sur Unix pour vous connecter en SSH à votre serveur.
ssh username@your-server-ip
Naviguer vers le répertoire Discourse
Une fois que vous avez accès à votre serveur, naviguez vers le répertoire contenant votre configuration Docker Discourse, généralement situé à /var/discourse.
cd /var/discourse
Ouvrir le fichier app.yml
Vous devrez ouvrir le fichier app.yml dans un éditeur de texte. Pour cet exemple, nous utiliserons nano.
nano containers/app.yml
Ajouter vos variables d’environnement
Dans le fichier app.yml, vous trouverez une section env. C’est là que vous pouvez ajouter vos variables d’environnement.
env:
DISCOURSE_HOSTNAME: 'discourse.example.com'
DISCOURSE_SMTP_ADDRESS: smtp.example.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: user@example.com
DISCOURSE_SMTP_PASSWORD: a_s3cr3t_p@ssword
Par exemple, si vous souhaitiez définir la variable d’environnement DISCOURSE_ENABLE_CORS sur true pour activer le Cross-Origin Resource Sharing (CORS), vous ajouteriez la ligne suivante à la section env :
env:
DISCOURSE_ENABLE_CORS: "true"
...
L’espacement et le formatage sont importants ici, alors assurez-vous de maintenir le bon retrait (deux espaces) pour la nouvelle ligne.
Une fois que vous avez modifié vos variables, enregistrez et fermez le fichier.
Reconstruire le conteneur Discourse
Enfin, vous devrez reconstruire votre conteneur Docker Discourse pour que les modifications prennent effet. Vous pouvez le faire avec la commande suivante :
./launcher rebuild app
Alternativement, pour mettre à jour les variables d’environnement d’un conteneur en cours d’exécution sans reconstruire, vous pouvez également utiliser :
./launcher destroy app
./launcher start app
Une fois le processus de reconstruction terminé, vos variables d’environnement mises à jour seront disponibles pour votre application Discourse ! ![]()