- JavaScript 51.6%
- CSS 23.9%
- HTML 23.8%
- PowerShell 0.7%
| .forgejo | ||
| .github/workflows | ||
| css | ||
| error | ||
| images | ||
| js | ||
| scripts | ||
| vendor | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| a-propos.html | ||
| AGENTS.md | ||
| blog.html | ||
| contact.html | ||
| index.html | ||
| outils.html | ||
| package-lock.json | ||
| package.json | ||
| projets.html | ||
| README.md | ||
| robots.txt | ||
| site.webmanifest | ||
| sitemap.xml | ||
| wiki.html | ||
Librenard
Pour un internet plus libre et curieux.
Le code source de librenard.fr : petits guides, projets auto-hébergés et trucs que je bricole. Sérieux dans le fond, pas dans la forme.
Le site · Le wiki · Les outils · Contact · Code source
Qui est derrière le renard ?
Nolann, technicien informatique. Je documente ce que j'apprends sur le terrain : dépannage, supervision, réseau, Linux, auto-hébergement. Le site est hébergé chez moi grâce à YunoHost, sans cookie, sans traqueur, sans pub.
Sur librenard.fr
| Section | Ce qu'on y trouve |
|---|---|
| Projets | Documentation collaborative (BookStack), auto-hébergement YunoHost, et le fil des derniers articles du wiki |
| Wiki | Tutoriels et notes techniques, prérendus en pages statiques pour le SEO et le partage |
| Outils | Petits utilitaires et services auto-hébergés que je recommande ou que j'utilise |
| Contact | Me joindre, parcours et centres d'intérêt |
Les livres du wiki
Le wiki couvre surtout :
- Linux — bases, commandes, Docker, partitionnement, GRUB…
- Windows — système de fichiers, DiskPart, partition EFI, dépannage GLPI
- Réseau — adresses IP, DNS, DHCP, reverse proxy, fibre, DMZ…
- Supervision — Centreon, GLPI, Uptime Kuma, Beszel, Zabbix
- Matériel & stockage — BIOS/UEFI, RAID, GPT/MBR
- Bidouilles — scripts maison, intégrations un peu farfelues
Chaque livre a sa page statique (wiki/<livre>.html) et chaque article sa propre URL
(wiki/<livre>/<article>.html), indexables et partageables sur les réseaux sociaux.
C'est quoi, ce terrier ?
Un site statique, du HTML, du CSS, du JavaScript. Pas de framework, pas de CDN au runtime, pas de cookie, pas de tracking. Juste un renard qui documente ce qu'il apprend : auto-hébergement avec YunoHost, logiciels libres, et un wiki BookStack qui grandit petit à petit.
Le seul outil un peu malin du terrier, c'est le script de build : il interroge l'API BookStack, prérend le wiki en pages statiques, rapatrie les images, indexe la recherche et génère le sitemap. Une fois construit, le site vit tout seul.
Faire tourner la machine
Il vous faut Node.js 18 ou plus (le fetch natif est requis).
npm install # dépendances + polices et libs self-hostées (vendor/)
npm run build # construit tout : pages, wiki prérendu, sitemap, recherche
Pas d'accès à l'API BookStack sous la patte ? Le build sait travailler hors ligne :
npm run build -- --no-wiki
Toutes les commandes
| Commande | Ce qu'elle fait |
|---|---|
npm run build |
Génère les pages, le prérendu du wiki, le sitemap, robots.txt et le manifest |
npm run build -- --no-wiki |
Build sans le prérendu wiki (hors ligne, sans API BookStack) |
npm test |
Tests unitaires des helpers de build |
npm run check:links |
Vérifie les liens internes |
npm run check:links:external |
Vérifie aussi les liens externes |
npm run verify |
Tests + build + vérification des liens, le tout en un |
Le prérendu du wiki (ou : comment plaire aux moteurs de recherche)
Au build, scripts/lib/wiki-prerender.mjs interroge l'API BookStack et fabrique une
vraie page statique pour chaque contenu :
wiki/<livre>.html: le sommaire d'un livrewiki/<livre>/<article>.html: l'article complet, avec table des matières, navigation précédent/suivant et JSON-LD
Ces pages sont les URL canoniques et partageables du contenu : chacune porte le titre, la description et la couverture du livre en balises OpenGraph/Twitter. Elles sont listées dans le sitemap avec la vraie date de mise à jour BookStack.
La navigation depuis le site (flux d'accueil, cartes de livres, liens #/book/... sur
wiki.html) passe par le mini-SPA : le contenu est relu en direct depuis l'API BookStack à
chaque visite, sans attendre un rebuild. Pour une preview correcte sur un réseau social,
partagez l'URL statique (wiki/bases-de-linux.html, etc.), pas la route hash.
Deux règles du terrier :
- Ne rien éditer à la main dans
wiki/. Le dossier est rasé et régénéré à chaque build. - Le token API se lit depuis la variable d'environnement
BOOKSTACK_TOKEN(voir.env.example), à défaut depuisjs/wiki/api.js.
Les étagères publiées se configurent dans scripts/lib/site-template.mjs (site.wikiShelves)
et doivent correspondre aux attributs data-shelf de wiki.html et projets.html.
Le build génère aussi :
pagefind/: index de recherche offline (Pagefind) sur les pages wiki statiquesimages/wiki/: miroir local des images BookStack, converties en WebP avec lazy loadingvendor/etcss/fonts.css: polices, highlight.js et OpenDyslexic self-hostés, zéro CDN au runtime
La patrouille (CI)
Chaque push déclenche les pipelines d'intégration continue sur nos trois plateformes (Forgejo, GitHub, Framagit/GitLab) :
- Forgejo Actions (
.forgejo/workflows/ci.yml) - GitHub Actions (
.github/workflows/ci.yml) - GitLab CI/CD (
.gitlab-ci.yml)
Les étapes de ces pipelines comprennent :
- Reniflage : les tests unitaires flairent les régressions
- Vigilance :
npm auditsurveille les dépendances - Tissage et patrouille : build complet du site, puis vérification de la recherche Pagefind, du sitemap et des liens internes
Sur main, le build est complet (avec prérendu wiki). Sur les branches et pull requests, il tourne en --no-wiki pour ne pas marteler l'API BookStack.
Des vérifications hebdomadaires des liens externes sont également configurées sur chaque plateforme (via cron/planification).
Plan du terrier
├── index.html, projets.html, ... Pages du site (générées, contenu éditable dedans)
├── css/ Styles, découpés par usage
├── js/ Script global + JS du wiki (js/wiki/)
├── scripts/ Build, vérification des liens, et leurs tests
│ └── lib/ Prérendu wiki, images, Pagefind, templates
├── wiki/ Pages wiki statiques (générées, ne pas toucher)
├── vendor/, pagefind/ Assets self-hostés et index de recherche (générés)
└── .forgejo/ La patrouille (CI)
Philosophie du terrier
- Zéro tracking — pas de cookie, pas d'analytics, pas de CDN tiers au runtime
- Vanilla — HTML, CSS et JavaScript ; pas de React, pas de bundler en prod
- Self-host — polices, highlight.js, OpenDyslexic et images wiki rapatriées localement
- Accessible — thème clair/sombre, police OpenDyslexic en option, recherche Pagefind offline
- Libre — contenu sous CC BY-NC 4.0 : partagez, adaptez, citez la source, pas d'usage commercial
Licence
Le contenu est sous licence CC BY-NC 4.0. Le code du site suit la même logique : servez-vous, citez la source, pas d'usage commercial.
Les illustrations du renard ont été créées avec l'aide de ChatGPT. Les stickers de chats du wiki viennent de Flaticon (Stickers).