Christophe Ti

(Christophe TREMBLAY-GUILLOUX)

Ingénieur système Linux – TJM: 630 € HT

L’impression d’être entouré ou conseillé par des soi-disant « Expert Linux » (avant qu’ils ne disparaissent du radar) ?

Christophe est l’ULTIME expert en système Linux, hébergement web et développement Puppet que vous garderez dans vos contacts… à vie.

Comment installer Dolibarr sur un VPS OVH Debian 11 ?

Les conseils privés de Christophe Ti

Quelles sont les mystérieuses techniques que j’utilise pour vous fournir un serveur Linux Debian (ou hébergement web), fiable, performant et sécurisé, sans devoir monter la garde jour et nuit ?

Nous allons installer ensemble Dolibarr sur un VPS OVHCloud dédié à cette utilisation. (Vous pouvez démarrer sur la gamme starter et augmenter la puissance par la suite).

Ce tutoriel se concentre volontairement sur les actions minimum pour obtenir rapidement un Dolibarr en ligne. Certains aspects plus poussés seront abordés dans d’autres tutoriels.

1. Réserver une URL pour Dolibarr

D’abord, vous avez besoin d’un nom de domaine sinon l’activation de l’accès sécurisé par SSL sera impossible car le fournisseur de certificats gratuits letsencrypt n’aime pas quand il y a trop de certificats avec le même nom de domaine (En effet ovh.net est utilisé dans le nom de tous les VPS).

Mon URL sera : https://dolibarr-vps.libreok.ovh

Connaître l'adresse IP de son VPS

Il faut se rendre dans le manager OVH et lire l’IPv4 :

Configurer son nom de domaine dans la zone DNS

Mon nom de domaine est libreok.ovh, je me rends dans sa configuration pour ajouter une entrée de type A :

2. Connexion au compte root

Pour administrer le VPS, vous devez vous connecter au compte root par SSH.

(Beaucoup de tutoriels sur internet présentent les commandes à taper préfixées de la commande sudo afin de préciser que la commande se lance sous le compte root. Je ne vais préfixer aucune commande de sudo car je me connecte en permanence avec le compte root. Si vous suivez le tutoriel dans l’ordre, il n’y aura aucun soucis.)

Pour vous connecter au compte root des VPS OVH, vous devez passer par le compte intermédiaire créé par OVH : debian (pour le cas des distributions Debian).

Si vous travaillez sous Windows, je vous invite à utiliser Putty pour vous connecter par le protocole SSH au VPS. Vous pouvez sans doute utiliser aussi le Powershell.

Si vous êtes déjà sous Linux ou Mac, c’est nettement plus simple, vous lancez juste un terminal :

				
					ssh -4 debian@vps-xxxxxxxx.vps.ovh.net
				
			

Puis passez root :

				
					sudo su -
				
			

3. Mettez à jour le système

Avant de continuer, on va mettre à jour le système fraîchement installé et le redémarrer :

3.1 Mise à jour des index des paquets logiciels

				
					apt update
				
			

3.2 Mise à jour des paquets

				
					apt upgrade
				
			

3.3 Redémarrage

On redémarre le VPS et on attend une minute avant de se reconnecter en root :

				
					reboot
				
			

4. Installation du service de base de données MariaDB (anciennement MySQL)

Dolibarr aura besoin d’enregistrer une partie de ses données en base de données. Voici comment préparer le service de base de données.

4.1 Connectez-vous de nouveau serveur en tant que root.

				
					ssh debian@vps-xxxxxxxx.vps.ovh.net
sudo su -
				
			

4.2 Installez les paquets de base de données

				
					apt install mariadb-server
				
			

Note importante : dans beaucoup de tutoriels sur internet, vous trouverez des exemples qui proposent de lancer la commande mysql_secure_installation. Cette commande ne sert, a priori, à rien sur Debian. Le service installé par défaut est déjà sécurisé. Il n’y a pas de bases de données « test », il n’y a pas de compte anonyme. Le compte root du système est autorisé à se connecter en root de façon sécurisée sur MariaDB par socket et sans mot de passe, c’est très bien comme ça.

