Discourse est un logiciel gratuit et open source pour créer une communauté de forum Internet et une liste de diffusion. Il a été créé en 2013 et écrit dans les langages de programmation Ruby et Javascript. Le logiciel de forum Discourse a été utilisé par de nombreuses organisations, notamment Codeacademy, Udacity, Twitter Developers et Docker Community Forum.
Dans ce didacticiel, nous vous montrerons étape par étape comment installer et configurer Discourse Forum avec le serveur Web Nginx sur Ubuntu 16.04. Plus précisément, nous vous montrerons comment installer le logiciel de forum Discourse, configurer Nginx en tant que proxy inverse pour l'application Discourse et sécuriser le logiciel de forum Discourse à l'aide du protocole SSL gratuit de Letsencrypt.
Ce que nous allons faire
- Installer Docker sur Ubuntu 16.04
- Installer et configurer le logiciel Discourse Forum
- Générer SSL Letsencrypt sur Ubuntu 16.04
- Installer et configurer Nginx en tant que proxy inverse pour Discourse
- Installateur Web de Discourse
- Configuration supplémentaire de Discourse
Prérequis
- Ubuntu 16.04
- Privilèges racine
- Compte SMTP :Mailgun, SendGrid, Mailjet, etc.
Étape 1 - Installer Docker sur Ubuntu 16.04
Le logiciel Discourse est écrit en Ruby et Javascript, en utilisant PostgreSQL comme base de données principale, et Redis comme cache et pour les données transitoires. Nous allons installer Discourse sous le conteneur Docker.
Le processus d'installation sera effectué sur Ubuntu 16.04. Donc, pour commencer, installez Docker à l'aide de la commande ci-dessous.
wget -qO- https://get.docker.com/ | sh
Une fois l'installation terminée, vérifiez le service docker et assurez-vous qu'il est déjà en cours d'exécution sur le système.
systemctl status docker
Et assurez-vous également que Docker est sur l'application de démarrage de démarrage.
systemctl is-enabled docker
Étape 2 - Installer et configurer le forum de discours
Dans cette étape, nous allons installer et configurer le logiciel Discourse. Nous allons télécharger le script docker-compose de discours, le configurer selon nos besoins, puis créer un nouveau conteneur Docker pour le logiciel de forum de discours.
Créez un nouveau répertoire '/var/discourse' et clonez le script d'installation.
mkdir -p /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse
Allez maintenant dans le répertoire 'discourse' et copiez un exemple du fichier docker-compose.
cd /var/discourse
cp samples/standalone.yml containers/app.yml
Modifiez le fichier 'app.yml' à l'aide de l'éditeur vim.
vim containers/app.yml
Configurer le mappage des ports Docker
Par défaut, toutes les requêtes HTTP et HTTPS seront traitées par le proxy Docker. Et pour ce guide, nous utiliserons Nginx à cette fin - tous les HTTP et HTTPS seront gérés par le serveur Web Nginx.
Nous devons donc modifier la configuration du mappage du port Docker. Le conteneur Discourse n'aura que la connexion HTTP, et l'hôte ouvrira le nouveau port '2045' et le mappera sur le port 80 du conteneur.
Décommentez la ligne HTTPS et modifiez la ligne HTTP avec le nouveau port '2045'.
expose:
- "2045:80" # http
# - "443:443" # https
Configuration du nom de domaine Discourse
Tapez votre propre nom de domaine pour le discours installé sur la ligne 'DISCOURSE_HOSTNAME' comme ci-dessous.
DISCOURSE_HOSTNAME: 'discourse.hakase-labs.me'
Et saisissez votre adresse e-mail dans la ligne 'DISCOURSE_DEVELOPER_EMAIL'.
DISCOURSE_DEVELOPER_EMAILS: '[email protected]'
Configuration SMTP
Il s'agit de la configuration la plus importante pour Discourse Software. Assurez-vous d'avoir le compte SMTP pour l'installation de Discourse - vous pouvez acheter ou essayer un compte SMTP gratuit auprès de Mailgun, Mailjet ou SendGrid.
Dans ce didacticiel, nous utiliserons le compte SMTP gratuit de Mailgun. Décommentez la configuration SMTP et saisissez votre compte comme ci-dessous.
DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: [email protected]
DISCOURSE_SMTP_PASSWORD: mypassword
Enregistrez et quittez.
Ensuite, créez une nouvelle image Discourse Docker basée sur la configuration du modèle app.yml.
sudo ./launcher bootstrap app
Après cela, démarrez/initialisez le nouveau conteneur Discourse à l'aide de la commande ci-dessous.
sudo ./launcher start app
Le conteneur Discourse devrait être opérationnel - vérifiez-le à l'aide de la commande docker.
docker ps -a
Vérifiez le port ouvert de l'hôte à l'aide de netstat et assurez-vous que le nouveau port docker-proxy 2045 figure dans la liste.
netstat -plntu
Le logiciel Discourse Forum a été installé sous le conteneur docker sur l'hôte Ubuntu 16.04.
Étape 3 - Générer SSL Letsencrypt sur Ubuntu 16.04
Le forum Discourse fonctionnera sous la connexion sécurisée HTTP et sera géré par le serveur Web Nginx. Nous utiliserons SSL gratuit de Letsencrypt pour ce guide, et nous devons installer le client Letsencrypt sur le serveur.
Installez letsencrypt avec la commande apt ci-dessous.
sudo apt install letsencrypt -y
Générez maintenant de nouveaux certificats SSL à l'aide de la commande letsencrypt.
letsencrypt certonly
Tapez votre adresse e-mail pour renouveler la notification et choisissez "OK".
Pour les conditions d'utilisation (conditions d'utilisation) de Letsencrypt, choisissez "Accepter".
Tapez maintenant votre nom de domaine de discours 'discourse.hakase-labs.me'.
Et quand il sera terminé, vous obtiendrez le résultat ci-dessous
De nouveaux certificats SSL de letsencrypt ont été générés dans le répertoire '/etc/letsencrypt/live'.
Étape 4 - Installer et configurer Nginx en tant que proxy inverse pour le conteneur Discourse
Dans cette étape, nous allons installer le serveur Web Nginx et le configurer en tant que proxy inverse pour le conteneur Discourse qui s'exécute sur le port 2045.
Installez Nginx avec la commande apt ci-dessous.
sudo apt install nginx -y
Maintenant, démarrez Nginx et activez-le pour qu'il se lance au démarrage à l'aide de la commande systemctl.
systemctl start nginx
systemctl enable nginx
Nginx a été installé et s'exécute sur le port HTTP 80. Vous pouvez le vérifier à l'aide de netstat.
netstat -plntu
Le serveur Web Nginx a été installé sur le serveur Ubuntu 16.04.
Ensuite, nous devons créer un nouveau fichier d'hôte virtuel pour le conteneur Discourse. Accédez au répertoire de configuration nginx et créez un nouveau fichier "discourse" à l'aide de l'éditeur vim.
cd /etc/nginx/
vim sites-available/discourse
Maintenant, collez la configuration d'hôte virtuel Discourse nginx suivante.
server {
listen 80; listen [::]:80;
server_name discourse.hakase-labs.me;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name discourse.hakase-labs.me;
ssl_certificate /etc/letsencrypt/live/discourse.hakase-labs.me/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/discourse.hakase-labs.me/privkey.pem;
include /etc/nginx/snippets/ssl.conf;
location / {
proxy_pass http://discourse.hakase-labs.me:2045/;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect http://discourse.hakase-labs.me:2045/ https://discourse.hakase-labs.me;
}
}
Enregistrez et quittez.
Remarque :
- Toutes les requêtes HTTP seront automatiquement redirigées vers la connexion HTTPS.
- Modifiez la configuration SSL avec votre propre répertoire de chemin.
- Il existe une configuration SSL supplémentaire.
Créez maintenant un nouveau fichier de configuration ssl supplémentaire 'ssl.conf'.
vim snippets/ssl.conf
Collez la configuration suivante dans le fichier.
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_protocols TLSv1.2;
ssl_ciphers EECDH+AESGCM:EECDH+AES;
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
Enregistrez et quittez.
Et maintenant, activez l'hôte virtuel de discours à l'aide de la commande 'ln -s', comme indiqué ci-dessous.
ln -s /etc/nginx/sites-available/discourse /etc/nginx/sites-enabled/
Teste la configuration et s'assure qu'il n'y a pas d'erreur, puis redémarre le service.
nginx -t
systemctl restart nginx
L'installation et la configuration de Nginx en tant que proxy inverse pour le conteneur Discourse sont terminées.
Étape 5 - Installer Discourse Web
Ouvrez votre navigateur Web et visitez l'URL du discours.
http://discourse.hakase-labs.me
Et vous serez redirigé vers la connexion sécurisée HTTP. Cliquez sur le bouton "S'inscrire" pour créer un nouvel utilisateur administrateur.
Tapez maintenant votre nom d'utilisateur et votre mot de passe administrateur, puis cliquez sur "S'inscrire".
Et vous recevrez un nouvel e-mail de confirmation concernant l'activation de votre utilisateur administrateur.
Vous trouverez ci-dessous un exemple de message électronique pour la confirmation du compte Discourse. Cliquez sur le lien pour confirmer et activer le compte administrateur.
Et vous devriez obtenir la page de discours comme indiqué ci-dessous. Cliquez sur le bouton "Cliquez ici pour activer votre compte".
Vous pouvez maintenant configurer votre propre forum Discourse. Cliquez sur le bouton 'Suivant' et vous devez configurer Discourse Forum en 13 étapes. Ou vous pouvez le configurer plus tard en cliquant sur "Peut-être plus tard".
Ci-dessous, le Discourse Forum installé sur le serveur Web Nginx et HTTPS sur Ubuntu 16.04.
Voici mon tableau de bord d'administration Discourse.
Le Discourse Forum a été installé avec Nginx en tant que proxy inverse sur le serveur Ubuntu 16.04.
Étape 6 - Configuration supplémentaire de Discourse
Lors de l'installation de Discourse, vous pouvez rencontrer un problème dans lequel vous ne recevez pas de confirmation par e-mail pour l'activation de l'utilisateur administrateur.
Pour trier le problème, assurez-vous d'avoir le bon compte SMTP sur la configuration app.yml. Ou vous pouvez activer le compte administrateur manuellement depuis votre serveur.
Pour activer manuellement votre compte administrateur, rendez-vous dans le répertoire '/var/discourse'.
cd /var/discourse
Accédez maintenant au conteneur de discours avec la commande ci-dessous.
./launcher enter app
Et activez le premier utilisateur administrateur en utilisant la commande rails comme ci-dessous.
rails c
u =User.last
u.admin =true
u.activate
u.save
Et maintenant, vous pouvez vous connecter au forum Discourse avec votre nom d'utilisateur et votre mot de passe.
Références
- https://meta.discourse.org/
- https://github.com/discourse/discourse/tree/master/docs