"Homelab", un serveur à la maison : introduction

Je sais que je devrais terminer mon trépied pour mon didgeridoo (et promis : ça viendra, si possible avant que la première partie fête son anniversaire) mais j'ai été alpagué·e sur d'autres sujets, incluant celui dont je vais parler aujourd'hui.

Voyons cet article comme une introduction sur le sujet d'un "homelab", terme utilisé pour parler d'un ou plusieurs serveur(s) qu'on a chez soi généralement dans le but de faire des tests de technologies ou autre.

Avant-propos

Dans cette introduction, je vais évoquer pourquoi je souhaite avoir mon serveur à la maison et quelles sont mes contraintes matérielles et logicielles. D'autres articles suivront, le plan est encore indéfini mais je divulgâche un peu : j'ai fait deux itérations.

Je ne sais pas combien de parties il y aura : j'ai fait deux itérations mais je me sens déjà obligé·e de faire une introduction à part entière (commune aux itérations donc). Il y aura probablement un article sur les réflexions que la première itération ont amené, en plus d'un part itération et probablement un ou deux autres sur des sujets plus globaux.

Bref, il faut s'attendre à un peu de lecture ! Mais je vais tenter de découper les articles pour les rendre indépendants afin de permettre un peu de liberté aux personnes qui s'intéressent éventuellement à un sujet mais pas au reste.

Historique

Quand je vivais en appartement, j'avais mis en place un serveur sur un vieux PC portable avec un Core i7 Ivy Bridge (donc un processeur qui datait de 2012) et 8Go de RAM. Bien assez pour ce que j'en faisais : un serveur domotique et multimédia.

Au déménagement, je l'ai décommissionné (traduction : « débranché puis jamais rebranché ») car on allait faire des travaux dans notre maison et je me rendais bien compte que je ne le gérais pas très bien en terme de mises à jour (il était sous Debian 9 si je me souviens bien, Debian 11 existait au moment où je l'ai débranché) et qu'il prenait une certaine place là où je pouvais le mettre.

D'un autre côté, j'avais une petite machine virtuelle chez un fournisseur cloud français qui hébergeait un serveur Nextcloud. Devinez quoi : 10€ par mois, tout sur le même serveur (PHP, MySQL et Redis) et, soyons honnête, peu de maintenance de ma part. C'était pas terrible mais ce temps est révolu !

Pour cette machine virtuelle, j'avais quand même automatisé des sauvegardes sur un "object storage" type S3, c'était le minimum pour ne pas perdre mes contacts et mes calendriers.

Les besoins

Cette liste n'est pas exhaustive et contient l'essentiel des mes besoins au moment de la création de mon homelab.

Domotique

Sur mon ancien serveur à la maison, je faisais fonctionner Home Assistant (lien en anglais). Dans l'appartement, ça me servait surtout à collecter des informations sur la température et l'humidité de la cuisine, du salon et de la salle de bain, ainsi que l'ouverture de la porte (étant au deuxième étage, les fenêtres avaient peu de chances d'être le point d'entrée pour un cambriolage). J'avais bien quelques idées supplémentaires mais je n'ai jamais pris le temps de les mettre à exécution.

Dans la maison, j'aimerais surveiller ces paramètres et quelques autres choses : notre consommation d'électricité et notre production solaire (on a une petite production, sans batterie). Éventuellement, j'aimerais automatiser quelques petits trucs mais c'est encore ne réflexion.

Bref, j'aimais bien mon serveur domotique et j'aimerais recommencer, en mieux !

Contacts et calendriers

Évidemment, le fameux Nextcloud précédemment cité, il était temps que je le migre autre part. Le but étant de ne plus payer un hébergeur, puisque je l'aurais chez moi, et de me motiver pour le maintenir (en voyant le serveur sous mes yeux, je me souviendrai facilement qu'il existe et qu'il faut le gérer).

Je n'utilise pas tant Nextcloud pour les fichiers, c'est surtout pour les contacts et calendriers. Je le synchronise en CardDAV et CalDAV sur mes appareils (Linux et Android), ça me va bien comme système.

J'aimerais avoir un peu "mieux" que Nextcloud pour faire ça, notamment plus léger, mais je ne trouve rien qui a le côté pratique de l'interface Nextcloud, pour envoyer des invitations par exemple. Et j'ai une autre contrainte qui arrive et à laquelle Nextcloud se plie sans problème.

SSO

Cette contrainte, c'est pour ma facilité : j'aimerais me connecter via un seul portail à toutes mes applications. Et Nextcloud est compatible avec OpenID Connect (lien en anglais) notamment.

