Module 2 - Installation et configuration de WikiJS

Apprenez à installer et configurer WikiJS sur votre environnement de développement et production

Module 2

Introduction

Dans ce module, nous allons installer WikiJS de A à Z. WikiJS est une solution moderne de wiki qui nécessite Node.js et une base de données. Nous verrons plusieurs méthodes d'installation pour répondre à tous les besoins.

Ce que vous allez installer
  • Node.js : Runtime JavaScript pour WikiJS
  • Base de données : PostgreSQL ou MySQL
  • WikiJS : L'application wiki principale
  • PM2 : Gestionnaire de processus (optionnel)
  • Docker : Conteneurisation (alternative)
  • Nginx : Serveur proxy (production)
  • SSL/TLS : Certificats de sécurité
  • Git : Intégration du contrôle de version
Méthodes d'installation

Nous couvrirons 3 méthodes : installation manuelle (développement), Docker (recommandée), et installation production. Choisissez celle qui correspond à votre environnement et vos besoins.

Prérequis système

Windows
  • Windows 10/11
  • 4 GB RAM minimum
  • 2 GB espace disque
  • Droits administrateur
macOS
  • macOS 10.15+
  • 4 GB RAM minimum
  • 2 GB espace disque
  • Homebrew recommandé
Linux
  • Ubuntu 18.04+
  • 4 GB RAM minimum
  • 2 GB espace disque
  • Curl et wget installés
Checklist avant installation

Installation Node.js

Node.js 18 LTS ou 20 LTS (Recommandé)

WikiJS nécessite Node.js version 18 ou supérieure. Nous recommandons la version LTS pour une stabilité optimale. Node.js inclut npm (gestionnaire de paquets).

Windows
macOS
Linux
Installation sur Windows
Option 1: Téléchargement direct
# 1. Aller sur https://nodejs.org/
# 2. Télécharger "LTS" (version recommandée)
# 3. Exécuter le fichier .msi téléchargé
# 4. Suivre l'assistant d'installation
# 5. Redémarrer votre terminal
Option 2: Avec Chocolatey
# Installer Node.js via Chocolatey
choco install nodejs-lts

# Vérifier l'installation
node --version
npm --version
Option 3: Avec Winget
# Installer avec Winget (Windows 10/11)
winget install OpenJS.NodeJS.LTS
Installation sur macOS
Avec Homebrew (Recommandé)
# Installer Node.js LTS
brew install node@18

# Ou la version courante
brew install node

# Vérifier l'installation
node --version
npm --version
Installation manuelle
# 1. Télécharger depuis https://nodejs.org/
# 2. Ouvrir le fichier .pkg téléchargé
# 3. Suivre l'assistant d'installation
# 4. Redémarrer le terminal
Installation sur Linux (Ubuntu/Debian)
Avec NodeSource (Recommandé)
# Ajouter le dépôt NodeSource
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -

# Installer Node.js
sudo apt-get install -y nodejs

# Vérifier l'installation
node --version
npm --version
Avec Snap (Alternative)
# Installer avec Snap
sudo snap install node --classic
Vérification de Node.js
Test de l'installation
# Vérifier les versions
node --version    # Devrait afficher v18.x.x ou v20.x.x
npm --version     # Devrait afficher 9.x.x ou plus

# Test rapide
node -e "console.log('Node.js fonctionne !')"

Configuration de la base de données

Base de données pour WikiJS

WikiJS supporte PostgreSQL, MySQL, MariaDB et SQLite. PostgreSQL est recommandé pour la production, SQLite pour les tests locaux.

PostgreSQL
MySQL
SQLite
Installation PostgreSQL
Ubuntu/Debian
# Installer PostgreSQL
sudo apt update
sudo apt install postgresql postgresql-contrib

# Démarrer le service
sudo systemctl start postgresql
sudo systemctl enable postgresql
Windows
# Avec Chocolatey
choco install postgresql

# Ou télécharger depuis https://www.postgresql.org/download/windows/
macOS
# Avec Homebrew
brew install postgresql
brew services start postgresql
Configuration PostgreSQL
# Créer utilisateur et base de données
sudo -u postgres psql

# Dans le shell PostgreSQL :
CREATE DATABASE wikijs;
CREATE USER wikijsuser WITH ENCRYPTED PASSWORD 'wikijs123';
GRANT ALL PRIVILEGES ON DATABASE wikijs TO wikijsuser;
\q
Installation MySQL
Ubuntu/Debian
# Installer MySQL
sudo apt update
sudo apt install mysql-server

# Sécuriser l'installation
sudo mysql_secure_installation
Configuration MySQL
# Se connecter à MySQL
sudo mysql -u root -p

