Utilisez CloudPanel pour gérer plusieurs sites avec Discourse

Vous pouvez accéder directement à mon tutoriel étape par étape ici…

Sur mon serveur dédié (Hetzner), j’ai installé une nouvelle instance de Discourse (et c’est la seule chose sur le serveur à ce stade.)

Maintenant, je veux utiliser CloudPanel comme proxy inverse, afin de pouvoir également utiliser le serveur pour héberger des blogs Ghost et des sites Wordpress pour certains de mes clients.

D’après la lecture de ce tutoriel, et après avoir également étudié les autres publications ci-dessous, cela semble possible.

Mais j’ai du mal avec ma courbe d’apprentissage sur les proxys inverses.

Je peux facilement installer et gérer mes sites en utilisant CloudPanel.

Cependant, je ne suis pas clair sur l’ordre ou la procédure corrects pour faire fonctionner CloudPanel avec Discourse.

J’aimerais documenter la procédure ici dans ce post.

Quelqu’un peut-il m’aider?

Suivez d’abord l’un de ces guides pour déplacer Discourse vers un autre port, supprimer les modèles SSL et Let’s Encrypt, puis reconstruire. Ensuite, indiquez à votre proxy inverse d’utiliser ce port.

3 « J'aime »

Et si j’installais d’abord CloudPanel, et que je créais un proxy inverse dans l’interface…


… et/ou dans l’éditeur Vhost…

… puis que j’installais Discourse ?

Ou est-il nécessaire ou préférable d’installer Discourse d’abord ?

J’aimerais fournir les étapes de la manière la plus simple/intuitive (pour d’autres simples d’esprit comme moi :slight_smile: )

Peu importe. Tant que

  • Discourse n’utilise pas les ports 80/443 car un conflit fera planter votre proxy inverse
  • Discourse n’utilise pas le SSL mais expose le port 80 à ce port que le proxy inverse utilise pour le backend

Donc peu importe signifie que Discourse doit être configuré comme backend avant de démarrer le proxy inverse et qu’il est inaccessible à ce moment-là.

1 « J'aime »

Ce n’est pas une configuration pour un simple d’esprit. Vous devrez comprendre le fonctionnement d’un proxy inverse et comment configurer Discourse manuellement. Ce ne sera ni simple, ni intuitif.

Il est déjà assez difficile de prendre en charge l’installation standard pour les novices. De très nombreuses heures ont été consacrées à faire fonctionner ces instructions pour des personnes qui n’y connaissent rien en administration système.

2 « J'aime »

De nombreuses, de nombreuses heures ont été consacrées à rendre ces instructions utiles aux personnes qui n’y connaissent rien en administration système.

@pfaffman J’espère pouvoir vous faire gagner ces heures à l’avenir !

1 « J'aime »

Est-ce que containers/app.yml est un fichier créé par l’installateur ? (Je ne le trouve pas dans le dépôt.)

J’ai modifié le fichier standalone.yml et l’ai renommé app.yml

Si je place ce fichier dans containers/ puis que j’exécute ./discourse-setup, cela devrait-il fonctionner ?

(En supposant que j’ai correctement configuré les paramètres dans mon app.yml)

C’est le cas.

En tant que nouveau venu relatif à Discourse, la bonne façon de procéder ressemble à ceci :

  • Désactivez temporairement votre proxy inverse.
  • Installez Discourse avec SSL/Lets Encrypt désactivé
  • Vérifiez une installation fonctionnelle sur le port :80
  • Changez le port de Discourse en 81 ou un autre port non standard, ou mieux encore, utilisez un socket.
  • Redémarrez le proxy inverse, configurez-le contre l’installation de Discourse (y compris l’encapsulation https)
  • Activez force_https

Si vous n’installez pas Discourse sans le proxy inverse, il y a trop de domaines où cela pourrait mal tourner pour dépanner de manière pratique.

1 « J'aime »

Vous ne pouvez pas utiliser discourse-setup pour votre configuration. Si vous l’avez modifié, exécutez

./launcher rebuild app

2 « J'aime »

Miracle des miracles – nous l’avons fait ! Merci pour toute votre aide ! Je documenterai la procédure dans le post du sujet ci-dessus.

2 « J'aime »

OK, je suis bloqué sur un point (petit, je pense)…

Pour créer une deuxième instance de Discourse, je crée et modifie le fichier app2.yml, ainsi que le fichier server_name.conf pour la deuxième instance de Discourse, en changeant DISCOURSE_HOSTNAME et server_name.

Mais ensuite… comment je construis la deuxième application ? J’ai essayé :

service nginx restart

./launcher stop app

./launcher rebuild app2

et

./discourse-setup (j’avais utilisé ./discourse setup pour installer la première instance, puis je suis revenu en arrière et j’ai modifié le fichier app.yml, et cela a fonctionné pour la première instance.)

Cette procédure a bien abouti à une instance de Discourse sur la deuxième URL, mais elle semble récupérer des données de la première instance.

Je ne comprends pas quelque chose. Quelle est la bonne façon de construire le deuxième site sur le deuxième domaine ?

2 « J'aime »

Votre proxy inverse est-il configuré pour écouter le second domaine et acheminer le trafic vers un port différent ?

2 « J'aime »

Vous devez changer le répertoire qu’il utilise là où il est indiqué /var/discourse/standalone pour quelque chose de différent (standalone2 ?).
Vous pourriez vouloir utiliser une configuration à deux conteneurs afin de n’exécuter qu’une seule copie de postgres (je pense que la Configuration multisite avec Docker contient quelques indices), mais si vous avez beaucoup de RAM, cela ne vous dérangera peut-être pas.

1 « J'aime »

Whoa. Je n’aurais jamais trouvé ça par moi-même. Tu es mon héros du jour.

Ce que je fais ici, c’est (pour un client) construire un prototype pour un système de publication Discourse polyvalent pour les créateurs, intégrant Ghost à Discourse.

Je suis développeur front-end et je dois maintenant apprendre entièrement l’administration système.

Je dois donc construire à la fois un multisite et des conteneurs séparés.

Voici ma configuration serveur :

  1. un serveur dédié chez Hetzner (6 cœurs CPU, 64 Go de RAM et 2x512 Go NVMe)

  2. un VPS chez Contabo (8 cœurs CPU, 30 Go de RAM et 200 Go NVMe)

1 « J'aime »
3 « J'aime »

Je n’en sais rien, mais si vous et d’autres estimez que votre tutoriel est fiable, n’hésitez pas à en créer un nouveau sous #documentation:sysadmin how-to advanced-setup et toute autre étiquette qui vous semble appropriée :slight_smile:
(avant que votre réponse ne soit automatiquement supprimée dans un mois :stuck_out_tongue: )

3 « J'aime »

OK oui. Donc pour cette deuxième instance, cela a fonctionné (après avoir créé un nouveau site dans CloudPanel) :

  1. créer et modifier manuellement le fichier app2.yml, en remplaçant chaque occurrence de standalone par standalone2 dans ce fichier
  2. changer également standalone en standalone2 dans le fichier Vhost
  3. exécuter ./launcher rebuild app2

Je pense avoir également vidé tous les caches Cloudflare, redémarré nginx et ensuite redémarré le serveur.

Merci encore pour votre aide.

2 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.