Bon, Home Assistant ne l'est pas donc il me restera un compte à part pour ça, mais est-ce grave ?

Galerie photos

Je souhaite pouvoir téléverser automatiquement mes photos depuis mon mobile vers un serveur qui me permettrait de faire des albums par exemple.

La référence dans ce domaine, pour l'instant, semble être Immich (lien en anglais) mais j'ai vite constaté (en essayant de le démarrer lors de ma première itération) que ça prenait beaucoup de ressources que je n'avais pas.

Bref, grâce à ce chouette comparatif (lien en anglais), j'ai décidé d'utiliser Nextcloud Memories, comme ça Nextcloud gagnerait en utilité. Mais on verra plus tard que ce n'était pas gagné non plus.

Mes contraintes

On pourrait croire que la réponse à tout ça c'est « Installe Debian sur un vieux PC, comme tu l'avais déjà fait, et puis tu mets tous tes trucs dessus, voilà ! », sauf que ce serait mal me connaître.

Mises à jours automatiques (ou presque)

Un point sur lequel j'ai de plus en plus de mal à déroger : je ne veux pas avoir à trop « penser » à la maintenance. Je sais qu'il y en aura mais justement, plus elle peut être minimale, mieux c'est.

Et maintenant, on a plusieurs OS (côté serveur comme côté bureau) qui répondent à ce besoin d'une belle manière : une fois installé, le système se met à jour automatiquement de manière régulière et il n'y a qu'à le redémarrer pour avoir la dernière version. Mieux encore, sur les OS modernes, les mises à jour sont transactionnelles, ou « atomiques » : le système revient à la précédente version installée si la nouvelle ne fonctionne pas.

Dans la théorie, cela réduit la maintenance à… Peu de choses.

Kubernetes

Je fais partie des gens qui remarquent que Kubernetes résout beaucoup de problèmes. Et comme je l'utilise tous les jours chez la clientèle, autant garder les bonnes habitudes. Ce sujet mériterait un article à lui tout seul d'ailleurs. En plus, avec k3s (lien en anglais), ça s'installe à peu près n'importe où, alors pourquoi se priver ?

Ça veut aussi dire que je vais devoir mettre sur Kubernetes des choses qui ne sont pas forcément prévues pour à l'origine, comme Home Assistant justement. Bon, ça ne me fait pas peur (et d'ailleurs, ça fonctionne parfaitement à l'heure où j'écris ces lignes).

Aussi, j'utilise beaucoup les outils GitOps comme ArgoCD (lien en anglais) ou FluxCD (lien en anglais), ça fait partie de mon utilisation de Kubernetes et des choses que je trouve vraiment pratiques.

Consommation et silence

Mon précédent serveur ventilait pas mal quand même, la faute à l'espace où il était un peu confiné. Et un Core i7 de Ivy Bridge, même pour PC portable, on dirait pas mais ça consomme.

Bref, au moment de m'y mettre on était en 2024 donc c'était déjà le bon moment pour utiliser un ordinateur à l'architecture aarch64 (ou arm64 selon comment vous l'écrivez) et sans ventilateur. Ça veut dire : non merci pour le Raspberry Pi 5 qui a besoin d'un refroidissement actif.

Stockage

Généralement, les PC en aarch64 utilisent une carte SD et éventuellement une puce eMMC pour le stockage mais en terme de performance et de capacité, c'est rarement très élevé.

Je souhaite donc avoir la possibilité de mettre un SSD supplémentaire pour les données. Idéalement NVMe plutôt que SATA, ça permet de ne pas avoir un câble (même petit) qui traînerait et de garder le boîtier d'origine de l'ordinateur s'il en existe un.

Et la suite ?

Au moment où je publie cet article, j'ai déjà choisi du matériel et presque arrêté mon choix sur le système d'exploitation. Par la suite je vais donc parler :

  1. De ma première itération à ce sujet, notamment :
    1. Le matériel que j'ai choisi ainsi que l'OS.
    2. Ma manière de gérer les logiciels que j'installe.
    3. Probablement, la gestion de l'image Nextcloud que j'utilise, car tout n'est pas automatique.
    4. Les réflexions que m'ont apporté
  2. De ma seconde itération, incluant :
    1. Le matériel qui me permet de faire mieux que la première fois.
    2. Le système d'exploitation (c'est un sujet en cours, même une certaine aventure).
    3. Des évolutions sur la gestion des logiciels, si je décide de faire les évolutions que j'imagine.
    4. Des sauvegardes, parce que ma première itération n'est pas très fiable pour ça.

Je rappel que le plan n'est pas forcément définitif mais il y aura de quoi raconter !