Recentemente ho seguito la guida install-cloud per installare Discourse su un’istanza AWS Lightsail. Nonostante abbia seguito attentamente le istruzioni e abbia ricominciato da capo più volte, purtroppo ricevo un errore “connection refused” quando tento di accedere al mio forum.
I passaggi che ho seguito sono stati:
Creare una nuova istanza Lightsail
Assegnare un indirizzo IP statico
Aprire la porta 443
Puntare il mio sottodominio (forum.procedural.audio) all’indirizzo IP
Seguire i comandi di installazione di Discourse nella guida, inclusa la fornitura di un indirizzo email per LETS_ENCRYPT
Navigare sul mio forum… connection refused
L’esecuzione di ./discourse-doctor restituisce che la versione di Discourse su forum.procedural.audio è NOT FOUND. Riesco a ricevere correttamente un’email di test da Discourse.
L’esecuzione di ping forum.procedural.audio non riceve dati in risposta ma trova l’indirizzo IP statico corretto.
Quindi sembra che il problema sia correlato all’SSL, anche se non sono sicuro di come risolverlo. Nella directory shared/standalone/ssl/ ci sono quattro file
forum.procedural.audio.cer (il file è vuoto)
forum.procedural.audio.key (il file contiene una chiave)
forum.procedural.audio_ecc.cer (il file è vuoto)
forum.procedural.audio_ecc.key (il file contiene una chiave)
Quindi non sono sicuro se il fatto che i file .cer siano vuoti sia parte del problema. Noto anche, tuttavia, che i log indicano che sta cercando il file in /shared/ssl/* invece che in /shared/standalone/ssl/*, il che sembra anche rilevante.
Il problema è che la tua istanza Lightsail non è raggiungibile esternamente. Questo è ciò che discourse-doctor ti stava dicendo: se hai aperto solo la porta 443, questo è probabilmente il motivo.
HTTPS sulla 443 non funzionerà finché non avrai un certificato. Non hai un certificato (e quei file di certificato sono vuoti) perché Let’s Encrypt non è stato in grado di registrarsi a causa del problema di comunicazione.
Supponendo che tu abbia assegnato un indirizzo esterno statico, apri anche la porta 80 e riprova. La porta 80 dovrà comunque essere aperta in modo che qualsiasi client che si connette tramite HTTP possa essere reindirizzato.
forum.procedural.audio non compare nel DNS, o per dirla in altro modo l’hostname non si risolve in un IP. L’ho appena controllato tramite CloudFlare e Google DNS, nessuno dei due riesce a trovare quell’hostname. Se non riesco a risolverlo io, non potrà farlo nemmeno discourse-doctor.
Quando hai creato il record ‘a’ per il tuo server? Hai controllato i loro tempi di replica?
Assicurati che questo sia risolto prima di provare a ricreare il server. Let’s Encrypt concede un numero finito di tentativi per l’iscrizione/rinnovo e quando li esaurisci non potrai ottenere un certificato per sette giorni.
Ho il dominio su Namecheap da due giorni, che punta a Route 53 (lo strato extra di indirezione è perché Route 53 non supporta i domini .audio). La voce del dominio principale esiste da quasi due giorni. La voce del sottodominio esiste da circa un’ora.
Se questo fosse il problema, penso che eseguire ping forum.procedural.audio dalla mia istanza non riuscirebbe a risolvere l’indirizzo IP. Ma l’IP si risolve.
Hmm. Beh, https://dnschecker.org/#A/forum.procedural.audio mostra che il nome si risolve in diversi posti, quindi forse è un problema di propagazione. Quando 1.1.1.1 o 8.8.8.8 lo cercano, non ottengo risposta. NS-337.AWSDNS-42.COM invece lo restituisce, quindi potresti dover solo aspettare un po’.
Ma discourse-setup tenterà di cercare l’indirizzo e vedere se riesce a connettersi a se stesso. Se questo fallisce, di solito è un problema di DNS o che le porte non sono aperte.
È passata quasi una settimana e continuo a non poter distribuire un forum. Qualcuno ha altre idee? Le porte 80 e 443 sono aperte. Non credo che questo sia un problema di DNS: discourse-doctor non trova la versione di discourse su localhost (oltre che su forum.procedural.audio). Qualsiasi aiuto è apprezzato.
Quindi immagino di essermi sbagliato ma non sono sicuro su cosa fare a riguardo. Non sono sicuro del perché discourse-doctor non riesca a trovare la versione di discourse su localhost.