Proxmox Homelab: Configuration Initiale
Table of Contents
Je ne sais pas si c’est propre à l’évolution humaine, mais mon expérience dans les hautes mers semble avoir suivi une sorte de progression…
À l’école primaire, je téléchargeais mes premiers jeux Windows XP en torrent, puis mes jeux NDS. J’avais aussi un petit lecteur MP4 que je remplissais de films en basse résolution trouvés je ne sais où. Quand un format ne passait pas, je le convertissais en audio avec Handbrake - des heures de calcul sur mon pauvre Pentium.
Au collège, vers 2012, Ubuntu 12.04 commençait à se faire un nom pour sa légèreté, et l’installant alors sur l’ordinateur familiale, j’ai commencé à faire mes dents dans le merveilleux monde de Linux.
Au lycée, un moniteur reçu en cadeau d’anniversaire m’a donné envie de monter un centre de rétrogaming avec un Raspberry Pi 2B. Tout en testant plusieurs distro - Retropie, Batocera et Recalbox - je dégotais des jeux à tour de bras. La légende dit qu’ils tombaient tout seuls du ciel jusque dans mon dossier de téléchargement… J’experimentais aussi Kodi/LibreElec pour la partie multimédia. Quelques plugins bien shady des confins d’internet me permettaient d’accèder à la TV et aux meilleurs séries anime sans interruption.
Ça devenait sérieusement intéressant. Mais il manquait quelque chose au puzzle… La cerise sur le gâteau qui parachèverait mon évolution. Un système qui me permettrait d’obtenir tous les films et séries que je souhaite, dans la langue que je souhaite, dans la qualité que je souhaite, sans passer des heures à scruter internet.
C’est ainsi qu’une fois débarrassé de mes obligations d’étudiant, j’ai enfin eu le temps de réfléchir à la solution qui bouclerait la boucle : le NAS ultime.
Les objectifs du projet étaient triple :
- un serveur pour l’acquisition automatique de films et séries dans différentes qualités
- la possibilité de les regarder à distance
- une sécurité maximale
Et comme il s’agit d’un NAS, il devait aussi stocker mes fichiers et mes sauvegardes. Chaque étape du projet a été pensée avec ces trois objectifs en tête.
Tout commence par le choix du matériel.
Le Matériel#
Je voulais du stockage important, de bonnes performances, une faible consommation énergétique et, surtout, un SBC compact et pas cher.
Sur internet, tout le monde parlait de la Zimaboard, des Intel NUC, des montages en rack. Moi j’ai trouvé mieux : le FriendlyElec CM3588 NAS.
Linus Tech Tips l’avait présenté dans sa vidéo Paying for Cloud Storage is Stupid, et pour une fois je ne regrette pas d’avoir suivi une recommandation YouTube.
Son atout principal : 4 slots M.2 PCIe 3.0 NVMe, chacun capable d’accueillir jusqu’à 4 To. Ça fait un NAS de 16 To pour 145 dollars. Difficile de faire mieux à ce prix.
Le CPU Rockchip RK3588, associé à 8 Go de RAM, tourne sur une architecture ARM64 réputée pour sa faible consommation. Son GPU/VPU encaisse jusqu’à du 8K60fps en H.265, largement de quoi lire n’importe quel format de film sans broncher.
La modularité compte aussi pour beaucoup ici : si un jour j’ai besoin de plus de puissance (pour du gaming, allez savoir), il me suffira de changer le module, pas toute la carte porteuse.
Le fabricant propose six OS pour cette carte : un OpenWRT personnalisé, OpenMediaVault, Ubuntu, Debian, AndroidTV, et Proxmox VE.
J’ai choisi Proxmox VE. Les vidéos de Novaspirit Tech m’avaient donné envie de creuser cet OS basé sur Debian, et l’approche conteneurisée m’intriguait.
La documentation d’installation se trouve ici et ici. J’ai opté pour la procédure par USB.
L’Architecture#
Voici ce à quoi j’ai abouti pour l’architecture du homelab :

