Lab 5.7 - Installer Wiki.js sur Ubuntu 24.04 LTS
Objectifs
À la fin de ce lab, vous serez capable de:
- Installer Git et Node.js sur Ubuntu 24.04
- Installer et configurer MariaDB
- Télécharger et configurer Wiki.js
- Créer un service systemd pour Wiki.js
- Résoudre les problèmes courants d'installation
- Configurer HTTPS avec Certbot
Prérequis
- Ubuntu 24.04 LTS installé
- Accès à un terminal avec droits sudo
- Connexion Internet
- Au moins 2 GB de RAM disponible
- Au moins 5 GB d'espace disque libre
Introduction
Ce guide vous accompagne dans l'installation de Wiki.js, un moteur Wiki moderne et puissant basé sur Node.js, Git, et Markdown. Wiki.js est distribué sous la licence Affero GNU General Public License et supporte plusieurs systèmes de gestion de bases de données.
Partie 1: Installation de Git
Wiki.js nécessite Git. Pour l'installer sur Ubuntu 24.04, suivez ces étapes :
# Passer en mode superutilisateur
sudo -s
# ou
su
# Mettre à jour les paquets
sudo apt update
# Installer Git
sudo apt install git -y
Vérification de l'installation
git --version
# Devrait afficher: git version 2.x.x ou supérieur
Partie 2: Installation de Node.js
Wiki.js fonctionne avec Node.js. Installez la version LTS de Node.js en utilisant le script de NodeSource :
# Télécharger et exécuter le script d'installation NodeSource
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
# Installer Node.js
sudo apt-get install -y nodejs
Vérification des versions installées
# Vérifier la version de Node.js
node -v
# Devrait afficher: v20.x.x ou supérieur (version LTS)
# Vérifier la version de npm
npm -v
# Devrait afficher: 10.x.x ou supérieur
Partie 3: Installation et Configuration de MariaDB
Installation de MariaDB
Installez MariaDB pour gérer les données de Wiki.js :
# Installer MariaDB
sudo apt install mariadb-server mariadb-client -y
# Démarrer le service
sudo systemctl start mariadb
# Activer le service au démarrage
sudo systemctl enable mariadb
# Vérifier le statut
sudo systemctl status mariadb
Test de connexion
# Tester la connexion avec mariadb
mariadb
# Tapez exit; pour quitter
# Tester la connexion avec mysql
mysql
# Tapez exit; pour quitter
Sécurisation de MariaDB
Renforcez l'instance à l'aide de la commande :
sudo mariadb-secure-installation
Réponses recommandées :
Enter current password for root: [Appuyez sur Entrée]
Switch to unix_socket authentication [Y/n] Y
Change the root password? [Y/n] n
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
Configuration de la base de données
Connectez-vous à MariaDB et configurez la base de données :
sudo mysql -u root -p
Dans le shell MariaDB, exécutez les commandes suivantes :
CREATE DATABASE wikidb;
CREATE USER 'wikidb_user'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON wikidb.* TO 'wikidb_user'@'localhost';
FLUSH PRIVILEGES;
SHOW DATABASES;
USE wikidb;
SHOW TABLES;
EXIT;
Note : Remplacez PASSWORD par un mot de passe sécurisé de votre choix.
Partie 4: Téléchargement et Installation de Wiki.js
Créer un utilisateur et un dossier pour Wiki.js
# Créer un utilisateur système pour Wiki.js
sudo adduser --system --group wikijs
# Créer le répertoire d'installation
sudo mkdir -p /var/www/wikijs
# Vérifier la création
ls -la /var/www/
# Définir le propriétaire
sudo chown -R wikijs:wikijs /var/www/wikijs
# Vérifier les permissions
ls -la /var/www/
ls -la /var/www/wikijs
Modifier le shell de l'utilisateur wikijs
# Permettre la connexion avec un shell bash
sudo usermod -s /bin/bash wikijs
Télécharger et installer Wiki.js
# Se connecter en tant qu'utilisateur wikijs
sudo su - wikijs
# Vérifier le répertoire actuel
pwd
# Devrait afficher: /var/www/wikijs
# Vérifier l'utilisateur
whoami
# Devrait afficher: wikijs
# Aller dans le répertoire d'installation
cd /var/www/wikijs
# Télécharger Wiki.js
wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
# Extraire l'archive
tar xzf wiki-js.tar.gz
# Vérifier le contenu
ls -la
# Supprimer l'archive
rm wiki-js.tar.gz
# Copier le fichier de configuration exemple
cp config.sample.yml config.yml
# Éditer le fichier de configuration
nano config.yml
Configuration du fichier config.yml
Configurez le fichier config.yml pour utiliser MariaDB. Modifiez la section db :
db:
type: mariadb
host: localhost
port: 3306
user: wikidb_user
pass: PASSWORD
db: wikidb
ssl: false
bindIP: 127.0.0.1
port: 3000
Important :
- Remplacez
PASSWORDpar le mot de passe que vous avez défini pourwikidb_user bindIP: 127.0.0.1signifie que Wiki.js écoutera uniquement sur localhost- Pour un accès externe, utilisez
bindIP: 0.0.0.0(voir section Troubleshooting #4)
Commenter les sections non utilisées :
Dans le fichier config.yml, commentez les sections pour PostgreSQL et SQLite qui ne sont pas utilisées :
# Commenter ces lignes (ajouter # au début) :
# sslOptions:
# auto: true
# # rejectUnauthorized: false
# # Optional - PostgreSQL only:
# schema: public
# # SQLite only:
# storage: path/to/database.sqlite
Sauvegardez et quittez avec Ctrl + X, puis Y, puis Entrée.
Partie 5: Création d'un Service systemd
Retour à l'utilisateur root
Avant de créer le service, revenez à l'utilisateur principal :
# Quitter la session wikijs
exit
# Vérifier que vous êtes root
whoami
# Devrait afficher: root
Troubleshooting #1: Permissions pour créer le service
Si vous rencontrez une erreur de permissions lors de la création du service :
# Si vous êtes encore wikijs
whoami
# Devrait afficher: wikijs
# Quitter
exit
# ou
sudo -s
# ou
su
# Vérifier
whoami
# Devrait afficher: root
# Changer le mot de passe de wikijs
sudo passwd wikijs
# Ajouter wikijs au groupe sudo
sudo usermod -aG sudo wikijs
# Se reconnecter en tant que wikijs
su - wikijs
# Maintenant vous pouvez utiliser sudo
sudo nano /etc/systemd/system/wikijs.service
Créer le service systemd
# Créer le fichier de service
sudo nano /etc/systemd/system/wikijs.service
Ajoutez le contenu suivant :
[Unit]
Description=Wiki.js
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always
User=wikijs
Environment=NODE_ENV=production
WorkingDirectory=/var/www/wikijs
[Install]
WantedBy=multi-user.target
Sauvegardez et quittez.
Activer et démarrer le service
# Recharger la configuration systemd
sudo systemctl daemon-reload
# Démarrer le service
sudo systemctl start wikijs
# Activer le service au démarrage
sudo systemctl enable wikijs
# Vérifier le statut
sudo systemctl status wikijs
Partie 6: Résolution de Problèmes (Troubleshooting)
Troubleshooting #2: Vérifier les logs
Si le service ne démarre pas correctement, consultez les logs :
# Voir les 50 dernières lignes des logs
sudo journalctl -u wikijs.service --no-pager --lines=50
# Suivre les logs en temps réel
sudo journalctl -u wikijs.service -f
Problème 1: Erreur d'indentation YAML - sslOptions
Erreur :
bad indentation of a mapping entry at line 37, column 3:
sslOptions:
^
Solution :
# Aller dans le répertoire Wiki.js
cd /var/www/wikijs
# Éditer le fichier de configuration
nano config.yml
# Commenter les lignes suivantes (ajouter # au début) :
# sslOptions:
# auto: true
# # rejectUnauthorized: false
# Sauvegarder et quitter
# Recharger et redémarrer le service
sudo systemctl daemon-reload
sudo systemctl start wikijs
sudo systemctl enable wikijs
sudo systemctl status wikijs
Problème 2: Erreur d'indentation YAML - schema (PostgreSQL)
Erreur :
bad indentation of a mapping entry at line 47, column 3:
schema: public
^
Solution :
cd /var/www/wikijs
nano config.yml
# Commenter les lignes suivantes :
# Optional - PostgreSQL only:
# schema: public
# Sauvegarder et quitter
# Recharger et redémarrer
sudo systemctl daemon-reload
sudo systemctl start wikijs
sudo systemctl enable wikijs
sudo systemctl status wikijs
Problème 3: Erreur d'indentation YAML - storage (SQLite)
Erreur :
bad indentation of a mapping entry at line 50, column 3:
storage: path/to/database.sqlite
^
Solution :
cd /var/www/wikijs
nano config.yml
# Commenter les lignes suivantes :
# SQLite only:
# storage: path/to/database.sqlite
# Sauvegarder et quitter
# Recharger et redémarrer
sudo systemctl daemon-reload
sudo systemctl start wikijs
sudo systemctl enable wikijs
sudo systemctl status wikijs
Problème 4: Accès externe (Azure/Cloud)
Si vous voulez accéder à Wiki.js depuis l'extérieur (par exemple depuis Azure) :
-
Ajouter une règle de trafic entrant dans votre pare-feu cloud (port 3000)
-
Modifier le bindIP dans config.yml :
# Se connecter en tant que wikijs
sudo su - wikijs
# Aller dans le répertoire
cd /var/www/wikijs
# Éditer la configuration
nano config.yml
Changez :
bindIP: 127.0.0.1
En :
bindIP: 0.0.0.0
Sauvegardez et quittez.
- Recharger et redémarrer le service :
# Revenir à root
exit
# Recharger la configuration
sudo systemctl daemon-reload
# Redémarrer le service (important !)
sudo systemctl restart wikijs
# Vérifier le statut
sudo systemctl status wikijs
- Accéder à Wiki.js :
Accédez à Wiki.js via votre navigateur en utilisant l'URL : http://<adresse_IP>:3000
Partie 7: Accès à Wiki.js
Accès local
Accédez à Wiki.js via votre navigateur en utilisant l'URL : http://127.0.0.1:3000 ou http://localhost:3000
Accès externe
Si vous avez configuré bindIP: 0.0.0.0, accédez via : http://<adresse_IP>:3000
Configuration initiale
- Suivez les instructions pour créer un compte administrateur
- Terminez l'installation via l'interface web
- Connectez-vous avec vos identifiants administrateur
Partie 8: Configuration HTTPS avec Certbot
Installation de Certbot
# Se connecter en SSH (si sur Azure/Cloud)
# ssh -i key1.pem azureuser@<adresse_ip_publique_de_votre_vm>
# Passer en root
sudo -i
# Mettre à jour les paquets
sudo apt update
# Installer Certbot et le plugin Apache
sudo apt install certbot python3-certbot-apache -y
Configuration du pare-feu
# Autoriser Apache (HTTP et HTTPS)
sudo ufw allow 'Apache Full'
# Vérifier le statut
sudo ufw status
Obtenir un certificat SSL
# Obtenir un certificat SSL avec Certbot
sudo certbot --apache
Lors de l'exécution :
- Entrez votre adresse email
- Acceptez les termes et conditions
- Entrez votre nom de domaine (ex:
haythemrehouma.eastus.cloudapp.azure.com) - Choisissez de rediriger HTTP vers HTTPS
Vérification du renouvellement automatique
# Vérifier le statut du timer Certbot
sudo systemctl status certbot.timer
# Tester le renouvellement (simulation)
sudo certbot renew --dry-run
Certbot renouvellera automatiquement les certificats avant expiration.
Résumé des Commandes Importantes
| Commande | Description |
|---|---|
git --version | Vérifier la version de Git |
node -v && npm -v | Vérifier les versions de Node.js et npm |
sudo systemctl status mariadb | Vérifier le statut de MariaDB |
sudo mysql -u root -p | Se connecter à MariaDB |
sudo systemctl status wikijs | Vérifier le statut du service Wiki.js |
sudo journalctl -u wikijs.service -f | Suivre les logs en temps réel |
sudo systemctl restart wikijs | Redémarrer le service Wiki.js |
sudo certbot renew --dry-run | Tester le renouvellement SSL |
Vérification Finale
Vérifiez que vous avez réussi à :
- Installer Git et Node.js
- Installer et configurer MariaDB
- Créer la base de données et l'utilisateur pour Wiki.js
- Télécharger et extraire Wiki.js
- Configurer le fichier
config.ymlcorrectement - Créer et activer le service systemd
- Accéder à Wiki.js via le navigateur
- Résoudre les erreurs YAML si présentes
- Configurer HTTPS avec Certbot (optionnel)
Questions de Réflexion
-
Pourquoi est-il important de créer un utilisateur système dédié (
wikijs) pour Wiki.js ?- Expliquez les avantages de sécurité
-
Quelle est la différence entre
bindIP: 127.0.0.1etbindIP: 0.0.0.0?- Dans quels cas utiliseriez-vous chacune de ces configurations ?
-
Pourquoi est-il nécessaire de commenter les sections PostgreSQL et SQLite dans
config.ymlsi on utilise MariaDB ?- Expliquez les erreurs YAML et comment les éviter
-
Quel est le rôle du service systemd dans cette installation ?
- Expliquez les avantages par rapport à un démarrage manuel
-
Pourquoi utiliser Certbot pour HTTPS plutôt qu'un certificat auto-signé ?
- Quels sont les avantages pour un environnement de production ?
Prochaines Étapes
- Module 8: Services et Démon (pour approfondir systemd)
- Module 9: Sécurité Système (pour sécuriser davantage l'installation)
- TP 2: Reverse Proxy NGINX (pour exposer Wiki.js via un reverse proxy)
Ressources Complémentaires
- Documentation Wiki.js
- Node.js Documentation
- MariaDB Documentation
- systemd Documentation
- Certbot Documentation
Lab créé le: Décembre 2024