Bookstack, base de connaissances

Bookstack, base de connaissances

Créer votre propre wiki

Présentation de Bookstack

Bookstack

Qu'est-ce que Bookstack ? Bookstack est une sorte de Wiki auto hébergé qui permet de stocker et d'organiser de la documentation, des informations, des notes, etc.

La gestion des documents dans Bookstack est comparable à celle de livres, c'est pour ça qu'il est composé d'étagères, elles-mêmes composés, elles-mêmes composés de chapitres et de pages.

livres.jpg

Vous pouvez mélanger facilement du texte avec des images ou autre contenu audio-visuel, à l'instar d'un blog.

L'avantage de Bookstack, c'est qu'il est très simple à utiliser et configurer, que ce soit au niveau de la rédaction des articles ou de la personnalisation des différents types de compte.

Début de l'installation

Nous allons voir comment installer Bookstack

Prérequis

Il faut d'abord savoir de quoi a besoin essentiellement Bookstack pour fonctionner :

  • PHP >= 7.4. Vous pouvez vérifier votre version de PHP installé avec php -v
  • NGINX : ou plus exactement, n'importe quel serveur Web supportant PHP (Apache par exemple). Mais dans notre cas, on va utiliser Nginx car c'est le plus souvent utilisé et ça pourra être utile plus tard si on veut notamment faire un reverse-proxy.
  • MySQL >= 5.7 ou MariaDB >= 10.2 : On a besoin d'une base de données pour stocker le contenu et les données de Bookstack
  • Composer >= v2.0 : Requis pour l'installation et la gestion de nos dépendances PHP
  • Git : Pour l’application des mises à jour en suivant le processus standard.‎

Utilisateurs

On va créer plusieurs utilisateurs qui auront des rôles différents sur Bookstack :

  1. nimda : Ce sera l'administrateur de Bookstack
  2. boris : Il sera éditeur sur Bookstack
  3. joe : Il sera viewer sur Bookstack

Installation

On peut installer Bookstack via un script ou manuellement. Dans notre cas, on va le faire manuellement, mais rien ne vous empêche de faire votre propre script.

Comme toujours, on fait les mises à jour des paquets avant :

sudo apt update && apt upgrade -y

On installe toutes les dépendances dont on a besoin pour faire fonctionner Bookstack :

sudo apt install php7.4 php7.4-curl php7.4-xml php7.4-zip php7.4-common php-fpm php7.4-mysql php7.4-mbstring php7.4-gd mariadb-server git nginx curl composer vim -y

Configuration de MariaDB :

On va configurer la base de données SQL. On va faire en sorte que notre base de données soit un temps sous peu sécurisé. Suivez les conseils du script :

sudo mysql_secure_installation

mysql_secure_installation.jpg

On se connecte à la base de données en tant que root :

sudo mysql -u root -p

Ici, on va créer la base de données et l'utilisateur qu'utilisera Bookstack. Vous pouvez remplacer "nimda" et "password" par l'utilisateur et le mdp que vous voulez :

CREATE DATABASE bookstack;
CREATE USER 'nimda'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON bookstack.* TO 'nimda'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit

mysql_database.jpg On en a fini pour MySQL.

Installation de Composer

Pour installer composer (On doit d'abord passer en root pour pouvoir télécharger composer su -) :

curl -s https://getcomposer.org/installer > composer-setup.php

On exécute composer-setup.php pour récupérer composer.phar :

php composer-setup.php

On doit déplacer composer.phar dans notre dossier /usr/bin :

mv composer.phar /usr/bin/composer

On peut vérifier que composer est bien installé :

composer -v

composer.jpg L'installation de PHP composer est fini.

On peut quitter root si l'on veut maintenant.

Installation de Bookstack

On passe désormais à l'installation de Bookstack.

On télécharge Bookstack :

cd /var/www
sudo git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch bookstack

On se rend dans le dossier de Bookstack et on installe les dépendances PHP :

cd bookstack/<br></br>sudo composer install

Si composer demande si on désire le lancer en tant que root, on répond "yes".

composer_root.jpg

Tout c'est bien déroulé.

composer_good.jpg

Ensuite, on va copier le fichier de conf de Bookstack qu'on va venir éditer par la suite :

sudo cp .env.example .env
sudo nano .env

On modifie les lignes suivantes :

# On met l'adresse IP du serveur ou son nom de domaine
APP_URL=http://192.168.1.34

# Notre base de données est en locale mais on mettrait l'@IP de la BDD si elle était sur un autre serveur
DB_HOST=localhost
# Nom de la base de données de bookstack
DB_DATABASE=bookstack
# Utilisateur de la base de données
DB_USERNAME=nimda
# Son mot de passe
DB_PASSWORD=password

conf_bookstack.jpg

Sauvegardez et quittez.

‎Nous pouvons à présent générer la clé de l’application et remplir la base de données. Répondez "yes" à chaque fois :‎

sudo php artisan key:generate
sudo php artisan migrate

Et finalement, on va faire en sorte que le serveur ait accès aux dossiers requis de Bookstack :

sudo chown www-data:www-data -R bootstrap/cache public/uploads storage
sudo chmod -R 755 bootstrap/cache public/uploads storage

La configuration de Bookstack est fini.

Configuration de Nginx

On passe à la dernière étape, la mise en place de l'hôte virtuel de Bookstack dans le serveur Web Nginx.

Pour cela, on va créer l'hôte virtuel et la configurer.

Tout d'abord, on créer le fichier de configuration :

sudo nano /etc/nginx/sites-available/bookstack.conf

On le remplis avec ce qui suit :

server {
  listen 80;
  listen [::]:80;

  # On met ici l'addresse IP ou le nom de domaine du serveur Bookstack
  # Le nom ou l'adresse IP doit être la même que celle déclaré dans Bookstack ou ça ne fonctionnere pas
  server_name 192.168.1.34;

  root /var/www/bookstack/public;

  index index.php index.html;

  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }

  location ~ \.php$ {
    fastcgi_index index.php;
    try_files $uri =404;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;
  }
}

