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

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

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 !

20 comments

comments user
Loïc

J’ai une question, de curiosité : pourquoi louer un serveur dédié plutôt qu’acheter un petit serveur, voire un serveur d’occase ?
Pour un particulier, ça n’est clairement pas rentable de louer un serveur dédié. Votre choix n’est clairement pas une question de perfs, vu la config, Et ça n’est pas non une question de fiabilité non plus, sinon vous auriez loué 2 ou 3 serveurs ?
Serait-ce donc juste pour POCer pendant 1 ou 2 mois ?

    comments user
    bob

    J’ai eu la même pensée en lisant les lignes… Surtout qu’un Xeon v2 ça vaut 10€, tu te trouves une carte supermicro d’occaz et tu t’en sors avec un budget équivalent à un an de location d’un dédié…

      comments user
      Mairien Anthony

      Très bonne question Loïc et bonne remarque Bob ! Je vais tenter de m’expliquer 😛

      Déjà, je ne peux pas prendre de serveur chez moi, que ce soit du Rasperry jusqu’au serveur en rack, je ne peux pas pour diverses raisons (oui, ça m’embête sacrément mais bon). De plus, étant donné que j’ai fini mes études récemment, je cherche toujours et encore à tester de nouvelles choses et à m’auto-former.

      Donc pour moi, même si certes ça peut faire cher et que comme vous dites il y a forcément plus attractif autre part, j’ai voulu m’essayer à la location d’un dédié pour « voir comment ça marche dans les faits », comment relier un Proxmox à une pfSense, comment par la suite gérer l’adressage IPv6, comment réaliser des backups Cloud>Local etc.

      Mais comme vous avez dit, c’est sûr qu’on peut avoir tout ça chez soit, donc réellement auto-hébergé pour le coup, et pour moins cher. Dès que je pourrais déménager je verrais pour cette solution, entre temps ça me permet de faire mumuse un peu et de pouvoir tester quelques bricoles.

      En espérant avoir plus ou moins bien répondu ! 😅

        comments user
        Loïc

        Je comprends, ça peut être difficile d’avoir de la place pour y placer un « petit » serveur, ne serait-ce que du point de vue isolation sonore. Mon Proliant gen 6 format tour prend une place assez dingue et fait un bon gros bruit de ventilation, mais c’est 120€ fdpin.
        .

comments user
zwindler

Coucou, c’est zwindler 😉

Vraiment désolé que tu aies perdu autant de temps sur l’interface réseau :-/

Je vais mettre une petite bafouille dans l’article pour dire de pas trop insister avec VirtIO si ça marche vraiment pas 😉

    comments user
    Mairien Anthony

    Haha pas de soucis ! Je vais quand même pas râler sur un article que tu as pris le temps de faire bénévolement non ? Puis touuut le reste était niquel ! 😁

    J’allais justement commenter ton article en disant de ne pas prendre VirtIO si possible, du coup content de t’avoir « aidé » en retour 😉

      comments user
      Charles Bordet

      Coucou, c’est Charles 😉

      Je suis aussi désolé que tu aies perdu du temps avec VirtIO. En fait, pour ce problème et quelques autres, il semblerait que ça dépende du hardware et/ou de l’hébergeur. De mon côté j’utilise VirtIO et je n’ai eu aucun problème (une fois qu’on a bien coché la case « Disable hardware checksum offload » dans PfSense). Le DNS de PfSense marche, l’IPv6 aussi, et je n’ai pas problème de performance.

      Mais d’après ton expérience, et celles d’autres utilisateurs, il semblerait que parfois ça cause des problèmes. La seule raison que je puisse voir est une différence de hardware.

      Je ne connaissais pas Traefik avant de lire ton article. De mon côté j’ai une VM avec nginx sur laquelle je redirige tout le trafic HTTP/HTTPS, et nginx dispatche ensuite sur les bonnes VM en fonction des requêtes. Qu’est-ce qu’apporte Traefik de différent ?

        comments user
        Mairien Anthony

        Tu as sûrement raison, car j’avais bien coché cette case ainsi qu’une autre que j’ai oublié ; cela dit, comme j’ai dit à Zwindler juste avant je vous remercie du travail fourni ! Je ne râle en aucun cas haha 😁

        Traefik est plus orienté conteneurs (Docker, K8s, et autre), et permet via l’utilisation de labels de faire le boulot que ferait n’importe quel autre proxy, mais avec plus de facilité pour tout ce qui est conteneurs. Il permet aussi plus facilement (selon moi) de gérer tout ce qui est HTTPS (renouvellement automatique, facilité pour rediriger HTTP>HTTPs, et autre).

        Encore merci pour ton article, je tiens à le dire, car ce petit soucis que j’ai rencontré n’était qu’une broutille, et sans ton aide j’aurais été bloqué de bien d’autres manières ! 😉

comments user
molotov

Un firewall virtualisé, ça me fera toujours rigoler comme architecture 😉

    comments user
    Mairien Anthony

    Quand tu n’as qu’un simple serveur dédié, un poil obligé de faire comme ça 😉

comments user
Gannon

tien ça me rappelle des souvenir ça; j’avais plus ou moins la même chose il y a quelques années.
A savoir WAN -> les iptables qui vont bien -> PFsense -> parc de VM gérées par proxmox. Ca fonctionnait très bien! Par contre traefik n’existait pas encore … #jesuisvieux

