Exécuter Discourse docker à côté d'Apache

Bonjour.

Je tente de configurer Discourse via Docker sur mon serveur existant. Je n’exécute actuellement aucun autre conteneur Docker.

Mon serveur exécute Apache (sites WordPress) et d’autres services web.

Je n’arrive pas à comprendre comment rediriger mon sous-domaine « forum.rebelscience.club » vers mon conteneur Docker.

Lorsqu’on me demande ceci :

Hostname for your Discourse? [discourse.example.com]: forum.rebelscience.club

Je vois ceci :

Checking your domain name . . .
WARNING: Port 443 of computer does not appear to be accessible using hostname:  forum.rebelscience.club.
WARNING: Connection to http://forum.rebelscience.club (port 80) also fails.

This suggests that forum.rebelscience.club resolves to some IP address that does not reach this 
machine where you are installing discourse.

The first thing to do is confirm that forum.rebelscience.club resolves to the IP address of this server.
You usually do this at the same place you purchased the domain.

If you are sure that the IP address resolves correctly, it could be a firewall issue.
A web search for "open ports YOUR CLOUD SERVICE" might help.

This tool is designed only for the most standard installations. If you cannot resolve
the issue above, you will need to edit containers/app.yml yourself and then type

./launcher rebuild app

Je ne suis pas sûr de la marche à suivre pour configurer cela. Les ports 80 et 443 sont disponibles, mais ils sont orientés vers mon domaine principal, et non vers mon sous-domaine.

Toute astuce sera grandement appréciée.

Salut @rebelCoder,

Ce sujet a déjà été largement discuté ici sur Meta ; vous pouvez rechercher sur Meta « reverse proxy apache » et trouver plusieurs sujets complets et très détaillés.

En résumé, vous devez configurer votre hôte virtuel Apache pour qu’il fonctionne comme un proxy inverse vers Discourse.

Les configurations exactes d’Apache2 pour cette configuration ont été publiées à plusieurs reprises sur Meta.

J’espère que cela vous aidera.

3 « J'aime »

Désolé, j’aurais dû préciser que j’ai consulté et essayé plusieurs solutions provenant de ce forum et de Digital Ocean. Mais je n’arrive toujours pas à faire fonctionner le tout. Je n’ai jamais configuré Docker auparavant.

Laissez-moi partager mes paramètres actuels :

/etc/hosts:
127.0.0.1       forum.rebelscience.club

Le fichier hosts et l’enregistrement DNS fonctionnent, car j’avais phpBB en cours d’exécution dessus aujourd’hui. Maintenant, j’essaie de le rediriger vers un conteneur Docker avec Discourse.

Dans containers/app.yml

J’ai mis à jour les ports :

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

Dans /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>

Qu’est-ce que je manque encore ? L’exécution de ./discourse-setup échoue toujours avec le message indiqué dans le message original.

Je pense que vous devriez avoir un virtualhost pour le port 443. Cela dit, l’erreur sur le port 80 est étrange. Peut-être manque-t-il quelque chose (un CNAME ?) dans votre DNS ?

C’est étrange. Cela semble un peu trop fastidieux à configurer.

Je n’ai qu’un enregistrement A pour forum.rebelscience.club.

J’ai également mis à jour mes fichiers .conf avec un certificat :

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>

Maintenant, j’obtiens une erreur 503 Service Unavailable.

Je suis complètement perdu. Que dois-je faire d’autre ? setup.sh échoue toujours avec le message d’origine.

Dans le cas (configuration exemple) ci-dessus, vous ne devriez exposer que le port 8081 sur Docker (et non les ports 80 ou 443).

Les ports 80 et 443 sont exposés par le proxy inverse en dehors du conteneur, et ce trafic est acheminé vers le port 8081 (dans votre exemple ci-dessus), le port que vous avez exposé à l’intérieur (mappé sur le port 80 à l’intérieur).

Cela ne fonctionnera que si vous avez mappé le port 80 à l’intérieur du conteneur sur le port 8081 (exposé à l’hôte).

expose:
  - "8081:80"   # http

J’espère que cela vous aidera.

PS : @rebelCoder, votre configuration apache2 côté SSL manque beaucoup d’informations de configuration nécessaires.

Voir ce post :

1 « J'aime »

Ce n’est plus un problème et peut être clôturé.

Vous ne pouvez pas utiliser discourse-setup. Vous devrez modifier le fichier app.yml manuellement, comme décrit dans les sujets concernant l’exécution avec Apache.