Multisitio vs. Múltiples contenedores

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 Me gusta

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 Me gusta

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 Me gusta

Hola. ¿Es posible combinar usuarios de un multisitio para que un usuario pueda registrarse en todos los multisitios al mismo tiempo registrándose en uno de los sitios (como en Magento)? ¿O una supervariante de usar Discourse, similar a la federación? Para que las alertas funcionen de forma síncrona y el usuario del sitio número 1 pueda recibir alertas del sitio número 2. Lo mismo ocurre con el chat.
Tengo 4 comunidades de la misma gran dirección, pero con temas diferentes, y me gustaría que estas comunidades estuvieran estrechamente integradas entre sí.

Puedes hacer que un sitio sea el servidor de autenticación de Discourse Connect y que todos los demás se autentiquen contra él.

2 Me gusta

Estoy tratando de averiguar si necesito una configuración multisitio, varios contenedores o algo más.

Actualmente tengo 3 comunidades independientes, dos de ellas similares (ambas sobre deportes universitarios pero para dos escuelas separadas) y la tercera sobre cocina y repostería.

Me gustaría que todas estuvieran en el mismo servidor (debido a las limitaciones de la dirección IP de mi ISP), pero en URL separadas, algo así como esto:

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

team1.bar.com redirigiendo a foo.bar.com/team1, etc., o a servidores virtuales separados, también estaría bien. (Sé que Apache puede hacer eso, así que asumo que nginx también puede, ya sea directamente o con un servidor proxy delante).

Idealmente, foo.bar.com en sí mismo serviría como una puerta de enlace a estas comunidades independientes, explicando qué son y cómo acceder a ellas. Algunas categorías en cada comunidad podrían ser legibles públicamente y accesibles por los rastreadores web para que aparezcan en las búsquedas web.

¿Es esta una configuración multisitio o una configuración de varios contenedores, o algo completamente diferente?

¿Existen problemas conocidos de diseño de complementos al ejecutar Multisite?

Parece que mi Chatbot no es compatible con Multisite (por lo que es un problema conocido), pero me gustaría entender por qué: está funcionando bien en la instalación estándar.

Específicamente, parece que hay problemas con la tarea de configuración de la base de datos y potencialmente con este trabajo.

1 me gusta

Actualización sobre mi situación.

Después de estudiar un poco, decidí que necesitaba una configuración multisitio (un contenedor en este momento) con un sitio nginx ‘externo’ para explicar la configuración y dirigir a las personas y el tráfico a los sitios de Discourse separados. De esa manera, podría hacer que ambos sitios estuvieran abiertos para acceso de solo lectura (y rastreadores web) sin que las personas de la lista1 tuvieran que lidiar con el contenido de la lista2. Puede que tenga que jugar con robots.txt para que los rastreadores web estén contentos.

Los ejemplos de configuración multisitio fueron instructivos, pero no pude hacer que funcionaran con un socket Unix (error de puerta de enlace), así que terminé redirigiéndolos a otro puerto y redirigiendo ese puerto a 443 dentro del contenedor.

En mi archivo app.yml habilité la plantilla SSL pero no la de letsencrypt.

Logré que el sitio de prueba funcionara, ahora estoy buscando cualquier problema que pueda surgir al convertir el sitio de producción, espero que a finales de este mes o el próximo.

Me estoy encargando del problema del certificado en el lado del servidor externo, pero me encontré con el problema de ‘no seguro’ que solucioné requiriendo https en el contenedor. Tengo una tarea que ejecutaré a través de cron para copiar el último certificado y clave al directorio /shared/ssl del contenedor (como ssl.crt y ssl.key). No estoy seguro si necesitaré forzar una recarga de nginx dentro del contenedor para asegurarme de que se cargue un nuevo certificado cuando cambie (en julio, creo).

Me encontré con una peculiaridad de Discourse:

En el archivo del contenedor /etc/nginx/conf.d/discourse.conf hay este fragmento de código (nombre de dominio cambiado):

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

Esto estaba causando que site2.my.domain fuera redirigido a site1.my.domain, así que tuve que comentarlo.

NOTA: Reconstruir el contenedor requiere rehacer esta edición, ¿hay alguna forma de evitarlo?

Y esto llevó a una peculiaridad del navegador, porque ahora Firefox había marcado esa redirección como permanente, así que tuve que borrar la caché del navegador. (¡Tardé demasiado en darme cuenta!)

Se me ocurrió otra cosa extraña.

En mi sitio de prueba, el parámetro para requerir https no estaba marcado para ninguno de los sitios. En mi sitio de producción, ese parámetro ni siquiera está presente en el archivo de configuración. Supongo que eso tiene algo que ver con las diferencias entre los dos sitios.