Je sais pas si tu connais pi-hole, c’est un serveur DHCP/DNS … Menteur. Pourquoi menteur ? Car il permet de te débarrasser de toutes les publicités en se basant sur les blacklist de Ublock origine par exemple.Tu as peut être pas toutes les fonctionnalités de Bind9, c’est basé sur dnsmasq mais je l’utilise sur mon réseau perso à la place de la box sans aucun problème.

Denier point, je cherche à me faire un serveur personnel pour gérer tout ce qui est « infonuagique »* (Yunohost (nextcloud*, gitea, wallabag), homelab) et je suis très loin des 1 ans de serveur dédié ! Si des personnes qui passe par là on un exemple de config qui tiennent la route sans se ruiner, je suis preneur !

* : merci les Québécois 🙂
** : si tu connais pas c’est génial pour faire de l’auto-hébergement sans (trop?) ce cassez la tête.

    comments user
    Mairien Anthony

    Hey merci pour ton commentaire Gannon ! Pour Pi-Hole je connais oui mais que de nom ! 🙂

comments user
BRUNO PAPON

Bonjour,
L’offre chez scaleway ex online dedibox start 2 m sata avec avoton c2750, 16Go, 1x1To à 21.99 ht/mois est l’équivalent de l’offre qui tu as choisie car je ne trouve plus d’offre à 20 € avec 16go

    comments user
    Mairien Anthony

    Je n’ai pas vraiment saisi ?

comments user
Tib

Super c’est exactement le genre de config que je cherche à mettre en place pour l’instant sur un dédié…
Tellement dommage que vous ne faites que décrire l’organisation de l’infrastructure sans donner aucune information sur la façon effective dont vous l’avez mise en place :'(
Par exemple vous indiquez avoir déployé une « VM Traefik », une description de la procédure d’installation et une copie des fichiers de configuration de Traefik pour diriger les requêtes soit vers les containers Docker soit vers les autres VM auraient été d’une aide précieuse…

Merci tout de même pour le partage d’information, malgré que, outre le fait de savoir que « c’est possible », l’article n’est du coup pas d’une grande aide pour le visiteur à la recherche de solution 😉

    comments user
    Mairien Anthony

    Ah oui mais c’était là tout le but justement haha ! 😅

    Expliquer de fond en comble tout ce déploiement m’aurais prit beaucoup de temps, et comme dit en tout début d’article, l’ami Zwindler avait d’ores et déjà fait un très bon article que j’ai simplement suivi à la lettre, ou presque.

    Le lien est là si besoin: https://blog.zwindler.fr/2020/03/02/deploiement-de-proxmox-ve-6-pfsense-sur-un-serveur-dedie/

    Concernant la « VM Traefik » et cie, il est vrai que j’aurais pu un peu plus l’expliciter… malgré tout, j’avais déjà fait quelques articles qui parlaient de Traefik donc en croisant certaines recherches je pense que c’est faisable de manière solo.

    Cet article était plus un simple avis/retour sur expérience plutôt qu’un tutoriel comme j’ai l’habitude de faire.

    Si vous avez besoin d’aide ou autre, je serais ravie d’échanger par mails !

      comments user
      Tib

      Merci pour votre réponse Anthony, je serais en effet très intéressé de pouvoir échanger avec vous au sujet de quelques points techniques concernant ce type de déploiement. Suivant votre invitation, je vous contacte dès maintenant par e-mail…

comments user
Eustache

Bonjour Anthony,
Merci pour vos articles que je lis avec beaucoup d’intérêts et bravo pour leurs contenus.
Comme vous, j’ai étudié l’article de Zwindler qui est également très intéressant. Apparemment l’architecture repose sur Proxmox avec une VM Pfsense et ses autres VM derrière celui-ci.
Ma question, pensez-vous qu’il soit possible de remplacer dans cette architecture Proxmox par Docker qui semble-t-il a toutes les vertu du monde actuellement?
Le problème principal, étant la configuration de Pfsense sur un container, si impossible, une solution serait de garder Proxmox comme Hypeviseur et de créer 2 VM: 1 pour le Pfsense et le deuxième pour un gros Linux sur lequel on installerait Docker servant de Host pour les conteneurs représentant les VM derrière le Pfsense de Zwindler?
A votre avis cela aurait-il un intérêt.
Merci encore
Eustache

    comments user
    Anthony

    Bonjour à toi Eustache, et merci pour le compliment ! 🙂

    Pour ta question, effectivement tu es sur la bonne piste ! En tout cas c’est comme cela que j’avais procédé :

    – Hyperviseur Proxmox ;
    – VM pfSense ;
    – VM sous Debian sur lequel j’avais installé un conteneur Traefik, permettant de faire du port forwarding, SSL/TLS et plus encore à destination de mes autres conteneurs, tous hébergés sur la même VM Debian ;

    De cette façon, tout ce qui arrivait par exemple sur l’HTTP/HTTPS je faisais du port forwarding du pfSense à destination de la VM Debian, et de là Traefik récupérait puis dispatchait aux bons conteneurs, via des labels. J’avais fait un ou deux articles sur Traefik si besoin !

    Ciao 🙂

      comments user
      Eustache

      Bonjour Anthony,
      Super, merci pour ta réponse, effectivement je ne voyais d’autre architecture pour utiliser Docker qui est vraiment bien si on le maîtrise… En effet s’il existait une image docker pfsense, ce serait le top du top!!!
      Oui ton tuto Traefik m’intéresse pour trouver des idées.
      Autre: sur Dockerhub, je vois la présence d’une image qui s’appelle haxier/pfsense. En tentant de l’installer ça ne marche pas. Quelqu’un a-t-il réussi à l’installer sur un host docker?

Laisser un commentaire