Reverse proxy pour plusieurs nom de domaine

Bonjour,
Je viens de m’installer un Raspberry pi 4 qui me permet d’avoir un serveur de blog avec Wordpress, un serveur cloud avec Nextcloud et un serveur mail avec Postfix et Dovecot. Tout fonctionne très bien comme ça avec un nom de domaine et des utilisateurs (tous de ma famille) avec chacun leur adresse mail et leur cloud perso.
Je voudrais maintenant faire une copie de ce qui existe sur un deuxième Raspberry pi avec un autre nom de domaine et d’autres utilisateur. J’ai entendu parler de reverse proxy, mais la j’avoue ne pas très bien comprendre comment avec une seule connexion internet je vais pouvoir servir deux noms de domaine différents. Pour les nom de domaine encore je crois que j’ai compris qu’un reverse proxy permet de rediriger les noms de domaines vers les bons serveurs, mais pour la gestion des ports pour les serveurs mail je sèche un peu.
Si quelqu’un connaît ce domaine j’aimerais bien un coup de main sur la configuration de ce fameux reverse proxy.

Déjà, avec Virtualmin, tu aurais été en mesure de faire pas mal de chose facilement, comme la copie des comptes.

Je ne connais pas ta configuration de tes domaines, de tes IP et de ce que tu vais faire. Merci la prochaine fois de t’attarder à la partie sur lequel tu cherche de l’aide, comme ici les DNS et domaine, et non les serveurs. De plus, je ne sais pas si tu contrôle ton domaine, si tu gère ton Web avec Apache (best) ou NGinx (bad).

Le domaine est une version texte de ton adresse IP, et l’adresse IP est associé qu’a un seul appareil, tu ne peux pas le partager sans avoir une gestion centralisé. Si ton serveur 1 reçois tout les appels du Web (DMZ), soit tout les ports ouvert directement, c’est lui qui gère les entrées, si tu es derrière un routeur, et que tu as fait des redirection, alors dans certains cas tu peux ajuster le pointage sur un port différent (redirection de port). Pour certains services (port) partagé, soit tu centralise, soit tu use de redirect ou de proxy pour faire le travail.

Je ne travail pas dans ce type de configuration, qui devient vite compliquer a gérer et dont les systèmes peuvent être interdépendant. Moi même j’aime l’idée d’avoir le contrôle sur mes choses, c’est pour ça que j’ai plutot opter pour un vrai serveur dédié J’ai par exemple 8GB Ram 8 Coeurs, 1Tb sur 1Gbps pour moins de 20Euro/mois. C,est plus stable, rapide et facile a gérer. J’ai déjà fait en local, et ça peut vite dégénérer, et en plus tu offre le service à ta famille (chapeau pour ça, moi on m’ignore avec ce genre d’idées :P) peut devenir problématique. Mais continuons avec ton projet dans l’état.

Alors la ton Serveur 1 sera surement le « Master », alors quand des services partager vont l’atteindre, si il doit rediriger, ce sera lui qu’il le fera.

Pour des serveurs de courriels, tu n’a qu’a gérer un seul serveur, tu peux mettre les courriels du domain2 dans la boite de domain1 sans problème, avec les « alias ». Alors inutile d’en monter sur le second serveur, tu gardera quand meme les services de base, pour que les communication par email produit par serveur2 puisse aller dans les boites de serveur1.

Pour le FTP, je crois qu’il est possible de faire de la redirection, mais ce serais du « bouncing », et ferais en fait que tu passe toujours les fichiers depuis serveur2, dans le ftp de server1 pour apres tu les recois.

Le SSH, j’ai aucune idée si il est en mesure de le faire, mais le plus simple et « safe » en cas de problème est de passer directement par une redirection de port sur le routeur, et sinon en accès direct quand tu es local (avec ip local).

Le serveur Web, est aussi géré par Nextcloud. Alors la faut installer Nextcloud sur le serveur 1 dans un VHost spécifique, tu va créer un proxy dans le serveur1 pour pointer vers le serveur2 si tu as un serveur web ou Nextcloud actif.

Sur serveur 2, il devra aussi avoir les Vhost correspondant.

Vu que c’est un proxy, tu auras des problèmes;

  • Faudra créer de al redirection sur certains port de Serveur1 vers Serveur2 dans certains cas ou configurer des port différent pour certains services, car il ne prenne pas la gestion de VHost
  • Certaines formulation des liens peuvent être buggés
  • Certains transfert va transiter par Serveur1 même si tu travail sur Serveur2 techniquement.

Alors il faut organiser l’ensemble, voir les options qui semble les mieux. Un partage de service similaire entre 2 appareils (2 nextcloud) n’est pas pratique, tu as deux services identiques à gérer. Il vaut mieux utiliser les redirection de port, et que les VHost Web pour gérer tes ressources/services, et te limiter a des configuration qui demande l’usage de proxy/vhost au minimum dans ta structure.

Car ici, si serveur1 tombe en panne, serveur2 n’est pas atteignable.

