====== DietPi ====== [[https://dietpi.com/|DietPi]] est une distribution Linux minimaliste extrêmement optimisée, et même si elle a été conçue à l'origine pour le RaspberryPi (et autres SBC ((Single Board Computer))) elle fonctionne aussi très bien sur PC. Certaines optimisations ont été effectuées spécifiquement pour le Raspberry: RAMLog installé (pour réduire les écritures sur MicroSD), fichiers temporaires en tmpfs, etc. Elle peut être utilisée comme serveur (en terminal, en headless) ou avec un environement de bureau (Avec plusieurs bureaux disponibles: lxde, mate, xfce...). DietPi est adossée aux dépôt Debian, et elle est aussi fournie avec des packages tout prêts pour installer facilement des tas de services (NextCloud, Kodi, Ampache, WordPress, Pi-Hole, Gitea, LAMP et dérivés (Apache/NGinx/lighttpd)... il y a même plusieurs serveurs Minecraft). Quand je dis "extrêmement optimisée", je veux dire qu'une fois l'environnement de bureau installé (bureau+explorateur de fichiers+navigateur), on se retrouve avec un système qui consomme **160 Mo de mémoire vive (!)**. Sans l'interface graphique, la consommation mémoire est de 80 Mo. Et au niveau de l'espace de stockage, DietPi peut se satisfaire d'un disque de 4 Go (En gros, il prend 2,8 Go avec l'environnement de bureau par défaut). **Sur un RaspberryPi 3B, le système démarre en 11 secondes.** {{ :raspi3:dietpi.png?direct |}} (Une fois le gestionnaire de fichiers et le navigateur lancés (capture d'écran ci-dessus), la consommation mémoire monte à 427 Mo. Oui le web est une monstruosité.) Pour les RaspberryPi, il existe plusieurs versions de DietPi. Je vous recommande: ^ RaspberryPi ^ Version de DietPi à prendre ^ Adossé aux dépôts ^ | Zéro et 1 | ARMv6 32-bit | Raspbian | | 2, 3 | ARMv7 32-bit | Debian | | 3,4 | ARMv8 64-bit | Debian | Si vous avez l'intention d'installer NextCloud, un OS 64 bits est désormais nécessaire. Pour vous simplifier l'installation de DietPi sur une microSD, vous pouvez utiliser le logiciel [[https://www.raspberrypi.org/%20downloads/|Raspberry Pi Imager ]] (//Choose OS// > //Use custom// et sélectionnez le fichier .img de DietPi). ====== Informations ====== ===== Installation ===== Voici ma checklist d'installation rapide pour un bureau graphique. * Veillez à avoir une connexion réseau au moment de l'installation afin qu'il mette directement à jour (préférez Ethernet). * Au démarrage, connectez-vous avec ''root''/''dietpi''. * Ne soyez pas surpris⋅e, il va directement faire des mises à jour. * //DietPi-Survey// : choisir //Opt OUT// * //Default global password// : Oui, il faut le changer. Il ne s'agit pas du mot de passe root, mais d'un mot de passe global DietPi utilisé par certains services. Changez-le. * //Change existing user passwords//: Oui, changez aussi le mot de passe par défaut des utilisateurs (il va mettre votre mot de passe aux deux utilisateurs: root et dietpi). * Allez dans //DietPi-config//: * //Language/Regional options//: * //Locale//: choisissez //fr_FR.UTF-8// * //Timezone//: choisissez la vôtre (moi: Europe/Paris) * //Keyboard//: //Generic-105 keys PC (intl.)// > //Other// > //French// > //French - French (alt.)// > //Right Alt (AltGr)// > //No compose key// et revenez avec //back// * Sortez de //DietPi-config// avec //back// * //Search Software// : tapez 'x' pour rechercher. Dans la liste, cochez //X.org// et //LXDE//. * //Install// et laissez l'installation se faire. Maintenant on va activer le démarrage directement en mode graphique: * En root, tapez ''dietpi-config'' > //Autostart Options//. Sous //Desktops//, choisissez: * //LightDM login mask// pour la fenêtre de login graphique. * //Automatic Login// pour un login automatique (choisissez l'utilisateur //dietpi//, pas //root// !) * Sortez de //DietPi-config// avec //back// * tapez ''reboot'' * Vous devriez être en bureau graphique. Si vous faites juste un serveur, vous pouvez bien entendu lui demander de démarrer juste en mode terminal dans ''dietpi-config'' (Vous pouvez à tout moment démarrer l'interface graphique en tapant ''startx'') Pour changer d'autres options, ouvrez un terminal et tapez ''sudo dietpi-launcher''. Vous aurez accès à tous les outils DietPi pour la configuration et l'installation du système. ===== Installation de logiciels ===== Vous pouvez passer par ''dietpi-software'', mais vous avez aussi accès à ''apt'' (et les dépôts Debian derrière). Dans ''dietpi-software'' il y a des pré-configurations pour différents types de serveurs (web, NextCloud, OpenVPN, torrent, Pi-Hole...). {{ :raspi3:dietpi-software.png?nolink |}} Quand c'est possible, préférez les outils DietPi à ''apt'' pour l'installation, car DietPi a des versions spécialement optimisées. Personnellement, j'installe: * En passant par les outils DietPi (''sudo dietpi-software''): * //qBitTorrent// (nox) (voir plus bas dans cette page) * //Wireguard// (vpn) * //OpenSSH// (en remplacement du serveur ssh fournit en standard (//Dropbear//) de manière à pouvoir faire du transfer de fichiers par ssh sans avoir à utiliser proftpd ou vsftpd.) * et par apt:sudo apt install less man-db gdebi synaptic zram-tools xscreensaver* lsof smplayer * Oui, ''less'' et ''man'' ne sont pas installés par défaut. * gdebi permet d'installer des paquets .deb téléchargés (et d'en examiner le contenu). * //Synaptic// sera accessible dans le menu //Préférences// > //Gestionnaire de paquets Synaptic// (PS: Il est horriblement lent sur Raspberry) * zram-tools: Active zram, en particulier le swap en mémoire compressée (réduit le swap disque, ce dernier étant toujours mauvais pour une microSD). * Contrôler que le swap zram est actif: ''cat /proc/swaps'' (vous devez voir un ''/dev/zram0'') * Voir la compression du swap: ''sudo zramctl'' (DATA indique combien de données il contient, TOTAL la quantité de mémoire qu'il occupe après compression). * //xscreensaver*// : Économiseurs d'écran. Pour les configurer: Menu > //Préférences// > //Économiseur d'écran// (ou lancez ''xscreensaver-demo''). * //lsof// pour voir ce quel processus a la main sur un fichier. * //smplayer// un excellent lecteur vidéo léger et rapide, basé sur mplayer. J'installe une interface graphique et ces logiciels, mais dans la pratique je m'en sers pas: 99% du temps le Raspberry démarre en mode terminal (c'est juste un serveur). ===== Sécurité ===== Par défaut, 2 utilisateurs sont créés: ''root'' et ''dietpi''. Seul root a les droits administrateur. Notez qu'en plus du fait que (comme d'habitude) ces utilisateurs aient un mot de passe, il existe aussi un mot de passe global DietPit (vous pourrez le choisir à l'installation). ===== Astuces en vrac ===== * Les documentations de DietPi sont là : https://dietpi.com/docs/ * **ATTENTION**: Si systemd est bien présent pour gérer les services, certains services sont gérés directement par dietpi-services (''sudo dietpi-services''), en particulier les services que vous avez installés via dietpi-software. * Pour ajuster les informations qui s'affichent quand vous ouvrez un terminal, faite ''sudo dietpi-banner'' * Le fait de swapper étant particulièrement mauvais pour les cartes microSD, on essaie de le réduire: * DietPi utilise déjà RAMLog pour /var/log afin d'éviter des écritures fréquentes. * DietPi utilise aussi tmpfs pour /tmp (fichiers temporaires) * mais vous pouvez ajouter: * ''sudo apt install zram-tools'' : en installant zram, un segment de mémoire compressée sera utilisé en priorité sur le swap disque (vous pouvez le voir avec un ''cat /proc/swaps'' et voir le taux de compression avec ''sudo zramctl'') * ''%%sudo bash -c 'echo "vm.swappiness=1" >> /etc/sysctl.conf'%%'' : réduit la propension du système à swapper préventivement (rebootez pour prise en compte). 1 est la valeur minimum sans désactiver le swap. * Installation du script de mise à jour de la [[:dns-blocklist#linux_macosx|liste de blocage DNS]] (tout ce qui n'est pas chargé dans une page web, c'est de la mémoire en moins consommée). * Sur le Raspberry, si vous faites passer votre Firefox pour un navigateur mobile, la plupart des sites web vous serviront une version allégée de leurs pages, ce qui chargera beaucoup moins le Raspberry: * Nouvel onglet, tapez ''about:config'' dans la barre d'adresse * Recherche le paramètre ''general.useragent.override''. S'il n'existe pas, crééez-le (de type chaîne) et entrez le user-agent de votre choix. Par exemple le User-Agent par défaut de Firefox sous DietPi est:User-Agent: Mozilla/5.0 (X11; Linux armv7l; rv:78.0) Gecko/20100101 Firefox/78.0 * changez-le en (notez le ''X11; Linux armv7l;'' changé en ''Android; Mobile;'') :User-Agent: Mozilla/5.0 (Android; Mobile; rv:78.0) Gecko/20100101 Firefox/78.0 * Vous voulez des couleurs dans votre terminal (avec ls/ll) ? Dans votre fichier ''~/.bashrc'', décommentez (ou ajoutez) les lignes suivantes:export LS_OPTIONS='--color=auto' eval "$(dircolors)" alias ls='ls $LS_OPTIONS' alias ll='ls $LS_OPTIONS -l' alias l='ls $LS_OPTIONS -lA' * **Réduire la chauffe du Raspberry**: Le CPU du Raspberry fait du //frequency-scaling//, c'est à dire qu'il va monter en fréquence en fonction des besoins des processus. Mais il a tendance à monter assez vite, donc à moins que vous n'utilisiez des applications en temps réel, il est utile de le rendre un peu plus conservateur au niveau de la montée en fréquence. Cela réduira aussi la montée en température du Raspberry. Voici les conseils de configuration: * Lancez ''sudo dietpi-config'', allez dans //Performances Options//: ^ Paramètre ^ Valeur par défaut ^ Valeur recommandée ^ Explications ^ | //Overclocking// | none | **none** | Vous pouvez forcer le Raspberry à fonctionner au delà des fréquences recommandées du CPU afin d'avoir de meilleures performances, mais cela le fait chauffer. Non recommandé. Laissez à "none". | | //CPU Governor// | schedutil | **conservative** | Le //gorvenor// est l'algorithme qui va décider de la montée/descente en fréquence du CPU en fonction de l'occupation des coeurs du CPU. //Schedutil// monte très vite en fréquence (et redescend vite), //conservative// lui va monter moins vite en absorbant les pics d'activité ponctuels (occupation du CPU importante pendant un court instant). | | //CPU Throttle Up// | 50 | **85** | À partir de ce pourcentage d'occupation d'un coeur du CPU, le //governor// va décider de commencer à augmenter la fréquence. À moins d'avoir des besoins de traitement en temps réel, mettez à 85. | | //ARM Temperature Limit// | | **75** | Quand le Raspberry atteind cette température, il fait du //throttling// : il réduit la fréquence du processeur pour éviter de chauffer plus. Peut être mis à 75 pour les Raspberry Pi 3/4. | | //ARM Idle Frequency// | 600 | **300** | C'est la fréquence du processeur quand il ne fait "rien". Par défaut à 600, autant la descendre à 300. | | //ARM Initial Turbo// | 20 | **20** | Au démarrage, le Raspberry sera au maximum de sa fréquence pendant ce temps afin d'accélérer le démarrage. Vous pouvez laisser à 20. | ==== qBitTorrent ==== Le client torrent qBitTorrent est disponible, mais plus particulièrement il s'agit de **qBitTorrent-nox** : ce n'est pas installé comme une application graphique, mais comme un service. Il est alors accessible à l'aide d'un simple navigateur (l'interface web est identique à l'application graphique). Il consomme beaucoup moins de mémoire que le client graphique, et démarre avec la machine même si aucun utilisateur n'est connecté. Par défaut, vous devez accéder par http://localhost:1340 avec le login ''qbittorrent'' et le mot de passe ''dietpi'' (ou le mot de passe global que vous avez choisi). Si le login n'est pas accepté (ce qui arrive dans certains cas), voici comment rénitialiser le mot de passe de qBitTorrent-nox: * taper ''sudo systemctl stop qbittorrent.service'' * taper ''sudo nano /home/qbittorrent/.config/qBittorrent/qBittorrent.conf'' * et dans le fichier, supprimer la ligne qui commence par ''WebUI\Password_...'' (utilisez Ctrl+K) * Sauvegarder, quitter (Ctrl-W pour sauvegarder, Ctrl-X pour quitter) * puis: ''sudo systemctl start qbittorrent.service'' * Vous pouvez maintenant accéder à http://localhost:1340 avec le login ''qbittorrent'' et le mot de passe ''adminadmin'' (Pensez à le changer). Le service qBitTorrent tournant avec un utilisateur différent, assurez-vous qu'il a les droits d'écrire dans le répertoire dans lequel il est censé mettre ses fichiers. Mesure de sécurité supplémentaire: Ne démarrer le service ''qbittorrent.service'' que si le VPN (service ''wg-quick@wg0.service'', voir ci-dessous) est démarré avec succès: * ''sudo dietpi-services'' * aller sur //qbittorrent//, Entrée * Choisir //Edit : [/etc/systemd/system/qbittorrent.service]// * Dans la section ''[Unit]'', ajoutez une ligne: ''Requires=wg-quick@wg0.service'' (à remplacer par le nom du service VPN de votre système) * Ctrl+X pour quitter et sauvegarder. * Quittez ''dietpi-services'' et acceptez qu'il redémarre les services. * Ainsi: * si le service VPN n'a pas pu démarrer, le système ne démarrera pas qBitTorrent. * si le service de VPN est arrêté, le système arrêtera aussi qBitTorrent. * Vérifier: ''sudo systemctl list-dependencies qbittorrent.service'' doit vous afficher ''wg-quick@wg0.service'' dans la liste de ses dépendances. * Vous pouvez aussi vérifier qu'en arrêtant le VPN le système arrête bien aussi qBitTorrent: ''sudo systemctl stop wg-quick@wg0.service'' (et vérifiez dans ''htop'' que qBitTorrent est arrêté.) ==== Client Wireguard/Mullvad ==== (Je met surtout cette documentation pour moi ici.) Pour configurer le client Wireguard avec le VPN Mullvad dans DietPi: * Installer Wireguard via ''sudo dietpi-software'' * Aller sur https://mullvad.net/fr/account/#/wireguard-config/ pour générer une config avec votre compte. * Choisir //Linux//, cliquer sur //Generate key// * Choisissez un pays, puis //All cities// * Dans les //Advanced settings// juste en dessous: * pensez à bien cocher //Enable kill switch (Linux only)// (Le //killswitch// assure que, si la connexion VPN tombe, les applications ne puissent pas communiquer sur internet //sans// le VPN. Toute coupure du VPN coupe donc la connexion internet.) * //Server connection protocol//: IPv4 * //Tunnel traffic// : IPv4 (j'ai trop de soucis avec l'IPv6 sur ma Livebox) * //Select a DNS server// : //AdBlocking + Tracker blocking// * Cliquez sur //Download zip archive// * Décompressez ce fichier zip dans /etc/wireguard * Dans ce répertoire, copiez un des fichiers de config (celui de votre choix) sous le nom wg0.conf (exemple: ''sudo cp mullvad-fr13.conf wg0.conf'') * Dans le fichier wg0.conf, à fin des lignes ''PostUp = iptables...'' et ''PreDown = iptables...'' ajoutez: && iptables -I OUTPUT 1 -s 192.168.0.0/24 -d 192.168.0.0/24 -j ACCEPT afin que la machine puisse continuer à communiquer avec le réseau local. * Activer le VPN au démarrage:sudo systemctl enable wg-quick@wg0 * Démarrer le VPN immédiatement: ''sudo systemctl start wg-quick@wg0'' * Arrêter le VPN: ''sudo systemctl stop wg-quick@wg0'' (N'oubliez pas qu'avec le killswitch, cela va couper votre connexion internet.) * Pour voir si le VPN est actif: ''ip ad'' (si vous voyez un wg0 dans la liste, c'est que le VPN est actif). Avantages: * Wireguard est plus léger qu'OpenVPN. * Le VPN démarre avec le Raspberry. * Si la connexion VPN tombe, cela bloque le client torrent et tout accès au net. * La communication avec les machines du réseau local n'est jamais bloquée. Notes: * Si vous avez installé le serveur DLNA, il faut les règles:sudo iptables -I OUTPUT 1 -s 192.168.0.0/24 -d 192.168.0.0/24 -j ACCEPT sudo iptables -I OUTPUT 1 -s 0.0.0.0/32 -d 224.0.0.1/32 -p igmp -j ACCEPT sudo iptables -I OUTPUT 1 -d 239.0.0.0/8 -p igmp -j ACCEPT ==== Serveur DLNA ==== Le protocole DLNA permet (entre autres) d'annoncer sur le réseau local un "entrepot" de médias (films, musique, images) et de partager ces médias. Les appareils connectés modernes (TV connectées, MediaCenters...) sont capables d'afficher les serveurs DLNA et d'en lire le contenu. Cela permet par exemple de lire directement sur votre smartTV les contenus stockés sur votre Raspberry. Voici comment installer un serveur DLNA dans DietPi: * ''sudo dietpi-software'', installez ''ReadyMedia: (MiniDLNA) media streaming server (dlna, upnp)''. * Vérifiez que le serveur répond: http://localhost:8200 * Par défaut, il partagera sur le réseau: * Les musiques présentes dans ''/mnt/dietpi_userdata/Music'' * Les photos présentes dans ''/mnt/dietpi_userdata/Pictures'' * Les vidéos présentes dans ''/mnt/dietpi_userdata/Video'' * Mais pouvez pouvez bien entendu changer cette configuration: * Configurez en modifiant le fichier ''/etc/minidlna.conf'': * **Pour lui dire où vous stockez vos fichiers**, ajoutez une ligne par répertoire. Exemple: media_dir=V,/mnt/usb/films media_dir=A,/mnt/usb/musique * V=vidéos, P=photos, A=audio. Vous pouvez spécifier plusieurs lettre par ligne. Exemple ''media_dir=PV,/mnt/smartphone'' * Ajoutez autant de lignes que vous le voulez (vous pouvez mettre plusieurs lignes de type 'V' par exemple). * **Pour changer le nom de votre serveur sur le réseau**, exemple: ''friendly_name=Raspberry'' * Redémarrez le service pour qu'il prenne en compte cette configuration: ''sudo systemctl restart minidlna'' * Lorsque vous redémarrez le service (ou que vous démarrez votre Raspberry), minidlna peut mettre quelques minutes à indexer les fichiers s'il y en a beaucoup (suivez la progression en rafraichissant la page http://localhost:8200). * Si vous ajoutez des fichiers, minidlna va en principe automatiquement les prendre en compte au bout d'un moment. Si ce n'est pas le cas, redémarrez le service (commande //restart// ci-dessus). Vous devriez alors voir le Raspberry apparaître dans la liste des sources de votre télé. Notez que même si cela n'est pas explicitement indiqué dans la documentation, la majorité des smartTV sorties ces dernières années sont compatibles DLNA. **Il est possible que votre poste télé mette quelques minutes à prendre en compte le serveur DLNA.** Soyez patients. Un serveur DLNA n'a pas de sécurité: Toute machine sur le même réseau local/point d'accès Wifi pourra lire tous les médias présents dans le serveur DLNA. Par contre, minidlna ne fait pas de transcodage. Cela veut dire que vous ne pourrez lire que les formats supportés par votre télé. * Les fichiers MP4 et MKV passent généralement sans problème car la vidéo est encodée en H264 ou H265 (H265 ne fonctionnera probablement que sur les télés plus récentes). L'audio est généralement en AAC ou AC3 et passera sans problème (s'il est en DTS, la télé risque de ne pas savoir le lire). * Les fichiers AVI ne passeront généralement pas, car ils contiennent souvent des vidéos encodées en Divx/xvid (non supportés sur les télés pour des raisons de license). **Il faut expérimenter.** Essayez de faire lire le fichier que vous avez avec la télé. Il ne passe pas ? Tout n'est pas perdu: Vous pouvez le convertir: * Si vous ne voulez pas vous embêter, vous pouvez le convertir de force en mp4:ffmpeg -i video.avi videoConvertie.mp4(en précisant l'extension ''.mp4'', ffmpeg choisira automatiquement le codec H264 pour la vidéo et AAC pour l'audio, ce qui devrait ensuite passer sans problème sur pratiquement tous les appareils.) * Si ce n'est que l'audio qui ne passe pas, essayez de convertir uniquement l'audio. Exemple avec un fichier mkv pour convertir le son DTS en AAC, mais sans toucher à la vidéo:ffmpeg -i video.mkv -acodec aac -vcodec copy videoConvertie.mkv(''-vcodec copy'' va copier la vidéo tel quel sans la ré-encoder, et ''-acodec aac'' va ré-encoder l'audio en AAC.) Pour voir quel encodage est utilisé par une vidéo, vous pouvez ouvrir la vidéo avec VLC et presser Ctrl+i.