Un homelab pourquoi faire ?#
Le but de ce serveur homelab est de répondre à 2 besoins primaires :
- un adblocker pour tuer la pub. Quand on a l'habitude d'un web sans pub, c'est dur de s'en passer. De plus, le mettre en place sur le réseau permet de protéger tous les équipements de la maison (PC, smartphones, ...).
- un Logitec Media Server pour centraliser l'écoute de ma musique "dématérialisée" (webradio, fichiers stockés sur le NAS). Cela permet de gérer un Logitech SqueezeBox Boom dans le bureau et un RaspiDac sur ma chaine HiFi.
D'autres logiciels seront ajoutés par le suite :
- soit par installation de paquets dans le cas d'un besoin à long terme et pour bénéficier des mises à jour régulières.
- soit par containérisation (avec des images Docker/Podman) pour les tests ou pour besoins plus courts et complexes afin de bénéficier d'images complètes existantes.
Et puis ça permet de s'amuser pour apprendre à utiliser et administrer un serveur et à tester de nouveaux logiciels ...
Composition de mon homelab#
Mon homelab est composé :
- d'une Freebox Server Delta pour l'accès à internet via la fibre.
- d'un switch réseau manageable Netgear ProSAFE GS108E pour les échanges de données réseau.
- d'un NAS Synology DS414 (lien vers la datasheet) pour la partie stockage/backup, nommé "WOPR" (en référence au film "Wargame"). C'est la dessus qu'est stocké toute ma musique dématérialisée (CD rippés, achats de morceaux ou d'albums numériques).
- d'un miniPC industriel fanless Topton (specs : Intel Celeron J1900 Quad Core, 8G RAM DDR3L, 512 Go SSD) (acheté sur AliExpress) que l'on va transformer en serveur pour y héberger l'adblocker et le Logitech Media Server, entre autre. Il est nommé "Blackhole" pour sa fonction de bouffeur de pubs internet.
Installation de Fedora Server sur le miniPC#
Le but n'est pas de décrire toutes les étapes détaillées de l'installation, mais seulement les grandes étapes.
A l'heure de l'écriture de ces lignes, la version de Fedora est la Fedora Linux 37. Les images disponibles sont à télécharger sur la page dédiée Télécharger Fedora 37 Server. Les images sont disponibles pour l'architecture x86_64, ce qui est notre cas, ou l’architecture aarch64 (ARM 64 bit) pour le Raspberry Pi 4 par exemple, et en format ISO standard ou ISO Netinstall (installation réseau).
Pour mettre en place un serveur léger, c'est-à-dire avec le minimum de paquets, il faut mieux partir sur l'ISO Netinstall qui ne contient que l'essentiel pour l'installation. Ensuite, lorsque l'installation sera terminée, il suffira d'installer les paquets voulus à la demande.
Donc, on télécharge l'ISO correspondante soit via le navigateur avec le bouton "Téléchargement" soit via la commande wget <url de l'ISO>
.
Une fois une image téléchargée, vérifiez son intégrité pour votre sécurité avec la procédure expliquée sur la page Vérification de sécurité et de téléchargement.
Maintenant, il faut générer une clé USB (ou un CD/DVD) d'installation à partir de l'image ISO, grâce au logiciel de votre choix (Fedora Media Writer ou (Gnome) Disques, sous Linux; Rufus ou UNetbootin sous Windows). Grâce à cette clé USB, on boote le miniPC dessus pour lancer l'installation de Fedora, pour laquelle, il faudra suivre les différentes étapes d'installation et de configuration.
Une fois l'installation finie, l'ordinateur redémarre et il est possible de se connecter soit en local via la console, soit via l'interface web Cockpit sur un autre ordinateur.
C'est l'heure de faire les mises à jour du système via la commande sudo dnf update
ou via Cockpit, pour avoir un système à jour.
Il faudra aussi veuiller à donner une adresse IP fixe à ce serveur, via la configuration de votre box Internet. Il est plus simple d'avoir une IP fixe pour un serveur car cela permet de le retrouver plus facilement dans son réseau. De plus, Pi-hole demande une adresse IP fixe, car son IP va devoir être paramétré dans votre box en tant que serveur DNS.
Installation des principaux paquets#
Installation de Pi-Hole comme Adblocker#
Pi-Hole est une suite logiciel (coeur logiciel + interface web) qui va capturer les requêtes DNS que font les appareils sur le réseau et comparer les résultats par rapport à une "Adlist", c'est-à-dire une liste de domaines de contenus indésirables (domaines connus comme diffusant de la pub, des malwares, des trackers, etc). Si Pi-Hole ne trouve pas le résultat dans cette Adlist, il retourne le résultat intact à l'appareil demandeur, sinon il lui transfère une adresse IP nulle, ce qui évitera de charger la ressource indésirable demandée.
Pour résumer, Pi-hole est un trou noir pour les publicités et autres contenus indésirables sans installer de logiciel côté client. Pi-Hole est open-source, gratuit et possède actuellement une très grande communauté active.
Pour installer Pi-hole, il faut basculer SELinux en mode Permissif le temps de l'installation. Après redemarrage, SELinux reprendra son mode de fonctionnement par défaut, c'est-à-dire le mode Enforcing.
Pour définir temporairement SELinux en mode permissif, vous devez exécuter la commande suivante sur votre terminal : sudo setenforce 0
ou alors le faire dans Cockpit.
Pour installer Pi-Hole, il faut suivre la documentation sur l'installation qui est bien faite. L'utilisation de l'installateur se fait via la commande :
$ curl -sSL https://install.pi-hole.net | bash
Une fois, l'installation terminée, i faudra ouvrir les ports du firewall via la ligne de commande ou via l'interface Cockpit :
- DNS : 53/TCP + 53/UDP ==> pour l'utilisation comme DNS
- DHCP : 67/UDP ==> pour utiliser comme serveur DHCP en IPv4
- DHCPv6 : 547/UDP ==> pour utiliser comme serveur DHCP en IPv6
- HTTP : 80/TCP ==> pour l'interface web
Puis vous pourrez vous connecter à l'interface web via l'adresse : http://ip_server
pour vérifier le fonctionnement et peaufiner les réglages.
Maintenant, pour que les requêtes DNS de vos appareils passent par le Pi-hole, il y a 2 solutions :
- Modifier les adresses IP des serveurs DNS de votre FAI, dans l'interface de la box internet, pour le remplacer par l'adresse IP de votre Pi-Hole (d'où l'intérêt d'une IP fixe du serveur).
- Ajouter manuellement sur tous les appareils l'adresse IP du Pi-hole pour forcer l'appareil à passer par le Pi-Hole, mais il peut arriver qu'il y ait des "fuites" de requêtes vers les serveurs DNS du FAI (à cause de la box) ce qui dégrade l'efficacité du système.
De plus, il faut alimenter le Pi-Hole avec une ou des Adlists car celle installée par défaut n'est pas suffisante. Vous trouverez de quoi alimenter votre Pi-Hole sur ces sites :
- The Big Blocklist Collection sur le site The Firebog
- The oisd blocklist official website
- Les listes de blocage DNS par SebSauvage sur le wiki : Listes de blocage DNS
- The AdGuard filters sur la documentation ou leur Github de l'AdguardTeam
- The BlockList Project sur le site blocklist.site ou le Github
- The FilterLists sur le site filterlists.com
Une fois les listes renseignées dans Pi-hole, il faut mettre à jour le Gravity de Pi-Hole (la base de données contenant la liste des domaines bloqués).
Et woilà, votre Pi-Hole est fonctionnel et les graphiques doivent commencés à se peupler de données.
Installation du Logitech Media Server#
Logitech Media Server (anciennement SlimServer, SqueezeCenter et Squeezebox Server) est un serveur de streaming audio pris en charge par Logitech (anciennement Slim Devices), développé en particulier pour prendre en charge leur gamme de récepteurs audio numériques Squeezebox.
Le logiciel est conçu pour diffuser de la musique en continu sur un réseau, ce qui permet aux utilisateurs de lire leurs collections musicales depuis pratiquement n'importe quel endroit où se trouve une connexion Internet. Il prend en charge les formats audio tels que MP3, FLAC, WAV, Ogg, Opus et AAC, ainsi que le transcodage. Il peut diffuser des flux vers des récepteurs logiciels et matériels, notamment les différents modèles Squeezebox, ainsi que vers tout lecteur multimédia capable de lire des flux MP3.
Logitech Media Server (LMS) est un logiciel libre, publié selon les termes de la licence publique générale GNU. Bien qu'il ne soit plus distribué en conjonction avec aucun produit matériel Logitech, LMS continue d'être développé.
On peut le retrouver sur :
- le site officiel www.mysqueezebox.com
- le Github officiel Logitech / slimserver
- le forum communautaire Logitech forums.slimdevices.com
Depuis le site officiel, on va récupérer l'URL du fichier RPM pour l'installer avec la commande :
$ sudo dnf localinstall https://downloads.slimdevices.com/LogitechMediaServer_v8.3.1/logitechmediaserver-8.3.1-1.noarch.rpm
Il est préférable d'installer préalablement les dépôts RMP Fusion afin de bénéficier des paquets audio en se rendant sur le site dédié.
Il reste à ouvrir les 3 ports du firewall via la ligne de commande ou via l'interface Cockpit :
- 9000/TCP ==> interface web
- 3483/TCP + 3483/UDP ==> pour la connexion des périphériques via le protocole SlimProto
$ sudo systemctl start squeezeboxserver
$ sudo systemctl enable squeezeboxserver
Dans mon cas, en plus, je monte le répertoire de mon NAS contenant ma musique sur mon serveur grâce au partage NFS de ce dernier. Il faut créer le répertoire local pour monter le répertoire distant avec la commande :
$ sudo mkdir /mnt/wopr/music
puis modifier le fichier /etc/fstab
pour ajouter la ligne :
192.168.1.<xx>:/volume1/music /mnt/wopr/music nfs rsize=8192,wsize=8192,timeo=14,intr 0 0
Et lancer le montage de du répertoire distant via la commande :
$ sudo systemctl daemon-reload
Maintenant, vous pouvez vous connecter à l'interface via l'adresse : http://ip_server:9000
, configurer le LMS et ajouter le répertoire monté à la bibliothèque musicale de LMS.
Installation d'autres pasquets#
Pour une première partie, c'est déjà bien long, donc la suite au prochain épisode.
J'installerai surement en plus :
- Unbound, un résolveur DNS validateur, cache, récursif pour être indépendant.
- un dashboard qui sera une page d’accueil sur le serveur,
- du monitoring pour surveiller la connexion, l'état du serveur et quelques autres idées en tête,
- un assistant domotique pour quelques projets domotique et météo.