Discourse installato in VM Ubuntu Server UNRAID dietro proxy inverso NPM non risolve il nome host

Ciao a tutti! Ho letto vari post qui senza successo, quindi ho pensato di spiegare in dettaglio la mia configurazione attuale nella speranza che qualcuno possa darmi qualche suggerimento per risolvere il problema.

Attualmente sto eseguendo un server Unraid. Unraid ospita container Docker e VM. Ho un Nginix Reverse Proxy Manager (NPM) in esecuzione in un container Docker che gestisce i reverse proxy per tutti gli altri container Docker che eseguo. Il mio firewall è impostato per inviare tutto il traffico WAN sulle porte 80/443 a NPM e reindirizzo il traffico all’interno di NPM ai miei container.

Ho seguito la seguente guida: discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub

Indica che è per l’installazione su un server cloud, anche se il mio è una macchina bare metal qui self-hosted.

Informazioni di sistema a partire da Dom 28 Gen 07:35:54 UTC 2024

  Carico di sistema:              0.5126953125
  Utilizzo di /:               45.9% di 13.16GB
  Utilizzo memoria:             6%
  Utilizzo swap:               0%
  Processi:                125
  Utenti connessi:          0
  Indirizzo IPv4 per docker0: 172.17.0.1
  Indirizzo IPv4 per enp1s0:  10.30.20.150

Ho avviato una VM in Unraid, installato Ubuntu Server, impostato un indirizzo IP statico, installato Docker e scaricato Discourse. Durante l’esecuzione della configurazione, ricevo il seguente errore.

Hostname per il tuo Discourse? [discourse.example.com]: forum.mydomain.net

Verifica del nome del dominio in corso...
ATTENZIONE: La porta 443 del computer non sembra essere accessibile tramite hostname:
ATTENZIONE: Anche la connessione a (porta 80) fallisce.

Ciò suggerisce che forum.mydomain.net risolve a un indirizzo IP che non raggiunge questa
macchina dove stai installando discourse.

La prima cosa da fare è confermare che forum.mydomain.net risolve all'indirizzo IP di questo server.
Di solito lo fai nello stesso posto in cui hai acquistato il dominio.

Se sei sicuro che l'indirizzo IP risolva correttamente, potrebbe essere un problema di firewall.
Una ricerca sul web per "apri porte IL TUO SERVIZIO CLOUD" potrebbe aiutare.

Questo strumento è progettato solo per le installazioni più standard. Se non riesci a risolvere
il problema sopra, dovrai modificare manualmente containers/app.yml e poi digitare

./launcher rebuild app

Sono in grado di eseguire il ping della mia VM Ubuntu all’indirizzo IP statico assegnato 10.30.20.150 dal mio container NPM. Ho configurato la mia configurazione NPM per puntare a https 10.30.20.150 porta 443 e anche a http porta 80 senza successo. Quando la configurazione fallisce, sembra chiudere il container discourse all’interno della VM?

C’è qualche soluzione a questo?
Forse, modificare le porte del mio firewall per bypassare il reverse proxy e puntare direttamente alla VM in modo che possa ottenere un certificato ed eseguire il container, e poi una volta in esecuzione poter modificare manualmente config.yml per utilizzare il mio reverse proxy?
Potrei modificare l’installazione in qualche modo per non richiedere un certificato SSL, ed eseguire sulla porta 80, per poi gestire l’ottenimento di un certificato SSL tramite NPM?

Infine, ho visto in alcuni post che esiste una versione “production” e “development” di discourse… sembra che la versione dev possa essere eseguita in html su una porta locale? Se questo è vero, immagino che potrei facilmente mettere tutto dietro il mio reverse proxy..? Da quello che ho letto, il pacchetto di produzione è più facile da mantenere aggiornato e potrebbe avere miglioramenti delle prestazioni.

Apprezzerei molto un aiuto, un feedback o suggerimenti in merito.

Questa è l’unica installazione di produzione supportata qui.

Ma non sono convinto che sia adatta alla tua situazione dato che hai già un reverse-proxy.

Potresti prendere in considerazione l’utilizzo dell’immagine base di Discourse e fare il reverse engineering della tua composizione personalizzata:

https://hub.docker.com/r/discourse/base/

1 Mi Piace

Puoi rimuovere nell’app.yml il riferimento alle porte 80 e 443 con un #?

quel file si trova in /var/discourse/containers? Non riesco ad accedere a quella directory, dice ‘permesso negato’

quindi il concetto di base sarebbe quello di modificare il Dockerfile base di Discourse e rimuovere le righe che installano/configurano il reverse proxy fornito con il pacchetto?

No, prenderei in considerazione la creazione di un docker compose completamente personalizzato (o qualunque cosa tu stia usando per l’orchestrazione) e userò un dockerfile personalizzato per discourse.

Non l’ho mai fatto prima e sembra un po’ intimidatorio. Non ho idea da dove potrei iniziare. Mi chiedo se qualcuno sia già passato per il percorso che sto seguendo e abbia già trovato e pubblicato una soluzione.

Mi chiedo se fare qualcosa di simile a quello che ha fatto questo ragazzo qui potrebbe isolare i container creati nel proxy inverso in modo da poter completare un’installazione, o risolvere correttamente il mio proxy inverso esterno in esecuzione nel suo container docker?

2 Mi Piace

È una delle parti avanzate del lavoro di sys admin, ma Docker Compose è fondamentalmente come giocare con dei Lego molto fighi, non è difficile come sembra e c’è molto aiuto sul web.

Sarebbe una grande esperienza di apprendimento per sviluppare un’abilità molto trasferibile, provaci!

Anche il tuo link sembra un altro buon posto per tentare.

2 Mi Piace

Sì, è quello.

Non è poi così facile, però. Quando l’ho fatto, ho comunque usato launcher per creare un’immagine, inviarla a un repository e poi avviarla. Poi devi anche avere i mezzi per precompilare gli asset, migrare il database e forse qualcos’altro.

Seguire il metodo “esegui altri siti web” è probabilmente la cosa da fare.

3 Mi Piace

Sì, non è banale, ma ho lavorato con una soluzione Docker Compose piuttosto valida presso un cliente, senza launcher in vista!

Ho anche un’installazione di sviluppo cloud privata che utilizza DC…

2 Mi Piace