XorHak HomeServer #1

2021 20/02/2021

L'idée d'avoir un serveur à la maison (pour plusieurs raisons) me trottait en tête depuis quelques années mais jusqu'ici je n'avais jamais eu le temps de me lancer sur un projet comme celui-ci. Aujourd'hui je commence à réaliser ça mais je ne vous cache pas que je bosse dessus depuis déjà quelques mois, avec un burget limité (comme un peu partout). D'ailleurs si vous lisez cet article, sachez qu'il tourne sur ce serveur, chez moi. Si vous êtes prêt, commençons !

Hardware

Pour préparer un projet comme ça, j'ai commencé par définir un budget et une réflexion sur le choix des composants pour anticiper au mieux les upgrades que je compte faire dessus (moyen/long terme). Une partie des achats sont fait (si le blog tourne dessus, c'est déjà reçu, monté et configuré forcément) et d'autres arriveront par la suite. Voici donc mes choix sur la partie hardware.

Le boitier (140€)

La sélection du boitier n'a pas été très difficile en raison d'un choix très limité. J'ai opté pour un Antec P101 Silent (lien) car j'ai besoin d'avoir au minimum 8 emplacements pour les disques en 3.5" et d'un boitier silencieux (car dans le salon).

Antec P101 Silent
La carte mère (320€)

Initialement je voulais partir sur une carte mère type "bas de gamme" (toujours avec un socket AM4) mais après réflexion, faire un upgrade de ce type de composant n'est pas forcément simple et très pratique. Donc finalement j'ai pris une carte mère "haut de gamme" (basé sur un chipset X570). Il s'agit d'une Asus Rog Strix X570-E Gaming (lien), alors bon le "gaming" est un peu relatif dans mon contexte mais elle intègre ce que j'avais comme besoin. Plusieurs ports USB 3.1 à l'arrière (7 en type A et 1 en type C), et 8 ports en SATA (autant que les emplacements dans le boitier) et 2 ports réseaux (l'un en 1G et l'autre en 2.5G) mais qui ne seront finalement pas très utile et évidemment 2 ports M.2.

Asus Rog Strix X570-E Gaming
Le processeur (220€)

Comme tout le monde, j'ai un besoin de puissance au niveau du CPU et donc un processeur avec pas mal de coeurs tout en restant dans une bonne gamme de prix. J'avais sélectionné un Ryzen 9 3900X (lien) avec ses 12 cores (24 threads) mais par rapport au budget j'ai finalement pris un Ryzen 5 3600 (lien) qui possède 6 cores (12 threads) à un prix intéressant.

AMD Ryzen 5 3600 (3.6GHz/4.2GHz)

Ce Ryzen 5 3600 est temporaire, le temps que le budget remonte un peu, pour directement acheter un Ryzen 9 3650X (lien) qui possède 16 cores (32 threads) d'ici la fin de l'année.

La mémoire vive (180€)

Comme pour le processeur, j'ai besoin de prévoir pas mal de RAM par rapport à ce que je compte faire tourner dessus (des containers Docker et des machines virtuelles) et qui consomme pas mal. J'ai longtemps réfléchis et finalement j'ai opté pour 32Go (1 module) en Viper Steel en DDR4 et cadencée à 3200MHz. Pourquoi 1 x 32Go et non pas 2 x 16Go ? Car je compte mettre un total de 128Go (ce que la carte mère accepte au maximum) et que je serais moins "bridé" en partant sur 1 module. Je compte reprendre un autre module (le même évidemment) pour le stage 2 très prochainement.

Viper Steel DDR4 1x32Go (3200MHz)
Le refroidissement (80/180€)

Comme j'ai pris un petit processeur, j'ai également pris un petit watercooling, un NZXT Kraken M22 (lien) qui possède 1 seul ventilateur de 120mm et qui est placé à l'arrière du boitier (qui remplace le ventilateur d'extraction d'air).

NZXT Kraken M22 120mm

Le watercooling fonctionne très bien (et silencieux) mais à terme j'envisage de changer de processeur pour un plus puissant, et qui chauffe aussi d'avantage. Donc j'ai changé pour le NZXT X73 (lien) qui possède un long radiateur de 360mm et 3 ventilateurs de 120mm. Pourquoi maintenant alors que j'ai pris le M22 ? On va dire que j'ai calculé après coup l'emplacement en front (entre les ventilateurs devant et les disques), ça passe de quelques millimètres. Et j'ai préparé cette opération le plus tôt possible car j'avais des changements à faire sur mes disques et comme je devais enlever les baies des disques pour le monter, c'était le moment de tout faire d'un coup. Et pour ceux qui le souhaite, j'ai un NZXT M22 à revendre (neuf, avec boite/accessoires et facture/garantie).

NZXT Kraken X73 360mm
L'alimentation (135€)

Une alimentation modulaire NZXT C650 (lien) avec une puissance de 650W (ça sera suffisant) certifiée 80+ gold. Au niveau des connecteurs, j'ai tout le nécessaire mais j'ai du racheter quelques raccords pour les alimentations SATA.

NZXT C650
La carte graphique (55€)

