Cerrando el foro (NO borrándolo)

Hola a todos,

Actualmente no puedo administrar mi foro y quiero cerrarlo por un tiempo ya que necesita un nuevo enlace SSL que aún no he descubierto cómo hacerlo. No quiero que ninguno de nuestros usuarios corra el riesgo de ser hackeado.
¿Es posible evitar que todos entren al foro por un tiempo sin borrarlo por completo?

Realmente agradecería su ayuda con esto. ¡Gracias!

1 me gusta

¿Has considerado poner tu sitio en modo de solo lectura? Esto se puede encontrar en la sección de copias de seguridad de la configuración del administrador tu-nombre-de-sitio/admin/backups esto hará que tu sitio sea de solo lectura para que los usuarios no puedan publicar, etc.

2 Me gusta

Si es una instalación estándar, una reconstrucción debería obtener un nuevo certificado ssl.

Si no puedes o no quieres eso, entonces podrías ponerlo en modo de solo lectura como se sugirió.

También podrías hacer un ./launcher stop app para detener el contenedor.

1 me gusta

Hola Ondrej,

Gracias por tu respuesta. Leí sobre esto, pero aún así no impide que los usuarios accedan al foro, lo que ya supone un problema, ya que actualmente no es seguro (no hay https al principio del enlace, es decir, ningún certificado de seguridad).

Si tu intención es volver a activarlo una vez que tengas tiempo para solucionar lo de SSL, lo que haría sería intentar usar primero las plantillas SSL integradas. Discourse te lo pone muy fácil para obtener y usar Let’s Encrypt para SSL, así que probablemente valga la pena intentarlo antes de recurrir a apagarlo.

Si quieres intentarlo, elimina el # de las líneas segunda y tercera de esto, cerca de la parte superior de tu archivo app.yml:

## Descomenta estas dos líneas si deseas añadir Lets Encrypt (https)
  #- "templates/web.ssl.template.yml"
  #- "templates/web.letsencrypt.ssl.template.yml"

A continuación, busca #LETSENCRYPT_ACCOUNT_EMAIL: me@example.com más abajo en el mismo archivo, de nuevo elimina el # y también reemplaza la dirección de correo electrónico de ejemplo.

Finalmente, reconstruye Discourse y debería obtener un certificado Let’s Encrypt y configurar HTTPS, redirigiendo todo desde HTTP.

cd /var/discourse
./launcher rebuild app
4 Me gusta

¿Cómo instalaste Discourse?

Lamentablemente, no sé cómo se instala Discourse ni cómo funciona en general. Mi padre configuró el foro para su negocio, pero falleció este año. Tenemos un servidor con Linode y es posible que Discourse esté instalado en él.

Gracias Simon por tu detallada explicación. Mi padre montó esta página web pero falleció este año. No tengo ni idea de cómo instalar y configurar Discourse y no sé nada de páginas web en general. ¿Dónde encuentro este archivo appl.yml? ¿Habría instalado mi padre Discourse en nuestro servidor de dominio? Usamos Linode y hay un “Linode” llamado “Discourse” en él. Simplemente no sé qué significa esto y cómo acceder a la instalación.
Gracias por tu ayuda.

1 me gusta

Lamento tu pérdida. :pray:

En primer lugar, te sugiero encarecidamente que te asegures de que las “copias de seguridad” estén habilitadas para ese Linode de “Discourse”. Este debería ser tu primer paso inmediato.

En segundo lugar, asegúrate de que las copias de seguridad de Discourse también estén habilitadas en https://yoursitedomain.com/admin/backups

En tercer lugar, es posible que desees intentar ejecutar una actualización desde el panel de administración de la interfaz de usuario, directamente desde tu navegador web, ya que esto podría resolver tus problemas: https://yoursitedomain.com/admin/upgrade

3 Me gusta

Eso es terrible. Lamento mucho oír eso. Si no sabes cómo conectarte por SSH a ese servidor, lo más fácil es hacer una copia de seguridad, hacer una nueva instalación y restaurar la copia de seguridad allí.

Si puedes obtener acceso SSH al servidor, entonces puedes hacer las cosas de línea de comandos descritas aquí.

Teóricamente deberían poder restablecer la contraseña SSH de Linode:
https://www.linode.com/docs/guides/accounts-and-passwords/#resetting-the-root-password

2 Me gusta

Eso suena bastante fácil y permitiría extraer la configuración de correo que funciona. Probablemente seguiría haciendo una instalación limpia, ya que parece que esta está rota.

No estoy seguro de estar de acuerdo con eso. La configuración predeterminada según el archivo app.yml incluido es no usar las plantillas web.ssl o web.letsencrypt.ssl y la falta de cualquier redirección HTTP descrita por @Mads me suena a que se ha mantenido esa configuración predeterminada, es decir, nunca tuvo SSL.

