Permessi per la cartella uploads?

Inizialmente ho provato a eseguire Discourse con impostazioni semi-predefinite e ha funzionato abbastanza bene, sono stato in grado di caricare file e fare altre cose.

Poi ho notato che il percorso in app.yml era /var/discourse e l’ho aggiornato a /var/www/discourse, ho fermato e distrutto il container, rimosso completamente la cartella precedente. E l’ho rimesso in funzione… ma ho notato che ora non riesco più a caricare file.

Che tipo di permessi necessita la cartella uploads? Posso fare alcune modifiche manualmente, ma vorrei sapere esattamente cosa e se va bene in generale (il launcher non dovrebbe occuparsi di impostare i permessi corretti, specialmente quando viene avviato da zero?)

Nei log ho errori nginx come

2024/07/12 19:11:23 [crit] 76#76: *160552 stat() “/var/www/discourse/public/uploads/default/original/1X/971c712ff3f1758abc63ac777ad708042cc41ddf.png” failed (13: Permission denied), client: 172.17.0.1, server: _, request: “GET /phorum/uploads/default/original/1X/971c712ff3f1758abc63ac777ad708042cc41ddf.png HTTP/1.0”, host: “myhost.com”, referrer: “https://myhost.com/phorum/admin/site_settings/category/branding

Permessi su uploads sono come:

drwxr--r--+ 3 discourse www-data 21 Jul 12 11:47 uploads

Questo è ciò che è raccomandato.

Il percorso /var/www/discourse è il percorso di discourse all’interno del container. /var/discourse è il percorso normale per Discourse_docker al di fuori del container.

Dato che hai appena iniziato, ti consiglierei di ricominciare da capo e di non rinominare nulla questa volta.

La mia ipotesi è che tu non abbia aggiornato il percorso nel tuo app.yml e quindi stia cercando di accedere a qualcosa che non esiste.

Ho molti altri progetti su questo server e sono tutti ben posizionati nella mia cartella /var/www, quindi preferisco mantenerla così :slight_smile: E non mi interessa come sia all’interno del container.

Ma l’ho aggiornato? In mounts, o dove altro dovrebbe andare?

Mi dispiace, non posso aiutarti. Ma sono totalmente sicuro che tu non abbia Nginx lì :wink: La situazione è la stessa con il container Docker.

Mi dispiace, non capisco, quale nginx? I log provengono dal nginx di Discourse, il mio nginx che termina SSL è al di sopra di esso.

Esatto il mio punto. Poiché il tuo reverse proxy nginx non è in quel percorso, perché dovrebbe esserlo anche il container docker.

Ma un container vive la sua vita e il percorso verso il container non dovrebbe influire su ciò che fa il suo Nginx. Hai cambiato anche qualcos’altro?

Ho controllato quello che ho:

lrwxrwxrwx 1 root root 15 Jul 12 10:10 uploads -> /shared/uploads

E come esempio un’immagine su /var/www/discourse/public/uploads/default/original/1X appare così:

-rw-r--r-- 1 discourse www-data 7100 May 19 2022 08335563eac3a393e60a902d4d38cffdfa6d967d

Questo è quanto so. Altrimenti Docker è un mistero enorme per me :rofl:

Quindi fondamentalmente scrivibile da chiunque? Non è considerato un problema di sicurezza?

Non vuoi davvero correre il rischio di esporre i tuoi segreti nel tuo file app.yml al mondo intero.

1 Mi Piace

Dentro di Docker? Non credo. E… non mi interessa perché tutto ciò è pianificato e realizzato da CDCK e mi fido che sappiano cosa fanno :smirking_face:

Certo, ma non sto esponendo nulla :slight_smile:

I permessi sono gli stessi, indipendentemente dal fatto che sia all’interno o all’esterno. E la cartella uploads è montata.

Va bene, non ha funzionato nulla, quindi ho finito per cambiare i permessi della cartella uploads in 755 e ora va tutto bene. Dopo la ricompilazione, sembra che gli upload stessi fossero a posto (dal lato del motore), tuttavia nginx non è stato in grado di leggerli.

Non capisco del tutto perché stai facendo tutto questo. È una tua scelta mettere un container in un percorso che sarà visibile a livello mondiale se commetti un piccolo errore, ma questa è una tua scelta. Ma tutto il resto… perché?

Avere un reverse proxy davanti a Discourse è davvero banale e altrimenti la tua configurazione sarebbe un’installazione standard senza tutta questa fatica. Certo, se vuoi giocare e questo è il tuo hobby, ma molto presto qualcuno si presenterà e dirà che puoi ottenere supporto solo per un’installazione standard e il problema più grande è che nessuno sa davvero cosa hai fatto. O perché.

Cosa "questo"? Ho una configurazione relativamente standard :slight_smile: E sto cercando di risolvere il problema.

Se vuoi, puoi caricare un file e vedere quali sono i suoi permessi e copiarli.

Magari caricane alcuni e poi fai

 find uploads -ls |less

Stai risolvendo un problema che hai riscontrato quando hai iniziato a fare qualcos’altro, cosa che uno standard richiede. Anche con un proxy inverso.

Ecco perché sei piuttosto lontano dallo standard :smirking_face: Perché ci sono due opzioni:

  • hai un bug tra le mani che nessun altro ha
  • hai fatto qualcosa di strano

Forse è un bug. E lo hai confermato facendo un’installazione standard usando un percorso sicuro (in molti modi) e allo stesso tempo collegando correttamente il tuo proxy inverso. Perché se è ancora rotto, posso scommettere che il problema è nell’host virtuale e/o nelle porte. Ma se funziona… allora siamo tornati all’opzione “strano” - dove nessuno sa cosa hai fatto.

Vedi il problema qui?

In ogni caso, l’uso di un proxy inverso porta a nessun supporto… questa è la politica qui. Ma altri utenti possono e molto spesso aiuteranno.

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