Files
wiki/Catalogue-Self-Hosted/apps/app-leafwiki.md
T
2026-06-09 18:40:21 +02:00

7.4 KiB


title: LeafWiki created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, wiki, golang, single-binary, sqlite, markdown, minimaliste, docker] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Wiki, https://github.com/perber/leafwiki, https://leafwiki.com/]

🌿 LeafWiki

Wiki single-binary en Go, sans base externe : un binaire autonome avec SQLite et Markdown sur disque, pensé pour les ingénieurs et self-hosters qui veulent une documentation structurée et durable sans Node.js, Redis ni Postgres.

📋 Informations Générales

Champ Valeur
Site web leafwiki.com
GitHub perber/leafwiki
Licence MIT
Langage Go
Étoiles GitHub 356
Dernière MAJ 2026-06-04 (v0.10.2)
Catégorie cat-wiki

📝 Description

LeafWiki est un wiki self-hosted qui assume pleinement la philosophie "une documentation long-terme doit être lisible en dehors de l'application". Concrètement : le contenu des pages est stocké comme de simples fichiers .md sur disque, et seule la métadonnée (utilisateurs, tags, index de recherche) est dans un fichier SQLite embarqué. Pas de base externe, pas de runtime Node.js, pas de Redis : un seul binaire Go fait tout. Les sauvegardes sont un simple cp -r du dossier de données.

L'auteur le destine explicitement à ceux qui trouvent Wiki.js, Outline, BookStack ou XWiki "trop à opérer" pour leur besoin. L'application fonctionne sur Linux, macOS, Windows et Raspberry Pi (x86_64 et ARM64), ce qui en fait un choix naturel pour les homelabs, les notebooks d'ingénieur ou les runbooks d'équipe. La navigation arborescente explicite (vs. flux de notes à plat) est un parti-pris fort : on pense en folders, pas en feed, à la manière d'un Obsidian ou d'un Emacs Org-mode.

Côté fonctionnalités, LeafWiki offre une recherche full-text sur titres et contenu avec filtrage par tags, des backlinks détectés automatiquement par page, un statut de lien (incoming, outgoing, broken), un éditeur Markdown avec live preview, autocomplétion des liens internes et raccourcis clavier. Les extensions Markdown supportées incluent tables, task lists, footnotes, callouts (:::info, :::warning), Mermaid et HTML inline sanitizé. La gestion des utilisateurs couvre trois rôles (admin, editor, viewer) avec un mode lecture publique + édition authentifiée. Un importeur ZIP permet de migrer depuis Obsidian ou un dépôt Markdown existant. LeafWiki n'est pas conçu pour l'édition collaborative temps réel (pas de CRDT) et n'est pas un remplacement de Notion/Confluence : c'est un outil de documentation personnelle ou de petite équipe qui privilégie la sobriété opérationnelle.

🚀 Installation

Option recommandée : Docker Compose

# docker-compose.yml
services:
  leafwiki:
    image: ghcr.io/perber/leafwiki:latest
    container_name: leafwiki
    user: "1000:1000"
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      - LEAFWIKI_JWT_SECRET=change-me-long-random-secret-32-bytes
      - LEAFWIKI_ADMIN_PASSWORD=change-me-strong-password
      - LEAFWIKI_ALLOW_INSECURE=true
    volumes:
      - ./leafwiki-data:/app/data
    healthcheck:
      test: ["CMD", "wget", "-q", "--spider", "http://localhost:8080/"]
      interval: 30s
      timeout: 10s
      retries: 3

⚠️ LEAFWIKI_ALLOW_INSECURE=true est obligatoire en HTTP (pour le développement). En HTTPS via reverse proxy, retirer cette option et s'assurer que le proxy transmet bien X-Forwarded-Proto: https.

Option 2 : Script d'installation Linux (systemd)

sudo /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/perber/leafwiki/main/install.sh)"

Installe un service systemd et le binaire dans /opt/leafwiki. Mode non-interactif disponible avec --env-file.

Option 3 : Binaire direct

Télécharger depuis GitHub Releases et lancer :

./leafwiki --jwt-secret=***-me --admin-password=*** --allow-insecure=true

Reverse proxy (Nginx)

location / {
  proxy_pass http://127.0.0.1:8080;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
}

LeafWiki supporte aussi --base-path pour être servi sous un sous-chemin.

⚙️ Configuration

  • --jwt-secret : clé JWT obligatoire, longue et aléatoire (openssl rand -hex 32).
  • --admin-password : mot de passe du compte admin créé au premier démarrage.
  • --allow-insecure=true : à retirer en production HTTPS.
  • --enable-revision : active l'historique de révisions (opt-in, désactivé par défaut).
  • --enable-link-refactor : réécrit automatiquement les liens lors d'un renommage de page.
  • --custom-stylesheet : chemin vers un CSS custom.
  • Reverse-proxy auth (v0.10+) : si l'auth est gérée par le reverse proxy (ex. Authelia), LeafWiki peut faire confiance à un header HTTP.
  • Import Obsidian : uploader un ZIP depuis l'admin, avec réécriture des wiki links.

🔄 Alternatives

Open Source

Propriétaires

  • Notion — Workspace moderne, beaucoup plus large
  • Obsidian Sync — Sync payant d'Obsidian (le format reste local)
  • Dropbox Paper — Docs collaboratifs
  • Slab — Knowledge base d'équipe

🔐 Sécurité

  • Pas de base externe : surface d'attaque minimale (SQLite local embarqué).
  • HTTPS obligatoire en production pour que les JWT et cookies soient protégés.
  • JWT secret long et stocké hors du dépôt Git.
  • ⚠️ --allow-insecure=true : à supprimer dès que HTTPS est en place.
  • Rôles stricts : admin / editor / viewer, pas d'ACL par page.
  • Mode lecture publique possible : limiter l'auth à l'édition.
  • Backups : un cp -r leafwiki-data/ suffit (Markdown + SQLite).
  • Reverse-proxy auth : permet d'intégrer Authelia/Authentik/Keycloak en amont.
  • ⚠️ Optimistic locking : pas de merge automatique, le dernier écrivant gagne.

📚 Ressources

Pages Liées