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 à l'aide des langages de programmation Ruby et Javascript. Le logiciel de forum Discourse a été utilisé par de nombreuses organisations, notamment Codeacademy, Udacity, Twitter Developers, Docker Community Forum, etc.
Dans ce didacticiel, nous allons vous montrer, étape par étape, comment installer et configurer Discourse Forum avec le serveur Web Nginx sous le serveur CentOS 7. Plus précisément, nous vous montrerons comment installer le logiciel Discourse Forum, configurer Nginx en tant que proxy inverse pour l'application Discourse et sécuriser le logiciel Discourse Forum à l'aide du protocole SSL gratuit de Letsencrypt.
Ce que nous allons faire
- Installer Docker sur CentOS 7
- Installer et configurer le logiciel Discourse Forum
- Générer SSL Letsencrypt sur CentOS 7
- Installer et configurer Nginx en tant que proxy inverse pour Discourse
- Installateur Web de Discourse
- Configuration supplémentaire du discours
Prérequis
- CentOS 7
- Privilèges racine
- Compte SMTP - par ex. depuis Mailgun, SendGrid ou Mailjet
Étape 1 - Installer Docker sur CentOS 7
Le forum de discussion sera installé sous le conteneur Docker. Donc, la première étape que nous devons faire est d'installer Docker sur notre serveur CentOS 7.
Installez Docker sur CentOS 7 à l'aide de la commande suivante.
wget -qO- https://get.docker.com/ | sh
Si vous n'avez pas la commande wget, installez-la à partir du référentiel.
yum -y install wget
Si l'installation est terminée, démarrez le service Docker et activez-le pour qu'il se lance au démarrage à l'aide des commandes systemctl suivantes.
systemctl start docker
systemctl enable docker
Le moteur Docker a été installé et fonctionne sur le serveur CentOS 7. Vérifiez l'état du service à l'aide de la commande suivante.
systemctl status docker
Le service Docker est actif et en cours d'exécution.
Étape 2 - Installer et configurer le logiciel Discourse Forum
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.
Avant de télécharger le discours, nous devons installer la commande git sur le serveur.
yum -y install git
Créez maintenant un nouveau répertoire '/var/discourse' et téléchargez/clonez le script docker de discours à l'aide de la commande git.
mkdir -p /var/discourse
git clone https://github.com/discourse/discourse_docker.git /var/discourse
Allez dans le répertoire discours et copiez un exemple de script docker-compose 'standalone.yml' dans le répertoire '/var/discourse/containers/' avec le nom 'app.yml'.
cd /var/discourse
cp samples/standalone.yml containers/app.yml
Modifiez maintenant le fichier 'app.yml' à l'aide de vim.
vim containers/app.yml
- 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 mappera sur le port 80 du conteneur.
Décommentez la ligne HTTPS et modifiez la ligne HTTP avec le nouveau port '2045', comme indiqué ci-dessous.
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.co'
Et saisissez votre adresse e-mail dans la ligne 'DISCOURSE_DEVELOPER_EMAIL'.
DISCOURSE_DEVELOPER_EMAILS: '[email protected]'
- Configuration SMTP
La configuration SMTP est 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.
Pour ce didacticiel, nous utiliserons le compte SMTP gratuit de Mailgun. Enregistrez-vous auprès de Mailgun et configurez votre nom de domaine, et assurez-vous d'obtenir les détails de votre compte SMTP.
Ensuite, décommentez la configuration SMTP et saisissez les détails de 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
C'est ça. Enregistrez les modifications et quittez l'éditeur.
Ensuite, créez une nouvelle image Discourse Docker basée sur la configuration du modèle app.yml.
sudo ./launcher bootstrap app
Si tout est terminé, démarrez/initialisez le nouveau conteneur Discourse à l'aide de la commande suivante.
sudo ./launcher start app
Et le conteneur Discourse Docker est opérationnel - vérifiez-le à l'aide de la commande 'docker ps'.
docker ps -a
Vérifiez le port ouvert de l'hôte à l'aide de netstat et assurez-vous que le nouveau service docker-proxy avec le port 2045 figure dans la liste.
netstat -plntu
Le logiciel Discourse Forum a été installé sous conteneur docker sur l'hôte CentOS 7.
Étape 3 - Générer SSL Letsencrypt sur CentOS 7
Pour ce didacticiel, nous exécuterons le forum Discourse sous le serveur Web Nginx et n'accepterons que la connexion HTTPS. À cette fin, nous avons besoin de nouveaux certificats SSL pour le nom de domaine, et donc, nous utiliserons un certificat SSL gratuit de Letsencrypt.
Installez l'outil de ligne de commande Letsencrypt à l'aide de la commande yum de la manière suivante.
yum -y install letsencrypt
Après l'installation, ajoutez le nouveau service HTTP et HTTPS à la configuration Firewalld.
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
Générez maintenant de nouveaux certificats SSL pour le forum Discourse à l'aide de la commande letencrypt ci-dessous.
letsencrypt certonly
Vous verrez deux vérifications de Letsencrypt. Tapez le nombre '1' pour faire tourner un serveur Web temporaire pour l'authentification.
Dans ce cadre, tapez votre adresse e-mail pour la notification de renouvellement, tapez 'A' pour accepter les TOS (Conditions d'utilisation) de Letsencrypt.
Tapez maintenant le nom de domaine de discours 'discourse.hakase-labs.co'.
Et lorsque le processus est terminé, vous obtiendrez le résultat ci-dessous.
Un nouveau certificat SSL de letsencrypt a été généré dans le répertoire '/etc/letsencrypt/live'.
Étape 4 - Installer et configurer Nginx en tant que proxy inverse pour Discourse
Dans ce didacticiel, nous utiliserons le serveur Web Nginx comme proxy inverse pour Discourse qui s'exécute sous le conteneur Docker. Le serveur Web Nginx fonctionnera sous les ports HTTP et HTTPS, et toutes les demandes des clients seront traitées par Nginx.
Avant d'installer le serveur Web Nginx, nous devons installer le référentiel EPEL sur le système.
yum -y install epel-release
Installez maintenant nginx à partir du référentiel EPEL à l'aide de la commande yum suivante.
yum -y install nginx
Une fois l'installation terminée, accédez au répertoire de configuration de nginx '/etc/nginx'.
cd /etc/nginx/
Et créez une nouvelle configuration SSL supplémentaire 'ssl.conf' en utilisant vim.
vim ssl.conf
Collez-y la configuration SSL suivante.
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 les modifications et quittez l'éditeur.
Ensuite, créez un nouveau fichier d'hôte virtuel nginx 'discourse.conf' pour Discourse.
vim conf.d/discourse.conf
Collez-y la configuration suivante.
server {
listen 80; listen [::]:80;
server_name discourse.hakase-labs.co;
# Automatic Redirect HTTP to HTTPS Nginx
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name discourse.hakase-labs.co;
# SSL Configuration
ssl_certificate /etc/letsencrypt/live/discourse.hakase-labs.co/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/discourse.hakase-labs.co/privkey.pem;
include /etc/nginx/ssl.conf;
# Reverse Proxy Configuration
location / {
proxy_pass http://discourse.hakase-labs.co: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.co:2045/ https://discourse.hakase-labs.co;
}
}
Enregistrez et quittez.
Testez maintenant la configuration nginx et assurez-vous qu'il n'y a pas d'erreur. Redémarrez ensuite le service Nginx.
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 accédez à l'URL de votre discours. La mienne est :
http://discourse.hakase-labs.co
Et vous serez redirigé vers la connexion HTTPS.
Cliquez sur 'S'inscrire ' bouton.
Nous devons maintenant créer un nouveau compte "Administrateur".
Tapez votre nom d'utilisateur et votre mot de passe d'administrateur, puis cliquez sur 'S'inscrire '.
Et vous obtiendrez la page de confirmation par e-mail. Vérifiez votre boîte de réception et assurez-vous d'obtenir la configuration de messagerie du forum Discourse comme ci-dessous.
Cliquez sur le 'Lien '.
Et vous obtiendrez la page 'Discourse Welcome'.
Cliquez sur le bouton 'cliquez ici pour activer votre compte '. Et maintenant vous devriez arriver à la page suivante.
Cliquez sur 'Peut-être plus tard ' bouton.
Le Discourse Forum a été installé et nous obtenons la page d'accueil par défaut comme indiqué ci-dessous.
Vous pouvez accéder au "Tableau de bord d'administration" et vous obtiendrez le tableau de bord d'administration de Discourse.
Le logiciel Discourse Forum a été installé avec Nginx en tant que proxy inverse sur le serveur CentOS 7.
Étape 6 - Configuration supplémentaire de Discourse
Lors de l'installation de Discourse, certaines personnes disent ne pas recevoir l'e-mail de confirmation pour l'activation de l'administrateur.
Pour ce 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 suivante.
./launcher enter app
Et activez le premier utilisateur administrateur à l'aide de la commande rails comme indiqué ci-dessous.
rails c
u = User.last
u.admin = true
u.activate
u.save
Vous pouvez maintenant vous connecter au forum Discourse avec votre nom d'utilisateur et votre mot de passe.