Malgré mon intention initiale de passer à autre chose avec Discourse, étant donné l’absence totale de documentation actuelle qui ne soit pas hyper-centrée sur CentOS/Nginx, une personne incroyablement généreuse et patiente chez DigitalOcean a répondu à un fil que j’avais créé là-bas. Après quelques essais et erreurs, elle m’a aidé à mettre au point un tutoriel simple à suivre pour les futurs utilisateurs de Discourse se trouvant dans la même situation que moi.
Pour rappel, ces circonstances sont les suivantes :
Installer Discourse sur le même serveur qu’Apache | Utilisation d’Ubuntu 18.04 | DigitalOcean
crédit à Bobbyiliev @ DigitalOcean
Install Discourse on a droplet with WordPress served by Apache ? | DigitalOcean (première réponse)
Prérequis
- Par mesure de précaution, assurez-vous de sauvegarder votre Droplet, afin de pouvoir revenir à une version fonctionnelle en cas de problème.
- Connectez-vous en SSH à votre Droplet.
- Apache doit être installé. Vous pouvez suivre les étapes pour cela ici :
Étape 1 - Installer Docker
Pour installer Docker, veuillez suivre les étapes indiquées ici :
Étape 2 - Télécharger Discourse
Tout d’abord, créez un répertoire où vous stockerez vos fichiers Discourse :
mkdir /var/discourse
Ensuite, clonez l’image Docker officielle de Discourse dans /var/discourse.
git clone https://github.com/discourse/discourse_docker.git /var/discourse
Étape 3 - Configurer Discourse pour écouter sur le port 8080
Nous utiliserons le modèle standalone.yml qui inclut tous les services nécessaires tels que PostgreSQL, Redis, etc.
Copiez le fichier exemple avec la commande suivante :
cp /var/discourse/samples/standalone.yml /var/discourse/containers/app.yml
Ensuite, éditez le fichier avec votre éditeur préféré. Ouvrez /var/discourse/containers/app.yml et mettez à jour les ports aux lignes 23 et 24 :
## Quels ports TCP/IP ce conteneur doit-il exposer ?
expose:
- "8080:80" # transférer le port hôte 8080 vers le port 80 du conteneur (http)
- "8443:443" # transférer le port hôte 8443 vers le port 443 du conteneur (https)
Si vous ne possédez pas encore de certificat SSL, assurez-vous de commenter la ligne 16 :
#- "templates/web.ssl.template.yml"
Ajoutez simplement le symbole # devant la ligne - "templates/web.ssl.template.yml", sinon Discourse ne démarrera pas.
Étape 4 - Configurer Discourse
Changez de répertoire :
cd /var/discourse
Ensuite, démarrez Discourse (comme c’est la première fois que vous lancez le service, cela initialisera l’application avec les nouvelles modifications présentes dans votre fichier app.yml) :
./discourse-setup
Remarque : Assurez-vous de fournir des paramètres de serveur de messagerie valides, sinon la configuration pourrait échouer.
Étape 5 - Configurer Apache
Dans votre répertoire /etc/apache2/sites-available/, créez un nouveau fichier nommé forum.example.com.conf et ajoutez le contenu Vhost suivant :
<VirtualHost *:80>
ServerName forum.example.com
ServerAlias www.forum.example.com
<IfModule proxy_module>
ProxyPreserveHost on
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</IfModule>
</VirtualHost>
- Activez le Vhost avec la commande suivante :
a2ensite forum.example.com
- Activez le module Proxy :
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_balancer
a2enmod lbmethod_byrequests
- Redémarrez Apache :
systemctl restart apache2
Après cela, vous pourrez accéder directement à Discourse via votre nom de domaine.
Remarque 1 : Lors de l’installation de Discourse, le fichier app.yml peut être écrasé et les lignes 16/17 (SSL) seront décommentées. Vous devrez les commenter à nouveau, puis reconstruire l’application (n’oubliez pas de changer de répertoire) : ./launcher rebuild app
Remarque 2 : SSL n’est pas activé pour Discourse avec ce guide. Il est peu surprenant qu’aucune documentation n’existe pour activer SSL Let’s Encrypt si vous l’avez déjà activé pour Apache. Si quelqu’un tombe sur une solution à ce problème, n’hésitez pas à me contacter.