#PIBOX OS sur Raspbian {{INLINETOC}} Le **PiBox** est un stockage de type NAS, piloté par un Raspberry Pi Compute Module4. Le référentiel https://github.com/kubesail/pibox-os fournit, outre une image disque prète à l'emploi, des scripts et des modules de noyau utilisés pour modifier le système d'exploitation Raspberry Pi afin de tirer pleinement parti du matériel **PiBox**. Le présent tutoriel permet de personnaliser l'installation avec: * **OpenMediaVault**, une solution de stockage en réseau (NAS) construite sur Debian et prenant en charge le Raspberry Pi. * **Jellyfin**, un logiciel de serveur multimédia sous licence libre, conçu pour organiser, lire et partager des fichiers multimédias numériques sur des appareils en réseau. ##Préparation du système L'installation de **OpenMediaVault** proscrit l'utilisation des variantes de système d'exploitation avec des bureaux graphiques. **OpenMediaVault** ne fonctionnera que sur les systèmes basés sur des terminaux. Dans le cas du Pi, il s’agit du Raspberry Pi OS Lite. La première chose à faire est de mettre à jour et de mettre à jour le système Raspberry : ``` sudo apt update sudo apt upgrade ``` Pour compiler les modules il faut installer le noyau RPI: ``` sudo apt install -y raspberrypi-kernel-headers ``` Dans le fichier `/boot/cmdline.txt`, ajouter `cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1` à la fin du fichier. ##Installation de Pibox-os Le script suivant installe tout (PWM, écran, k3s et agent KubeSail)\\ \\ `curl -s https://raw.githubusercontent.com/kubesail/pibox-os/main/provision-os.sh | sudo bash` Récupérer le dépôt PiBox OS: ``` git clone https://github.com/kubesail/pibox-os.git ``` ###Prise en charge des ventilateurs PWM Pour rendre le ventilateur silencieux et tourner aussi vite que nécessaire, il faut activer le module ** bcm2835-1** pour permettre à un service **pi\_fan\_hwpwm.service** d'envoyer le signal correct au ventilateur à l'aide du contrôleur PWM matériel du Pi. ``` cd pibox-os/pwm-fan tar zxvf bcm2835-1.68.tar.gz cd bcm2835-1.68 ./configure make sudo make install cd .. make sudo make install ``` ###Activer le pilote d'affichage Un service d'affichage qui affiche des statistiques et d'autres informations utiles est fournit. Pour l'installer: ``` pushd pibox-os/st7789_module curl -O https://raw.githubusercontent.com/torvalds/linux/master/drivers/staging/fbtft/fbtft.h make xz fb_st7789v.ko mv /lib/modules/"$(uname -r)"/kernel/drivers/staging/fbtft/fb_st7789v.ko.xz /lib/modules/"$(uname -r)"/kernel/drivers/staging/fbtft/fb_st7789v.BACK mv fb_st7789v.ko.xz /lib/modules/"$(uname -r)"/kernel/drivers/staging/fbtft/fb_st7789v.ko.xz popd dtc --warning no-unit_address_vs_reg -I dts -O dtb -o /boot/overlays/drm-minipitft13.dtbo pibox-os/overlays/minipitft13-overlay.dts cat <> /boot/config.txt dtoverlay=spi0-1cs dtoverlay=dwc2,dr_mode=host hdmi_force_hotplug=1 dtoverlay=drm-minipitft13,rotate=0,fps=60 EOF ``` ###Installer K3S Les binaires fournit par Pibox-OS recquierrent **K3s** une distribution kubernettes légère. ``` curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644 ``` Lors de l'installation de **K3S**, un fichier kubeconfig est écrit dans `/etc/rancher/k3s/k3s.yaml`. Le moyen le plus courant de se connecter au cluster Kubernetes est la commande **kubectl**, qui est automatiquement installée sur le nœud du cluster lors de l'installation de **K3S**. Pour se connecter au cluster, il faut indiquer à **Kubectl** où trouver le **kubeconfig**, en définissant une variable d'environnement ou en le copiant dans `~/.kube/config`: ``` mkdir ~/.kube sudo k3s kubectl config view --raw | tee ~/.kube/config chmod 600 ~/.kube/config ``` Pour configurer la variable d'environnement **KUBECONFIG** utiliser la commande suivante:\\ `export KUBECONFIG=~/.kube/config`\\ \\ Et pour rendre ce paramétrage persistant, ajouter cette commande dans `~/.profile` ou `~/.bashrc` Vérifier que le cluster Kubernetes est bien en cours d'exécution avec la commande : ``` kubectl get pods -A ``` ###Installer les binaires ``` curl -s https://raw.githubusercontent.com/kubesail/pibox-os/main/setup.sh | sudo bash curl -s https://raw.githubusercontent.com/kubesail/pibox-os/main/update-framebuffer.sh | sudo bash ``` ##Installation de OpenMediavault Exécuter la commande suivante pour télécharger le script d'installation d'**OpenMediaVault** et le diriger directement vers bash. Ce script installera et configurera tout le nécessaire pour exécuter **OpenMediaVault** sur le Raspberry Pi. ``` wget -O - https://raw.githubusercontent.com/OpenMediaVault-Plugin-Developers/installScript/master/install | sudo bash ``` Ce processus peut prendre un certain temps car le script doit installer de nombreux packages requis par le logiciel **OpenMediaVault**. **k3s** est livré avec un contrôleur d'entrée **traefik** préinstallé qui se lie aux ports 80, 443 et 8080 sur l'hôte, on ne peut donc utiliser ces ports pour un serveur tiers.\\ \\ Pour modifier le port d'**OpenMediaVault** (80 par défaut), exécuter `omv-firstaid`, sélectionner `Option-2 "configure web control panel"`. Une fois le processus d'installation terminé, il est recommandé de redémarrer le Raspberry Pi. ``` sudo reboot ``` ##Installation de Jellyfin ###Installation depuis le dépôt officiel Par défaut, le gestionnaire de packages **apt** ne prend pas en charge les référentiels exécutés derrière HTTPS.\\ \\Pour contourner ce problème, il faut installer le package **apt-transport-https** en exécutant la commande suivante:\\ \\ `sudo apt install apt-transport-https lsb-release`\\ \\ Ce package ajoute la prise en charge du protocole de transport HTTPS au gestionnaire de packages **apt**. Une fois le Raspberry Pi à jour, il faut installer certains fichiers pour accéder au référentiel de packages **Jellyfin**. * importer la clé de signature GPG: ``` curl https://repo.jellyfin.org/debian/jellyfin_team.gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/jellyfin-archive-keyring.gpg >/dev/null ``` * ajouter le référentiel **Jellyfin**: ``` echo "deb [signed-by=/usr/share/keyrings/jellyfin-archive-keyring.gpg arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/debian $( lsb_release -c -s ) main" | sudo tee /etc/apt/sources.list.d/jellyfin.list ``` Cette ligne récupère automatiquement l'architecture système actuelle et sa version actuelle et remplit les espaces vides. * mettre à jour la liste des packages: ``` sudo apt update ``` Lorsqu'on modifie les fichiers sources, il faut mettre à jour la liste des packages. Sans mise à jour, le gestionnaire de packages ne sera pas au courant des modifications. * installer le package **jellyfin**: ``` sudo apt install -y jellyfin ``` ###Installation depuis le dépôt extrepo Pour commencer, ajouter le dépôt de **Jellyfin**: ``` sudo apt install extrepo -y sudo extrepo enable jellyfin ``` Rafraîchir les dépots et installer jellyfin ``` apt update apt install jellyfin -y ``` ###Configuration Se rendre à l’adresse : http://ip-du-serveur:8096 * Sélectionner la langue souhaitée * Créer un compte utilisateur * Ensuite on peut ajouter les dossiers en local ou sur un dossier réseaux comme un NAS où sont stockés les films, séries, etc .. * Sélectionner la Langue et pays pour les paramètre du serveur Activer uniquement “Autoriser le mapping automatique de port” si lerouteur supporte l’UPnP et si on souhaite accèder aux serveur sur internet