Enregistrez et quittez.

Activez la nouvelle configuration en liant le fichier bookstack.conf au répertoire sites-enabled :

sudo ln -s /etc/nginx/sites-available/bookstack.conf /etc/nginx/sites-enabled/

On teste le fichier de configuration de Nginx :

sudo nginx -t

nginx_test.png

Puis, on redémarre le serveur Web pour prendre en compte tous les changements :

sudo systemctl reload nginx.service

Voila ! On a fini la configuration de Bookstack :)

Test

Maintenant qu'on a fini la configuration de Bookstack, il faut vérifier qu'on y a bien accès.

Pour cela, on se rend sur l'adresse IP ou le nom de domaine qu'on a renseigné lors de la configuration. Dans mon cas, je dois y accéder via : http://192.168.1.34

Bonne surprise, Bookstack se lance bien !

bookstack_default.jpg

Présentement, pour se connecter, on va utiliser les identifiants par défaut pour la première connexion, mais bien sûr, on ira les modifier après. Les logins admin par défaut sont : admin@admin.com | password

Dans le cas d'une erreur de connexion erreur_connexion.png Si jamais vous n'arrivez pas à vous connecter et que vous voulez obtenir plus d'informations sur la source du problème, vous pouvez activer le mode debug de Bookstack en éditant le fichier de configuration .env :
sudo nano /var/www/bookstack/.env Ajouter cette commande pour activer le debuggage :
APP_DEBUG=true debug.jpg Enregistrez le fichier. Essayez de vous reconnecter à Bookstack et vous devriez voir les messages d'erreurs en provenance du mode de debugage. Ainsi, vous pourrez régler plus facilement votre problème. Dans l'exemple qui suit, les messages d'erreur nous ont permis de détecter le problème qui se situer au niveau des permissions des dossiers de Bookstack, plus exactement un problème de droits d'écriture sur les dossiers storage/, bootstrap/cache & public/uploads de Bookstack :
bookstack_debug.png On n'a pu remédier au problème avec cette commande et ainsi accèder à Bookstack :
sudo chown www-data:www-data -R bootstrap/cache public/uploads storage && sudo chmod -R 755 bootstrap/cache public/uploads storage

Parfait, J'ai accès à Bookstack et je peux à présent créer des livres, des étagères, des utilisateurs, etc.

bookstack_home.jpg

Gestion des utilisateurs

Création d'utilisateurs

Pour créer un utilisateur, on va dans Préférences -> Utilisateurs -> Ajouter un nouvel utilisateur.

users_1.jpg

Vous devez choisir le nom et mettre une adresse e-mail. Ce sera l'adresse e-mail qui sera utilisé pour se connecter à Bookstack. Si possible, essayez d'utiliser une véritable adresse e-mail, car elle sera aussi utilisée en cas de réinitialisation du mot de passe.

Vous devez choisir le rôle de l'utilisateur selon les permissions que vous voulez lui affecter.

Pour ce qui est du mot de passe, vous avez le choix d'envoyer un mail d'invitation qui permettra à l'utiliseur de choisir son mot de passe ou alors, vous pouvez le définir vous-même.

Et enfin, la langue de l'interface pour l'utilisateur.

Une fois toutes les informations renseignées, enregistrez.

users_2.jpg

Et Voilà, vous n'avez qu'à recommencer cela à chaque fois que vous voulez créer un nouvel utilisateur, rien de compliqué ^^

users_3.jpg

Suppression d'un utilisateur

Pour supprimer un utilisateur, rien de plus simple. Toujours dans la section Utilisateurs, cliquez sur l'utilisateur que vous souhaitez supprimer. Dans mon cas, ça va être Admin.

Descendez jusqu'au niveau de "Langue préféré" et en dessous, vous verrez le bouton "Supprimer un utilisateur". Cliquez dessus.

Étant donné que c'est un utilisateur Administrateur, il va vous afficher un message de confirmation, car évidemment il faut toujours au moins un utilisateur admin pour pouvoir gérer Bookstack.

Il vous offre aussi la possibilité de transférer la propriété du rôle à un autre utilisateur. Mais vu que dans notre cas, on a déjà créé un utilisateur nimda qui est, lui aussi, admin, on peut passer cela.

Cliquez sur "Confirmer".

Je me connecte avec nimda.

On se rend dans Utilisateurs et on peut maintenant remarquer que l'utilisateur Admin n'existe plus. Voilà.

delete_user_3.jpg

Fin

Voici la fin du tutoriel sur Bookstack, j'ai montré les principales choses à configurer, vous pouvez l'utiliser dès maintenant et je vous l'encourage car c'est très pratique d'avoir sa propre base de documentation.