Page créée avec « {{Tuto Details |Licences=Attribution (CC-BY) |Description=Fabriquez une mini-bibliothèque numérique de poche : une box Wi-Fi autonome et nomade qui partage des fichiers... » |
Aucun résumé des modifications |
||
| Ligne 56 : | Ligne 56 : | ||
|Step_Content=L'Open BiblioBox repose sur trois éléments : | |Step_Content=L'Open BiblioBox repose sur trois éléments : | ||
'''- Le M5Stack''' crée un réseau Wi-Fi local (comme une petite box Internet, mais sans Internet). Son cerveau, la puce ESP32, fait tourner un mini site web. | |||
'''- La carte microSD''' stocke les fichiers à partager (dans un dossier <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">biblio</code>). | |||
'''- Le programme''' (en langage MicroPython) fait le lien : il affiche la page web, gère les téléchargements et les dépôts. | |||
Quand quelqu'un rejoint le Wi-Fi « Open BiblioBox », son téléphone détecte qu'il faut « se connecter au réseau » et '''ouvre automatiquement la page d'accueil''' (c'est ce qu'on appelle un « portail captif », comme dans les hôtels et les gares). | Quand quelqu'un rejoint le Wi-Fi « Open BiblioBox », son téléphone détecte qu'il faut « se connecter au réseau » et '''ouvre automatiquement la page d'accueil''' (c'est ce qu'on appelle un « portail captif », comme dans les hôtels et les gares). | ||
| Ligne 66 : | Ligne 68 : | ||
{{Tuto Step | {{Tuto Step | ||
|Step_Title=Installer MicroPython sur le M5Stack | |Step_Title=Installer MicroPython sur le M5Stack | ||
|Step_Content=MicroPython est le « langage » que le M5Stack va comprendre. On l'installe une seule fois | |Step_Content=MicroPython est le « langage » que le M5Stack va comprendre. On l'installe une seule fois : | ||
- Téléchargez le logiciel '''Thonny''' sur https://thonny.org et installez-le. | |||
- Téléchargez le firmware MicroPython pour ESP32 ici : https://micropython.org/download/ESP32_GENERIC Prenez le fichier <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">.bin</code> le plus récent en haut de la liste. | |||
- Branchez le M5Stack à l'ordinateur avec le câble USB-C. | |||
- Dans Thonny, allez dans '''Outils → Options → Interpréteur''', choisissez « MicroPython (ESP32) » et le port COM/USB correspondant à votre M5Stack (pour vérifier le numéro du port COM, vous pouvez aller sur Windows dans démarrer/paramètres/périphériques et chercher dans la liste). | |||
- Cliquez en bas sur '''« Installer ou mettre à jour MicroPython »''', sélectionnez le port et le fichier <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">.bin</code>, puis lancez l'installation. | |||
}} | }} | ||
{{Tuto Step | {{Tuto Step | ||
|Step_Title=Préparer la carte microSD | |Step_Title=Préparer la carte microSD | ||
|Step_Content= | |Step_Content=- Branchez la carte microSD sur votre ordinateur (via l'adaptateur). | ||
'''- Formatez-la en FAT32''' (clic droit sur la carte → Formater → système FAT32). | |||
- Décompressez l'archive <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">OpenBiblioBox.zip</code>. | |||
- Copiez le '''contenu''' du dossier <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">carte_SD/</code> à la '''racine''' de la carte. À la fin, la carte doit contenir directement : | |||
* un dossier <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">biblio/</code> (vos fichiers à partager : PDF, images, audio, modèles 3D…), | |||
* un dossier <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">pending/</code> (laissez-le vide, la box s'en sert pour la modération). | |||
- Mettez quelques fichiers d'exemple dans <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">biblio/</code>. | |||
- Éjectez proprement la carte SD. | |||
- Insérez la carte dans le M5Stack. | |||
}} | }} | ||
{{Tuto Step | {{Tuto Step | ||
| Ligne 90 : | Ligne 104 : | ||
|Step_Content=Tout se règle dans le fichier '''<code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">config.py</code>''' (dossier <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">code_a_flasher/</code>). Ouvrez-le avec un éditeur de texte simple comme le BlocNote et modifiez les valeurs entre guillemets : | |Step_Content=Tout se règle dans le fichier '''<code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">config.py</code>''' (dossier <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">code_a_flasher/</code>). Ouvrez-le avec un éditeur de texte simple comme le BlocNote et modifiez les valeurs entre guillemets : | ||
<code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">SSID</code> : le nom du réseau Wi-Fi (ce que les gens verront pour se connecter en Wifi). | |||
<code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">WIFI_PASSWORD</code> : laissez vide <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">""</code> pour un réseau ouvert (esprit PirateBox), ou mettez un mot de passe. | |||
<code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">ADMIN_PASSWORD</code> : '''à changer impérativement''' — c'est le mot de passe du panneau d'administration. | |||
<code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">WELCOME_TITLE</code> et <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">WELCOME_MESSAGE</code> : le titre et le message d'accueil (vous pouvez y mettre un manifeste, des consignes, le nom de votre événement…). | |||
<code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">DEFAULT_MODE</code> : le mode de départ (<code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">read</code> = lecture seule sans dépôt possible par les utilisateurs, <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">open</code> = dépôt libre, <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">mod</code> = dépôt modéré). | |||
Pas besoin de toucher au reste du code : <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">config.py</code> est fait pour ça. | Pas besoin de toucher au reste du code : <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">config.py</code> est fait pour ça. | ||
| Ligne 100 : | Ligne 123 : | ||
{{Tuto Step | {{Tuto Step | ||
|Step_Title=Copier le code sur le M5Stack | |Step_Title=Copier le code sur le M5Stack | ||
|Step_Content= | |Step_Content=- Dans Thonny, menu '''Affichage → Fichiers''' : un panneau apparaît à gauche, avec « Cet ordinateur » en haut et « Appareil MicroPython » en bas. | ||
- En haut, naviguez jusqu'au dossier <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">code_a_flasher/</code>. | |||
- Sélectionnez les 9 fichiers <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">.py</code> (cliquez sur le premier, puis Maj+clic sur le dernier). | |||
'''- Clic droit → « Téléverser vers / » (Upload to /)'''. | |||
- Les fichiers apparaissent dans le panneau du bas : ils sont maintenant dans la mémoire du M5Stack. | |||
| Ligne 111 : | Ligne 138 : | ||
{{Tuto Step | {{Tuto Step | ||
|Step_Title=Démarrer et tester | |Step_Title=Démarrer et tester | ||
|Step_Content= | |Step_Content=- Appuyez sur le '''bouton rouge de reset''' sur le côté du M5Stack (à côté du port USB-C). Un petit '''jingle sonore''' confirme le démarrage. | ||
- Sur votre téléphone, ouvrez les réglages Wi-Fi et connectez-vous au réseau '''« Open BiblioBox »'''. | |||
- La page d'accueil doit s'ouvrir toute seule. Sinon, ouvrez un navigateur et tapez l'adresse '''<code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">192.168.4.1</code>'''. | |||
- Vous voyez la liste des fichiers : essayez d'en télécharger un. | |||
- Pour administrer : allez sur '''<code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">192.168.4.1/admin</code>''' et entrez le mot de passe défini dans <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">config.py</code>. | |||
| Ligne 124 : | Ligne 155 : | ||
|Step_Content=Depuis le panneau d'administration (<code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">/admin</code>), vous choisissez le mode. Le réglage est '''mémorisé''' même après une coupure de courant. | |Step_Content=Depuis le panneau d'administration (<code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">/admin</code>), vous choisissez le mode. Le réglage est '''mémorisé''' même après une coupure de courant. | ||
'''- Lecture seule''' : les visiteurs peuvent seulement télécharger. | |||
'''- Dépôt ouvert''' : les visiteurs peuvent aussi déposer des fichiers, qui apparaissent immédiatement. | |||
'''- Dépôt modéré''' : les fichiers déposés attendent votre validation dans l'admin avant d'être visibles par tous. | |||
Dans l'admin, vous pouvez aussi : supprimer des fichiers un par un, vider tout le dossier <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">biblio</code>, voir l'espace libre sur la carte, et '''régler la taille maximale des dépôts''' (curseur de 2 à 20 Mo). | Dans l'admin, vous pouvez aussi : supprimer des fichiers un par un, vider tout le dossier <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">biblio</code>, voir l'espace libre sur la carte, et '''régler la taille maximale des dépôts''' (curseur de 2 à 20 Mo). | ||
| Ligne 134 : | Ligne 167 : | ||
{{Tuto Step | {{Tuto Step | ||
|Step_Title=BONUS : rendre la box autonome et nomade | |Step_Title=BONUS : rendre la box autonome et nomade | ||
|Step_Content= | |Step_Content='''- Alimentation''' : branchez le M5Stack sur une '''power bank''' USB. Comme l'écran est éteint, l'autonomie est meilleure. La box redémarre toute seule dès qu'elle est alimentée (le jingle confirme). | ||
'''- Limites de connexions''' : L'ESP32 du M5Stack accepte officiellement jusqu'à '''10 clients''' connectés en même temps sur son point d'accès, mais dans le cadre de ce projet le nombre de connexion simultanées est limité à pour plus de stabilité. C'est aussi un projet à vocation de ré-emploi d'un matériel de fonds de tiroirs, l'ESP32 et le serveur créé ne permets pas plusieurs téléchargement ou téléversements en simultané... Il faudra être patients et coordonnées pour l'utiliser, c'est la limite du projet. | |||
'''- Personnalisation''' : changez le message d'accueil dans <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">config.py</code> selon l'événement. Vous pouvez aussi pré-charger la carte SD avec une sélection thématique (zines, documents libres, créations des participants…). | |||
}} | }} | ||
{{Notes | {{Notes | ||
Auteur
Yann S. | Dernière modification 10/07/2026 par Mr Patate
Pas encore d'image
Arduino, ESP32, m5stack, piratebox, bibliobox, partage
L'OpenBiblioBox est un petit boîtier qui crée son propre réseau Wi-Fi. Quand on s'y connecte avec un téléphone ou un ordinateur, une page s'ouvre toute seule et permet de consulter, télécharger et déposer des fichiers, le tout sans Internet et sans laisser de véritable trace en ligne.
Le projet s'inspire directement de la célèbre PirateBox, créée en 2011 par David Darts, et de sa cousine la LibraryBox : l'idée d'un espace de partage libre, anonyme et local, déconnecté du réseau mondial et de sa surveillance. Ces projets sont plutôt à l'abandon, difficile à installer pour des novices faute à un manque de mise à jour de la doc. Ce tuto propose l'installation d'un
Quelques idées d'usages :
Cette version donne une seconde vie à un M5Stack Core (un petit boîtier à base de puce ESP32) qui dormait dans un tiroir. Aucune soudure n'est nécessaire, et aucune connaissance en programmation n'est requise : on copie des fichiers tout faits, on règle quelques options dans un seul fichier, et c'est prêt.
Ce tutoriel est écrit pour une personne novice en code mais à l'aise avec l'environnement informatique et la manipulation de fichiers. Chaque étape est détaillée.
Le projet est publié sous licence CC0 : vous pouvez le copier, le modifier et le réutiliser librement. Le projet a été créé avec l'assistance du modèle d'IA Claude d'Anthropic.
Pour l'instant je n'ai pas trouvé l'astuce pour utiliser l'écran pour pouvoir afficher une image de lancement et des infos pratiques sans affecter la lecture et écriture sur la carte SD. L'écran du M5 n'est pas utilisé dans cette première version mais c'est me semble-t-il le point d'amélioration pour utiliser pleinement le potentiel du M5. Sinon un esp32 avec un lecteur de carte suffirait en théorie mais pas testé. A vous de jouer et partager !
L'Open BiblioBox repose sur trois éléments :
- Le M5Stack crée un réseau Wi-Fi local (comme une petite box Internet, mais sans Internet). Son cerveau, la puce ESP32, fait tourner un mini site web.
- La carte microSD stocke les fichiers à partager (dans un dossier biblio).
- Le programme (en langage MicroPython) fait le lien : il affiche la page web, gère les téléchargements et les dépôts.
Quand quelqu'un rejoint le Wi-Fi « Open BiblioBox », son téléphone détecte qu'il faut « se connecter au réseau » et ouvre automatiquement la page d'accueil (c'est ce qu'on appelle un « portail captif », comme dans les hôtels et les gares).
Il n'y a donc rien à installer pour les visiteurs : juste se connecter au Wi-Fi.
MicroPython est le « langage » que le M5Stack va comprendre. On l'installe une seule fois :
- Téléchargez le logiciel Thonny sur https://thonny.org et installez-le.
- Téléchargez le firmware MicroPython pour ESP32 ici : https://micropython.org/download/ESP32_GENERIC Prenez le fichier .bin le plus récent en haut de la liste.
- Branchez le M5Stack à l'ordinateur avec le câble USB-C.
- Dans Thonny, allez dans Outils → Options → Interpréteur, choisissez « MicroPython (ESP32) » et le port COM/USB correspondant à votre M5Stack (pour vérifier le numéro du port COM, vous pouvez aller sur Windows dans démarrer/paramètres/périphériques et chercher dans la liste).
- Cliquez en bas sur « Installer ou mettre à jour MicroPython », sélectionnez le port et le fichier .bin, puis lancez l'installation.
- Branchez la carte microSD sur votre ordinateur (via l'adaptateur).
- Formatez-la en FAT32 (clic droit sur la carte → Formater → système FAT32).
- Décompressez l'archive OpenBiblioBox.zip.
- Copiez le contenu du dossier carte_SD/ à la racine de la carte. À la fin, la carte doit contenir directement :
biblio/ (vos fichiers à partager : PDF, images, audio, modèles 3D…),pending/ (laissez-le vide, la box s'en sert pour la modération).- Mettez quelques fichiers d'exemple dans biblio/.
- Éjectez proprement la carte SD.
- Insérez la carte dans le M5Stack.
Tout se règle dans le fichier config.py (dossier code_a_flasher/). Ouvrez-le avec un éditeur de texte simple comme le BlocNote et modifiez les valeurs entre guillemets :
SSID : le nom du réseau Wi-Fi (ce que les gens verront pour se connecter en Wifi).
WIFI_PASSWORD : laissez vide "" pour un réseau ouvert (esprit PirateBox), ou mettez un mot de passe.
ADMIN_PASSWORD : à changer impérativement — c'est le mot de passe du panneau d'administration.
WELCOME_TITLE et WELCOME_MESSAGE : le titre et le message d'accueil (vous pouvez y mettre un manifeste, des consignes, le nom de votre événement…).
DEFAULT_MODE : le mode de départ (read = lecture seule sans dépôt possible par les utilisateurs, open = dépôt libre, mod = dépôt modéré).
Pas besoin de toucher au reste du code : config.py est fait pour ça.
- Dans Thonny, menu Affichage → Fichiers : un panneau apparaît à gauche, avec « Cet ordinateur » en haut et « Appareil MicroPython » en bas.
- En haut, naviguez jusqu'au dossier code_a_flasher/.
- Sélectionnez les 9 fichiers .py (cliquez sur le premier, puis Maj+clic sur le dernier).
- Clic droit → « Téléverser vers / » (Upload to /).
- Les fichiers apparaissent dans le panneau du bas : ils sont maintenant dans la mémoire du M5Stack.
Le seul fichier que vous aurez parfois à re-téléverser après modification, c'est config.py.
- Appuyez sur le bouton rouge de reset sur le côté du M5Stack (à côté du port USB-C). Un petit jingle sonore confirme le démarrage.
- Sur votre téléphone, ouvrez les réglages Wi-Fi et connectez-vous au réseau « Open BiblioBox ».
- La page d'accueil doit s'ouvrir toute seule. Sinon, ouvrez un navigateur et tapez l'adresse 192.168.4.1.
- Vous voyez la liste des fichiers : essayez d'en télécharger un.
- Pour administrer : allez sur 192.168.4.1/admin et entrez le mot de passe défini dans config.py.
L'écran du M5Stack reste volontairement éteint dans cette version : tout se pilote depuis le téléphone, et couper l'écran économise la batterie quand la box tourne sur une power bank.
Depuis le panneau d'administration (/admin), vous choisissez le mode. Le réglage est mémorisé même après une coupure de courant.
- Lecture seule : les visiteurs peuvent seulement télécharger.
- Dépôt ouvert : les visiteurs peuvent aussi déposer des fichiers, qui apparaissent immédiatement.
- Dépôt modéré : les fichiers déposés attendent votre validation dans l'admin avant d'être visibles par tous.
Dans l'admin, vous pouvez aussi : supprimer des fichiers un par un, vider tout le dossier biblio, voir l'espace libre sur la carte, et régler la taille maximale des dépôts (curseur de 2 à 20 Mo).
Côté formats : presque tout est accepté (documents bureautiques, images, audio, vidéo, modèles 3D comme STL/OBJ/SVG, archives…). Seuls les fichiers dangereux (programmes exécutables, scripts) sont refusés, avec un message d'explication.
- Alimentation : branchez le M5Stack sur une power bank USB. Comme l'écran est éteint, l'autonomie est meilleure. La box redémarre toute seule dès qu'elle est alimentée (le jingle confirme).
- Limites de connexions : L'ESP32 du M5Stack accepte officiellement jusqu'à 10 clients connectés en même temps sur son point d'accès, mais dans le cadre de ce projet le nombre de connexion simultanées est limité à pour plus de stabilité. C'est aussi un projet à vocation de ré-emploi d'un matériel de fonds de tiroirs, l'ESP32 et le serveur créé ne permets pas plusieurs téléchargement ou téléversements en simultané... Il faudra être patients et coordonnées pour l'utiliser, c'est la limite du projet.
- Personnalisation : changez le message d'accueil dans config.py selon l'événement. Vous pouvez aussi pré-charger la carte SD avec une sélection thématique (zines, documents libres, créations des participants…).
Une fois la box allumée (un petit jingle confirme le démarrage), un nouveau réseau Wi-Fi « Open BiblioBox » apparaît dans la liste des réseaux disponibles sur n'importe quel téléphone ou ordinateur à proximité. En s'y connectant, une page web s'ouvre automatiquement — sans rien taper — et affiche la bibliothèque de fichiers, avec leurs noms et leur taille. On peut alors télécharger un document d'un simple appui, et, selon le mode choisi, en déposer soi-même. Toute l'expérience se déroule sans aucune connexion à Internet : la box est un petit monde numérique autonome, qui tient dans la main et fonctionne même au milieu de nulle part.
biblio et pending doivent être présents à la racine de la carte, en minuscules et sans accent.config.py avant tout usage public.Le M5Stack contient une puce ESP32, capable de créer un réseau Wi-Fi et de faire tourner un petit serveur web. Le programme MicroPython :
La même technologie est partout autour de nous, souvent sans qu'on la remarque : les portails Wi-Fi des hôtels, gares et aéroports qui ouvrent une page d'accueil dès qu'on se connecte fonctionnent sur le même principe de « portail captif ». Les box Internet de la maison créent un réseau local exactement comme le fait l'Open BiblioBox. Comprendre cet objet, c'est comprendre comment circulent les données autour de soi, ce qu'est un serveur, et pourquoi un service peut très bien fonctionner sans passer par un cloud lointain. C'est aussi une façon concrète de réaliser que le partage de fichiers ne dépend pas forcément des grandes plateformes, et qu'on peut reprendre la main sur ses propres données.
Ce tutoriel et le code associé sont publiés sous CC0 1.0 Universal (domaine public). Vous pouvez les copier, les modifier, les distribuer et les réutiliser librement, même à des fins commerciales, sans demander la permission.
Dernière modification 10/07/2026 par user:Mr Patate.
Draft
Vous avez entré un nom de page invalide, avec un ou plusieurs caractères suivants :
< > @ ~ : * € £ ` + = / \ | [ ] { } ; ? #