0 Votes

Code source wiki de Reconstruction

Version 1.1 par john le 2026/09/20 14:03

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