Intento instalar Discourse por primera vez de la manera oficial con el script discourse-setup… en un VPS de Arch (con fines de prueba con un grupo), que tiene una instalación nueva de nginx. Lo he detenido y desactivado por ahora… para obtener una compilación que funcione.
El script se detiene en “Checking your domain Name…” (Comprobando el nombre de tu dominio…). He mirado el script y es una llamada a “connect_to_port”. Supongo que está intentando conectarse a un puerto 443. netcat está instalado. Si introduzco, por ejemplo, “nc host 443” en la shell, no obtengo ninguna salida y no sucede nada. Supongo que es porque el nginx “externo” no se está ejecutando, por lo que no hay nada en ese puerto. No estoy seguro de lo que hace exactamente el script allí.
También intenté omitir esa prueba, pero parece que al final, después de la compilación, está intentando algo similar, que tampoco ha funcionado. Así que borré todo y empecé de nuevo. ¿Qué puedo hacer para que esta prueba de conexión de netcat funcione? Tal vez eso también resuelva los otros problemas.
(Perdón por mi horrible inglés… no soy hablante nativo…)
Lo he intentado de nuevo sin netcat. La compilación termina con este mensaje…
docker: Error response from daemon: driver failed programming external connectivity on endpoint app (80e0a31158301339ff7c9567079017bb795b1172ee47e1c6417c29acda3c699a): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 443 -j DNAT --to-destination 172.17.0.2:443 ! -i docker0: Warning: Extension tcp revision 0 not supported, missing kernel module? Warning: Extension DNAT revision 0 not supported, missing kernel module? iptables: No chain/target/match by that name.
Necesitas eliminar nginx para una instalación estándar. Discourse incluye su propio nginx, por lo que no necesitas otro (a menos que quieras uno por alguna otra razón, lo que complica la instalación).
El script intenta conectarse a sí mismo usando tu nombre de dominio. Si el nombre de dominio apunta a tu VM, entonces debería poder contactarse a sí mismo a través de ese nombre de host dado que el DNS es correcto y no hay nada más usando los puertos 443 y 80.
Si omites la verificación varias veces, alcanzarás los límites de cuántos intentos puedes hacer para obtener un certificado https de Let’s Encrypt.
Quiero una configuración multisitio, así que necesito lo del proxy inverso… pero para cualquier guía más avanzada que encuentre aquí, primero necesitaré una instalación base que funcione.
¿Hay en algún lugar un manual de instalación más manual, o realmente es necesario reducir la máquina por completo primero para luego construirla…?
Discourse no debería ser el único software que se ejecute en esta máquina, y solo quiero tener una idea de cómo mantenerlo en su propia capa, mientras se accede a él, a través de una capa de proxy público…
Como de todos modos es una máquina desechable, lo intentaré sin duda… es la primera vez que tengo que hacerlo para una aplicación web, solo porque “para que sea fácil”…
Bueno, configurarás vhost como de costumbre en nginx “externo” usando proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:; y terminando SSL allí, por supuesto.
Luego, en app.yml, tendrás que comentar las redirecciones de puertos y Let’s Encrypt y usar el socket en su lugar.
Reiniciar nginx y reconstruir Discourse te dará un foro abierto
Las instrucciones también se pueden encontrar aquí.