sono nuovo di Discourse e mi sono bloccato durante l’installazione. Ho creato una macchina virtuale Ubuntu Server 18.04 e ho seguito più o meno le istruzioni per l’installazione.
Quando dico “più o meno”, intendo che invece di un server cloud sto utilizzando Ubuntu Server. Non ho installato Docker, ma ho lasciato che fosse discourse-setup a installarlo per me. Inoltre, non ho ancora configurato un server di posta, sebbene abbia fornito risposte ragionevoli durante il processo di configurazione. Non sono sicuro che questo possa essere il problema principale. DNS è correttamente configurato e il server ha un indirizzo IP statico.
Dopo il bootstrap, quando navigo all’FQDN del server, vedo la pagina “Welcome to nginx!” invece di “Congratulations, you installed Discourse!”.
Questa installazione è per un ambiente di laboratorio e non sarà accessibile pubblicamente.
L’unico modo per visualizzare quella pagina è se hai indirizzato il DNS al server sbagliato, oppure se NGINX si trova fuori dal container, occupando la porta 80 e impedendo al container di rispondere.
Se apporto il mio browser web direttamente all’indirizzo IP del server, visualizzo anch’io la pagina di benvenuto di Nginx.
Quando sono connesso via SSH al server Ubuntu: marc@community:~$ locate nginx /var/discourse/image/base/install-nginx marc@community:~$
Inoltre, mentre sono sul server Ubuntu: sudo find / -iname "*nginx*"
…molti file sotto /var/lib/docker/overlay2… /var/discourse/image/base/install-nginx /var/discourse/shared/standalone/letsencrypt/deploy/nginx.sh /var/discourse/shared/standalone/log/var-log/nginx
Se Docker fosse in ascolto sulla :80, come farebbe qualsiasi installazione riuscita (e come richiederebbe perché nginx all’interno del contenitore possa vedere qualcosa), vedresti:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 890 root 4u IPv6 961922 0t0 TCP *:http (LISTEN)
Se nginx non è installato all’esterno del contenitore e Docker non è in ascolto su quella porta, l’unico altro modo per vedere la pagina di benvenuto di nginx è una configurazione di rete errata.
Sembra che tu abbia ragione. Output dell’esecuzione di nmap dal mio laptop all’indirizzo IP del server:
Avvio di Nmap 7.01 ( https://nmap.org ) alle 23:34 AEST del 10-04-2020
Rapporto di scansione Nmap per community.aureus-group-sb.com (192.168.12.35)
Host attivo (latenza 0,0010s).
Porte non mostrate: 999 chiuse
PORTA STATO SERVIZIO
22/tcp aperto ssh
Indirizzo MAC: 0C:8B:FD:CD:AF:EB (Intel Corporate)
Nmap completato: 1 indirizzo IP (1 host attivo) scansionato in 1,74 secondi
Ricorda, un problema di rete potrebbe essere, ma non è limitato a:
Una policy sulla VM che blocca l’accesso (ufw o simili)
Una policy sul server virtuale che blocca l’accesso (modalità di rete non configurata correttamente)
Una policy sulla rete non configurata correttamente (ACL tra le sottoreti)
DNS configurato in modo errato
È un problema di Discourse solo se nessuna delle condizioni sopra è vera. Stai seguendo l’installazione standard, ma, come ammetti tu stesso, stai installando in un ambiente tutt’altro che standard.
Se la tua organizzazione può permettersi i 5 $ al mese, potrebbe essere più economico, in termini di tempo, spostare tutto sul cloud e limitare il firewall del VPS cloud in modo che serva le pagine solo al tuo ambiente.
Al momento, mi occupo principalmente dell’aspetto formativo relativo alla configurazione di questo ambiente. Una volta che avrò il controllo della situazione, esamineremo sicuramente le opzioni di hosting.
Per quanto riguarda gli aspetti di rete che hai elencato:
ufw è inattivo e iptables è in esecuzione: non ho apportato modifiche all’installazione predefinita di Ubuntu Server.
** Esaminando la configurazione di iptables, la catena input ha una policy per accettare tutto, e lo stesso vale per la catena output. La catena forward presenta alcuni riferimenti relativi a Docker (vedi sotto).
L’unica vNIC della VM è configurata in modalità Bridge, collegandosi direttamente alla rete fisica.
Il laptop da cui sto lavorando e la VM si trovano sulla stessa subnet.
Non sono sicuro di quali siano i requisiti esatti per il DNS. Ho cercato di trovare tali specifiche, ma non sono riuscito a reperire un documento definitivo. Per quanto riguarda il DNS, tuttavia, riesco a eseguire il ping del server tramite nome, FQDN e indirizzo IP. Non sono sicuro che ci sia qualcos’altro da configurare in relazione al DNS.
Quale politica di rete esiste tra la VM e il mondo esterno?
Se il comando git pull è andato a buon fine e hai potuto eseguire discourse-setup, ci sarebbe stato qualcosa che avrebbe impedito la connessione a GitHub per scaricare il contenuto del contenitore?
Se il server non è raggiungibile tramite un indirizzo pubblico, Let’s Encrypt fallirebbe. Quindi, hai modificato il file YML per disabilitare HTTPS?
La VM può connettersi a Internet e non ci sono restrizioni per l’accesso a GitHub. Durante l’esecuzione di discourse-setup, ho lasciato vuoto l’opzione Indirizzo email dell’account Let’s Encrypt? (premere INVIO per saltare) [me@example.com]:.
Lasciare quel campo vuoto significa che non riceverai avvisi relativi a problemi con i certificati; ciò non impedisce al contenitore di tentare di abilitare Let’s Encrypt.
Ok, abbiamo evidenziato alcuni problemi più grandi, ma non riguardano l’OP. Da qualche parte nella tua rete c’è nginx che mostra una pagina, ma dai tuoi test sulla macchina virtuale risulta che nginx non è installato e docker non è in ascolto.
Una volta capito come ciò stia accadendo, il secondo passo sarà configurare correttamente il file YML. Per ora, devi individuare la fonte di quella pagina.
Ecco cosa ho appreso. Se spengo il server, non riesco a fare il ping (indirizzo IP, nome e FQDN). Quando provo a navigare all’indirizzo IP, ottengo la pagina standard “Impossibile connettersi” di Firefox.
Di conseguenza, concludo che non c’è un conflitto di indirizzi IP.
Dopo aver riavviato la VM, ora non riesco nemmeno a connettermi con il browser, ottenendo di nuovo la pagina standard “Impossibile connettersi”. Il comportamento è ora in linea con quanto ci aspettavamo dall’output di lsof -i:80.