C’est comme configurer un serveur en NAT, ce qui est très compliqué. Habituellement ce genre de configuration travail plsu sous un principe d’un serveur 0 qui gère tous les ports et qui va rediriger les appels sur serveur1, serveur2, serveur3 selon les demandes, et va servir alors que de « filtre réseau » ou un genre de gros « DNS avec proxy ». Mais c’est d’une complexité que j’en vois aucunement l’intéret.


Si tu arrive a nous expliquer clairement la vision global du projet, les usages, et même les raisons qui motive un second RPi, nous pourrion cartainement arriver construit un beau projet facilement.

Alors je vais essayer de répondre à tout. D’abord ce qui existe:
En premier lieu, une box free qui sert de routeur pour tout mon réseau.
Ensuite je vais vous épargner les téléviseurs pour les grands et les consoles pour les petits.
On en vient au sujet de mon post.
Un Raspberry pi 3 avec RaspiIOS Lite dans sa version 13, avec Pi-Hole et Nginx Proxy Manager.
1 Switch pour connecter les deux Raspberry pi 4.
2 Raspberry pi 4 en parallèle avec chacun RaspiOS Lite dans sa dernière version, une adresse en ipV4 et une en ipV6, un nom de domaine, genre serveur1.xyz et serveur2.xyz avec wordpress et nextcloud, jusqu’à présent tout se passait bien grâce à Nginx Proxy Manager qui distribue les requettes vers les serveurs en fonction des demandes.
Sur le serveur1 j’ai installé un serveur de mail avec Postfix et Dovecot qui fonctionne parfaitement mais qui utilise des numéros de ports pour envoyer ou recevoir les courriels le 25 pour l’envoi et le 143 ou 993 pour recevoir les mails et c’est là que le problème se pose. Comment on fait pour rediriger les ports en fonction de la demande.

Comment ils font chez OVH ou chez Gandi ?

Et pour finir un dessin c’est pas beau ça ??

Habituellement, tu dédouble les services que lorsque c’est requis, un hébergeur comme OVH ne va pas créer un serveur mail par domaine, mais gérer un seul serveur mail pour tout les domaines.

Cette configuration est souvent offerte lors de service Professionnel, mutualisé à haut volume de client, et pour centraliser les données, ce que OVH par exemple offre.

Alors si ont prend l’exemple d’un hébergeur Web, il peut configurer le domaine pour le « cluster client » sur n’importe lequel de ces machines, il va créer un compte et une gestion DNS/MX requise pour pointer vers sont serveur de courriel principal, alors l’utilisateur a un compte créé sur le serveur mail + sont serveur ou il y a son cluster.

Alors pour ton projet, tu crée tout les utilisateur sur le serveur avec le service email, et tu crée le compte sur le second pour sont service.

Dans d’autres configuration de serveur, les clients sont géré par serveur, c’est souvent le cas de serveur mutualisé à bas prix. C’est la méthode de gestion des plus petit joueurs des hébergement, c’est plus simple a gérer quand tu as des serveurs en location ou pour séparer les (type de) clients.

Pour te simplifier la vie, vu que tu n’a pas de panneau de gestion, te créer un script qui avec quelques question va créer les espace requis, dans ce script avec des choix de réponse, tu peux alors définir l’espace de travail des parties que tu veux configurer et le script automatise les configurations, pour le seconde serveur, tu peux lancer des commandes ssh en script pour le faire à distance.

Le plus beau serait en Web, mais commence par de quoi de simple, comme un script python ou bash (valider tes commandes et besoins).

Exemple de script…

Quel le username:
> utilisateur
Quel est le mot de passe:
> ********
Utilise un domaine personnalisé ? (laisser vide pour utiliser celui par défaut du serveur)
> 
Utilise tu les courriels ? (Y/N) (défaut Y):
> Y
Domaine principal du courriel (par défaut mondomain1.com) :
> mondomaine2.com
Créer d'autres alias ? (séparer chaque alias d'un ";" )
> john;jdoe;john.doe
Peut-il recevoir des courriels sur les autres domaines ? (Y/N) (par défaut N):
> N
Utilise t-il NextCloud ? (Y/N) (défaut Y):
> Y
Le compte NextCloud sera sur quel serveur ? (1,2,3...) (défaut 1):
> 2
...... etc...

Alors tu peux contrôler les parties de tes configs, par exemple dans le « faut log », tu pourrais permettre l’ajout d’un support de domaine.


De ce que j’en comprend, c’est que tu as déja une structure que tu gère, le pi-hole est souvent plus maniable pour des config précise qu’un routeur, alors tu peux regarder de là si tu cherche des ajouts de filtrage réseau avancé.

Après c’est de gérer la structure des compte et des serveurs/service. Je crois que le mieux pour « Visualiser » est de considérer dans la compréhension des choses que tout est dirigé et géré par Serveur1, et tu passe par le domaine2 que pour les usages en lien avec ce qui a Serveur 2.

Alors envoyer un email à domaine2 est identique a envoyer un email a dmaine1/serveur1, mais , contacter le site web de domaine2 sera dirigé que sur serveur2.