Installation auto-hébergée derrière une IP non-routée publiquement

Bonjour,

À des fins de tests/validation, j’installe discourse sur une machine Ubuntu chez moi dont l’IP locale a été fixée, on va dire 192.168.1.200.
Elle est derrière une box avec une IP publique, on va dire A.B.C.D, non full-stack. :roll_eyes:

Pour une raison indépendante de ma volonté, je ne peux pas la faire changer pour une full-stack. Je suis donc limité dans le NATing sur la box à un range de ports rentrant entre des valeurs très hautes, donc ni 443 ni 80.

Pour l’exemple, on va dire que j’ouvre le port entrant 50000 en TCP/UDP vers 192.168.1.200 sur le port 443.

A priori donc, un requête arrivant sur l’IP publique A.B.C.D sur le port 50000 devrait être poussée sur 192.168.1.200:443

J’ai un nom de sous-domaine, on va dire : forum.mondomaine.me avec les enregistrement A et AAAA qui pointe vers l’IP publique A.B.C.D (pour IPv4).

J’ai rajouté une redirection à ce niveau de https://forum.mondomaine.me vers mon IP public A.B.C.D:50000

Si j’essaie d’accéder à l’URL précitée, je vois bien le changement en A.B.C.D:50000 et bien sûr un rejet puisqu’il n’y a pas (encore) d’écoute sur 192.168.1.200:443

Là où ça se corse, c’est qu’à l’installation (mode docker) de discourse sur ma machine, l’étape de vérification de la configuration du domaine échoue :

/!\ Port 443 of this computer does not appear to be accessible using hostname: forum.mondomaine.me
/!\ Connection to http://forum.mondomaine.me (port 80) also fails.

Il doit y avoir une solution, ou un contournement, mais pour le moment je vois pas…

C’est un réseau domestique ? Est-il possible que votre FAI bloque le trafic ? Pourquoi ne pas utiliser un VPS à la place ?

(EDIT : Utilisez un tunnel Cloudflare recommandé dans le document lié ci-dessus)

Merci pour les réponses.

C’est un réseau domestique ?

Installant Discourse sur une machine Ubuntu chez moi, comme je l’écrivais initialement, oui c’est bien un réseau domestique.

Est-il possible que votre FAI bloque le trafic ?

C’est précisément le cas quand l’IP publique n’est pas full-stack. Et à ce stade, je ne peux rien y faire.

Pourquoi ne pas utiliser un VPS à la place ?

Parce que pour ce test je n’envisage pas l’achat d’un VPS. Mais je suis d’accord : un VPS serait la solution si j’en avais déjà un sous le coude. Et je n’aurais pas hésité.

Quant à l’utilisation d’un tunnel Cloudflare, de ce que je viens de constater, ça me semble une usine à gaz pour si peu… Et puis Cloudflare…

Si seulement il était aussi simple et rapide d’installer Discourse sur un réseau local isolé (ou pas)…

J’ai bien vu qu’il y a un guide quelque part (dont j’ai déjà perdu l’URL) pour un intranet, qui m’a également semblé assez lourd aussi, surtout comparé à une install standard !

Laissons tomber, ce n’est pas vital, je n’ai pas envie d’y passer des heures. :laughing:

Merci encore pour les réponses.

Peut-on contourner cette étape lors de la configuration ?

Comme expliqué dans ce post de Jay, le test de port peut être ignoré en utilisant :

 --skip-connection-test

Avez-vous besoin d’une connexion provenant de l’extérieur de votre LAN pour tester ou dans le cadre de votre développement ?

Désolé si j’ai mal compris le problème.

Pour le temps passé à tout réparer entre votre propre réseau, votre FAI qui achemine correctement le trafic, et vous-même en veillant à ne laisser aucune porte ouverte à un acteur suspect pour pirater votre réseau domestique, l’utilisation de tunnels Cloudflare est plutôt simple et directe à mon avis. Surtout sur un réseau domestique.

Discourse nécessite HTTPS. Sauf si vous savez comment obtenir un certificat et l’installer comme décrit ailleurs, votre meilleure option est d’installer Discourse sur une connexion internet résidentielle avec un tunnel Cloudflare.

Je pense que c’est ainsi qu’on installe son propre certificat : Activer SSL / HTTPS pour votre configuration Discourse Docker.

Merci @Andrew_Rowe for the tip!

Non, je n’ai pas besoin d’une connexion provenant de l’extérieur de mon LAN pour tester.

J’ai donc lancé install-discourse avec --skip-connection-test et comme espérée, l’installation s’est poursuivie sans bloquer sur la vérification du domaine.

Il faut penser à stopper nginx s’il tourne déjà (hors docker).

Mais c’est bon ! Discourse tourne dans son container !

Mais… ostensiblement on a maintenant un problème de certificat.

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)

J’ai bien sûr suivi ce sujet et vérifié l’existence de /var/discourse/shared/ssl/forum.mondomaine.me.cer et c’est bon, comme le .key et deux autres fichiers en .me_ecc.cer|key

J’ai reconstruit le container et c’est pareil.

Je confirme qu’installer Discourse sur une bécane de test en local, c’est le parcours du combattant ! :joy:

Ce n’est visiblement pas encouragé.

Et à défaut d’une solution simple (non je n’utiliserai pas CloudFlare, inutile d’aller dans ce sens merci), je pense que ce sera mon dernier message sur le sujet. :grinning_face_with_smiling_eyes:

On n’en achète pas vraiment. On le loue.

Sans doute @merefield merci pour la précision. Je vais également préciser ce que je voulais dire : je ne prévois pas de dépenser d’argent pour un VPS.

Juste une chose de plus, j’ai noté que la commande docker run comportait DISCOURSE_FORCE_HTTPS=true, j’ai donc essayé à false puis relancé après reconstruction du container.

Aucun changement.

Si vous n’avez pas l’intention d’utiliser un tunnel de style Cloudflare et que vous souhaitez simplement explorer, utilisez un dev-install.

Merci ! Je regarderai ça effectivement.