Instalación auto-alojada detrás de una IP no "full-stack"

Hola,

Con fines de prueba/validación, estoy instalando Discourse en una máquina Ubuntu en casa, cuya IP local se ha fijado, digamos 192.168.1.200.
Está detrás de un router con una IP pública, digamos A.B.C.D, no full-stack. :roll_eyes:

Por razones ajenas a mi voluntad, no puedo cambiarla por una full-stack. Por lo tanto, estoy limitado en el NAT del router a un rango de puertos de entrada con valores muy altos, es decir, ni 443 ni 80.

Para el ejemplo, digamos que abro el puerto de entrada 50000 en TCP/UDP hacia 192.168.1.200 en el puerto 443.

En principio, una solicitud que llegue a la IP pública A.B.C.D en el puerto 50000 debería ser reenviada a 192.168.1.200:443.

Tengo un nombre de subdominio, digamos: forum.mondomaine.me, con los registros A y AAAA apuntando a la IP pública A.B.C.D (para IPv4).

He añadido una redirección a este nivel desde https://forum.mondomaine.me hacia mi IP pública A.B.C.D:50000.

Si intento acceder a la URL mencionada, veo claramente el cambio a A.B.C.D:50000 y, por supuesto, un rechazo, ya que aún no hay ningún servicio escuchando en 192.168.1.200:443.

Donde se complica es que, durante la instalación (en modo Docker) de Discourse en mi máquina, la etapa de verificación de la configuración del dominio falla:

/!\ El puerto 443 de este equipo no parece ser accesible usando el nombre de host: forum.mondomaine.me
/!\ La conexión a http://forum.mondomaine.me (puerto 80) también falla.

Debe haber una solución o un truco, pero por ahora no lo veo…

¿Es una red doméstica? ¿Es posible que tu proveedor de servicios de internet (ISP) esté bloqueando el tráfico? ¿Por qué no usar un VPS en su lugar?

(EDIT: Usa un túnel de Cloudflare recomendado en el documento enlazado anteriormente)

Gracias por las respuestas.

¿Es una red doméstica?

Al instalar Discourse en una máquina Ubuntu en mi casa, como mencioné inicialmente, sí, es una red doméstica.

¿Es posible que su proveedor de servicios de Internet (ISP) esté bloqueando el tráfico?

Ese es precisamente el caso cuando la dirección IP pública no es full-stack. Y en este punto, no puedo hacer nada al respecto.

¿Por qué no usar un VPS en su lugar?

Porque para esta prueba no tengo previsto comprar un VPS. Pero estoy de acuerdo: un VPS sería la solución si ya tuviera uno a mano. Y no habría dudado en usarlo.

En cuanto al uso de un túnel de Cloudflare, por lo que acabo de observar, me parece una solución excesivamente compleja para tan poco… Además, Cloudflare…

¡Ojalá fuera tan sencillo y rápido instalar Discourse en una red local aislada (o no)…

Vi que existe una guía en algún lugar (de la cual ya perdí la URL) para una intranet, que también me pareció bastante pesada, especialmente en comparación con una instalación estándar.

Dejémoslo así, no es vital, no tengo ganas de pasar horas en esto. :laughing:

Gracias nuevamente por las respuestas.

¿No se puede configurar para omitir este paso?

Como se explica en este post de Jay, la comprobación del puerto se puede omitir usando:

--skip-connection-test

¿Necesitas una conexión desde fuera de tu LAN para probar o como parte de tu desarrollo?

Disculpa si he malinterpretado el problema.

Para el tiempo dedicado a solucionar todo entre tu propia red, el hecho de que tu ISP reenvíe el tráfico correctamente y de que tú asegures no dejar ninguna puerta abierta para que un actor sospechoso secuestre tu red doméstica, usar túneles de Cloudflare es bastante fácil y directo, en mi opinión. Especialmente en una red doméstica.

Discourse requiere HTTPS. A menos que sepas cómo obtener un certificado e instalarlo según se describe en otro lugar, tu mejor opción es instalar Discourse en una conexión de internet residencial con Cloudflare Tunnel

Creo que así es como instalar tu propio certificado: Permitir SSL/HTTPS para tu configuración de Discourse con Docker

¡Gracias @Andrew_Rowe por el consejo!

No, no necesito una conexión desde fuera de mi LAN para probar.

Así que ejecuté install-discourse con --skip-connection-test y, como se esperaba, la instalación continuó sin bloquearse en la verificación del dominio.

Hay que recordar detener nginx si ya está en ejecución (fuera de Docker).

¡Pero ya está! Discourse se está ejecutando en su contenedor.

Sin embargo… aparentemente ahora tenemos un problema con el certificado.

nginx: [emerg] cannot load certificate “/shared/ssl/forum.mondomaine.me.cer”: PEM_read_bio_X509_AUX() failed (SSL: error:0480006C:PEM routines::no start line:Expecting: TRUSTED CERTIFICATE)

Por supuesto, seguí este tema y verifiqué la existencia de /var/discourse/shared/ssl/forum.mondomaine.me.cer, y está bien, al igual que el archivo .key y otros dos archivos con extensión .me_ecc.cer|key.

Reconstruí el contenedor y sigue igual.

Confirmo que instalar Discourse en una máquina de prueba local es un verdadero calvario. :joy:

Claramente no está fomentado.

Y a falta de una solución sencilla (no, no usaré CloudFlare, no hace falta seguir por ese camino, gracias), creo que este será mi último mensaje sobre el tema. :grinning_face_with_smiling_eyes:

En realidad, no se compra uno. Se alquila.

Sin duda, @merefield, gracias por la precisión. También voy a aclarar lo que quería decir: no tengo previsto gastar dinero en un VPS.

Solo una cosa más: noté que el comando docker run incluía DISCOURSE_FORCE_HTTPS=true, así que lo cambié a false y volví a ejecutarlo después de reconstruir el contenedor.

No hubo ningún cambio.

Si no tienes la intención de usar un túnel al estilo de Cloudflare y solo quieres echar un vistazo, utiliza una dev-install.

¡Gracias! De hecho, lo revisaré.