Nous plongerons en profondeur dans chaque composant individuellement dans les prochains articles, en explorant ce que sont tous ces nodes, pourquoi ils sont essentiels, et comment ils travaillent de concert. Alors restez dans les parages pour la suite !
Pour l’instant, je vais me contenter de peindre la vue d’ensemble et expliquer le schéma de manière générale.
Proxmox#
Proxmox VE est une plateforme de gestion de virtualisation de serveur open-source construite sur Debian. Elle est spécifiquement optimisée pour les machines virtuelles KVM et les conteneurs LXC.
La différence entre ces deux approches de virtualisation réside dans le niveau de virtualisation :
- Les VMs sont des systèmes informatiques complets, entièrement isolés, exécutant leur propre noyau. Elles peuvent héberger et afficher une variété de services en utilisant le matériel de la machine.
- Les LXCs sont significativement plus légers que les VMs, car ils partagent le noyau du système hôte. Cela les rend incroyablement efficaces. Idéal pour les déploiements de service unique où vous voulez des performances maximales avec un overhead minimal.
Nous pouvons entrer dans une VM ou LXC spécifique soit via CLI par SSH soit via l’interface de gestion web.
SDN#
SDN est un concept relativement nouveau, et signifie Software Defined Networking (Réseau Défini par Logiciel). Au lieu d’être limité par les limitations des switchs physiques, le SDN crée des réseaux virtuels en utilisant des logiciels pour gérer les connexions entre les machines dans un réseau.
Dans ma configuration particulière, j’ai opté pour OpenWRT comme solution de routeur. Ce n’est pas un OS de routeur comme les autres - il a été pensé pour offrir un contrôle et une flexibilité poussés et probablement sans failles. OpenWrt gère entre autre le routage, la gestion des interfaces, et l’attribution d’adresses IP à toutes les machines connectées au réseau. On a aussi la possibilité d’ajouter des plugins sous forme de paquets.
Comme mentionné, la sécurité est primordiale dans ma configuration. Pour garder mon homelab à l’abri des étrangers d’internet, j’ai déployé un VPS Hetzner configuré comme passerelle d’entrée en y laissant que quelques euros par mois seulement. Combiné avec des tunnels VPN WireGuard, cela crée des chemins sécurisés et cryptés pour les clients autorisés et peut servir de point de terminaison internet si nécessaire.
Applications#
C’est là que la magie opère - mon écosystème d’applications auto-hébergées dans Proxmox.
Cette liste inclut mais n’est pas limitée à :
- Proxys inverses : J’utilise Nginx sur mon VPS Hetzner pour faire du proxy inverse de mes services externes vers l’utilisateur ; et Caddy sur mon serveur Proxmox gère le routage interne avec HTTPS automatique.
- Gestion des médias : Actuellement, j’utilise la pile *arr pour automatiser l’ensemble de mon pipeline média. Les fichiers peuvent provenir de sources Torrent ou Usenet.
- Consommation de médias : En suivant certains conseils, j’utilise Jellyfin comme application de streaming et Jellyseerr comme sélecteur de films. Les deux sont disponibles sur la majorité des appareils et sinon, nous pouvons utiliser leur interface web.
- Gestionnaire de favoris : J’ai toujours voulu synchroniser simplement mes marque-pages entre mes appareils sans être lié à un seul navigateur. Linkding a justement été pensé dans ce but. C’est un outil vraiment simple qui crée une base de données de marque-pages sécurisée, multi-utilisateurs, ultra-rapide et économe en ressources.
- Gestionnaire de fichiers : Filebrowser brille par son interface élégante et sa simplicité d’utilisation. Les fonctionnalités incluent entre autres des liens de téléchargement partageables, une gestion complète des utilisateurs, et des capacités d’édition de fichiers intégrées.
- Surveillance réseau : CrowdSec agit comme une couche supplémentaire au pare-feu. Il détecte automatiquement les menaces et réagit en conséquence avant qu’elles ne deviennent un problème.
Externe#
Pour pouvoir communiquer avec le NAS depuis l’extérieur sans avoir à écrire d’adresse IP hideuse avec le port attenu, nous allons devoir parler du concept de résolveur DNS.
Quand un appareil veut établir une connection avec un serveur sur Internet, il a besoin de connaître l’IP de destination et le port qui y est adjoint. Ainsi, quand on fait une requête à son navigateur - ex: google.com - le Résolveur DNS va généralement contacter un Résolveur DNS Récursif et demander qu’elle est l’IP attenante. Avec cette IP, l’appareil peut établir une connection jusqu’au serveur.
Chaque serveur qui tient une information définitive sur un nom de domaine spécifique est appelé “Domaine authoritaire” de ce domaine.
Pour mon système, j’ai choisi d’utiliser Porkbun comme registraire de domaine - principalement pour cause du prix d’achat et de renouvellement très interessant et du nombre de recommandations qu’en faisait certains internautes ; et Cloudflare, comme DNS.
L’IP publique de mon VPS correspond à mon domaine personnalisé ’d…a.one’ via un A-record. Cela permet de faire passer tout traffic par mon VPS en premier ; ainsi l’addresse réel du serveur reste masquée.
Enfin, CrowdSec surveille continuellement tous les comportements de trafic depuis le routeur et le proxy inverse interne, pour la redondance. Quand il détecte un comportement malveillant ou une activité suspecte, l’IP concernée est automatiquement bloquée.