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.
Sto eseguendo la versione 2.5.0.beta6 e riscontro lo stesso problema.
“Crea miniature” è attivo, ma non viene generata una lightbox, indipendentemente dalle dimensioni dell’immagine.
Ho una seconda istanza di Discourse, attiva da alcuni mesi, dove la lightbox funziona nei vecchi post, ma non in quelli nuovi.
Forse è un problema legato a un aggiornamento?
Se carico la stessa immagine su try.discourse.org, funziona correttamente con la lightbox.
Questo suggerisce che c’è un problema nel tuo setup da qualche parte. Puoi controllare la console del browser per eventuali errori o condividere un link al sito su cui stai riscontrando problemi?
Ho appena creato lì un thread di prova su una nuova istanza di Discourse che ho configurato la settimana scorsa.
L’immagine è 1920x1050, ma non si apre in una lightbox. https://dis.ctb.co.at/t/test-image-lightbox/44
Nella seconda installazione, in cui la lightbox funzionava in precedenza, il percorso era inizialmente “/var/docker” e l’ho successivamente modificato in un’altra posizione.
Potrebbe essere che il problema della lightbox sia iniziato proprio a causa di questo cambio di percorso. Non ne sono sicuro.
Forse ho dimenticato qualche impostazione per il nuovo percorso?
Le righe sopra erano le uniche che ho trovato e che puntavano alla directory originale “/var/docker”.
Ho appena provato a spostarlo nuovamente in “/var/discourse” per confermare che sia la modifica del percorso a causare il problema, ma ho riscontrato lo stesso errore anche con il percorso originale.
Il servizio è inoltre gestito dietro un proxy inverso nginx che si occupa della crittografia SSL, nel caso fosse rilevante, ma non ho apportato alcuna modifica alla configurazione lì da quando ha smesso di funzionare sull’altra installazione.
Ho effettuato queste impostazioni per nginx nel file .yml corrispondente.
Se non è il percorso, cosa altro potrebbe causare questo problema con la lightbox?
L’ho spostato nuovamente in “/var/docker/dis.ctb.co.at”.
Questa è la mia attuale configurazione yml (ho modificato solo i dati personali). Potrebbe esserci qualcosa di sbagliato qui, o si tratta di un problema di Discourse?
## questo è il modello del contenitore Docker Discourse standalone all-in-one
##
## Dopo aver apportato modifiche a questo file, DEVI ricostruire
## /var/discourse/launcher rebuild app
##
## FAI *MOLTA* ATTENZIONE DURANTE LA MODIFICA!
## I FILE YAML SONO MOLTO MOLTO SENSIBILI A ERRORI NELLO SPAZIAMENTO O NELL'ALLINEAMENTO!
## visita http://www.yamllint.com/ per validare questo file quando necessario
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Scommenta queste due righe se desideri aggiungere Lets Encrypt (https)
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
## quali porte TCP/IP dovrebbe esporre questo contenitore?
## Se vuoi che Discourse condivida una porta con un altro server web come Apache o nginx,
## vedi https://meta.discourse.org/t/17247 per i dettagli
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"
## Imposta db_shared_buffers al massimo al 25% della memoria totale.
## verrà impostato automaticamente da bootstrap in base alla RAM rilevata, oppure puoi sovrascrivere
db_shared_buffers: "4096MB"
## può migliorare le prestazioni di ordinamento, ma aumenta l'uso di memoria per connessione
#db_work_mem: "40MB"
## Quale revisione Git dovrebbe utilizzare questo contenitore? (predefinito: tests-passed)
#version: tests-passed
env:
LANG: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
## Quanti richieste web simultanee sono supportate? Dipende dalla memoria e dai core della CPU.
## verrà impostato automaticamente da bootstrap in base alle CPU rilevate, oppure puoi sovrascrivere
UNICORN_WORKERS: 8
## TODO: Il nome di dominio a cui risponderà questa istanza di Discourse
## Obbligatorio. Discourse non funzionerà con un semplice numero IP.
DISCOURSE_HOSTNAME: dis.ctb.co.at
## Scommenta se vuoi che il contenitore venga avviato con lo stesso
## nome host (opzione -h) specificato sopra (predefinito "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Elenco di email separate da virgola che diventeranno amministratori e sviluppatori
## all'iscrizione iniziale, ad esempio 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'nothing@nothing.com'
## TODO: Il server di posta SMTP utilizzato per validare nuovi account e inviare notifiche
## INDIRIZZO SMTP, nome utente e password sono obbligatori
## ATTENZIONE: il carattere '#' nella password SMTP può causare problemi!
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 # (opzionale, predefinito true)
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
## Se hai aggiunto il modello Lets Encrypt, scommenta qui sotto per ottenere un certificato SSL gratuito
# LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
## L'indirizzo http o https CDN per questa istanza di Discourse (configurato per il recupero)
## vedi https://meta.discourse.org/t/14857 per i dettagli
#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
## Il contenitore Docker è senza stato; tutti i dati sono archiviati in /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
## I plugin vanno qui
## vedi https://meta.discourse.org/t/19157 per i dettagli
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## Qualsiasi comando personalizzato da eseguire dopo la costruzione
run:
- exec: echo "Inizio dei comandi personalizzati"
## Se vuoi impostare l'indirizzo email 'From' per la tua prima registrazione, scommenta e modifica:
## Dopo aver ricevuto la prima email di iscrizione, rimetti in commento la riga. Deve essere eseguita solo una volta.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "Fine dei comandi personalizzati"
- 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 {
Ho capito ora che questo accade solo se l’opzione Forza l'uso esclusivo di HTTPS per il tuo sito è attiva al momento della creazione del post con l’immagine.
Avevo questa opzione attiva sull’altra installazione fin dall’inizio, ma improvvisamente ha smesso di funzionare, forse a causa di un aggiornamento di nginx o Discourse.
Per quanto riesco a vedere, nginx non mostra nulla di strano.
Di solito, nella mia esperienza, ciò è dovuto a una configurazione errata di schemi complessi di reverse proxy. L’aggiunta di una sottocartella introduce ulteriori complessità (e quindi variabili).
Sto eseguendo due installazioni separate di Discourse tramite questo proxy nginx, oltre a un’istanza di Nextcloud. Nella prima installazione di Discourse, la lightbox funzionava prima e poi improvvisamente ha smesso di farlo. In realtà non ho apportato alcuna modifica alla configurazione del proxy da quando funzionava.
È interessante notare che vengono ancora creati alcuni file e cartelle in /var/discourse, anche se ho impostato i volumi su una directory diversa.
Non è mai successo che i file venissero creati in /var/discourse, forse ho visto solo alcuni file vecchi.
Ho ora cambiato da nginx a traefik per assicurarmi che il problema non derivasse da nginx, ma il problema persiste. Questo significa che probabilmente c’è un problema sul lato Discourse e non sul lato del proxy.
Stessa situazione con traefik: se “https forced” è disabilitato quando l’immagine viene pubblicata, la lightbox funziona correttamente, anche se abilito “https forced” in un secondo momento.
Cosa altro potrei controllare?
Mi mostra un errore nel file di log, indicando che non riesce ad accedere a /uploads/....
Impossibile raggiungere '/uploads/default/original/1X/fe2af548af4a22f4802ddaa54afa557ae557417c.png' per ottenere le sue dimensioni.
Posso accedere all’immagine senza problemi inserendo l’URL nel browser web: https://domain.com/uploads/default/original/1X/fe2af548af4a22f4802ddaa54afa557ae557417c.png
Completato 200 OK in 23ms (Views: 0.3ms | ActiveRecord: 0.0ms | Allocations: 3000)
Completato 200 OK in 318ms (Views: 1.2ms | ActiveRecord: 0.0ms | Allocations: 50347)
Impossibile raggiungere '/uploads/default/original/1X/fe2af548af4a22f4802ddaa54afa557ae557417c.png' per ottenere le sue dimensioni.
Avvio GET "/posts/96" per 84.115.50.36 il 2020-07-04 14:15:14 +0000
Elaborazione da parte di PostsController#show come JSON
Parametri: {"id"=>"96"}
Non mostra errori quando HTTPS non è forzato.
Completato 200 OK in 18ms (Views: 0.3ms | ActiveRecord: 0.0ms | Allocations: 3050)
Completato 200 OK in 296ms (Views: 0.5ms | ActiveRecord: 0.0ms | Allocations: 49562)
Avvio GET "/posts/97" per 84.115.50.36 il 2020-07-04 14:17:43 +0000
Elaborazione da parte di PostsController#show come JSON
Parametri: {"id"=>"97"}
Sembra che Discourse, per qualche motivo, scarichi nuovamente l’immagine dal server web per eseguire alcune operazioni di lightbox.
Se scarico manualmente questa immagine all’interno del container Docker di Discourse, tenta di accedere al server web direttamente tramite il suo indirizzo IP interno invece che tramite il proxy. Questo funziona tramite HTTP, ma non tramite HTTPS.
Il server web stesso ha disponibile solo HTTP, ma tenta di accedervi tramite HTTPS, il che fallisce.
Mi chiedo perché Discourse scarichi di nuovo l’immagine dal suo server web invece di accedervi internamente senza HTTP/HTTPS.
Modifica: Ho scoperto di aver rinominato app.yml in domain.name.yml, il che ha causato a Docker di cambiare il nome DNS di domain.name nel suo indirizzo IP interno. L’ho rinominato in domain_name.yml e ora tutto funziona correttamente.