Archivos adjuntos sirviendo localmente en el servidor pero no públicamente

Resumen del problema

Estoy recibiendo un error 404 al acceder a una carga de imagen a través de su URL en el sitio público de Discourse (https://techenclave.com), a pesar de que la imagen está presente en el disco y se sirve correctamente internamente. He vuelto a hornear la publicación, reiniciado la aplicación y verificado que el servicio interno funciona, pero sigue dando 404 externamente.


Lo que funciona

1. La carga existe en la base de datos

Usando la consola de Rails, confirmé que la carga existe con todos los metadatos correctos:

Upload.find_by(sha1: 'a8fbe877e685e6a6994532c946c446b1279da7d2')

La salida incluye:

  • url: "/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg"
  • Nombre de archivo: IMG202506252257011.jpg
  • ID: 170265
  • Usado en ID de publicación: 3125774

2. El archivo existe en el disco

Verificado que el archivo está presente dentro del contenedor:

ls -l /shared/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg

:check_mark: El archivo existe con la propiedad y los permisos correctos:
discourse:www-data, -rw-r--r--.


3. El enlace simbólico desde la carpeta pública funciona

El enlace simbólico public/uploads está intacto:

ls -l /var/www/discourse/public/uploads
# => /shared/uploads

4. Discourse puede servirlo internamente

Probado con:

curl -I http://localhost:3000/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg

Resultado: HTTP/1.1 200 OK


5. Publicación rebakeada

Rebakeé la publicación con:

Post.find(3125774).rebake!

6. Aplicación reiniciada

Ejecuté:

./launcher restart app

También intenté:

sudo ./launcher rebuild app

(El demonio de Docker no estuvo disponible temporalmente pero se arregló más tarde).


Lo que no funciona

Acceso externo a la imagen

Accediendo a:

https://techenclave.com/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg

Devuelve:

404 Not Found

Esto sucede en todos los navegadores y en modo incógnito.


Con qué necesito ayuda

¿Alguien puede ayudar a identificar qué podría causar:

  • Una carga que funciona y se sirve a través de localhost:3000,
  • pero devuelve 404 externamente en el dominio público?

¿Qué más debería revisar? ¿Alguna configuración o registro relacionado para inspeccionar?

¡Gracias de antemano!

Incluso las imágenes recién subidas no se cargan. Obtengo 404

¿Supongo que esto no es una instalación estándar? Eso es en su mayor parte todo lo que se admite aquí. ¿Cómo instalaste discourse?

1 me gusta

¿Quizás la próxima vez podrías mencionar que migraste muy recientemente?

¿Seguiste esta guía cuando cambiaste de temp.techenclave.com a techenclave.com?

2 Me gusta

Gracias.

La instalación fue una guía de instalación estándar de Discourse en GitHub.

Sí, hice una migración local en mi portátil, tomé una copia de seguridad y restauré la copia de seguridad en el servidor subiendo el archivo y realizando una restauración de copia de seguridad desde el panel de administración. No debería haberlo hecho porque no se restauraron todos los archivos adjuntos a pesar de que se mostró como exitoso. De todos modos, hice un rsync de los archivos de la instalación local en el portátil al servidor para actualizarlos.

Luego fue una migración de dominio, como bien señalaste, de temporal a raíz después de probar la configuración durante un día.

La razón por la que no mencioné lo anterior es que incluso los últimos archivos que se estaban subiendo después de toda la actividad anterior tampoco se muestran. A pesar de una reconstrucción. Así que no encontré esa información relevante.

No seguí esa guía. Pero cuando la miro, puedo ver que solo el paso fue

  1. El dominio antiguo aparece en la lista de iframes permitidos junto con el nuevo dominio en la configuración.
  2. reasignar el dominio en las publicaciones, lo que iba a hacer más tarde de todos modos, incluido un rebake una vez que se resolviera este problema. La publicación en cuestión fue rebakeada y no tiene el dominio antiguo en la URL de la imagen.

¿Son estos dos puntos relevantes?

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