---
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](https://leafwiki.com/) |
| **GitHub** | [perber/leafwiki](https://github.com/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

```yaml
# 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)

```bash
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](https://github.com/perber/leafwiki/releases) et lancer :

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

### Reverse proxy (Nginx)

```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
- [[app-wiki-go]] — Wiki Go plus riche avec Kanban intégré
- [[app-otter-wiki]] — Wiki Python/Git minimaliste
- [[app-wikidocs]] — Wiki PHP flat-file WYSIWYG
- [[app-pepperminty-wiki]] — Wiki PHP single-file
- [[app-trilium-notes]] — PKM hiérarchique, plus puissant mais plus complexe
- **Wiki.js** — Wiki Node.js complet
- **Raneto** — KB Markdown Node.js

### 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

- [Site officiel leafwiki.com](https://leafwiki.com/)
- [Dépôt GitHub perber/leafwiki](https://github.com/perber/leafwiki)
- [Démo en ligne](https://demo.leafwiki.com/) (reset horaire)
- [Devlog #1 sur dev.to](https://dev.to/perber/leafwiki-my-take-on-a-simpler-self-hosted-wiki-khi)
- [Documentation install Nginx](https://github.com/perber/leafwiki/blob/main/docs/install/nginx.md)
- [Documentation install Raspberry Pi](https://github.com/perber/leafwiki/blob/main/docs/install/raspberry-pi.md)

## Pages Liées

- [[cat-wiki]] — Vue d'ensemble de la catégorie Wiki
- [[app-wiki-go]] — Wiki Go plus complet avec Kanban
- [[app-otter-wiki]] — Alternative Python/Git
- [[app-trilium-notes]] — PKM plus puissant
- [[recettes-docker-compose]] — Templates Docker
- [[securisation-home-lab]] — Bonnes pratiques de sécurité
