Proxmox et pfSense sur serveur dédié (nouvelle infra !)

Proxmox et pfSense sur serveur dédié (nouvelle infra !)

5 juillet 2020 12 Par Mairien Anthony

Proxmox sur dédié, VM pfSense et Traefik, conteneurs Docker… et plus encore !

Bien le bonjour !

Alors d’entrée de jeu, je tiens à vous dire que j’ai rarement été aussi content et impatient d’écrire un article ! Car oui, ici après une pause d’un mois environ, il est enfin temps de me remettre dans le bain après la migration de mon « infra ».

De quoi allons-nous parler aujourd’hui ? Et bien de la location de mon premier serveur dédié, de la migration des mes anciens services sur celui-ci, et de tout ce que cela implique. Bien entendu, cet article ne sera pas un tutoriel comme j’ai l’habitude de faire mais plutôt un « débrief », où je vais un peu vous parler des galères rencontrés et des solutions choisies.

Sans plus tarder, commençons !

I) Pourquoi migrer, et d’où l’on vient

Et bien oui, c’est la petite partie un poil historique où je dois d’abord faire l’état des lieux, car avant de déménager autre part, faut bien se rappeler d’où l’on vient.

Donc, actuellement, enfin avant la migration plutôt, j’avais un simple VPS Debian chez Pulseheberg, avec un service HostedMail2G pour les mails et je payais 4€ par mois pour le tout, autant dire rien du tout. Leurs services étaient d’une rare qualité, ça je tiens à le dire ! Vous ouvrez un ticket un dimanche à 12h00 vous avez une réponse à 12h05… du jamais vu !

M’enfin bref, le fait est que mon petit VPS qui abritait mon blog Notamax ainsi que mon Nextcloud commençait un peu à faiblir avec ses 2Go de RAM seulement. Puis c’était du OpenVZ, avec un kernel qui était en version 2.6 donc bon… tout ça commençait à dater.

Les raisons qui m’ont poussé à passer sur serveur dédié ? Sans surprises je pense –comme beaucoup de « geeks »– c’était le fait de pouvoir bidouiller encore un peu plus, de pouvoir encore plus avoir de libertés… Puis j’avais envie de pouvoir faire mumuse avec Docker, de pouvoir setup plusieurs services… ce qui m’était impossible jusqu’ici.

II) Le passage sur dédié

J’y pensais depuis assez longtemps, et j’avais à l’époque vu l’excellent article de Zwindler qui expliquait pas à pas comment installer une VM pfSense sur un Proxmox dédié pour faire le routage et blabla. Sauf que ce qui me bloquait, c’était le prix. Et bah ui.

Pour moi, pas question de mettre plus de 30€ par mois pour un serveur sur lequel je n’hébergerai de toute façons pas 200 services, donc bon… j’ai longtemps cherché, et au final mon choix s’est fait sur Online (qu’on aime ou qu’on aime pas, au bout de presque un mois à l’heure où j’écris ces lignes, je trouve que tout est correct, à Up en temps voulu).

Voici donc la config de la bête, pour la modique somme de 20€ par mois (prends-toi ça, Kimsufi !) :

Comment ça ? Je suis un idiot car j’aurais pu avoir du SSD ou avoir un Xeon plus puissant etc etc ? Je vous arrête de suite ! Mes critères étaient très basiques étant donné que j’étais novice en la matière : je voulais un stockage assez conséquent (Nextcloud, serveur mails, et cie) et je visais le 16Go de RAM voir 14Go au minimum, donc bon. Je pense que rapport/qualité prix, ça se pose là.

M’enfin bref, je ne suis pas là pour faire de la pub pour Pulseheberg/Online, le fait est que j’ai choisi cette offre qui me convenait parfaitement (et c’est très personnel, à chacun ses besoins).

On va maintenant passer au chapitre suivant !

III) Prise en main et découverte

J’ai donc loué mon serveur dédié, installé une Debian 10 toute fraîche, et installer mon Proxmox à la main, comme un grand ! (En réalité c’est assez trivial, mais soit…). Pourquoi ne pas avoir pris directement la version Proxmox installable en un seul clic ? Car celle-ci était disponible uniquement dans une version qui datait déjà, donc j’ai préféré me mettre à jour.

Une fois le Proxmox installé, je ne vais pas épiloguer des heures, car j’ai « bêtement » suivi le tutoriel récemment mis à jour sur le site de Zwindler, disponible ici : https://blog.zwindler.fr/2020/03/02/deploiement-de-proxmox-ve-6-pfsense-sur-un-serveur-dedie/

