Esecuzione di Discourse docker insieme ad Apache

Ciao.

Sto cercando di configurare Discourse Docker sul mio server esistente. Non ho altri container Docker in esecuzione.

Il mio server esegue Apache (siti WordPress) e alcuni altri servizi web.

Non riesco a capire come reindirizzare il mio sottodominio ‘forum.rebelscience.club’ al mio container Docker.

Quando mi viene chiesto:

Hostname per il tuo Discourse? [discourse.example.com]: forum.rebelscience.club

Vedo quanto segue:

Verifica del nome di dominio . . .
ATTENZIONE: La porta 443 del computer non sembra essere accessibile utilizzando l'hostname: forum.rebelscience.club.
ATTENZIONE: Anche la connessione a http://forum.rebelscience.club (porta 80) fallisce.

Ciò suggerisce che forum.rebelscience.club risolve un indirizzo IP che non raggiunge questa
macchina su cui stai installando Discourse.

La prima cosa da fare è confermare che forum.rebelscience.club risolve l'indirizzo IP di questo server.
Di solito si fa questo nello stesso luogo in cui è stato acquistato il dominio.

Se sei sicuro che l'indirizzo IP risolva correttamente, potrebbe essere un problema del 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

Non sono sicuro di come impostare tutto ciò. Le porte 80/443 sono disponibili, ma sono puntate al mio dominio principale, non al mio sottodominio.

Qualsiasi consiglio è molto apprezzato.

Ciao @rebelCoder,

Questo argomento è stato discusso ampiamente qui su meta; puoi cercare su meta “apache reverse proxy” e trovare numerosi argomenti completi e molto dettagliati.

In sintesi, devi configurare il tuo virtual host del server Apache per funzionare come reverse proxy verso Discourse.

Le configurazioni esatte di Apache2 per questa impostazione sono state pubblicate su meta diverse volte.

Spero che questo ti sia d’aiuto.

Scusa, avrei dovuto menzionare che ho consultato e provato alcune soluzioni da questo forum e anche da Digital Ocean. Ma non riesco ancora a farla funzionare. Non ho mai configurato Docker prima d’ora.

Lascia che ti condivida le mie impostazioni attuali:

/ets/hosts:
127.0.0.1       forum.rebelscience.club

Il file hosts e il record DNS funzionano, dato che oggi avevo phpBB in esecuzione lì. Ora sto cercando di indirizzarlo verso un contenitore Docker con Discourse.

In containers/app.yml

Ho aggiornato le porte:

expose:
  - "8081:80"   # http
  - "8443:443" # https

In /etc/apache2/sites-enabled/discourse.conf

<VirtualHost *:80>
  ServerName forum.rebelscience.club
  ServerAlias www.forum.rebelscience.club

  <IfModule proxy_module>
    ProxyPreserveHost on
    ProxyPass / http://localhost:8081/
    ProxyPassReverse / http://localhost:8081/
  </IfModule>
</VirtualHost>

Cosa altro mi sta sfuggendo? L’esecuzione di ./discourse-setup continua a fallire con il messaggio riportato nel post originale.

Credo che tu debba avere un virtualhost sulla porta 443; detto questo, l’errore sulla porta 80 è strano. Forse ti manca qualcosa (un CNAME?) nel tuo DNS?

È strano. Sembra un po’ troppo laborioso da configurare.

Ho solo un A Record per forum.rebelscience.club.

Ho aggiornato i miei file .conf con un certificato:

cat /etc/apache2/sites-enabled/discourse.conf

<VirtualHost *:80>
  ServerName forum.rebelscience.club
  ServerAlias www.forum.rebelscience.club

  <IfModule proxy_module>
    ProxyPreserveHost on
    ProxyPass / http://localhost:8081/
    ProxyPassReverse / http://localhost:8081/
  </IfModule>
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.forum.rebelscience.club [OR]
RewriteCond %{SERVER_NAME} =forum.rebelscience.club
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

cat /etc/apache2/sites-enabled/discourse-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
  ServerName forum.rebelscience.club
  ServerAlias www.forum.rebelscience.club

  <IfModule proxy_module>
    ProxyPreserveHost on
    ProxyPass / http://localhost:8081/
    ProxyPassReverse / http://localhost:8081/
  </IfModule>

SSLCertificateFile /etc/letsencrypt/live/forum.rebelscience.club/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/forum.rebelscience.club/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Ora vedo 503 Service Unavailable.

Sono completamente perso, cosa altro devo fare? setup.sh continua a fallire con il messaggio originale.

Nel caso (configurazione di esempio) sopra, dovresti esporre solo la porta 8081 su Docker (e non la porta 80 o la porta 443).

Le porte 80 e 443 sono esposte dal reverse proxy all’esterno del contenitore e quel traffico viene inoltrato alla porta 8081 (nel tuo esempio sopra), la porta che hai esposto all’interno (mappata sulla 80 all’interno).

Questo funzionerà solo se hai mappato la porta 80 all’interno del contenitore sulla porta 8081 (esposta all’host).

expose:
  - "8081:80"   # http

Spero che questo ti aiuti.

PS: @rebelCoder, la tua configurazione apache2 lato SSL manca di molte informazioni di configurazione necessarie.

Vedi questo post:

Questo non è più un problema e può essere chiuso.

Non puoi utilizzare discourse-setup. Dovrai modificare manualmente il file app.yml come descritto nei topic relativi all’esecuzione con Apache.