Reconstruction
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ément | Valeur |
|---|---|
| Script | /usr/local/sbin/backup-config.sh |
| Destination | <POINT_MONTAGE>/config-matrix/ |
| Planification | /etc/cron.d/backup-config, dimanche à 2 h |
| Rétention | 7 archives |
| Taille | Environ 325 Mo par archive |
| Droits | Ré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 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ément | Conséquence | Comment le recréer |
|---|---|---|
| Configuration d'AdGuard Home | Réécritures DNS et listes perdues | Page AdGuard Home |
| Identité du nœud Meshtastic | Nouveau nœud, nouvelles clés | Réimporter un export de configuration |
| Base de Jellyfin | Bibliothèques, utilisateurs, historique perdus | Réajouter les bibliothèques ; nouvelle clé d'API pour Jellystat |
| Clé autorisée pour Plakar | Sauvegardes bloquées | Recopier 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 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=spi=on
dtoverlay=spi0-0cs
dtparam=audio=off
dtoverlay=gpio-fan,gpiopin=14,temp=50000
| Ligne | Pour |
|---|---|
| i2c_arm | Écran OLED du boîtier |
| spi et spi0-0cs | Module LoRa (Meshtastic) |
| audio=off | Libère le PWM de la broche 18 pour le bandeau LED |
| gpio-fan | Ventilateur 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 :
| Paramètre | Pour |
|---|---|
| usb-storage.quirks | Pont USB du SSD en mode usb-storage |
| cgroup_enable=memory cgroup_memory=1 | Limites de mémoire des conteneurs Docker |
| apparmor=1 security=apparmor | AppArmor |
| cfg80211.ieee80211_regdom=FR | Réglementation Wi-Fi française |
Redémarrer, puis contrôler :
cat /sys/class/thermal/cooling_device0/type # gpio-fan
3. SSD et Wi-Fi
- Montage, point de montage immuable, smartmontools : page SSD de stockage.
- Économie d'énergie Wi-Fi désactivée : page Raspberry Pi.
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 :
5. Docker
Dépôt officiel de Docker, puis :
- Portainer : agent seulement, piloté par l'instance centrale.
- Watchtower : stack de la page Serveur principal.
- AdGuard Home.
- OLED Stats :
--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 :
- 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
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.