Je tiens quand même juste à dire une chose, des fois que l’auteur de l’article passerait ici… je me suis pris la tête pendant UNE JOURNÉE car sois-disant il fallait utiliser le driver VirtIO alors qu’en réalité il vaut mieux utiliser le Intel E1000 ! Non seulement il y a des soucis DNS (tout le réseau est ok, mais les VMs ne savent pas faire de requêtes DNS…) mais en plus cela bride énormément la vitesse du réseau ! J’ai lu dans les commentaires de l’article qu’il fallait désactiver l’IPv6, ou encore prier X ou Y divinité pour régler le soucis, mais bon, au final j’ai bien fait de faire divers tests pour m’en dépatouiller 😅

Le fait est que cette série d’articles m’a beaucoup aidé, en la suivant à la lettre on y arrive sans soucis, ce qui est assez rare ! (Combien de tutoriels, donc certains étant miens, sont encore parfaitement fonctionnels à l’heure actuelle ?)

Bref, une fois fait j’avais donc mon Proxmox et ma VM pfSense de disponible. J’ai donc pu passer à l’installation de ma VM Traefik…

IV) Entre la théorie, et la pratique…

Car oui, je pensais en ayant fait l’un ou l’autre article sur Traefik le maîtriser un minimum, mais que nenni ! Ou dû moins, pas tout à fait. Je m’explique.

Tout d’abord, et certes j’aurais peut être du l’afficher en début d’article, mais voici un schéma réalisé rapidement sur draw.io pour vous montrer en avance le résultat final de ma nouvelle infrastructure :

On va se concentrer sur Traefik pour le moment. Donc, grosso modo, ça se passe de la façon suivante :

  • Tout ce qui arrive sur l’IP du Proxmox est redirigé vers l’adresse WAN du pfSense, jusque là ok ;
  • Le pfSense accepte ou non les requêtes, si c’est du HTTP/HTTPs il redirige tout vers le Traefik, ici aussi ok ;
  • Le Traefik vérifie l’header HTTP et en fonction du domaine il redirige les requêtes vers le service correspondant (Gitea, Nextcloud…) là encore pas de soucis ;

Cependant, pour certains services, comme Passbolt par exemple, j’ai préféré passer par une VM classique plutôt que Docker, car sinon c’était trop « fouilli », dans le sens où pour tout mes services j’ai bien séparé la BDD du dit service, et tout est plus ou moins propre ;

J’ai donc dû dire à Traefik d’aller transmettre les requêtes pour Passbolt par exemple directement sur telle adresse IP, qui est une VM et pas un conteneur, mais j’ai dû par plusieurs fois quémander de l’aide par ci par là pour m’en sortir car je n’avais jamais utilisé le provider « @file » et autre !

Tout ça pour dire que, et comme la plupart des gens le savent, entre la théorie et la pratique, il y a parfois un monde… m’enfin tout est fonctionnel, donc niquel !

Pour l’anecdote, j’avais au départ songé à installer un Haproxy sur la VM PfSense directement, pour faire en sorte que « Si x.domain.com, rediriger vers telle IP, si y.domain.com, rediriger vers telle IP… » puis j’ai réussi à m’en sortir avec Traefik donc encore mieux. Surtout que Traefik permet de créer/renouveler facilement des certificats Let’s Encrypt, et forcer l’HTTPS très facilement dès qu’on a maitisé l’outil 😛

Pour la seconde anecdote, il en va de même pour le serveur DNS Bind9, un paquet existe bien pour pfSense mais pour d’obscures raisons et après avoir passé deux jours dessus, il n’a jamais voulu fonctionner… je me suis donc basé sur un ancien article que j’avais fait, et j’en ai fait une VM qui fonctionne du tonnerre !

V) La lumière au bout du tunnel~

A ce niveau là, j’avais donc mon Proxmox installé, mon pfSense entièrement fonctionnel, mon Traefik qui fait son job de Proxy de manière exemplaire, donc qu’est-ce qu’il me restait ? Et bien le serveur mail ! Entre temps (et pour ne pas faire un article qui serait trop long), j’avais d’ores et déjà migré mon blog notamax.be. J’ai donc choisi là aussi de passer par une VM classique pour le serveur de mail, en utilisant la solution « iRedMail » que je ne connaissais pas. Je l’installe une première fois, je teste l’envoi/réception, tout est ok ! Sauf que le nom d’hôte de ma machine était « srv-mail.notamax.local », et donc mes mails envoyés arrivaient d’office dans les spams… 2,5/10 sur mail-checker.com, c’est dire ! J’ai donc dû tout reprendre depuis le début, en mettant un nom d’hôte du genre « mail.notamax.be » et là bam, on tape le 8,5/10 en rajoutant au passage quelques champs TXT qui vont bien !

