Usa CloudPanel para gestionar múltiples sitios con Discourse

Puedes ir directamente a mi tutorial paso a paso aquí…

En mi servidor dedicado (Hetzner) he instalado una instancia nueva de Discourse (y eso es lo único en el servidor en este momento).

Ahora quiero usar CloudPanel como proxy inverso, para poder usar también el servidor para alojar blogs de Ghost y sitios de Wordpress para algunos de mis clientes.

Leyendo este tutorial, y habiendo estudiado también las otras publicaciones a continuación, parece posible.

Pero estoy luchando con mi curva de aprendizaje sobre los proxies inversos.

Puedo instalar y administrar fácilmente mis sitios usando CloudPanel.

Pero no tengo claro el orden o el procedimiento correcto para hacer que CloudPanel funcione bien con Discourse.

Me gustaría documentar el procedimiento aquí en esta publicación.

¿Alguien puede guiarme a través de esto?

Primero sigue una de esas guías para mover discourse a otro puerto y elimina las plantillas ssl y let’s encrypt y reconstruye. Luego, indica a tu proxy inverso que use ese puerto.

3 Me gusta

¿Qué pasa si instalo CloudPanel primero y creo un proxy inverso en la interfaz…


…y/o en el Editor de Vhost…

…¿podría entonces instalar Discourse?

¿O es necesario o de alguna manera preferible instalar Discourse primero?

Me gustaría proporcionar los pasos para la forma más simple/intuitiva (para otros simples como yo :slight_smile: )

No importa. Siempre que

  • Discourse no utilice los puertos 80/443 porque el conflicto bloqueará tu proxy inverso
  • Discourse no utilice SSL, pero exponga el puerto 80 a ese puerto que el proxy inverso utiliza para el backend

Entonces, no importa significa que Discourse debe configurarse como backend antes de iniciar el proxy inverso y que en algún momento no será accesible.

1 me gusta

No es una configuración para simplones. Tendrás que entender cómo funciona un proxy inverso y cómo configurar Discourse manualmente. No va a ser simple ni intuitivo.

Ya es bastante difícil dar soporte a la instalación estándar para principiantes. Se han dedicado muchas, muchas horas a hacer que esas instrucciones funcionen para personas que no saben nada de administración de sistemas.

2 Me gusta

Se han dedicado muchas, muchas horas a hacer que esas instrucciones funcionen para personas que no saben nada de administración de sistemas.

@pfaffman ¡Espero poder ayudarte a reducir esas horas en el futuro!

1 me gusta

¿Es containers/app.yml un archivo creado por el instalador? (No lo encuentro en el repositorio.)

He editado el archivo standalone.yml y lo he renombrado a app.yml

Si coloco ese archivo en containers/ y luego ejecuto ./discourse-setup, ¿debería funcionar?

(Asumiendo que he configurado correctamente los ajustes en mi app.yml)

Lo es.

Como recién llegado a Discourse, la forma correcta de hacerlo parece ser algo así:

  • Deshabilita temporalmente tu proxy inverso.
  • Instala Discourse con SSL/Lets Encrypt deshabilitado
  • Verifica una instalación funcional en el puerto :80
  • Cambia el puerto de Discourse al 81 o a otro puerto no estándar, o mejor aún, usa un socket.
  • Vuelve a iniciar el proxy inverso, configúralo contra la instalación de Discourse (incluida la encapsulación https)
  • Habilita force_https

Si no instalas Discourse sin el proxy inverso, hay demasiadas áreas donde esto podría salir mal para solucionar problemas de manera práctica.

1 me gusta

No puedes usar discourse-setup para tu configuración. Si lo editaste, ejecuta

./launcher rebuild app

2 Me gusta

¡Milagro de los milagros, lo logramos! ¡Gracias por toda su ayuda! Documentaré el procedimiento en la publicación del tema de arriba.

2 Me gusta

OK, solo estoy atascado en algo (pequeño, creo)…

Para crear una segunda instancia de Discourse, creo y edito el app2.yml y el server_name.conf para la segunda instancia de Discourse, cambiando el DISCOURSE_HOSTNAME y el server_name.

Pero entonces… ¿cómo construyo la app2? Intenté:

service nginx restart

./launcher stop app

./launcher rebuild app2

y

./discourse-setup (Usé ./discourse setup para instalar la primera instancia y luego volví y edité el app.yml, y funcionó en la primera instancia).

Este procedimiento resultó en una instancia de Discourse en la segunda URL, pero parece estar obteniendo datos de la primera instancia.

No entiendo algo. ¿Cuál es la forma correcta de construir el segundo sitio en el segundo dominio?

2 Me gusta

¿Está su proxy inverso configurado para escuchar el segundo dominio y enrutar el tráfico a un puerto diferente?

2 Me gusta

Necesitas cambiar el directorio que usa donde dice /var/discourse/standalone a algo diferente (standalone2?).
Puede que quieras usar una configuración de dos contenedores para que solo ejecutes una copia de postgres (creo que la Configuración multisitio con Docker tiene algunas pistas), pero si tienes mucha RAM, puede que no te importe.

1 me gusta

Vaya. Nunca lo habría descubierto por mi cuenta. Eres mi héroe del día.

Lo que estoy haciendo aquí es (para un cliente) construir un prototipo para un sistema de publicación versátil de Discourse para Creadores, integrando Ghost con Discourse.

Soy un desarrollador front-end y ahora necesito aprender completamente el sysadmin.

Así que necesito construir tanto un multisitio como contenedores separados.

Esta es la configuración de mi servidor:

  1. un servidor dedicado en Hetzner (6 núcleos de CPU, 64 GB de RAM y 2x512 GB NVMe)

  2. un VPS en Contabo (8 núcleos de CPU, 30 GB de RAM y 200 GB NVMe)

1 me gusta
3 Me gusta

No sé nada al respecto, pero si tú y otros creen que tu tutorial es confiable, siéntete libre de crear uno nuevo #documentation:sysadmin how-to advanced-setup y cualquier otra etiqueta que creas conveniente :slight_smile:
(antes de que tu respuesta sea eliminada automáticamente en un mes :stuck_out_tongue: )

3 Me gusta

OK sí. Para esa segunda instancia, funcionó (después de crear un nuevo sitio en CloudPanel):

  1. crear y editar manualmente el archivo app2.yml, cambiando cada instancia en ese archivo de standalone a standalone2

  2. también cambiar standalone a standalone2 en el archivo Vhost

  3. ejecutar ./launcher rebuild app2

Creo que también borré todas las cachés de Cloudflare, reinicié nginx y luego también reinicié el servidor.

Gracias de nuevo por tu ayuda.

2 Me gusta

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