4.3 Créez un utilisateur pour Dolibarr dans MariaDB

4.3.1 Connexion à l’utilisation root de MariaDB

Note important : l’utilisateur root de MariaDB n’a rien à voir avec l’utilisateur root du système.

				
					mysql -u root mysql
				
			

4.3.2 Création de la base de données dolibarr

Sous le prompt de MariaDB, tapez ces commandes suivantes :

				
					CREATE DATABASE dolibarr CHARACTER SET utf8 COLLATE utf8_unicode_ci;
				
			

4.3.3 Création de l’utilisateur dolibarr

Inventez un mot de passe pour l’utilisateur dolibarr et notez-le pour plus tard (vous pouvez le conserver sur un gestionnaire de mot de passe).

Attention ! Remplacez mot_de_passe dans ce qui suite par un mot de passe !

				
					CREATE USER 'dolibarr'@'localhost' IDENTIFIED BY 'mot_de_passe';
GRANT ALL PRIVILEGES ON dolibarr.* TO 'dolibarr'@'localhost';
FLUSH PRIVILEGES;
				
			

4.3.4 Quittez le prompt MariaDB

				
					\q
				
			

5. Installez PHP

				
					apt install php-fpm php-curl php-intl php-mbstring php-gd php-zip php-xml php-mysql php-soap
				
			

6. Installez le service web NGINX

				
					apt install nginx-extras
				
			

7. Créez un compte utilisateur système pour dolibarr

Nous allons organiser les répertoires de façon à être un peu tout-terrain comme si on pourrait avoir d’autres applications et en séparant l’exécution de dolibarr sous son propre utilisateur.

7.1 Création des répertoires d’accueil

