Comment installer Discourse Behind Nginx sur Ubuntu 14.04

introduction

http://www.discourse.org [Discourse] est une plate-forme de discussion communautaire open source conçue pour le Web moderne.

Ce tutoriel vous guidera à travers les étapes de configuration de Discourse, de son déplacement derrière un proxy inverse avec Nginx et de la configuration d’un certificat SSL pour celui-ci avec Let’s Encrypt. Le déplacement de discours derrière un proxy inverse vous offre la possibilité d’exécuter d’autres sites Web sur votre Droplet.

Conditions préalables

Avant de commencer, assurez-vous de disposer des éléments suivants:

  • Ubuntu 14.04 Droplet (1 Go ou plus)

  • Un utilisateur non root avec des privilèges sudo (Initial Initial Server Setup avec Ubuntu 14.04 explique comment configurer cela. )

  • Discours installé à l’aide de this tutorial

  • Domaine entièrement enregistré. Vous pouvez en acheter un sur https://namecheap.com [Namecheap] ou en obtenir un gratuitement sur Freenom.

  • Assurez-vous que votre nom de domaine est configuré pour pointer vers votre Droplet. Consultez his tutorial si vous avez besoin d’aide.

Toutes les commandes de ce didacticiel doivent être exécutées en tant qu’utilisateur non root. Si un accès root est requis pour la commande, il sera précédé de + sudo +.

Étape 1 - Configuration du discours

Maintenant que Discourse est installé, nous devons le configurer pour fonctionner derrière Nginx.

Nous n’aurons besoin que d’un paramètre pour passer à Discourse afin de pouvoir le déplacer derrière Nginx. Accédez au répertoire contenant le fichier de configuration:

cd /var/discourse

Ensuite, ouvrez le fichier de configuration que nous devons changer:

sudo nano containers/app.yml

À l’aide des touches fléchées, faites défiler jusqu’à la section + expose + (elle devrait se trouver tout en haut) et modifiez le premier numéro de port de cette ligne:

/var/discourse/containers/app.yml

...
## which TCP/IP ports should this container expose?
expose:
 - ":80"   # fwd host port 80   to container port 80 (http)
...

Ce nombre peut être aléatoire et ne doit pas être partagé avec d’autres. Vous pouvez même bloquer tout accès non autorisé à ce site avec un pare-feu iptables règle si vous voulez.

Maintenant, enregistrez et quittez l’éditeur de texte.

Activez le changement de configuration en lançant:

sudo ./launcher rebuild app

Cette étape peut prendre un certain temps, alors soyez patient.

