DolibarrCet article décrit l’installation et la maintenance de Dolibarr sur un serveur dédié tournant sous CentOS 7. Dolibarr est un ERP/CRM (Enterprise Resource Planing & Customer Relationship Management) libre qui permet aux entreprises, aux associations ou aux micro-entrepreneurs, de gérer une activité professionnelle ou associative : contacts, factures, commandes, stocks, agenda, etc.

La procédure d’installation présentée ici comporte quelques améliorations par rapport à la documentation officielle, notamment en termes de sécurité.

Prérequis

Configuration de l’hôte virtuel

La configuration de l’hôte virtuel respecte la nomenclature choisie par les développeurs de Dolibarr, notamment htdocs pour la racine du serveur. Voici à quoi cela ressemble sur ma machine de test.

# /etc/httpd/conf.d/10-gestion.slackbox.fr-ssl.conf

# http://gestion.slackbox.fr -> https://gestion.slackbox.fr
<VirtualHost *:80>
  ServerName gestion.slackbox.fr
  Redirect / https://gestion.slackbox.fr
</VirtualHost>

# https://gestion.slackbox.fr
<VirtualHost _default_:443>
  ServerAdmin info@microlinux.fr
  DocumentRoot "/var/www/slackbox-dolibarr/htdocs"
  ServerName gestion.slackbox.fr:443
  SSLEngine on
  SSLCertificateFile /etc/letsencrypt/live/sd-100246.dedibox.fr/cert.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/sd-100246.dedibox.fr/privkey.pem
  SSLCertificateChainFile /etc/letsencrypt/live/sd-100246.dedibox.fr/fullchain.pem
  BrowserMatch "MSIE [2-5]" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0
  ErrorLog logs/gestion.slackbox.fr-error_log
  CustomLog logs/gestion.slackbox.fr-access_log common
</VirtualHost>

Configuration de SELinux

Étant donné que nous installons Dolibarr en-dessous de /var/www, tous les fichiers nouvellement créés seront correctement étiquetés httpd_sys_content_t. Rien à signaler de ce côté-là.

Dolibarr doit pouvoir envoyer des mails via Postfix, ce qu’il faut explicitement autoriser.

$ sudo setsebool -P httpd_can_sendmail on

Apache possède les droits d’écriture sur le répertoire documents ainsi que sur le fichier htdocs/conf/conf.php. Ces droits d’écriture seront définis par le biais des permissions Unix classiques, mais il faut également le spécifier du côté de SELinux.

$ sudo setsebool -P httpd_unified on

Notons au passage que la documentation officielle attribue à la louche les droits d’écriture d’Apache et ne fait aucune mention de l’autorisation d’envoi de mails.

Téléchargement

Créer un répertoire de téléchargement approprié pour ranger Dolibarr.

$ mkdir -p ~/webapps/dolibarr

Lancer Links depuis le répertoire de téléchargement.

$ cd ~/webapps/dolibarr
$ links https://www.dolibarr.fr

Suivre les liens Téléchargements > Espace téléchargement SourceForge > Dolibarr ERP-CRM > x.y.z > dolibarr-x.y.z.tgz > direct link > Enregistrer > OK.

ImportantLe site de SourceForge est une véritable plaie pour la navigation, et il est parfois impossible de s’y retrouver avec un navigateur en ligne de commande. Le cas échéant, on récupérera l’archive source sur une station de travail pour ensuite la transférer sur le serveur.

Installation

Créer la base de données.

$ mysql -u root -p
Enter password: ********
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.60-MariaDB MariaDB Server

MariaDB [(none)]> create database `slackbox-dolibarr`;
Query OK, 1 row affected (0.02 sec)

MariaDB [(none)]> grant all on `slackbox-dolibarr`.* 
    -> to slackboxuser@localhost 
    -> identified by '********';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit;
Bye

Décompresser l’archive téléchargée à la racine des hôtes virtuels.

$ cd /var/www/
$ sudo tar xzf ~/webapps/dolibarr/dolibarr-x.y.z.tgz

Renommer en fonction de l’hébergement.

$ sudo mv dolibarr-x.y.z slackbox-dolibarr

La documentation officielle préconise l’attribution de l’ensemble des fichiers à l’utilisateur et au groupe système auquel appartient le processus httpd, ce qui n’est pas optimal en termes de sécurité. Nous allons donc attribuer ces fichiers à l’utilisateur « commun mortel » microlinux et au groupe correspondant, en limitant les droits d’écriture d’Apache aux fichiers et aux répertoires pour lesquels cela est strictement nécessaire.

$ sudo chown -R microlinux:microlinux slackbox-dolibarr/
$ find slackbox-dolibarr/ -type d -exec chmod 0755 {} \;
$ find slackbox-dolibarr/ -type f -exec chmod 0644 {} \;

Créer un fichier de configuration vide.

$ cd slackbox-dolibarr/
$ touch htdocs/conf/conf.php

Dolibarr doit pouvoir écrire dans ce fichier.

$ sudo chown microlinux:apache htdocs/conf/conf.php
$ chmod 0660 htdocs/conf/conf.php

Créer le répertoire qui servira aux documents générés ou stockés par Dolibarr. Pour des raisons de sécurité évidentes, il se situe à l’extérieur de l’arborescence du site.

$ mkdir documents

Dolibarr doit pouvoir accéder à ce répertoire en écriture.

$ sudo chown microlinux:apache documents/
$ chmod 0770 documents/

