Túneles de Cloudflare: la configuración de Discourse no reconoce el hostname (el puerto no es accesible)

El demonio cloudflared se está ejecutando correctamente y lo he usado para muchísimas cosas (lo que significa que el túnel está instalado correctamente en el servidor), pero tengo problemas para que la configuración de Discourse (./discourse-setup) reconozca mi nombre de host para mi instancia de Discourse.

  • Estoy usando biohacking.forum como nombre de host para mi instancia.
  • Esta es mi configuración de Cloudflare Tunnel para biohacking.forum:
  • También he intentado configurarlo en HTTPS para el tipo de servicio.
  • Estoy configurando Discourse en un servidor Ubuntu, en LTS.
  • Ejecuté los siguientes comandos en este orden:
  1. sudo mkdir /var/discourse
  2. sudo git clone https://github.com/discourse/discourse_docker.git /var/discourse
  3. cd /var/discourse
  4. sudo ./discourse-setup
  5. Me pide el nombre de host, introduzco biohacking.forum
  6. Se muestra el siguiente mensaje:
    Hostname for your Discourse? [discourse.example.com]: biohacking.forum
    
    Checking your domain name . . .
    WARNING: Port 443 of computer does not appear to be accessible using hostname:  biohacking.forum.
    WARNING: Connection to http://biohacking.forum (port 80) also fails.
    
    This suggests that biohacking.forum resolves to some IP address that does not reach this
    machine where you are installing discourse.
    
    The first thing to do is confirm that biohacking.forum resolves to the IP address of this server.
    You usually do this at the same place you purchased the domain.
    
    If you are sure that the IP address resolves correctly, it could be a firewall issue.
    A web search for "open ports YOUR CLOUD SERVICE" might help.
    
    This tool is designed only for the most standard installations. If you cannot resolve
    the issue above, you will need to edit containers/app.yml yourself and then type
    
    ./launcher rebuild app
    

¿Qué debo hacer para que este paso funcione? Por favor, hágame saber si necesita información adicional. ¡Gracias!

Oye, ¿tienes la nube gris (solo DNS) para el registro “A” antes de ./discourse-setup?

No estoy usando un registro A estándar, estoy usando túneles de Cloudflare. Aquí hay un ejemplo de un servicio que funciona perfectamente en mi servidor (con túneles de Cloudflare) y la configuración asociada:

Ghost CMS es el servicio:
PUERTO: 8085:2368 (8085 es el host y 2368 es el servicio)
NOMBRE DE HOST: joshuahabka.com
Configuración del túnel de Cloudflare:

El icono naranja de Cloudflare está activado ya que utiliza túneles de Cloudflare, pero para Discourse debería informarse como un puerto de acceso normal. Tengo más de 40 servicios implementados y accesibles a través de la web, y Discourse es el primero con el que tengo algún error.

¡Por favor, házmelo saber si necesitas información adicional!

Así que para Discourse, supongo que el puerto es:
443:443 (host:servicio) que es por lo que tenía mi configuración original de túnel de Cloudflare como se muestra arriba.

Hola @joshhabka :wave:
quizás este tema te ayude, si es que aún no lo has visto

4 Me gusta

Hola Lilly, la guía mencionada no me funcionó, sigo recibiendo el mismo error aunque mi configuración de túnel de cloudflare es http://localhost:80 como se indica, sigo atascado en

starserver@Starserver:/var/discourse$ sudo ./discourse-setup
Los puertos 80 y 443 están libres para su uso
'samples/standalone.yml' -> 'containers/app.yml'
./discourse-setup: línea 261: 4
scaling*                 2: error de sintaxis en la expresión (token de error es "scaling*                 2")

Nombre de host para tu Discourse? [discourse.example.com]: biohacking.forum

Comprobando tu nombre de dominio . . .
ADVERTENCIA: No parece que se pueda acceder al puerto 443 del ordenador utilizando el nombre de host: biohacking.forum.
ADVERTENCIA: La conexión a http://biohacking.forum (puerto 80) también falla.

Esto sugiere que biohacking.forum se resuelve a una dirección IP que no llega a esta
máquina donde estás instalando discourse.

Lo primero que debes hacer es confirmar que biohacking.forum se resuelve a la dirección IP de este servidor.
Normalmente haces esto en el mismo lugar donde compraste el dominio.

Si estás seguro de que la dirección IP se resuelve correctamente, podría ser un problema de firewall.
Una búsqueda en la web de "abrir puertos TU SERVICIO EN LA NUBE" podría ayudar.

Esta herramienta está diseñada solo para las instalaciones más estándar. Si no puedes resolver
el problema anterior, necesitarás editar tú mismo containers/app.yml y luego escribir

./launcher rebuild app

Desactivar “Usar siempre HTTPS”

Redirige todas las solicitudes con el esquema “http” a “https”. Esto se aplica a todas las solicitudes http a la zona. hace que el puerto 80 funcione pero no el 443.

Habilitar una regla de página para redirigir a HTTPS también hace que fallen tanto el 80 como el 443, pero si no la uso, entonces falla el 443 y tiene éxito el 80.

No estás siguiendo las instrucciones.

No puedes usar discourse-setup excepto para que cree el archivo yml.

1 me gusta

Gracias, ahora estoy atascado aquí:

FALLÓ
--------------------
Pups::ExecError: /usr/local/bin/ruby -e 'if ENV["DISCOURSE_SMTP_ADDRESS"] == "smtp.example.com"; puts "Aborting! Mail is not configured!"; exit 1; end' falló con el retorno #<Process::Status: pid 134 exit 1>
Ubicación del fallo: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec falló con los parámetros {"tag"=>"precompile", "cmd"=>["/usr/local/bin/ruby -e 'if ENV[\"DISCOURSE_SMTP_ADDRESS\"] == \"smtp.example.com\"; puts \"Aborting! Mail is not configured!\"; exit 1; end'", "/usr/local/bin/ruby -e 'if ENV[\"DISCOURSE_HOSTNAME\"] == \"discourse.example.com\"; puts \"Aborting! Domain is not configured!\"; exit 1; end'", "/usr/local/bin/ruby -e 'if (ENV[\"DISCOURSE_CDN_URL\"] || \"\")[0..1] == \"//\"; puts \"Aborting! CDN must have a protocol specified. Once fixed you should rebake your posts now to correct all posts.\"; exit 1; end'"]}
bootstrap falló con el código de salida 1
** FALLÓ EL ARRANQUE ** por favor desplázate hacia arriba y busca mensajes de error anteriores, puede haber más de uno.
./discourse-doctor puede ayudar a diagnosticar el problema.

Tienes que editar el archivo yml e introducir las credenciales smtp

Hecho y todo es nominal ahora. Simplemente pondría una nota en la autoinstalación para la publicación del túnel de Cloudflare que la gente necesita editar el documento yaml para agregar su smtp, nombre de host, correos electrónicos, etc.

¡Gracias!

1 me gusta

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