Vous pouvez vérifier que tout fonctionne correctement en visitant votre site Web. Votre nom de domaine pour Discourse (tel que + http: // +) ne chargera plus l’interface dans un navigateur Web, mais il devrait être accessible si vous utilisez le port que vous venez de configurer pour Discourse, tel que `+ http: //. /: + `(remplacez par votre nom de domaine et par le port que vous venez d’utiliser à cette étape).

Étape 2 - Installation et configuration de Nginx

Maintenant que Discourse est installé et configuré pour fonctionner derrière Nginx, il est temps d’installer Nginx.

Pour installer Nginx sur Ubuntu, entrez simplement cette commande et l’installation va démarrer:

sudo apt-get install nginx

En accédant à votre ancienne URL Discourse à + ​​http: // +, la page Web Nginx par défaut sera affichée:

image: https: //assets.digitalocean.com/articles/discouse_behind_nginx/default-webpage.png [Page de destination par défaut de Nginx]

C’est bon. Nous allons changer cela sur votre forum maintenant. Tout d’abord, arrêtons Nginx:

sudo service nginx stop

Ensuite, supprimez cette configuration de page Web par défaut - nous n’en aurons pas besoin:

sudo rm /etc/nginx/sites-enabled/default

Ensuite, nous allons créer un nouveau fichier de configuration pour notre serveur Discourse, que nous nommerons + discourse +.

sudo nano /etc/nginx/sites-enabled/discourse

Copier et coller dans la configuration suivante. Remplacez ` par votre nom de domaine et ` par le port que vous venez d’utiliser à l’étape précédente:

/ etc / nginx / sites-enabled / discours

server {
       listen 80;
       server_name ;
       return 301 https://$request_uri;
}
server {
       listen 443 ssl spdy;
       server_name ;
       ssl_certificate /etc/letsencrypt/live//fullchain.pem;
       ssl_certificate_key /etc/letsencrypt/live//privkey.pem;
       ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
       ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
       ssl_prefer_server_ciphers on;
       location / {
               proxy_pass      http://:/;
               proxy_read_timeout      90;
               proxy_redirect  http://:/ https://;
       }
}

Voici ce que cette configuration fait:

  • Le premier bloc de serveur écoute sur le domaine ++ sur le port 80 et redirige toutes les demandes vers SSL sur le port 443. C’est facultatif, mais cela force SSL sur votre site Web pour tous les utilisateurs.

  • Le deuxième bloc de serveur se trouve sur le port 443 et transmet les requêtes au serveur Web qui s’exécute sur le port ++ (dans ce cas, Discourse). Cela utilise essentiellement un proxy inverse pour envoyer des pages Discourse à vos utilisateurs et les retourner via SSL.

Vous avez peut-être remarqué que nous référenions certains certificats sous + / etc / letsencrypt +. Dans l’étape suivante, nous les générerons avant de redémarrer Nginx.

Étape 3 - Générer les certificats SSL

Pour générer les certificats SSL, nous allons d’abord installer le client ACME de Let’s Encrypt. Ce logiciel nous permet de générer des certificats SSL.

sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

Ensuite, allez dans le répertoire + letsencrypt +:

cd /opt/letsencrypt/

Installez les paquets requis par Let’s Encrypt pour la première fois:

./letsencrypt-auto --help

Maintenant, nous pouvons générer vos certificats en exécutant (remplacez par votre adresse e-mail et votre nom de domaine):

./letsencrypt-auto certonly --standalone --email  --agree-tos -d

Vous devriez obtenir une réponse assez rapidement, semblable à ceci:

Encryptons la sortie

IMPORTANT NOTES:
- If you lose your account credentials, you can recover through
  e-mails sent to .
- Congratulations! Your certificate and chain have been saved at
  /etc/letsencrypt/live//fullchain.pem. Your
  cert will expire on . To obtain a new version of the
  certificate in the future, simply run Let's Encrypt again.
- Your account credentials have been saved in your Let's Encrypt
  configuration directory at /etc/letsencrypt. You should make a
  secure backup of this folder now. This configuration directory will
  also contain certificates and private keys obtained by Let's
  Encrypt so making regular backups of this folder is ideal.

Vous remarquerez que vos certificats ont été enregistrés dans + / etc / letsencrypt / live / +. Cela signifie que notre configuration Nginx est maintenant valide. Vous remarquerez également que la date d’expiration n’est pas trop éloignée. Ceci est normal avec les certificats Let’Secrypt. Tout ce que vous avez à faire pour renouveler est d’exécuter à nouveau exactement la même commande, mais la connexion tous les 90 jours n’est pas amusante. Nous allons donc l’automatiser à la prochaine étape.

Étape 4 - Automatisation du renouvellement du certificat de Let Encrypt

Maintenant que nous avons configuré nos certificats pour la première fois, nous devons nous assurer qu’ils se renouvellent automatiquement. Les certificats Let Encrypt ne sont valides que pendant 90 jours, au bout desquels ils expirent et affichent un avertissement à tous les visiteurs de votre site dans le navigateur. Au moment de la rédaction, le renouvellement automatique n’est pas intégré au client, mais nous pouvons configurer un script pour les renouveler manuellement.

Voir https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04#step-4-%E2%80% 94-set-up-auto-renouvellement [Configurer le renouvellement automatique] étape de https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu -14-04 [Comment sécuriser Nginx avec Let’s Encrypt sur Ubuntu 14.04] pour plus de détails sur la configuration d’un travail cron afin de renouveler votre certificat automatiquement.

Toute sortie créée par cette commande sera à «+ / var / log / certificate-renouvellement.log +» pour le dépannage.

Étape 5 - Redémarrage de Nginx

Enfin, notre configuration devrait être complète. Redémarrez Nginx en lançant cette commande:

sudo service nginx restart

Maintenant, si vous naviguez sur + https: /// +, votre site Web devrait être en ligne et sécurisé avec Let’s Encrypt, indiqué par un verrou vert dans la plupart des navigateurs.

Conclusion

C’est ça! Vous avez maintenant un forum Discourse mis en place derrière Nginx, sécurisé avec les dernières normes SSL avec Let’s Encrypt.

Related