0 Votes

Reconstruction

Modifié par john le 2026/09/20 18:24

Ordre des opérations pour remonter le Raspberry Pi sur une carte SD neuve. Les données du SSD (dépôt de sauvegarde, médias Jellyfin) ne sont pas concernées : le SSD se remonte tel quel.

Sauvegarde de la configuration

Le Pi n'est pas sauvegardé par Plakar (il héberge le dépôt). Une archive hebdomadaire de sa configuration est déposée sur son propre SSD : elle couvre la perte de la carte SD, pas celle de la machine entière.

ÉlémentValeur
Script/usr/local/sbin/backup-config.sh
Destination<POINT_MONTAGE>/config-matrix/
Planification/etc/cron.d/backup-config, dimanche à 2 h
Rétention7 archives
TailleEnviron 325 Mo par archive
DroitsRéservé à root : l'archive contient /etc

Contenu : /etc, /var/lib/jellyfin (sans metadata ni transcodes, retéléchargés), les préférences Meshtastic (/var/lib/meshtasticd/.portduino), la configuration d'AdGuard Home, le script led-anim.

sudo /usr/local/sbin/backup-config.sh          # lancer à la main
sudo ls -lh <POINT_MONTAGE>/config-matrix/     # lister les archives
sudo tar tzf <ARCHIVE> | head                  # vérifier le contenu

Restauration après réinstallation : extraire l'archive dans un dossier temporaire, puis replacer les fichiers un par un, en suivant les étapes ci-dessous. Ne pas écraser /etc en bloc sur un système neuf.

Sans archive récente

ÉlémentConséquenceComment le recréer
Configuration d'AdGuard HomeRéécritures DNS et listes perduesPage AdGuard Home
Identité du nœud MeshtasticNouveau nœud, nouvelles clésRéimporter un export de configuration
Base de JellyfinBibliothèques, utilisateurs, historique perdusRéajouter les bibliothèques ; nouvelle clé d'API pour Jellystat
Clé autorisée pour PlakarSauvegardes bloquéesRecopier la clé publique du serveur principal

1. Système

Raspberry Pi Imager, image Raspberry Pi OS Lite (64 bits), avec dans les réglages : nom d'hôte, utilisateur, clé SSH publique (sans mot de passe), Wi-Fi et pays FR.

sudo apt update && sudo apt full-upgrade
sudo apt install rsyslog fail2ban smartmontools chkrootkit lynis pipx uhubctl

SSH par clé uniquement : PasswordAuthentication no et KbdInteractiveAuthentication no dans /etc/ssh/sshd_config.d/.

2. Démarrage

Ajouts à /boot/firmware/config.txt :

dtparam=i2c_arm=on
dtparam=spi=on
dtoverlay=spi0-0cs
dtparam=audio=off
dtoverlay=gpio-fan,gpiopin=14,temp=50000
LignePour
i2c_armÉcran OLED du boîtier
spi et spi0-0csModule LoRa (Meshtastic)
audio=offLibère le PWM de la broche 18 pour le bandeau LED
gpio-fanVentilateur du boîtier piloté par la broche 14, démarrage à 50 °C

Ne pas ajouter gpu_mem (le Pi n'affiche rien) ni enable_uart (la broche 14 sert au ventilateur).

Ajouts à la ligne unique de /boot/firmware/cmdline.txt :

usb-storage.quirks=174c:55aa:u cgroup_enable=memory cgroup_memory=1 apparmor=1 security=apparmor cfg80211.ieee80211_regdom=FR
ParamètrePour
usb-storage.quirksPont USB du SSD en mode usb-storage
cgroup_enable=memory cgroup_memory=1Limites de mémoire des conteneurs Docker
apparmor=1 security=apparmorAppArmor
cfg80211.ieee80211_regdom=FRRéglementation Wi-Fi française

Redémarrer, puis contrôler :

ls /dev/spidev0.0 /dev/i2c-1
cat /sys/class/thermal/cooling_device0/type     # gpio-fan

3. SSD et Wi-Fi

4. Dépôt de sauvegarde

Utilisateur plakar, limitation SFTP, clé du serveur principal : section « Mise en place du dépôt » de la page Sauvegarde. Le dépôt lui-même est déjà sur le SSD.

Tester depuis le serveur principal :

sudo plakar -keyfile /root/.plakar-pass at "<REPO>" ls | tail -n 3

5. Docker

Dépôt officiel de Docker, puis :

docker run -d --name OLED_Stats --restart unless-stopped \
 --privileged --network host \
 --device /dev/i2c-1 --device /dev/gpiomem \
 -e TZ=Europe/Paris -e OLED_ROTATION=1 \
 mklements/oled_stats:latest status.py

6. Services natifs

  • Meshtastic : dépôt, fichiers de config.d, puis réimport de la configuration exportée :
meshtastic --host localhost --configure meshtastic-config.yaml
  • Jellyfin : dépôt Jellyfin, bibliothèques sur le SSD, Batman en proxy de confiance (KnownProxies), nouvelle clé d'API à reporter dans Jellystat.
  • led-anim : venv, script, service.
  • fail2ban, chkrootkit, Lynis.
  • Outils meshtastic et yt-dlp : pipx install.

7. Contrôles finaux

systemctl is-active meshtasticd led-anim jellyfin docker fail2ban smartmontools
docker ps --format '{{.Names}}  {{.Status}}'
meshtastic --host localhost --info | grep -m1 Owner

Depuis un poste du réseau : résolution DNS par le Pi, puis attendre le ✅ de la sauvegarde suivante.
Remettre en place le script de sauvegarde de la configuration et sa tâche cron (section en tête de page), puis le lancer une fois.