Impossibile impostare nginx: [emerg] impossibile caricare il certificato "/var/discourse/shared/standalone/ssl/ssl.crt": BIO_new_file() fallito

(SSL: errore:02001002:libreria di sistema:fopen:File o directory non esistente:fopen('/var/dis (…)
Sto seguendo la guida, ma non riesco a trovare nulla riguardo a questo errore

Ciao @slivo

Vediamo l’output di questo:

cd   /var/discourse/shared/standalone/ssl
ls -l

Ci sono indizi?

cd ssl: File o directory non esistente

Ciao @slivo,

Questo indica che la configurazione di Let’s Encrypt non ha generato i certificati quando hai ricostruito l’ultima volta il tuo contenitore.

Certo, sono sicuro che lo sapessi già!

Ho avuto un’installazione fallita qualcosa del genere questa settimana. Forse prova a eseguire

./launcher rebuild app

L’ho ricostruito di nuovo. L’ho configurato seguendo le linee guida. SSL certificato impostato (/etc/nginx/sites-enabled/discourse.conf), ma ho un errore:

SSL: errore:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE

Non riesco ad avviare nginx per nulla.

 nginx.service: Processo di controllo terminato, codice=exited status=1
 nginx.service: Terminato con esito 'exit-code'.

Processo: 3840 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
  Processo: 25108 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s reload (code=exited, status=1/FAILURE)

// Impossibile avviare un server web ad alte prestazioni e un server proxy inverso.

Ciao @slivo,

Grazie per l’aggiornamento sulla configurazione.

Stai configurando Discourse con la build Docker standard senza un proxy inverso esterno al container?

Sì, e sto anche seguendo questa guida Run other websites on the same machine as Discourse

Ciao @slivo,

Nel link sopra, viene descritta una configurazione per eseguire Discourse in un contenitore Docker, esponendo l’applicazione tramite una socket UNIX a un reverse proxy.

In questo caso, NON dovresti abilitare SSL nel file yml del contenitore; invece, DOVRESTI configurare SSL con Let’s Encrypt utilizzando certbot all’esterno del contenitore, direttamente sul reverse proxy.

L’architettura generale ad alto livello è la seguente:

UTENTI WEB <-- HTTPS --> REVERSE PROXY <-- HTTP --> CONTENITORE DOCKER

Per favore, pubblica il tuo file yml oscurando con xxxx le password e gli indirizzi email; così potremo vedere cosa stai utilizzando.

Grazie.

Ma ora non capisco. Allora ho creato un nuovo certificato usando certbot. E ce l’ho qui così:

/etc/letsencrypt/live/myadress.com/fullchain.pem
Il tuo file di chiave è stato salvato in:
/etc/letsencrypt/live/myadress.com/privkey.pem

Devo cambiare l’indirizzo in questo file o in /etc/nginx/sites-enabled/discourse.conf, oppure sto facendo tutto completamente sbagliato?

Ciao @slivo,

Quando configuri un reverse proxy davanti a un’altra applicazione con un’istanza di nginx: devi essere molto specifico riguardo alla posizione dei file di configurazione, all’interno o all’esterno del container?

Non sono sicuro di aver capito appieno. Voglio semplicemente avere Discourse dietro nginx. Non ho un’altra applicazione sul server, ma vorrei configurarlo per maggiore protezione dall’esterno.

Ciao @slivo,

Capisco la tua frustrazione. Lascia che ti spieghi gentilmente.

In uno dei tuoi messaggi precedenti hai scritto:

/etc/letsencrypt/live/myadress.com/fullchain.pem
Il tuo file chiave è stato salvato in:
/etc/letsencrypt/live/myadress.com/privkey.pem

Non hai specificato se ti trovi all’interno del contenitore Docker o all’esterno.

Come sai, nginx (nel tuo caso) è in esecuzione sia direttamente sull’host che all’interno dell’app (il contenitore Docker).

Quando scrivi:

/etc/letsencrypt/live/myadress.com/fullchain.pem
Il tuo file chiave è stato salvato in:
/etc/letsencrypt/live/myadress.com/privkey.pem

Come possiamo noi, che siamo esterni, sapere esattamente a cosa ti riferisci se non fornisci tutte le informazioni? Quella configurazione si trova all’interno o all’esterno del contenitore? Possiamo “indovinare” e “presumere” che tu ti stia riferendo all’esterno del contenitore, ma poiché non fornisci questi dettagli, non possiamo esserne certi. La mia esperienza è che la strada più breve per risolvere un problema è non dare mai nulla per scontato e prestare molta attenzione ai dettagli.

Inoltre, non hai condiviso il tuo file yml. Non hai nemmeno condiviso i file di configurazione di nginx esterni al contenitore. Di conseguenza, non possiamo “vedere” cosa stai effettivamente facendo nella tua configurazione.

Spero ti sia utile (HTH).