# Créer base et utilisateur
CREATE DATABASE wikijs CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wikijsuser'@'localhost' IDENTIFIED BY 'wikijs123';
GRANT ALL PRIVILEGES ON wikijs.* TO 'wikijsuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Configuration SQLite
SQLite pour le développement

SQLite ne nécessite pas d'installation séparée. WikiJS créera automatiquement le fichier de base de données. Parfait pour les tests et le développement.

Configuration SQLite
# SQLite sera configuré automatiquement lors de l'installation WikiJS
# Le fichier db.sqlite sera créé dans le dossier WikiJS

Installation WikiJS

WikiJS - Installation manuelle

Téléchargement et installation de la dernière version stable de WikiJS avec configuration personnalisée.

Téléchargement et extraction
# Créer le dossier d'installation
mkdir wikijs
cd wikijs

# Télécharger la dernière version
curl -sSo- https://wiki.js.org/install.sh | bash

# Ou téléchargement manuel :
# wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
# tar xzf wiki-js.tar.gz
Configuration initiale
# Copier le fichier de configuration
cp config.sample.yml config.yml

# Éditer la configuration (voir section suivante)
nano config.yml
Structure des fichiers WikiJS
wikijs/
├── config.yml         # Configuration principale
├── server/            # Application serveur
├── assets/           # Ressources statiques  
├── data/             # Données utilisateur
├── db.sqlite         # Base SQLite (si utilisée)
├── logs/            # Fichiers de log
└── node_modules/    # Dépendances Node.js

Premier démarrage

Démarrage de WikiJS
# Dans le dossier wikijs
node server

# Ou avec npm (si package.json existe)
npm start
Accès à WikiJS

Une fois démarré, WikiJS sera accessible à :

  • Local : http://localhost:3000
  • Réseau : http://votre-ip:3000
  • Setup : Assistant de configuration automatique au premier accès
Premier accès - Assistant de configuration
  1. Ouvrir http://localhost:3000 dans votre navigateur
  2. Suivre l'assistant de configuration
  3. Choisir votre base de données
  4. Créer le compte administrateur
  5. Configurer le nom et l'URL du site
Problèmes courants
  • Port occupé : Modifier le port dans config.yml
  • Connexion DB : Vérifier les paramètres de connexion
  • Permissions : S'assurer des droits sur le dossier

Configuration initiale

Fichier config.yml - Configuration de base
# Configuration WikiJS
title: "Mon Wiki"
host: http://localhost
port: 3000

# Base de données PostgreSQL
db:
  type: postgres
  host: localhost
  port: 5432
  user: wikijsuser
  pass: wikijs123
  db: wikijs
  ssl: false

# Base de données SQLite (alternative)
# db:
#   type: sqlite
#   storage: ./db.sqlite

# Configuration des logs  
logLevel: info
logFormat: default
logFilePath: ./logs/wiki.log

# Répertoires
dataPath: ./data
sessionSecret: changeme123456789

# Pool de connexions
pool:
  min: 2
  max: 10
Configuration sécurisée pour la production
# Configuration production
title: "Documentation Entreprise"
host: https://wiki.mondomaine.com
port: 3000

# Base de données sécurisée
db:
  type: postgres
  host: localhost
  port: 5432
  user: wikijs_prod
  pass: SuperSecurePassword2024!
  db: wikijs_production
  ssl: true
  
# Session sécurisée
sessionSecret: UneLongueCleSecrete123456789!@#

# Logs détaillés
logLevel: warn
logFormat: json
logFilePath: ./logs/wiki-production.log

# Configuration SSL
ssl:
  enabled: true
  port: 3443
  provider: letsencrypt
Options de configuration importantes
  • title : Nom affiché de votre wiki
  • host : URL publique du wiki (important pour les liens)
  • sessionSecret : Clé de chiffrement des sessions (OBLIGATOIRE à changer)
  • logLevel : Niveau de détail des logs (error, warn, info, debug)
  • pool : Gestion des connexions à la base de données

Installation avec Docker (Recommandée)

Docker - Installation simplifiée

Docker simplifie considérablement l'installation et la gestion de WikiJS. Parfait pour la production et les environnements isolés.

docker-compose.yml - Stack complète
version: '3.8'

services:
  # Base de données PostgreSQL
  postgres:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: wikijs
      POSTGRES_USER: wikijsuser
      POSTGRES_PASSWORD: wikijs123
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - wikijs-network
    restart: unless-stopped

  # Application WikiJS
  wikijs:
    image: requarks/wiki:2
    depends_on:
      - postgres
    environment:
      DB_TYPE: postgres
      DB_HOST: postgres
      DB_PORT: 5432
      DB_USER: wikijsuser
      DB_PASS: wikijs123
      DB_NAME: wikijs
    ports:
      - "3000:3000"
    networks:
      - wikijs-network
    restart: unless-stopped
    volumes:
      - wikijs_data:/wiki/data

