Wiki.js : Installez Votre Propre Wiki Moderne et Puissant

La connaissance est le capital le plus précieux d'une organisation ou d'un projet personnel. Pourtant, elle est trop souvent éparpillée : des bribes d'informations dans des conversations Slack, des procédures dans des documents Word sur un partage réseau, des notes techniques sur le poste d'un développeur, ou encore des favoris perdus dans un navigateur. Cette fragmentation est un frein à la productivité, à la collaboration et à la pérennité du savoir.

Face à ce chaos, des solutions comme Confluence ou Notion ont montré la voie. Mais elles impliquent souvent des coûts de licence élevés et, surtout, l'hébergement de vos données stratégiques sur une plateforme tierce. Et si vous pouviez bénéficier d'une solution tout aussi puissante, mais entièrement sous votre contrôle, open source et hébergée sur votre propre infrastructure ?

C'est là qu'intervient Wiki.js, un moteur de wiki nouvelle génération, conçu pour être à la fois puissant, rapide et incroyablement flexible. Oubliez les wikis vieillots au design daté ; Wiki.js offre une expérience utilisateur moderne et une administration simplifiée.

Ce guide complet vous montrera comment déployer votre propre instance Wiki.js en utilisant Docker et Docker Compose. Cette approche garantit une installation propre, reproductible et sécurisée, vous permettant de mettre en place un centre de connaissances centralisé pour votre équipe ou vos projets personnels en un temps record.


I. Wiki.js : Un Centre de Connaissances pour l'Ère Moderne

Wiki.js se distingue de ses prédécesseurs par une approche résolument moderne, tant sur le plan technique que fonctionnel.

A. Les atouts de Wiki.js

Ce n'est pas juste un endroit pour écrire du texte. C'est une plateforme de gestion de la connaissance complète.

  • Éditeurs Multiples : L'éditeur Markdown est au cœur de l'expérience, rapide et intuitif. Wiki.js supporte également un éditeur visuel (WYSIWYG) et l'édition en texte brut.
  • Authentification Flexible : Connectez-vous avec des comptes locaux ou intégrez Wiki.js à votre système d'authentification existant : Active Directory (LDAP), Azure AD, Google, GitHub, Slack, et bien d'autres.
  • Moteur de Recherche Puissant : Indexe tout le contenu en temps réel pour des recherches rapides et pertinentes, avec la possibilité d'intégrer des moteurs plus avancés comme Elasticsearch.
  • Stockage Modulaire : Le contenu de vos pages peut être stocké dans la base de données, mais aussi synchronisé avec un dépôt Git (pour un versioning et un historique complets) ou même sur un stockage objet compatible S3.
  • Personnalisation Poussée : Thèmes, ajout de CSS ou JavaScript personnalisés, modification des en-têtes et pieds de page... Adaptez l'apparence à votre charte graphique.
  • Gestion des Droits Fine : Définissez des règles de lecture et d'écriture par groupe d'utilisateurs pour des pages spécifiques ou des sections entières du site.

B. L'architecture de notre déploiement Docker

