No problem. I wish I could help you more, but unfortunately, I do not have enough knowledge on the subject. Hopefully someone that knows more will respond soon. I would also watch the topic that I linked to. It might eventually have a solution posted.
In the mean time, you might want to take a look at your logs and see if there are similarities to the logs posted in that topic. I’m pretty sure the logs you would be interested in can be found by adding /logs to your forum’s base URL. So it would look something like https://example.com/logs The user in that topic also mentions a proxy. Are you using a proxy?
If you can provide this type of information, it should be helpful to someone that reads this topic and has a better understanding on the subject.
We’d prefer if you could upload to try first (try.discourse.org), that way we don’t start getting image uploads all over the place. If the image fails to lightbox on try, then feel free to upload it here so the example doesn’t get deleted when try is reset each day. If the image lightboxes on try then the issue is specific to your configuration as @schungx stated.
Tengo la versión 2.5.0.beta6 ejecutándose y experimento el mismo problema.
“Crear miniaturas” está activo, pero no genera un lightbox, independientemente del tamaño de la imagen.
Tengo una segunda instancia de Discourse que tiene unos meses y allí tengo publicaciones antiguas donde el lightbox funciona, pero no en las nuevas publicaciones.
¿Quizás sea un problema con una actualización?
Si subo la misma imagen a try.discourse.org, funciona correctamente allí con el lightbox.
Esto sugiere que hay un problema en tu configuración en algún lugar. ¿Podrías revisar la consola de tu navegador en busca de errores o compartir un enlace al sitio con el que estás teniendo problemas?
Acabo de crear un hilo de prueba en una nueva instancia de Discourse que configuré la semana pasada.
La imagen tiene una resolución de 1920x1050, pero no se abre en un lightbox. https://dis.ctb.co.at/t/test-image-lightbox/44
En la segunda instalación, donde el lightbox funcionaba antes, la ruta era inicialmente “/var/docker” y luego la cambié a otra ubicación.
Podría ser que el problema del lightbox comenzó entonces debido al cambio de ruta. No estoy seguro al respecto.
¿Quizás me perdí alguna configuración para la nueva ruta?
Las líneas de arriba fueron las únicas que encontré que apuntaban al directorio original “/var/docker”.
Acabo de intentar moverlo de nuevo a “/var/discourse” para confirmar que el cambio de ruta fue lo que causó el problema, pero sigue presentando el mismo error con la ruta original.
Además, se ejecuta detrás de un proxy inverso nginx que realiza el cifrado SSL, si eso es relevante, pero no he modificado nada en la configuración de este desde que dejó de funcionar en la otra instalación.
He realizado estas configuraciones para nginx en el archivo .yml correspondiente.
Si no es la ruta, ¿qué más podría causar este problema con el lightbox?
Lo he movido de nuevo a “/var/docker/dis.ctb.co.at”.
Esta es mi configuración actual en yml (solo he cambiado los datos personales). ¿Podría haber algo mal ahí, o se trata de un problema de Discourse?
## esta es la plantilla del contenedor Docker de Discourse todo-en-uno, independiente
##
## Después de realizar cambios en este archivo, DEBES reconstruir
## /var/discourse/launcher rebuild app
##
## ¡TEN *MUCHO* CUIDADO AL EDITAR!
## ¡LOS ARCHIVOS YAML SON SUPER SENSIBLES A ERRORES EN LOS ESPACIOS EN BLANCO O EN LA ALINACIÓN!
## visita http://www.yamllint.com/ para validar este archivo según sea necesario
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Descomenta estas dos líneas si deseas agregar Lets Encrypt (https)
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
## ¿Qué puertos TCP/IP debe exponer este contenedor?
## Si deseas que Discourse comparta un puerto con otro servidor web como Apache o nginx,
## consulta https://meta.discourse.org/t/17247 para más detalles
expose:
# - "80:80" # http
# - "443:443" # https
- "127.0.0.1:3041:80"
docker_args:
- "--network=nginx-br"
params:
db_default_text_search_config: "pg_catalog.english"
## Establece db_shared_buffers en un máximo del 25% de la memoria total.
## se establecerá automáticamente durante el arranque según la RAM detectada, o puedes sobrescribirlo
db_shared_buffers: "4096MB"
## puede mejorar el rendimiento de ordenación, pero aumenta el uso de memoria por conexión
#db_work_mem: "40MB"
## ¿Qué revisión de Git debe usar este contenedor? (predeterminado: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## ¿Cuántas solicitudes web simultáneas se admiten? Depende de la memoria y los núcleos de CPU.
## se establecerá automáticamente durante el arranque según los CPUs detectados, o puedes sobrescribirlo
UNICORN_WORKERS: 8
## TODO: El nombre de dominio al que responderá esta instancia de Discourse
## Obligatorio. Discourse no funcionará con una dirección IP desnuda.
DISCOURSE_HOSTNAME: dis.ctb.co.at
## Descomenta si deseas que el contenedor se inicie con el mismo
## nombre de host (opción -h) que el especificado arriba (predeterminado "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Lista de correos electrónicos separados por comas que serán administradores y desarrolladores
## en el registro inicial, ejemplo 'usuario1@ejemplo.com,usuario2@ejemplo.com'
DISCOURSE_DEVELOPER_EMAILS: 'nothing@nothing.com'
## TODO: El servidor de correo SMTP utilizado para validar nuevas cuentas y enviar notificaciones
# La dirección, el nombre de usuario y la contraseña de SMTP son obligatorios
# ADVERTENCIA: el carácter '#' en la contraseña de SMTP puede causar problemas.
DISCOURSE_SMTP_ADDRESS: mailserver.nothing.com
DISCOURSE_SMTP_PORT: 25
DISCOURSE_SMTP_USER_NAME: nothing@nothing.com
DISCOURSE_SMTP_PASSWORD: "secret"
DISCOURSE_SMTP_ENABLE_START_TLS: false # (opcional, predeterminado true)
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
## Si agregaste la plantilla de Lets Encrypt, descomenta a continuación para obtener un certificado SSL gratuito
# LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## La dirección CDN http o https para esta instancia de Discourse (configurada para extraer)
## consulta https://meta.discourse.org/t/14857 para más detalles
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
VIRTUAL_HOST: dis.ctb.co.at
VIRTUAL_PORT: 9002
LETSENCRYPT_HOST: dis.ctb.co.at
LETSENCRYPT_EMAIL: nothing@nothing.com
## El contenedor Docker no tiene estado; todos los datos se almacenan en /shared
volumes:
- volume:
host: /var/docker/dis.ctb.co.at/shared/standalone
guest: /shared
- volume:
host: /var/docker/dis.ctb.co.at/shared/standalone/log/var-log
guest: /var/log
## Los plugins van aquí
## consulta https://meta.discourse.org/t/19157 para más detalles
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## Cualquier comando personalizado a ejecutar después de la compilación
run:
- exec: echo "Inicio de comandos personalizados"
## Si deseas establecer la dirección de correo electrónico 'De' para tu primer registro, descomenta y cambia:
## Después de recibir el primer correo de registro, vuelve a comentar la línea. Solo necesita ejecutarse una vez.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "Fin de comandos personalizados"
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: "types {"
to: |
set_real_ip_from 172.18.0.0/16;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
types {
Ahora he descubierto que esto solo ocurre si la opción «Forzar que tu sitio use solo HTTPS» está activa cuando se crea la publicación con la imagen.
Yo tenía esa opción activada en la otra instalación desde el principio, pero de repente dejó de funcionar; quizás fue causado por una actualización de nginx o de Discourse.
Hasta donde puedo ver, nginx no muestra nada extraño.
Por lo general, esto se debe a una mala configuración de esquemas complejos de proxy inverso, según mi experiencia. El uso de subcarpetas añade complejidad adicional (y, por tanto, más variables) también.
Estoy ejecutando dos instalaciones separadas de Discourse a través de este proxy nginx, además de una instancia de Nextcloud. En la primera instalación de Discourse, el lightbox funcionaba antes y de repente dejó de hacerlo. En realidad, no he cambiado nada en la configuración del proxy desde que funcionaba.
Curiosamente, aún crea algunos archivos y carpetas en /var/discourse, incluso aunque haya configurado los volúmenes para que no apunten a ese directorio.
Nunca ha ocurrido que se crearan archivos en /var/discourse; quizás haya visto algunos archivos antiguos.
Ahora he cambiado de nginx a traefik para asegurarme de que el problema no proviene de nginx, pero el problema sigue presente. Esto me indica que probablemente hay un problema del lado de Discourse y no del lado del proxy.
La misma situación ocurre con traefik: si “https forzado” está desactivado cuando se publica la imagen, el lightbox funciona correctamente, incluso si habilito “https forzado” más tarde.
¿Qué más podría verificar?
Me muestra un error en el archivo de registro, indicando que no puede acceder a /uploads/....
No se puede acceder a '/uploads/default/original/1X/fe2af548af4a22f4802ddaa54afa557ae557417c.png' para obtener sus dimensiones.
Puedo acceder a la imagen sin problemas si introduzco la URL en un navegador web: https://domain.com/uploads/default/original/1X/fe2af548af4a22f4802ddaa54afa557ae557417c.png
Completado 200 OK en 23ms (Vistas: 0.3ms | ActiveRecord: 0.0ms | Asignaciones: 3000)
Completado 200 OK en 318ms (Vistas: 1.2ms | ActiveRecord: 0.0ms | Asignaciones: 50347)
No se puede acceder a '/uploads/default/original/1X/fe2af548af4a22f4802ddaa54afa557ae557417c.png' para obtener sus dimensiones.
Iniciado GET "/posts/96" para 84.115.50.36 el 2020-07-04 14:15:14 +0000
Procesado por PostsController#show como JSON
Parámetros: {"id"=\u003e"96"}
No me muestra ningún error cuando no se fuerza HTTPS.
Completado 200 OK en 18ms (Vistas: 0.3ms | ActiveRecord: 0.0ms | Asignaciones: 3050)
Completado 200 OK en 296ms (Vistas: 0.5ms | ActiveRecord: 0.0ms | Asignaciones: 49562)
Iniciado GET "/posts/97" para 84.115.50.36 el 2020-07-04 14:17:43 +0000
Procesado por PostsController#show como JSON
Parámetros: {"id"=\u003e"97"}
Parece que Discourse, por alguna razón, descarga la imagen nuevamente desde el servidor web para realizar alguna función de lightbox.
Si descargo esta imagen manualmente dentro del contenedor Docker de Discourse, intenta acceder directamente a su servidor web a través de su dirección IP interna en lugar de hacerlo a través del proxy. Esto funciona mediante HTTP, pero no mediante HTTPS.
El propio servidor web solo tiene HTTP disponible, pero intenta acceder a él mediante HTTPS, lo cual falla.
Me pregunto por qué Discourse descarga la imagen nuevamente desde su servidor web en lugar de acceder a ella internamente sin usar HTTP/HTTPS.
Edición: Descubrí que renombré el archivo app.yml a domain.name.yml, lo que hizo que Docker cambiara el nombre DNS de domain.name a su dirección IP interna. Lo renombré a domain_name.yml y ahora todo funciona correctamente.