Pointer le navigateur sur l’URL de l’application et suivre les instructions de l’installateur. Je ne fournis pas ici d’instructions détaillées, je relève juste sommairement les étapes de l’installation.

  1. Sélectionner la langue (French).
  2. Vérifier si tous les prérequis techniques sont remplis.
  3. Vérifier les chemins d’accès vers le site et les documents.
  4. Cocher Forcer les connexions sécurisées (HTTPS).
  5. Définir le nom de la base de données.
  6. Saisir l’identifiant et le mot de passe de l’utilisateur MySQL.
  7. Définir un identifiant et un mot de passe pour l’utilisateur Dolibarr.

Une fois l’installation terminée, on peut la verrouiller comme ceci.

$ cd /var/www/slackbox-dolibarr/documents/
$ touch install.lock
$ chmod 0400 install.lock

À ce stade, Apache n’a plus besoin d’écrire dans le fichier htdocs/conf/conf.php.

$ cd /var/www/slackbox-dolibarr/htdocs/conf/
$ sudo chown microlinux:microlinux conf.php
$ chmod 0644 conf.php

Accéder à l’interface d’administration et procéder à la configuration de base. Saisir au minimum le nom de la société et le pays où elle est implantée, et activer les modules dont on a besoin. Voici à quoi cela ressemble sur l’installation que j’utilise pour la gestion de Microlinux.

Dolibarr Société

Mise à jour

De temps en temps, il m’arrive de prendre la main sur une installation de Dolibarr pour en faire l’infogérance pour un client. On connaît tous ce genre d’application installée par un stagiaire quelques années auparavant, et dont personne n’effectue la maintenance.

Dans l’exemple qui suit, je procède à la mise à jour d’une installation existante de Dolibarr 3.9.1 vers la version 11.0.3. Cette mise à jour peut s’effectuer directement, c’est-à-dire sans passer par toutes les versions intermédiaires 3.9.2, 3.9.3, 4.0.0, etc.

Supprimer le fichier documents/install.lock.

$ cd /var/www/slackbox-dolibarr/documents/
$ rm install.lock

Décompresser la nouvelle archive de Dolibarr à la racine des hôtes virtuels.

$ cd /var/www/
$ sudo tar xzf ~/webapps/dolibarr/dolibarr-11.0.3.tgz

Recopier les nouveaux fichiers dans le répertoire /var/www/dolibarr-11.0.3 vers le répertoire contenant l’ancienne version de Dolibarr. Ceci a pour effet de remplacer les anciens fichiers par les nouveaux, tout en conservant les fichiers qui sont spécifiques à l’installation, comme le fichier conf.php, le contenu du répertoire documents ou encore les modules complémentaires installés. Au cas où la commande cp comporte un alias vers cp -i, il faudra provisoirement le désactiver.

$ alias cp
alias cp='cp -i'
$ unalias cp
$ sudo cp -Rf dolibarr-11.0.3/* slackbox-dolibarr/
$ alias cp='cp -i'

À partir de là, on pourra supprimer l’arborescence initiale.

$ sudo rm -rf dolibarr-11.0.3/

Pour la durée de la mise à jour, nous allons permettre à Dolibarr de supprimer les fichiers obsolètes de l’installation.

$ sudo chown -R apache:apache slackbox-dolibarr/

Pointer le navigateur sur la page d’installation, dans le sous-répertoire install.

  • https://gestion.slackbox.fr/install/

Choisir Mise à jour dans le menu proposé, en respectant les versions intermédiaires, et lancer les étapes de migration successives.

Redéfinir les droits d’accès.

$ sudo chown -R microlinux:microlinux slackbox-dolibarr/
$ find slackbox-dolibarr/ -type d -exec chmod 0755 {} \;
$ find slackbox-dolibarr/ -type f -exec chmod 0644 {} \;
$ cd slackbox-dolibarr/
$ sudo chown -R microlinux:apache documents/
$ find documents/ -type d -exec chmod 0770 {} \;
$ find documents/ -type f -exec chmod 0660 {} \;

Il ne reste plus qu’à verrouiller le répertoire d’installation.

$ cd documents/
$ touch install.lock
$ chmod 0400 install.lock

Élargir la colonne des libellés

Lorsqu’on affiche la liste des Produits ou des Services, la colonne Libellé n’est pas assez large pour afficher certains produits dont la dénomination est plus longue. Pour remédier à cela, on peut aller dans htdocs/product et éditer le fichier list.php, en remplaçant la valeur maximale 40 par une valeur supérieure, comme ceci par exemple.

// Label
if (! empty($arrayfields['p.label']['checked']))
{
  print '<td class="tdoverflowmax200">'.dol_trunc($obj->label, 60).'</td>';
  if (! $i) $totalarray['nbfield']++;
}

Tiko LogoLorsqu’on inclut un logo de société, il faut faire attention au format de fichier utilisé. Sur une installation fraîche de Dolibarr, j’ai eu toute une série de bugs et de plantages bizarres, avec des fonctionnalités basiques comme la génération de devis et de factures qui ne marchaient plus et me renvoyaient des pages blanches. Un coup d’oeil dans les logs d’Apache m’a montré une erreur pour le moins surprenante.

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted 

Après recherche dans le forum de Dolibarr, j’ai vérifié le logo de l’entreprise. Effectivement, il s’agissait d’un fichier PNG qui faisait plus de 6.000 x 2000 pixels, et c’est l’opération de redimensionnement du logo qui faisait systématiquement planter l’application. La solution consiste donc simplement à utiliser un logo de taille raisonnable et de préférer le format de fichier JPG.


La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 


1 commentaire

bm · 26 mars 2020 à 12 h 25 min

Bonjour,
J’ai aussi choisi Dolibarr. La multiplication des instances m’a conduit à scripter l’installation et la mise à jour. L’installation n’est pas -encore- totalement automatique mais la mise à jour oui.
C’est disponible ici : https://framagit.org/18informatique/dolibarr
Tout retour sera bienvenu.
Cordialement,

Les commentaires sont fermés.