Pour notre installation, nous allons orchestrer deux conteneurs principaux, formant une pile applicative robuste et éprouvée :

  1. Wiki.js (L'Application) : Le service principal, une application Node.js qui gère toute la logique, l'interface web, les API et le rendu des pages. C'est la bibliothèque elle-même, avec ses salles de lecture, son personnel et ses services au public.
  2. PostgreSQL (La Base de Données) : Le système de gestion de base de données où seront stockés les utilisateurs, les groupes, les droits, les commentaires, et par défaut, le contenu des pages. C'est l'archive centrale, sécurisée et parfaitement organisée de la bibliothèque.

C. Pourquoi Docker Compose est l'outil idéal pour Wiki.js ?

Utiliser Docker Compose pour ce déploiement n'est pas un simple choix technique, c'est une décision stratégique qui apporte des avantages considérables :

  • Reproductibilité : Votre fichier docker-compose.yml est une description exacte de votre infrastructure. Vous pouvez la recréer à l'identique sur n'importe quelle machine disposant de Docker.
  • Isolation : Chaque service (wiki, base de données) tourne dans son propre conteneur, avec ses propres dépendances. Fini les conflits de versions de librairies sur le système hôte.
  • Configuration Simplifiée : Toute la configuration de l'application et de ses liens avec la base de données est centralisée dans un seul fichier.
  • Maintenance Facilitée : Les mises à jour de Wiki.js ou de la base de données se font en modifiant simplement une ligne (la version de l'image) et en relançant la composition.

II. Déploiement de Wiki.js avec Docker Compose

Passons à la pratique. Cette section vous guidera pas à pas, de la préparation du serveur au lancement de l'assistant de configuration de Wiki.js.

A. Prérequis Techniques

Assurez-vous d'avoir les éléments suivants avant de commencer :

  • Un serveur Linux (Ubuntu 22.04 LTS ou Debian 12 est recommandé) avec un accès sudo.
  • Docker et Docker Compose installés. Vous pouvez suivre la documentation officielle de Docker.
  • Un nom de domaine ou sous-domaine prêt à être utilisé (ex: wiki.votreentreprise.com).
  • L'enregistrement DNS de type A de ce domaine pointant vers l'adresse IP publique de votre serveur.

B. Préparation de l'environnement serveur

Connectez-vous à votre serveur et créez un répertoire de travail pour votre projet.

# Créer le répertoire pour le projet Wiki.js
mkdir ~/wikijs
# Se déplacer dans ce répertoire
cd ~/wikijs

C. Création du fichier docker-compose.yml

Ce fichier est le cœur de notre déploiement. Il définit les services, leurs relations, les ports et les volumes de données.

Créez le fichier docker-compose.yml :

nano docker-compose.yml

Copiez et collez le contenu suivant. Lisez attentivement les commentaires pour comprendre chaque section.

# Version de la syntaxe Docker Compose
version: "3.8"

services:
  # Service de la base de données PostgreSQL
  db:
    image: postgres:16-alpine # Utilisation d'une version récente et légère de PostgreSQL
    container_name: wikijs_db
    environment:
      POSTGRES_DB: wiki
      POSTGRES_USER: wikiuser
      # AVERTISSEMENT : Changez ce mot de passe pour une valeur forte et unique !
      POSTGRES_PASSWORD: "CHANGEME_A_STRONG_PASSWORD"
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "5"
    restart: unless-stopped
    volumes:
      - wikijs_db_data:/var/lib/postgresql/data
    networks:
      - wikijs_internal

  # Service de l'application Wiki.js
  wiki:
    image: requarks/wiki:2.5.303 # Utilisation de la dernière version stable de Wiki.js (vérifiez la dernière sur docs.requarks.io)
    container_name: wikijs_app
    depends_on:
      - db
    environment:
      # L'application se connectera à la base de données via son nom de service 'db'
      DB_TYPE: postgres
      DB_HOST: db
      DB_PORT: 5432
      DB_USER: wikiuser
      DB_PASS: "CHANGEME_A_STRONG_PASSWORD" # Doit correspondre au mot de passe de la base de données
      DB_NAME: wiki
    restart: unless-stopped
    ports:
      # Le port 3000 de l'hôte est mappé sur le port 3000 du conteneur
      # Nous utiliserons un reverse proxy pour l'accès public
      - "127.0.0.1:3000:3000"
    volumes:
      - wikijs_config:/wiki/config
    networks:
      - wikijs_internal
      # Ce réseau sera partagé avec le reverse proxy
      - web

# Définition des réseaux
networks:
  wikijs_internal:
    internal: true
  web:
    external: true # Doit être créé manuellement

# Définition des volumes pour la persistance des données
volumes:
  wikijs_db_data:
  wikijs_config:
Avertissement Important Avant de sauvegarder, changez impérativement la valeur de POSTGRES_PASSWORD et DB_PASS pour un mot de passe fort et unique. Les deux valeurs doivent être identiques. Ne laissez jamais les identifiants par défaut en production.

Sauvegardez le fichier et quittez l'éditeur (Ctrl+X, Y, Entrée).

D. Lancement de l'infrastructure et configuration initiale via le web

  1. Accédez à l'assistant de configuration : Ouvrez votre navigateur web et rendez-vous à l'adresse http://<IP_DE_VOTRE_SERVEUR>:3000. Vous devriez être accueilli par l'assistant d'installation de Wiki.js.(Une capture d'écran de l'écran d'accueil de l'assistant de configuration de Wiki.js serait insérée ici).
  2. Suivez les étapes de l'assistant :
    • Administrator Account : Entrez l'adresse e-mail et le mot de passe que vous utiliserez pour administrer le wiki. Choisissez un mot de passe fort.
    • Site URL : Entrez l'URL publique finale de votre wiki (ex: https://wiki.votreentreprise.com). C'est très important, même si nous n'avons pas encore configuré le HTTPS.
    • Database Connection : Les informations sont déjà pré-remplies dans votre docker-compose.yml. Vous n'avez qu'à les confirmer ici.
      • Database Type : PostgreSQL
      • Host : db
      • Port : 5432
      • Username : wikiuser
      • Password : Le mot de passe que vous avez défini.
      • Database Name : wiki
    • Path : Vous pouvez laisser ce champ vide pour que le wiki s'installe à la racine de votre domaine.
    • Cliquez sur Install. L'assistant va finaliser la configuration, créer les tables dans la base de données et préparer votre site.

Lancez les conteneurs en mode détaché (-d) :Bash

docker compose up -d

Docker va télécharger les images de Wiki.js et PostgreSQL (si ce n'est pas déjà fait) et démarrer les conteneur.

Créez le réseau externe qui sera partagé avec le reverse proxy :Bash

docker network create web

Une fois l'installation terminée, vous serez redirigé vers l'écran de connexion. Votre Wiki.js est maintenant opérationnel !


III. Configuration Avancée, Sécurisation et Maintenance

Votre wiki est installé, mais le travail n'est pas terminé. Il faut maintenant le sécuriser, l'explorer et planifier sa maintenance.

A. Sécurisation avec un Reverse Proxy et HTTPS

Comme pour toute application web sérieuse, l'accès doit se faire via HTTPS. Nous allons utiliser Traefik comme reverse proxy pour automatiser cela. Si vous n'avez pas Traefik, vous pouvez vous référer à la section III-A de l'article sur Kutt.it pour une configuration de base.

Modifiez votre fichier ~/wikijs/docker-compose.yml et ajoutez les labels suivants au service wiki :

YAML

# ~/wikijs/docker-compose.yml
services:
  # ... (le service db reste inchangé)
  wiki:
    # ... (les autres propriétés restent inchangées)
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.wikijs.rule=Host(`wiki.votreentreprise.com`)" # Remplacez par votre domaine
      - "traefik.http.routers.wikijs.entrypoints=websecure"
      - "traefik.http.routers.wikijs.tls.certresolver=myresolver" # Assurez-vous que ce resolver est défini dans votre config Traefik
      - "traefik.http.services.wikijs.loadbalancer.server.port=3000"

Appliquez les changements en relançant la composition :

Bash

# Depuis le répertoire ~/wikijs
docker compose up -d

Traefik va maintenant gérer le trafic pour wiki.votreentreprise.com, obtenir un certificat Let's Encrypt, et le transférer de manière sécurisée à votre conteneur Wiki.js. Vous pouvez maintenant accéder à votre wiki via https:// !

B. Premiers pas et exploration des fonctionnalités

Connectez-vous à votre wiki avec le compte administrateur créé lors de l'installation.

  1. Créez votre première page : Cliquez sur le bouton "Créer une Page" en haut à droite. Choisissez un emplacement, donnez un titre, et commencez à écrire en Markdown. Vous verrez un aperçu en direct de votre contenu.
  2. Explorez la zone d'administration : Cliquez sur votre icône d'utilisateur en bas à gauche, puis sur "Administration". C'est le centre de contrôle de votre wiki.
    • Général : Modifiez le titre du site, le logo, la page d'accueil.
    • Authentification : C'est ici que vous pouvez activer et configurer des méthodes de connexion tierces (LDAP, Google, etc.).
    • Stockage : Activez la synchronisation Git pour un versioning avancé de votre contenu.
    • Thème : Personnalisez l'apparence de votre wiki.

Prenez le temps de naviguer dans ces menus pour découvrir toute la richesse fonctionnelle de l'outil.

C. Stratégie de Sauvegarde et de Mise à Jour

Votre savoir est précieux, protégez-le.

Sauvegarde (Backup) : La source de vérité de votre wiki est la base de données PostgreSQL. Une sauvegarde régulière est non-négociable.

Bash

# Commande pour créer un dump SQL de la base de données wiki.
# A exécuter depuis le répertoire ~/wikijs
docker compose exec -T db pg_dump -U wikiuser -d wiki > backup-wiki-$(date +%F).sql

Automatisez cette commande avec une tâche cron et stockez les sauvegardes dans un endroit sûr (idéalement, à l'extérieur du serveur). N'oubliez pas de sauvegarder également votre docker-compose.yml.

Note sur le Stockage Git Si vous configurez le module de stockage Git, le contenu de vos pages sera également versionné et poussé vers un dépôt distant (GitHub, GitLab, etc.). C'est une excellente stratégie de sauvegarde complémentaire pour le contenu lui-même.

Mise à jour (Update) : Les développeurs de Wiki.js publient régulièrement des mises à jour.

  1. Consultez la page desreleases sur GitHubpour connaître la dernière version et ses changements.
  2. Modifiez la version de l'image dans votre docker-compose.yml (ex: image: requarks/wiki:2.5.304).

Lancez le processus de mise à jour :Bash

# Télécharge la nouvelle image
docker compose pull
# Recrée le conteneur avec la nouvelle image
docker compose up -d
# Supprime les anciennes images non utilisées
docker image prune -f

Pour aller plus loin

Conclusion

Vous venez de franchir une étape majeure dans la gestion de votre connaissance. En déployant Wiki.js avec Docker Compose, vous avez mis en place bien plus qu'un simple site web : un véritable hub de savoir, centralisé, sécurisé et entièrement sous votre contrôle.

Que ce soit pour documenter un projet logiciel, créer un manuel de procédures pour votre entreprise, ou simplement organiser vos notes personnelles, Wiki.js vous offre la plateforme idéale. Vous avez désormais le pouvoir de transformer le chaos informationnel en une ressource structurée, accessible et collaborative.

Vous vous êtes abonné avec succès à CodeClan
Parfait ! Ensuite, complétez le paiement pour obtenir un accès complet à tout le contenu premium.
Erreur ! Impossible de s'inscrire. Lien invalide.
Bienvenue ! Vous vous êtes connecté avec succès.
Erreur ! Impossible de se connecter. Veuillez réessayer.
Succès ! Votre compte est entièrement activé, vous avez maintenant accès à tout le contenu.
Erreur ! Le paiement Stripe a échoué.
Succès ! Vos informations de facturation sont mises à jour.
Erreur ! La mise à jour des informations de facturation a échoué.