Multisite vs plusieurs conteneurs

Does anyone know the pros and cons of multisite vs multiple containers?

I currently have three Discourse instances as separate containers, and am thinking about converting two, maybe three more forums to Discourse - they’ll be on the same server (64GB RAM, running SSDs) so I’m wondering what might be the best way forward.

I’d prefer them to be as independent as possible, so each can be upgraded individually, backed up and restored individually, and issues with one should not affect another.

What do you suggest? Any pros and cons to look out for?

You won’t be able to upgrade individually with multisite, nor will you be able to segment plugins used. All of that is defined by the root multisite. Settings, themes, and backups can all happen separately, though.

Generally you’ll need a proxy in front to help with SSL certs, too.

3 « J'aime »

Actually, I’ve worked out a way to get let’s encrypt to get certs for multiple domains and not redirect to the primary domain. Setup Multisite Configuration with Let's Encrypt and no Reverse Proxy

@AstonJ, would you be interested in testing my howto? I’m 90% sure that it works, but it was some weeks ago that I last tested and I’m not entirely sure that the instructions “work” for someone who’s not me.

If you want all the sites to have the same plugins and be upgraded all at the same time, multisite is great.

3 « J'aime »

I could just switch off any unused plugins via the ACP (and I think there’s only one that one of the forums won’t need) so I guess it depends on are there any benefits to doing multisite? Specifically, performance and/or stability?

I think I read @Blake once post that it’s insane not to run PG in it’s own container (is that different to multisite?) hence why I’ve been thinking about doing this. Btw don’t quote me on what Blake said I could have well dreamt it :rofl:

I use HAProxy which deals with our SSL certs so I ‘think’ that may be ok.

I think it will depend on the benefits Jay - if there’s not much difference then I don’t mind carrying on as I have been as it’s become relatively easy to set-up and manage, but if there are some big advantages to going multisite I would definitely be interested :sunglasses:

The other advantage is that you’re running just one more copy of rails and nginx, so the additional RAM required is much less. You’ve got lots of RAM, though, so going with what works already is starting to sound like the best idea.

2 « J'aime »

Salut. Est-il possible de combiner les utilisateurs de plusieurs sites afin qu’un utilisateur puisse être enregistré sur tous les sites en même temps en s’enregistrant sur l’un des sites (comme dans Magento). Ou une super variante d’utilisation de Discourse, similaire à la fédération. Afin que les alertes fonctionnent de manière synchrone et que l’utilisateur du site n° 1 puisse recevoir des alertes du site n° 2 ? Il en va de même pour le chat.
J’ai 4 communautés de la même grande direction, mais avec des sujets différents, et j’aimerais que ces communautés soient étroitement intégrées les unes aux autres

Vous pouvez faire d’un site le serveur d’authentification de connexion discourse et faire en sorte que tous les autres s’authentifient auprès de lui.

2 « J'aime »

J’essaie de déterminer si j’ai besoin d’une configuration multi-site, de plusieurs conteneurs ou d’autre chose.

J’ai actuellement 3 communautés indépendantes, deux d’entre elles similaires (toutes deux sur le sport universitaire mais pour deux écoles distinctes) et la troisième sur la cuisine et la pâtisserie.

J’aimerais que tout cela soit sur le même serveur (en raison des limitations d’adresses IP de mon FAI), mais à des URL distinctes, un peu comme ceci :

foo.bar.com/team1
foo.bar.com/team2
foo.bar.com/cooking

team1.bar.com redirigeant vers foo.bar.com/team1, etc., ou vers des serveurs virtuels séparés, serait également acceptable. (Je sais qu’Apache peut faire cela, donc je suppose que nginx le peut aussi, soit directement, soit avec un serveur proxy devant.)

Idéalement, foo.bar.com lui-même servirait de passerelle vers ces communautés indépendantes, expliquant ce qu’elles sont et comment y accéder. Certaines catégories de chaque communauté pourraient être lisibles publiquement et accessibles par les robots d’exploration du Web afin qu’elles apparaissent dans les recherches Web.

S’agit-il d’une configuration multi-site, d’une configuration multi-conteneurs ou de quelque chose d’entièrement différent ?

Existe-t-il des pièges connus dans la conception de plugins lors de l’exécution de Multisite ?

Il semble que mon Chatbot ne prenne pas en charge Multisite (c’est donc un problème connu), mais j’aimerais comprendre pourquoi : il fonctionne bien sur l’installation standard.

Plus précisément, il semble y avoir des problèmes avec la tâche de configuration de la base de données et potentiellement ce travail.

1 « J'aime »

Je voulais faire le point sur ma situation.

Après quelques recherches, j’ai décidé d’avoir une configuration multisite (un seul conteneur à ce stade) avec un site nginx ‘externe’ pour expliquer la configuration et diriger les gens et le trafic vers les différents sites Discourse. De cette façon, je pourrais rendre les deux sites ouverts en lecture seule (et aux robots d’indexation) sans que les personnes de la liste1 aient à gérer le contenu de la liste2. Je devrai peut-être jouer avec robots.txt pour satisfaire les robots d’indexation.

Les exemples de configuration multisite ont été instructifs, mais je n’ai pas réussi à le faire fonctionner avec une socket Unix (erreur de passerelle), j’ai donc fini par les rediriger vers un autre port et rediriger ce port vers 443 à l’intérieur du conteneur.

Dans mon fichier app.yml, j’ai activé le modèle SSL mais pas celui de letsencrypt.

J’ai réussi à faire fonctionner le site de test, je cherche maintenant les problèmes qui pourraient survenir lors de la conversion du site de production, espérons-le plus tard ce mois-ci ou le mois prochain.

Je m’occupe du problème de certificat côté serveur externe, mais j’ai rencontré le problème ‘non sécurisé’ que j’ai résolu en exigeant https dans le conteneur. J’ai une tâche que j’exécuterai via cron pour copier le dernier certificat et la dernière clé dans le répertoire /shared/ssl du conteneur (sous forme de ssl.crt et ssl.key). Je ne suis pas sûr si je devrai forcer un rechargement de nginx à l’intérieur du conteneur pour m’assurer qu’un nouveau certificat est chargé lorsqu’il change (en juillet, je pense).

J’ai rencontré une autre particularité de Discourse :

Dans le fichier du conteneur /etc/nginx/conf.d/discourse.conf, il y a ce fragment de code (nom de domaine modifié) :

if ($http_host != 'site1.my.domain') {
   rewrite (.*) https://site1.my.domain$1 permanent
}

Cela provoquait la redirection de site2.my.domain vers site1.my.domain, j’ai donc dû le commenter.

NOTE : Reconstruire le conteneur nécessite de refaire cette modification, y a-t-il un moyen de l’éviter ?

Et cela a conduit à une particularité du navigateur, car Firefox avait alors signalé cette redirection comme permanente, j’ai donc dû supprimer le cache du navigateur. (Cela m’a pris beaucoup trop de temps à comprendre !)

J’ai trouvé une autre chose étrange.

Sur mon site de test, le paramètre pour exiger https n’était coché pour aucun des sites. Sur mon site de production, ce paramètre n’est même pas présent dans le fichier de configuration. Je suppose que cela a quelque chose à voir avec les différences entre les deux sites.