Eso parece bastante prometedor como servidor que aloja Discourse. Si aún quieres apagarlo, podrías simplemente apagar ese Linode, pero dependiendo de cómo se configuró, podría haber otras cosas en ese servidor también.

Como dijo @sdpiowa, puedes restablecer la contraseña como se describe en el enlace que proporcionó. Desplázate hasta el final para ver “Restablecer la contraseña raíz”. No necesitas hacer esto si ya tienes la contraseña raíz para ese servidor.

Con la contraseña raíz a mano, la forma más sencilla de acceder al servidor será utilizando la consola LISH en el administrador de la nube de Linode.

https://www.linode.com/docs/guides/using-the-lish-console/

En el último paso, cuando veas login: en la consola, escribirías root y presionarías enter, luego escribirías la contraseña y presionarías enter nuevamente. En este punto, deberías tener una shell y poder ejecutar comandos en el servidor; ten en cuenta que debes tener cuidado de no cometer errores aquí, lo más probable es que un error solo genere un error y no suceda nada, pero los errores en una shell de root pueden tener efectos secundarios perjudiciales.

Antes de continuar, asegúrate de crear una copia de seguridad manual de Discourse y, una vez que se complete, toma una instantánea manual en el administrador de la nube de Linode. De esta manera, sabes que tienes todo lo que necesitas para recuperarte si algo sale mal.

Comienza cambiando de directorio para llegar al lugar correcto:

cd /var/discourse

Las imágenes de Linode generalmente tienen nano instalado, que es un editor de texto bastante fácil de usar. Edita el archivo app.yml:

nano containers/app.yml

Probablemente no puedas usar el ratón para mover el cursor, así que usa las teclas de flecha para moverte por el archivo y hacer los cambios descritos anteriormente. Una vez que hayas terminado, presiona CTRL+X para salir y se te preguntará si deseas guardar, presiona Y para responder sí y se te pedirá un nombre de archivo, simplemente presiona enter y se guardará el archivo y saldrá de nano.

Finalmente, reconstruye Discourse y no cierres la ventana LISH después de iniciar esto:

./launcher rebuild app

Si todo va bien, probablemente en 10-20 minutos Discourse volverá a estar en funcionamiento con SSL.

Ha pasado bastante tiempo desde que https se activó de forma predeterminada. Es una buena suposición que el sistema operativo también ha llegado al fin de su vida útil.

En mi humilde opinión, la solución más fácil y segura para un novato es una instalación nueva, ¡pero usted ha proporcionado generosamente instrucciones que prometen ayudarle a resolver este problema!

¡Muchas gracias a todos por su ayuda y sus detalladas explicaciones! Puede que haya encontrado a alguien que pueda ayudarme con esto y me aseguraré de mostrarle sus consejos. Realmente lo aprecio :slight_smile:

4 Me gusta

¡Sois geniales!

Gracias por toda esa información.

Matt aquí, ayudando a Mads, un sysadmin con bastante experiencia, bastante cómodo en *nix, Docker me hizo profundizar un poco más pero lo conseguí.

El registro de Letsencrypt decía:

La CA está procesando tu pedido, por favor espera. (1/30)
community.fruityknitting.com:Error de verificación: Obteniendo https://community.fruityknitting.com/.well-known/acme-challenge/9NEyZhZzZQ9FwGrqGqDNblLiwtOQQGlYr-9nSFUwKhw: Conexión rechazada**

La configuración de Nginx tenía una redirección inmediata del puerto 80 a https y luego creo que Andrew hizo que Discourse verificara una cuenta válida a través de Patreon, esa redirección del puerto 80 con la redirección de Patreon probablemente impidió que Letsencrypt validara el archivo local.

Detuve la redirección del puerto 80 de Nginx, reinicié Nginx y volví a ejecutar:
/shared/letsencrypt/acme.sh --cron --home /shared/letsencrypt

y éxito.

Agradezco los útiles comentarios de todos.

Mis mejores deseos.

3 Me gusta

¿La redirección de Patreon no estaba en https?

Fue Robert, quizás expresado más claramente como:

Redirección incondicional de Nginx de 80 a 443, y luego la aplicación Discourse reenvía inmediatamente a Patreon para una sesión o cookie o algo, supongo…

Suficiente para romper la validación de Letsencrypt.

¿Suena bien?

Creo que eso es para forzar toda la comunicación a través de https desde cualquier entrada a través de http.
¿Lo de Patreon suena un poco ‘raro’?
¿Qué está tratando de hacer que no podrías hacer en la capa de aplicación 100% a través de https?
¿Por qué tiene que importarle al proxy inverso?

Pruébalo Robert…
https://community.fruityknitting.com/