Sto eseguendo un’istanza self-hosted di Discourse su forum.embeetle.com. È in funzione da diversi anni.
Stamattina ho notato che tutte le interazioni da tastiera e mouse con il forum nel browser hanno smesso di funzionare. Posso caricare qualsiasi pagina del forum, ma non posso scorrere, accedere, cercare, ecc.
Ho provato sia Firefox che Chromium: stesso problema.
Gli strumenti per sviluppatori di Firefox mostrano questo errore:
Content-Security-Policy: Le impostazioni della pagina hanno bloccato il caricamento di una risorsa da inline ("script-src"). forum.embeetle.com:362:10
Non ho recentemente effettuato aggiornamenti o installato nuovi plugin.
Qualsiasi suggerimento su come posso eseguire il debug e risolvere questo problema?
Per quanto ne so, ho un’installazione standard basata su Docker, tranne per il fatto che la sto eseguendo dietro un proxy inverso Nginx. Configurazione Nginx di seguito (non sono sicuro che sia rilevante):
Non ricordo di aver mai impostato un tema predefinito, ma forse l’ho fatto e me ne sono dimenticato.
Vorrei disabilitare temporaneamente i temi per impostazione predefinita, in modo che il nostro forum sia utilizzabile mentre cerchiamo di capire cosa c’è che non va con i temi. Come posso farlo, se posso accedere alle pagine di amministrazione solo con i temi disabilitati? In modalità provvisoria, tutti i temi sono già disabilitati e attivarli e poi disattivarli di nuovo sembra non avere alcun effetto.
Ci sono tre temi disponibili (vedi sotto). Nessuno di essi è abilitato per impostazione predefinita.
Strano, per me in Safari, segnala che si rifiuta di eseguire la riga 315. Che è lo script inline per il preloader Discourse-spash. Quindi non correlato al tema.
Per una soluzione immediata, potresti disabilitare CSP utilizzando un’impostazione del sito:
Solo speculando: se il problema persiste, potrebbe essere il tuo ambiente server che invia qualcosa di inaspettato. O un altro script che interferisce (stai eseguendo plugin personalizzati o altri script?)
Nota che questo ti lascerà in uno stato vulnerabile e dovrebbe essere risolto al più presto. Ma almeno il tuo forum funzionerà di nuovo.
Per ora ho implementato un workaround diverso, aggiungendo una riscrittura nella configurazione nginx (a livello di server) come segue:
rewrite ^(.*)$ $1?safe_mode=no_themes break;
Quindi i visitatori utilizzeranno la modalità sicura per impostazione predefinita ora.
Per consentire un’ulteriore esplorazione di questo problema, ho anche duplicato il server del forum senza la rewrite su https://raw.forum.embeetle.com. Se visiti quell’URL, vedrai ancora il problema originale.
Non sto usando script personalizzati. Sto usando alcuni plugin, sperimenterò se disabilitarne qualcuno avrà qualche effetto.
Trovato: era effettivamente un problema con la mia configurazione nginx che ora emetteva accidentalmente un’intestazione Content-Security-Policy troppo restrittiva per Discourse.
La rimozione di Content-Security-Policy ha risolto il mio problema.