Qu'est-ce que Wiki.js ?

Wiki.js est un wiki open source, moderne et rapide basé sur Node.js, Git et Markdown. L'usage de ce langage d'écriture léger permet de rédiger des articles rapidement. Ce wiki correspond parfaitement pour des "wikis" privés car il gère plusieurs systèmes d'authentification (local, réseaux sociaux, entreprises - LDAP, SAML, OpenID, Azure AD, etc-).

Wiki.js permet de se concentrer sur la rédaction et la mise en forme est agréable et facile à lire avec une interface utilisateur élégante. Les menus sont générés automatiquement.

Wiki.js sera multilingue (je dis bien sera) car dans la version actuelle, il y a quelques bugs avec la traduction française de la version bêta.

Vous pouvez l'héberger sur un serveur local, dans le cloud voire à la maison avec un Raspberry Pi par exemple.

Dans ce tutoriel, je vais tenter d'installer WikiJS sur l'instance virtuelle la moins cher de chez Scaleway qui coûte 3 euros / mois (2 cœurs CPU, 2Go de RAM, 20 Go SSD).

Installation de WikiJS

Comme une recette, les ingrédients nécessaires sont :

  • Une instance virtuelle avec Ubuntu Server 18.04 dans notre cas
  • NodeJS en v10
  • PostgreSQL
  • Apache 2

Une fois le serveur Ubuntu 18.04 commandé et livré, on se connecte en SSH au serveur pour pouvoir l'administrer et installer Wiki.js.

Installation de NodeJS

Il faut installer NodeJS en version 10. Aptitude propose la version 8 au moment où j'écris ces lignes. Il est donc nécessaire de passer par PPA pour l'installation. Voici les lignes de commande que j'entre.

curl -sL https://deb.nodesource.com/setup_10.x -o nodesource_setup.sh 
sudo bash nodesource_setup.sh 
sudo apt-get install -y nodejs

C'est parti pour l'installation de NodeJS v10. Et si on fait :

nodejs -v 
v10.16.2

Parfait, le premier ingrédient est installé et fonctionne. On peut passer au suivant.

Installation de PostgreSQL

PostgreSQL est un SGBD, au même titre que MySQL, qui va héberger notre base de données.

sudo apt install postgresql postgresql-contrib 

Par la suite, il faut passer par l'utilisateur Ubuntu créé lors de l'installation de PostgreSQL pour créer une base de données ainsi qu'un utilisateur du SGBD (Pour rappel, les utilisateurs de l'OS et de PostgreSQL sont bien différents). Ces informations seront nécessaires lors de l'installation de Wiki.js.

Voici les commandes à entrer :

sudo -i -u postgres createuser -P -e wikijs2 
sudo -i -u postgres createdb -O wikijs2 wikijs2bdd

Si vous voulez vérifier que l'utilisateur et la base de données de PostgreSQL ont bien été créés, voici les commandes :

psql SELECT usename FROM pg_user; // Voir les utilisateurs 
select datname from pg_database ; // Voir les base de données

Tout est ok pour le moment. Notre deuxième ingrédient est prêt. Wiki.js peut fonctionner comme cela mais pour plus de simplicité de l'accès au Wiki, on va installer Apache et un virtual host qui fera proxy et reverse proxy avec le server Node.js.

Installer Apache

Apache est un serveur HTTP, le plus populaire. Vous pouvez également utiliser NGinx si vous êtes plus à l'aise.

sudo apt install apache2

Une fois l'installation terminées, nous avons tout ce qu'il faut pour mettre en place Wiki.js.

Installer Wiki.js

On se place dans le dossier "/var/www/‌‌" on télécharge la dernière version de WikiJS.

sudo wget https://github.com/Requarks/wiki/releases/download/2.0.0-beta.241/wiki-js.tar.gz 
sudo mkdir wiki 
sudo tar xzf wiki-js.tar.gz -C ./wiki 

Dans le dossier "wiki"

