Installazione auto-ospitata dietro un IP non "full-stack"

Buongiorno,

A scopo di test/convalida, sto installando Discourse su una macchina Ubuntu locale con un indirizzo IP statico, diciamo 192.168.1.200.
Questa macchina si trova dietro un router con un indirizzo IP pubblico, diciamo A.B.C.D, che non è statico (full-stack). :roll_eyes:

Per motivi indipendenti dalla mia volontà, non posso richiedere un indirizzo IP statico. Sono quindi limitato nella configurazione del NAT sul router a una gamma di porte in ingresso con valori molto alti, quindi né la 443 né la 80.

A titolo di esempio, supponiamo che io apra la porta in ingresso 50000 (TCP/UDP) indirizzando il traffico verso 192.168.1.200 sulla porta 443.

Quindi, in teoria, una richiesta in arrivo sull’indirizzo IP pubblico A.B.C.D sulla porta 50000 dovrebbe essere inoltrata a 192.168.1.200:443.

Dispongo di un sottodominio, diciamo: forum.mondomaine.me, con i record A e AAAA che puntano all’indirizzo IP pubblico A.B.C.D (per IPv4).

Ho aggiunto un reindirizzamento a questo livello da https://forum.mondomaine.me al mio IP pubblico A.B.C.D:50000.

Se provo ad accedere all’URL sopra indicato, vedo chiaramente il cambiamento in A.B.C.D:50000 e, naturalmente, un rifiuto, poiché non c’è (ancora) un servizio in ascolto su 192.168.1.200:443.

Il problema sorge durante l’installazione (in modalità Docker) di Discourse sulla mia macchina: la fase di verifica della configurazione del dominio fallisce con i seguenti messaggi:

/!\ La porta 443 di questo computer non sembra essere accessibile tramite il nome host: forum.mondomaine.me
/!\ Anche la connessione a http://forum.mondomaine.me (porta 80) fallisce.

Dovrebbe esserci una soluzione o un workaround, ma al momento non riesco a individuarlo…

È una rete domestica? È possibile che il tuo ISP stia bloccando il traffico? Perché non usare invece un VPS?

(AGGIORNAMENTO: Usa un Cloudflare Tunnel, come raccomandato nella documentazione collegata sopra)

Grazie per le risposte.

È una rete domestica?

Installando Discourse su una macchina Ubuntu a casa, come ho scritto inizialmente, sì, è proprio una rete domestica.

È possibile che il tuo ISP stia bloccando il traffico?

È esattamente il caso quando l’IP pubblico non è full-stack. E a questo punto non posso farci nulla.

Perché non usare invece un VPS?

Perché per questo test non prevedo di acquistare un VPS. Ma sono d’accordo: un VPS sarebbe la soluzione se ne avessi già uno a portata di mano. E non avrei esitato.

Per quanto riguarda l’uso di un tunnel Cloudflare, da quanto ho appena constatato, mi sembra una macchina complessa per così poco… E poi Cloudflare…

Se solo fosse così semplice e veloce installare Discourse su una rete locale isolata (o meno)…

Ho notato che esiste una guida da qualche parte (di cui ho già perso l’URL) per un intranet, che mi è sembrata anche piuttosto pesante, soprattutto rispetto a un’installazione standard!

Lasciamo perdere, non è vitale, non voglio passarci ore. :laughing:

Grazie ancora per le risposte.

Non è possibile configurare il sistema saltando questo passaggio?

Come spiegato in questo post di Jay, il controllo della porta può essere saltato utilizzando:

–skip-connection-test

Hai bisogno di una connessione dall’esterno della tua LAN per il test o come parte dello sviluppo?

Scusa se ho frainteso il problema.

Per il tempo impiegato a risolvere ogni problema tra la tua rete, il corretto inoltro del traffico da parte del tuo ISP e il fatto di assicurarti di non lasciare porte aperte a potenziali malintenzionati che potrebbero dirottare la tua rete domestica, l’uso dei tunnel Cloudflare è piuttosto semplice e diretto, a mio parere. Specialmente su una rete domestica.

Discourse richiede HTTPS. A meno che tu non sappia come ottenere un certificato e installarlo come descritto altrove, la soluzione migliore è installare Discourse su una connessione internet residenziale con Cloudflare Tunnel

Penso che questo sia il metodo per installare il tuo certificato: Abilitare SSL / HTTPS per la tua configurazione Discourse Docker

Grazie @Andrew_Rowe per il consiglio!

No, non ho bisogno di una connessione proveniente dall’esterno del mio LAN per testare.

Quindi ho avviato install-discourse con --skip-connection-test e, come previsto, l’installazione è proseguita senza bloccarsi sul controllo del dominio.

Ricordarsi di fermare nginx se è già in esecuzione (fuori da Docker).

Ma tutto funziona! Discourse è attivo nel suo container!

Però… apparentemente ora abbiamo un problema con il certificato.

nginx: [emerg] cannot load certificate "/shared/ssl/forum.mondomaine.me.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0480006C:PEM routines::no start line:Expecting: TRUSTED CERTIFICATE)

Ho naturalmente seguito questo argomento e verificato l’esistenza di /var/discourse/shared/ssl/forum.mondomaine.me.cer: è presente, così come il file .key e altri due file con estensione .me_ecc.cer|key.

Ho ricreato il container ma il problema persiste.

Confermo che installare Discourse su una macchina di test locale è un vero calvario! :joy:

Evidentemente non è una pratica incoraggiata.

E dato che non vedo una soluzione semplice (no, non userò CloudFlare, inutile prendere quella strada, grazie), penso che questo sarà il mio ultimo messaggio sull’argomento. :grinning_face_with_smiling_eyes:

In realtà non lo si acquista. Lo si prende in affitto.

Senza dubbio @merefield, grazie per la precisazione. Preciserò anche cosa intendevo: non prevedo di spendere soldi per un VPS.

Solo un’ultima cosa: ho notato che nel comando docker run era presente DISCOURSE_FORCE_HTTPS=true, quindi l’ho impostato su false e ho riavviato dopo aver ricreato il container.

Nessun cambiamento.

Se non intendi utilizzare un tunnel in stile Cloudflare e vuoi solo dare un’occhiata, usa un dev-install.

Grazie! Lo controllerò effettivamente.