0 Votes

Code source wiki de Reconstruction

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

Afficher les derniers auteurs
1 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.
2
3 == Sauvegarde de la configuration ==
4
5 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.
6
7 |=Élément|=Valeur
8 |Script|##/usr/local/sbin/backup-config.sh##
9 |Destination|##<POINT_MONTAGE>/config-matrix/##
10 |Planification|##/etc/cron.d/backup-config##, dimanche à 2 h
11 |Rétention|7 archives
12 |Taille|Environ 325 Mo par archive
13 |Droits|Réservé à root : l'archive contient ##/etc##
14
15 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.
16
17 {{code language="bash"}}
18 sudo /usr/local/sbin/backup-config.sh # lancer à la main
19 sudo ls -lh <POINT_MONTAGE>/config-matrix/ # lister les archives
20 sudo tar tzf <ARCHIVE> | head # vérifier le contenu
21 {{/code}}
22
23 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.
24
25 === Sans archive récente ===
26
27 |=Élément|=Conséquence|=Comment le recréer
28 |Configuration d'AdGuard Home|Réécritures DNS et listes perdues|Page [[AdGuard Home>>Wiki Batcave John.Infrastructure.RaspberryPi.AdGuard Home.WebHome]]
29 |Identité du nœud Meshtastic|Nouveau nœud, nouvelles clés|Réimporter un export de configuration
30 |Base de Jellyfin|Bibliothèques, utilisateurs, historique perdus|Réajouter les bibliothèques ; nouvelle clé d'API pour Jellystat
31 |Clé autorisée pour Plakar|Sauvegardes bloquées|Recopier la clé publique du serveur principal
32
33 == 1. Système ==
34
35 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##.
36
37 {{code language="bash"}}
38 sudo apt update && sudo apt full-upgrade
39 sudo apt install rsyslog fail2ban smartmontools chkrootkit lynis pipx uhubctl
40 {{/code}}
41
42 SSH par clé uniquement : ##PasswordAuthentication no## et ##KbdInteractiveAuthentication no## dans ##/etc/ssh/sshd_config.d/##.
43
44 == 2. Démarrage ==
45
46 Ajouts à ##/boot/firmware/config.txt## :
47
48 {{code language="ini"}}
49 dtparam=i2c_arm=on
50 dtparam=spi=on
51 dtoverlay=spi0-0cs
52 dtparam=audio=off
53 dtoverlay=gpio-fan,gpiopin=14,temp=50000
54 {{/code}}
55
56 |=Ligne|=Pour
57 |##i2c_arm##|Écran OLED du boîtier
58 |##spi## et ##spi0-0cs##|Module LoRa (Meshtastic)
59 |##audio=off##|Libère le PWM de la broche 18 pour le bandeau LED
60 |##gpio-fan##|Ventilateur du boîtier piloté par la broche 14, démarrage à 50 °C
61
62 Ne pas ajouter ##gpu_mem## (le Pi n'affiche rien) ni ##enable_uart## (la broche 14 sert au ventilateur).
63
64 Ajouts à la ligne unique de ##/boot/firmware/cmdline.txt## :
65
66 {{code}}
67 usb-storage.quirks=174c:55aa:u cgroup_enable=memory cgroup_memory=1 apparmor=1 security=apparmor cfg80211.ieee80211_regdom=FR
68 {{/code}}
69
70 |=Paramètre|=Pour
71 |##usb-storage.quirks##|Pont USB du SSD en mode usb-storage
72 |##cgroup_enable=memory cgroup_memory=1##|Limites de mémoire des conteneurs Docker
73 |##apparmor=1 security=apparmor##|AppArmor
74 |##cfg80211.ieee80211_regdom=FR##|Réglementation Wi-Fi française
75
76 Redémarrer, puis contrôler :
77
78 {{code language="bash"}}
79 ls /dev/spidev0.0 /dev/i2c-1
80 cat /sys/class/thermal/cooling_device0/type # gpio-fan
81 {{/code}}
82
83 == 3. SSD et Wi-Fi ==
84
85 * Montage, point de montage immuable, smartmontools : page [[SSD de stockage>>Wiki Batcave John.Infrastructure.RaspberryPi.SSD.WebHome]].
86 * Économie d'énergie Wi-Fi désactivée : page [[Raspberry Pi>>Wiki Batcave John.Infrastructure.RaspberryPi.WebHome]].
87
88 == 4. Dépôt de sauvegarde ==
89
90 Utilisateur ##plakar##, limitation SFTP, clé du serveur principal : section « Mise en place du dépôt » de la page [[Sauvegarde>>Wiki Batcave John.Infrastructure.Sauvegarde.WebHome]]. Le dépôt lui-même est déjà sur le SSD.
91
92 Tester depuis le serveur principal :
93
94 {{code language="bash"}}
95 sudo plakar -keyfile /root/.plakar-pass at "<REPO>" ls | tail -n 3
96 {{/code}}
97
98 == 5. Docker ==
99
100 Dépôt officiel de Docker, puis :
101
102 * [[Portainer>>Wiki Batcave John.Infrastructure.Portainer.WebHome]] : agent seulement, piloté par l'instance centrale.
103 * Watchtower : stack de la page [[Serveur principal>>Wiki Batcave John.Infrastructure.ServeurPrincipal.WebHome]].
104 * [[AdGuard Home>>Wiki Batcave John.Infrastructure.RaspberryPi.AdGuard Home.WebHome]].
105 * [[OLED Stats>>Wiki Batcave John.Infrastructure.RaspberryPi.OLEDStats.WebHome]] :
106
107 {{code language="bash"}}
108 docker run -d --name OLED_Stats --restart unless-stopped \
109 --privileged --network host \
110 --device /dev/i2c-1 --device /dev/gpiomem \
111 -e TZ=Europe/Paris -e OLED_ROTATION=1 \
112 mklements/oled_stats:latest status.py
113 {{/code}}
114
115 == 6. Services natifs ==
116
117 * [[Meshtastic>>Wiki Batcave John.Infrastructure.RaspberryPi.Meshtastic.WebHome]] : dépôt, fichiers de ##config.d##, puis réimport de la configuration exportée :
118
119 {{code language="bash"}}
120 meshtastic --host localhost --configure meshtastic-config.yaml
121 {{/code}}
122
123 * [[Jellyfin>>Wiki Batcave John.Infrastructure.RaspberryPi.Jellyfin.WebHome]] : dépôt Jellyfin, bibliothèques sur le SSD, Batman en proxy de confiance (##KnownProxies##), nouvelle clé d'API à reporter dans Jellystat.
124 * [[led-anim>>Wiki Batcave John.Infrastructure.RaspberryPi.led-anim.WebHome]] : venv, script, service.
125 * [[fail2ban>>Wiki Batcave John.Infrastructure.RaspberryPi.fail2ban.WebHome]], [[chkrootkit>>Wiki Batcave John.Infrastructure.RaspberryPi.chkrootkit.WebHome]], [[Lynis>>Wiki Batcave John.Infrastructure.Lynis.WebHome]].
126 * Outils ##meshtastic## et ##yt-dlp## : ##pipx install##.
127
128 == 7. Contrôles finaux ==
129
130 {{code language="bash"}}
131 systemctl is-active meshtasticd led-anim jellyfin docker fail2ban smartmontools
132 docker ps --format '{{.Names}} {{.Status}}'
133 meshtastic --host localhost --info | grep -m1 Owner
134 {{/code}}
135
136 Depuis un poste du réseau : résolution DNS par le Pi, puis attendre le ✅ de la sauvegarde suivante.
137 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.