Nous nous plaçons dans le dossier "wiki". On renomme le fichier de configuration d'exemple en config.yml.

sudo mv config.sample.yml config.yml

On modifie les données, notamment l'accès de la base de données. Pour cela, on reprend les accès que l'on a créé lors de l'installation de PostgreSQL.

Puis on démarre le serveur Node.js, qui fait tourner le Wiki.js.

sudo node server

Si jamais des erreurs apparaissent, corriger les erreurs affichées. Les erreurs sont généralement assez "verbeuses" pour pouvoir les corriger.

Une fois que le serveur fonctionne, nous allons mettre en place le proxy avec Apache.

Mettre en place le proxy

Pour mettre en place le proxy, il faut activer deux modes dans Apache, Proxy et Proxy_http avec les commandes suivantes :

sudo a2enmod proxy
sudo a2enmod proxy_http

Puis il faut modifier le Virtual Host d'Apache. Si vous avez plusieurs hosts, pas de problème, vous pouvez créer un fichier .conf en plus n'oubliez pas de l'activer avec la commande a2ensite NOUVEAU_FICHIER.conf.

vim /etc/apache2/sites-available/000-default.conf

Et dans le fichier

<VirtualHost *:80>
ServerName wiki.nomdedomaine.fr
ServerAdmin ecrire@nomdedomaine.fr
DocumentRoot /var/www/wiki
#Paramètres du proxy pour Wiki.js
ProxyPreserveHost Off
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

On peut entrer la commande suivante pour vérifier que tout va bien. Sinon, corrifer les erreurs.

sudo apache2ctl configtest

Et ensuite on redémarre le serveur Apache pour prendre en compte les modifications.

systemctl restart apache2

Et normalement, votre Wiki est disponible à l'adresse URL que vous avez déterminé dans le Virtual Host d'Apache.

L'écran d'installation vous demande alors de créer un couple identifiant et mot de passe pour l'administrateur du Wiki.

Par la suite, sur ma version, j'ai eu une erreur d'installation "Unknown authentification strategy jwt". En rafraichissant la page, l'erreur a disparue et j'ai bien accès à mon Wiki qui me propose de créer une page d'accueil ou home page.

J'en profite pour faire passer le message que Requarks, l'éditeur de Wiki.js recherche des traducteurs pour les aider dans leur projet. Pour d'infos ici.

Une fois que notre Wiki fonctionne, il apparait plus simple de le démarrer en tant que service d'Ubuntu en tâche de fond.

Démarrer wiki.js en tant que service.

Il y a donc plusieurs solutions pour faire tourner Wiki.js en tâche de fond. Je vais vous présenter celle du site officiel, qui reprend systemd, qui est généralement dispo dans toutes les distributions Linux.

Il faut donc créer un nouveau fichier disponible au chemin suivant : "/etc/systemd/system" que l'on va appeler "wiki.service".

vim /etc/systemd/system/wiki.service

Et voici les lignes du fichier :

[Unit]
Description=Wiki.js
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always
# Insérer le nom de l'utilisateur précédemment créé et dédié à Wiki.js ici :
User=[UTILISATEUR_CREE]
Environment=NODE_ENV=production
WorkingDirectory=/var/wiki

[Install]
WantedBy=multi-user.target

Attention à bien penser de créer un utilisateur pour WikiJS qui a le pouvoir de démarrer le logiciel.‌ ‌Il faut ensuite changer le User=[UTILISATEUR_CREE]. Par la suite, vous pouvez recharger Systemd.

sudo systemctl daemon-reload
sudo systemctl enable wiki
sudo systemctl start wiki

J'essaierai de faire évoluer ce tutoriel en fonction des nouvelles versions de WikiJS qui devraient sortir avant la sortie officielle de la version 2 que l'on attend depuis 1 an maintenant. Si d'ailleurs, vous êtes intéressés pour contribuer, l'adresse est ici :

SOURCE :‌‌ https://github.com/Requarks/wiki