volumes:
  postgres_data:
  wikijs_data:

networks:
  wikijs-network:
    driver: bridge
Démarrage avec Docker
# Créer le fichier docker-compose.yml (copier le contenu ci-dessus)
nano docker-compose.yml

# Démarrer les services
docker-compose up -d

# Vérifier l'état
docker-compose ps

# Voir les logs
docker-compose logs wikijs
Configuration avec reverse proxy (Production)
# docker-compose-production.yml
version: '3.8'

services:
  postgres:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: wikijs
      POSTGRES_USER: wikijsuser
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - internal
    restart: unless-stopped

  wikijs:
    image: requarks/wiki:2
    depends_on:
      - postgres
    environment:
      DB_TYPE: postgres
      DB_HOST: postgres
      DB_PORT: 5432
      DB_USER: wikijsuser
      DB_PASS: ${DB_PASSWORD}
      DB_NAME: wikijs
    networks:
      - internal
      - traefik
    restart: unless-stopped
    volumes:
      - wikijs_data:/wiki/data
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.wikijs.rule=Host(`wiki.mondomaine.com`)"
      - "traefik.http.routers.wikijs.tls.certresolver=letsencrypt"

volumes:
  postgres_data:
  wikijs_data:

networks:
  internal:
  traefik:
    external: true
Avantages Docker
  • Isolation : Environnement complètement isolé
  • Simplicité : Un seul fichier de configuration
  • Sauvegarde : Volumes persistants pour les données
  • Mise à jour : Simple avec docker-compose pull
  • Scalabilité : Facile de dupliquer l'installation

Vérification de l'installation

Tests de validation
Tests de fonctionnement
# Test complet de WikiJS
echo "=== Tests WikiJS ==="

# 1. Vérifier Node.js
echo "Node.js version:"
node --version

# 2. Vérifier les ports
echo "Vérification port 3000:"
netstat -an | grep :3000 || ss -tuln | grep :3000

# 3. Test de connexion HTTP
echo "Test HTTP:"
curl -I http://localhost:3000

# 4. Vérifier les processus
echo "Processus WikiJS:"
ps aux | grep node | grep -v grep

# 5. Vérifier les logs
echo "Dernières lignes de log:"
tail -n 10 ./logs/wiki.log
Test fonctionnel complet
  1. Accéder à http://localhost:3000
  2. Se connecter avec le compte admin
  3. Créer une nouvelle page
  4. Ajouter du contenu Markdown
  5. Publier et visualiser la page
  6. Tester la recherche

Guide de dépannage

Solutions
  1. Changer le port : Modifier port: 3001 dans config.yml
  2. Identifier le processus : lsof -i :3000 (Unix) ou netstat -ano | findstr :3000 (Windows)
  3. Tuer le processus : kill PID ou Task Manager
  4. Redémarrer : Relancer WikiJS après libération du port
Diagnostic du port
# Unix/Linux/macOS
lsof -i :3000
netstat -tlnp | grep :3000

# Windows  
netstat -ano | findstr :3000
tasklist | findstr "PID"

Diagnostics base de données
  1. Service actif : Vérifier que PostgreSQL/MySQL est démarré
  2. Paramètres de connexion : Host, port, user, password corrects
  3. Base existante : Vérifier que la base de données existe
  4. Permissions : L'utilisateur a-t-il les droits sur la base ?
Tests de connexion
# Test PostgreSQL
psql -h localhost -U wikijsuser -d wikijs

# Test MySQL
mysql -h localhost -u wikijsuser -p wikijs

# Vérifier le service
systemctl status postgresql  # Linux
brew services list | grep postgres  # macOS

Étapes de diagnostic
  1. Logs détaillés : Examiner les messages d'erreur
  2. Configuration : Valider le format YAML
  3. Permissions : Vérifier les droits sur les dossiers
  4. Dépendances : npm install si nécessaire
Mode debug
# Lancer en mode debug
DEBUG=wiki:* node server

# Ou avec plus de détails
NODE_ENV=development node server

# Vérifier la syntaxe YAML
python -c "import yaml; yaml.safe_load(open('config.yml'))"
Erreurs communes
  • Fichier config.yml mal formaté (indentation YAML)
  • sessionSecret non défini ou trop court
  • Dossier data/ non accessible
  • Version Node.js incompatible

Problèmes d'affichage
  1. Cache navigateur : Vider le cache (Ctrl+F5)
  2. URL de base : Vérifier le paramètre host dans config.yml
  3. Ressources statiques : Problème avec les CSS/JS
  4. Proxy/Reverse proxy : Configuration incorrecte
Configuration host correcte
# Pour accès local
host: http://localhost

# Pour accès réseau  
host: http://192.168.1.100

# Pour production
host: https://wiki.mondomaine.com