Attention : remplacez « dolibarr-vps.libreok.ovh » par votre URL à vous (sans le https://)

				
					DOLIBARRURL=dolibarr-vps.libreok.ovh
mkdir -p /var/www/users/dol /var/www/users/dol/home /var/www/users/dol/${DOLIBARRURL} /var/www/users/dol/${DOLIBARRURL}/app /var/www/users/dol/${DOLIBARRURL}/data /var/www/users/dol/${DOLIBARRURL}/log /var/www/users/dol/${DOLIBARRURL}/tmp
				
			

7.2 Création de l’utilisateur

				
					useradd dol --home /var/www/users/dol/home --gid users --shell /bin/bash
				
			

7.3 Attributions des droits et des accès aux répertoires

				
					chmod 0751 /var/www/users
chmod 0701 /var/www/users/dol /var/www/users/dol/${DOLIBARRURL} /var/www/users/dol/${DOLIBARRURL}/app
chmod 0700 /var/www/users/dol/home /var/www/users/dol/${DOLIBARRURL}/data /var/www/users/dol/${DOLIBARRURL}/log /var/www/users/dol/${DOLIBARRURL}/tmp
chown dol /var/www/users/dol/home /var/www/users/dol/${DOLIBARRURL}/app /var/www/users/dol/${DOLIBARRURL}/data /var/www/users/dol/${DOLIBARRURL}/log /var/www/users/dol/${DOLIBARRURL}/tmp
				
			

8. Téléchargement et décompression de Dolibarr

On passe sous l’utilisateur dolibarr pour télécharger et décompresser pour on revient root :

Attention : remplacez « dolibarr-vps.libreok.ovh » par votre URL à vous (sans le https://)

9. Création d’un lien symbolique vers le bon répertoire de l’application

Ce lien sera utilisé par le service web pour trouver le répertoire de l’application. Dans un contexte d’installation d’autres applications, ce système serait adaptable pour d’autres applications qui auraient une structure différente.

				
					su - dol
DOLIBARRURL=dolibarr-vps.libreok.ovh
VERSION=14.0.1
SYSUSER=`whoami`
wget https://netcologne.dl.sourceforge.net/project/dolibarr/Dolibarr%20ERP-CRM/${VERSION}/dolibarr-${VERSION}.tgz
tar xvzf dolibarr-${VERSION}.tgz -C /var/www/users/${SYSUSER}/${DOLIBARRURL}/app
mv /var/www/users/${SYSUSER}/${DOLIBARRURL}/app/dolibarr-${VERSION} /var/www/users/${SYSUSER}/${DOLIBARRURL}/app/dolibarr
exit
				
			

Attention : nous sommes de nouveau root (suite à la commande « exit » de la commande précédente)

10. Configuration du pool PHP pour dolibarr

				
					ln -s /var/www/users/dol/${DOLIBARRURL}/app/dolibarr/htdocs /var/www/users/dol/${DOLIBARRURL}/web
				
			

Éditez un nouveau fichier :

				
					nano /etc/php/7.4/fpm/pool.d/dolibarr.conf
				
			

Puis mettez ce contenu (nous allons remplacer le mot clé DOLIBARRURL juste après) :

				
					[dolibarr]
user = dol
group = users
listen = /var/run/php7-fpm-dol.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0666
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 5
pm.max_requests = 1000
catch_workers_output = yes
security.limit_extensions = .php
env[TEMP] = /var/www/users/dol/DOLIBARRURL/tmp/
env[TMP] = /var/www/users/dol/DOLIBARRURL/tmp/
env[TMPDIR] = /var/www/users/dol/DOLIBARRURL/tmp/
php_value[include_path] = .
php_admin_value[error_log] = /var/www/users/dol/DOLIBARRURL/log/php-fpm.error.log
php_admin_value[max_input_time] = 180
php_admin_value[memory_limit] = 256M
php_admin_value[open_basedir] = /var/www/users/dol/DOLIBARRURL/web/:/var/www/users/dol/DOLIBARRURL/app/:/var/www/users/dol/DOLIBARRURL/data/:/var/www/users/dol/DOLIBARRURL/log/:/var/www/users/dol/DOLIBARRURL/tmp/
php_admin_value[session.save_path] = /var/www/users/dol/DOLIBARRURL/tmp/
php_admin_value[upload_tmp_dir] = /var/www/users/dol/DOLIBARRURL/tmp/
php_admin_flag[allow_url_fopen] = off
				
			

Sauvegardez le fichier : ctrl-X puis Y et touche entrée

Maintenant on remplace le mot clé :

				
					sed -i "s/DOLIBARRURL/${DOLIBARRURL}/g" /etc/php/7.4/fpm/pool.d/dolibarr.conf
				
			

Relancez php-fpm :

				
					systemctl restart php7.4-fpm
				
			

11. Création du certificat SSL

On installe maintenant l’outil certbot qui permet de demander un certificat SSL à letsencrypt :

				
					apt -y install certbot
				
			

L’outil va couper le serveur nginx le temps de demander le certificat :

Attention : remplacez « votreemail@votrecomain.com » par votre adresse courriel :

				
					certbot certonly --standalone --agree-tos --no-eff-email -m votreemail@votredomain.com -d ${DOLIBARRURL} --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"
				
			

12. Configurez NGINX

On efface le fichier de configuration par défaut :

				
					rm /etc/nginx/sites-enabled/default
				
			

On crée un répertoire pour écrire de petits bouts de configuration à inclure par la suite :

				
					mkdir /etc/nginx/includes
				
			

On édite un nouveau fichier de configuration pour de futurs accès letsencrypt si on veut remplacer le renouvellement de la méthode standalone à la méthode webroot :

				
					mkdir -p /var/acme/.well-known/acme-challenge/
nano /etc/nginx/includes/acme.conf
				
			
				
					location ^~ /.well-known/acme-challenge/ {
    root      /var/acme;

    autoindex off;
    index     index.html;
    try_files $uri $uri/ =404;
    auth_basic off;
}
				
			

On édite un nouveau fichier de configuration pour  l’accès en HTTP (sans SSL) :

				
					nano /etc/nginx/sites-available/${DOLIBARRURL}.conf
				
			

On met ceci dans l’éditeur (nous allons remplacer le mot clé DOLIBARRURL juste après) :

				
					server {
  listen *:80;
  server_name      DOLIBARRURL;

  index            index.html index.php;
  access_log       /var/log/nginx/DOLIBARRURL.access.log combined;
  error_log        /var/log/nginx/DOLIBARRURL.error.log;

  location / {
    index     index.html index.php;
    rewrite ^ https://$server_name$request_uri? permanent;
  }
  include includes/acme.conf;
}
				
			

On édite un nouveau fichier de configuration pour  l’accès en HTTPS (pour le SSL) (nous allons remplacer le mot clé DOLIBARRURL juste après) :

				
					nano /etc/nginx/sites-available/${DOLIBARRURL}_ssl.conf
				
			
				
					server {
  listen       *:443 ssl http2;
  listen       [::]:443 ssl http2 ;
  server_name  DOLIBARRURL;

  ssl_certificate           /etc/letsencrypt/live/DOLIBARRURL/fullchain.pem;
  ssl_certificate_key       /etc/letsencrypt/live/DOLIBARRURL/privkey.pem;
  ssl_session_cache         shared:SSL:20m;
  ssl_session_timeout       1d;
  ssl_session_tickets       off;
  ssl_buffer_size           4k;
  ssl_protocols             TLSv1.2 TLSv1.3;
  ssl_ciphers               ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA;
  ssl_prefer_server_ciphers off;
  ssl_stapling              on;
  ssl_stapling_verify       on;

  index  index.html index.php;
  access_log            /var/log/nginx/ssl-DOLIBARRURL_ssl.access.log combined;
  error_log             /var/log/nginx/ssl-DOLIBARRURL_ssl.error.log;
  root /var/www/users/dol/DOLIBARRURL/web/;


  location ~ (.+\.php)(.*)$ {
    include       /etc/nginx/fastcgi.conf;

    fastcgi_pass  unix:/var/run/php7-fpm-dol.sock;
    fastcgi_index index.php;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_param PATH_INFO       $fastcgi_path_info;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_hide_header X-Frame-Options;
    fastcgi_intercept_errors on;
  }
}
				
			

Maintenant on remplace le mot clé :

				
					sed -i "s/DOLIBARRURL/${DOLIBARRURL}/g" /etc/nginx/sites-available/*
				
			

On active les configurations :

				
					cd /etc/nginx/sites-enabled
ln -s ../sites-available/${DOLIBARRURL}.conf
ln -s ../sites-available/${DOLIBARRURL}_ssl.conf
systemctl restart nginx
				
			

13. Accès à Dolibarr

Utilisez votre navigateur en remplaçant l’URL par celle de votre dolibarr : https://dolibarr-vps.libreok.ovh/

13.1 Écran 1

13.2 Écran 2

13.3 Écran 3

13.4 Écran 4

13.5 Écran 5

13.6 Écran 6

13.7 Écran 7

13.8 Création du fichier install.lock

Depuis votre connexion SSH en tant que root sur le serveur :

Attention : remplacez « dolibarr-vps.libreok.ovh » par votre URL à vous (sans le https://)

				
					su - dol
DOLIBARRURL=dolibarr-vps.libreok.ovh
touch /var/www/users/dol/${DOLIBARRURL}/web/documents/install.lock
exit
				
			

13.9 Écran 8

14. Vous pensez avoir fini l'installation ?

Ce mémo ne parle pas des sauvegardes !

Ni de la sécurité pour protéger le serveur…

Pour la suite, inscrivez-vous dans le formulaire en page d’accueil.

Quelle est la mystérieuse ingénierie qui me permet d'obtenir un serveur Linux fiable et performant, sans devoir monter la garde jour et nuit ?