Pour le moment j'ai pris une petite carte graphique MSI GeForce GT 710 2GD3H LP (lien) avec seulement 2Go de mémoire vidéo (GDDR3) qui fait très bien l'affaire. Elle me sert uniquement pour avoir une sortie vidéo (pour des bricoles) car le processeur n'embarque pas de circuit graphique intégré. Silencieuse puisqu'elle n'a pas de ventilateur (très peu utilisée donc ça gène pas).

MSI GeForce GT 710 2GD3H LP

Pour mon choix final sur la carte graphique, c'est encore assez difficile car je dois voir plein de petits détails pour l'utilisation que je vais en faire. Pas besoin d'un monstre de puissance, genre une petite GTX 1060 ou 1650 m'irait très bien (principalement pour faire du transcodage vidéo avec Plex, pas de gaming). Je continue d'étudier ça en tâche de fond puisque de toute manière il y a des ruptures généralisées un peu partout. Cet achat est prévu vers la fin du projet et peut être même d'occasion, à voir.

Les disques durs (-)

Le stockage ! Pour bien comprendre ce que je compte faire, je vais découper ça en 3 parties. La première étant le stockage des données "standard" avec des disques de 3.5" (en 5900/7200 rpm) que je possède déjà. Au total il y a 5 disques de 2To, 3 disques de 1.5To, 1 disque de 4To. La seconde, pour du stockage de type cache j'ai acheté 2 SSD en 2.5" de 240Go de Western Digital Green (lien). Et pour finir sur la partie stockage, l'achat d'un second Samsung 970 Evo Plus de 500Go en M.2 (lien) car j'en possède déjà un.

Samsung 970 Evo Plus NVMe M.2
La carte réseau (150€ + 30€)

Initialement je voulais utiliser le port réseau qui est en 2.5G de la carte mère mais malheureusement je suis resté limité à 1G à cause de mon réseau local. Je me suis alors préparé une configuration de type bonding (active-backup) avec les 2 ports. C'est un truc qui fonctionne très bien mais limité en terme de débit par rapport à ce que je pouvais faire. J'ai donc récupéré une carte réseau dual SFP (équivalent de 150€) ainsi qu'un câble SFP qui va bien pour brancher tout ça sur la Freebox (oui la Freebox à un port dispo de ce type pour le LAN). Maintenant la connexion entre la Freebox et le serveur est en 10G (SFP). Ici aussi j'ai monté du bonding entre les 2 ports SFP même si pour l'instant j'en n'utilise qu'un seul.

Niveau débit, difficile de faire mieux vers internet, maintenant je suis limité par ma fibre (mais bon déjà je crache pas dessus)...

Capture d'un speedtest lancé depuis le serveur (lien)

System

Pour la partie système, j'utilise la solution Unraid de Lime Technology. Il s'agit d'une solution qui est payante (version trial de 30 jours) mais qui regroupe plusieurs fonctions qui étaient importantes pour moi comme par exemple toutes les fonctions NAS (la gestion des disques, les dossiers partagés, ...), les containers Docker ainsi que les machines virtuelles. Le tout dans une interface de management plutôt agréable à utiliser.

Tableau de bord - Unraid version 6.9.0-rc2

La gestion des disques est un peu différente par rapport à un NAS mais le fonctionnement final reste le même, c'est à dire, garantir la disponibilité des données. Il faut juste bien faire attention à ce que le disque de parité (le disque de backup en cas de défaillance d'un autre) soit au moins de la même taille que le plus gros des disques dans la grappe (forcément). Sur la configuration j'ai pris 10To pour le stockage de mes données/backups et 6To pour la paritée. Le fonctionnement des pools dans la partie "cache" est accessible qu'à partir de la version 6.9.0 de Unraid mais qui est en release candidate (rc2) pour le moment.

Gestion des disques - Unraid version 6.9.0-rc2

Unraid est aussi capable de gérer des containers Docker et la configuration se fait graphiquement (bien que ce soit possible aussi en CLI). Un magasin d'applications est disponible pour trouver pas mal de choses. La documentation se trouve ici si vous cherchez tous les détails.

Gestion des containers Docker - Unraid version 6.9.0-rc2

Et à côté des containers Docker, Unraid gère aussi des machines virtuelles (Linux/Windows) sur une base QEMU. La documentation se trouve ici.

Machines virtuelles - Unraid version 6.9.0-rc2

Debrief

C'est la fin de cet article et l'heure du debrief. Vous avez donc pu voir ce nouveau projet (2021) et les composants choisis (pour l'instant). Le serveur est déjà monté, opérationnel et réussi à faire la migration de tous mes services dessus. J'ai donc résilié 80% des serveurs que j'avais chez Hetzner. J'étais bien obligé de réduire le budget pour prévoir les prochains achats.

Le prochain article sur ce sujet (XorHak HomeServer #2), j'aborderais quelques configurations que j'ai mis en place sur Unraid (comme les apps, plugins, backups), mais aussi vous parlez de la consommation électrique.

Tags

🌱 DJΞRFY 🚀

👨🏻‍💻 Tech Lead SRE. Like #Linux, #Apple, #Kubernetes, #Docker, #Unraid, #Traefik, #Hacking, #Chia. Member of @OpenChia Team 🌱 ¯\_(ツ)_/¯