Outils pour utilisateurs

Outils du site


raspi3:dietpi

DietPi

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 1)) 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.

(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
4 ARMv8 64-bit Debian

Pour vous simplifier l'installation de DietPi sur une microSD, vous pouvez utiliser le logiciel 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…).

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 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.

1)
Single Board Computer
raspi3/dietpi.txt · Dernière modification: 2022/03/13 08:51 de sebsauvage