Estoy intentando instalar Discourse en un servidor en la nube de Hetzner, pero al ejecutar ./discourse-setup me aparece el mensaje de que los puertos están bloqueados (discourse.domain.de, obviamente, no es el dominio real):
WARNING: Port 443 of computer does not appear to be accessible using hostname: discourse.domain.de.
WARNING: Connection to http://discourse.domain.de (port 80) also fails.
Como sugiere la herramienta de configuración, ahora quiero comprobar si discourse.domain.de se resuelve a la dirección IP del servidor en la nube. Al ejecutar dig discourse.domain.de obtengo la siguiente salida:
; <<>> DiG 9.16.1-Ubuntu <<>> discourse.domain.de
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28839
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;discourse.domain.de. IN A
;; ANSWER SECTION:
discourse.domain.de. 4134 IN A XXX.XXX.XXX.XXX (dirección IP correcta)
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Apr 24 10:14:44 UTC 2022
;; MSG SIZE rcvd: 70
Lo que me parece bien.
Lo siguiente que se sugiere es que podría ser un problema de firewall. Tengo un firewall con los siguientes puertos abiertos:
Así que creo que el firewall no es la razón del mensaje anterior. ¿Es posible que haya algo más que esté bloqueando los puertos? He leído que Apache podría causar un problema de este tipo, pero no está instalado en el servidor en la nube.
Intenté telnet discourse.domain.de 443 para ver si los puertos estaban abiertos y obtuve:
telnet: Unable to connect to remote host: Network is unreachable
¿Alguien tiene alguna idea de cómo solucionar este problema?
¡Gracias!
Desafortunadamente, a los spammers y estafadores de correo electrónico les gusta usar proveedores de alojamiento en la nube. Y en Hetzner, naturalmente, queremos evitar esto. Por eso, bloqueamos los puertos 25 y 465 por defecto en todos los servidores en la nube. Esta es una práctica muy común en la industria del alojamiento en la nube porque previene abusos. Queremos generar confianza con nuestros nuevos clientes antes de desbloquear estos puertos de correo. Una vez que haya estado con nosotros por un mes y haya pagado su primera factura, puede crear una solicitud de límite para desbloquear estos puertos para un caso de uso válido. En su solicitud, puede contarnos detalles sobre su caso de uso. Tomamos decisiones caso por caso.
Como alternativa, también puede usar el puerto 587 para enviar correos electrónicos a través de servicios externos de entrega de correo. El puerto 587 no está bloqueado y se puede usar sin enviar una solicitud de límite.
He buscado en el foro para ver si alguien más se había encontrado con un problema similar y he encontrado esto, aunque lamentablemente no es una “solución real” como tal:
¿Podría ser una opción para ti configurar app.yml manualmente?
Todavía estoy confundido, pero en Digital Ocean se debe configurar un firewall. Una instalación limpia no tiene ningún puerto abierto (excepto SSH, pero eso es otra cosa). No sé cómo funciona Hetzner. Y si el VPS está detrás de puertos cerrados, no importa lo que tengamos en app.yml.
La configuración manual de app.yml es la solución al problema para mí también. ¡Gracias!
También encontré este hilo, pero supongo que no lo leí con suficiente atención…
Creo que sí. Cuando inicio un VPS (Ubuntu 20), nginx no está instalado por defecto: discourse-setup lo instala.
He instalado Discourse numerosas veces en VPS de Hetzner sin ningún problema durante años (la última vez fue en febrero).
Por eso me desconcierta este tema.
edit: por alguna razón mi cerebro mezcló docker y nginx
Hay dos opciones: usar el firewall de Digital Ocean o instalar UFW (o similar) después de la creación del VPS. Ninguna de mis instalaciones utiliza el suyo, por lo que todos los puertos están cerrados hasta que los abro desde UFW.
De todos modos, ahora sabemos cuándo, dónde y cómo se instala Nginx. Cada día algo nuevo (cuando tú/yo/alguien no entiende cómo funciona Docker )