C’est peut être trivial pour certains d’entre vous, mais je me rappelle d’une époque pas si lointaine où je feuilletais les tutos sur le net parlant de la mise en place d’un serveur mail… le genre de tutos ou plutôt de série de tutoriels faisant X pages où les gens se tiraient les cheveux sur la mise en place de postfix, devcot, spamAssassin, et j’en passe… je dois dire qu’iRedMail est extrêmement simple à mettre en oeuvre, et pour paraphraser un vieil ami, qui « juste marche » !

Et bien voilà voilà, à ce niveau là j’avais déjà migré mon blog, créé mon serveur DNS, mon serveur Mail, migré mon Cloud aussi, et j’avais aussi installé mon gestionnaire de mots de passe ainsi que mon petit GitTea. En amont de tout ça, j’avais aussi setup mon joli petit tunnel VPN OpenVPN qui fonctionne de manière classique mais efficace. Vient donc le chapitre « Conclusions & anecdotes en vrac » !

VI) Conclusions & anecdotes en vrac

A l’heure où j’écris ces lignes, j’ai donc totalement fini de migrer mon « infrastructure », je mets l’appellation entre guillemets car pour moi un VPS ainsi qu’un service mail ce n’est pas réellement une infra’, mais soit. Il faut savoir que j’aurais mis 21 jours très exactement pour réaliser la main d’oeuvre, je suis assez fier haha 😁

Surtout que :

  • Je ne m’y connaissais pas plus que ça en serveur dédié, dans le sens où j’étais bien plus habitué aux VPS donc niveau matériel, prix etc j’ai dû me faire un peu la main ;
  • Je n’avais jamais fait de routage Proxmox/pfSense auparavant, même si l’article de Zwindler est très facile à appréhender ;
  • Il y a eut au moins 3-4 jours où je n’ai pas travaillé sur la migration, par flemme/empêchement, ce qui réduit encore le temps complet de la migration ;

Donc bon, c’est pas si mal ! Désormais j’ai donc :

  • Mon blog notamax.be, qui n’a pas changé ;
  • Mon propre GitTea, pour être honnête je ne sais pas si il sera aussi peuplé que mon Github, mais sait-on jamais ;
  • Mon Cloud sur Nextcloud, qui n’a pas changé lui non-plus ;
  • Mon gestionnaire de mots de passe sur Passbolt, au revoir Keepass ;
  • Mon propre serveur DNS pour mon réseau local « dans le Cloud », ainsi que mon serveur mail ;
  • Mon serveur OpenVPN sur ma VM pfSense, qui fonctionne sans problèmes ;

Et sûrement d’autres services qui viendront se greffer par-ci par là, pas encore trop d’idées pour le futur. Ce qui est sûr, c’est que je continuerai les articles, mais j’avoue que je n’ai pas pu être très présent le mois dernier, vous m’en excuserez !

Pour finir, voici une liste basique avec différents points qui m’ont plus ou moins marqué suite à cette migration, et pour le reste, je vous retrouve en commentaires !

  • L’histoire du driver VirtIO/Intel E1000 ;
  • Le fait que HaProxy/Bind9 ne semble soit, pas fonctionnel –mais j’en doute– soit relativement complexe à mettre en place sur un pfSense… ;
  • Le fait que lorsque l’on créé un conteneur Docker MariaDB, et qu’on doit supprimer celui-ci puis le relancer, si l’on change entre temps le mot de passe du docker-compose sans supprimer le dossier « data » (ou tout autre dossier mappé sur /var/lib/mysql), le mot de passe choisi ne passe pas car l’ancienne BDD existe toujours… j’y aurais passé près de deux jours avant de m’en rendre compte 😬
  • Le fait d’apprendre à planifier peut être un minimum avant de me lancer tête baissée dans divers choses, comme j’ai la fâcheuse habitude de faire si souvent~ ;
  • Thunderbird > Outlook, et ce depuis le début… quand je vois la facilité pour exporter/importer des mails depuis Roundcube ou autre, je me dis que Microsoft a encore beaucoup à apprendre ;
  • La migration d’un site WordPress vers un conteneur est bien plus aisé que ce dont j’aurais pensé, il suffit d’exporter la BDD et la ré-importer dans le conteneur MariaDB rattaché au conteneur WordPress en question ;
  • Proxmox est vraiment un excellent hyperviseur, sauf lorsqu’il s’agit de remonter la mémoire RAM utilisée… même en installant les agents invité et en bidouillant avec le ballooning… ;
  • Second petit bémol pour Proxmox, par rapport aux conteneurs LXC… divers petits soucis du genre impossible d’afficher la console ou de se log en SSH avec les configs par défaut, étrange ;

A très vite pour de nouveaux articles !