ERPNext est une suite de planification des ressources d'entreprise gratuite et open-source qui a été conçue pour gérer les processus opérationnels de base des fabricants, des distributeurs et des sociétés de service. Elle offre aux entreprises une vision globale de leurs opérations les plus complexes, la possibilité de prendre des décisions à grande échelle et d'identifier rapidement où le changement et l'innovation sont nécessaires.

L’automatisation et l’intégration numérique de processus métiers complexes sont devenues essentielles pour les entreprises dans un contexte où l’évolution des technologies de l’information est quasi exponentielle.

Lorsque les organisations numérisent des processus qui nécessitent un traitement approfondi des données, elles créent du temps pour les tâches où l'intervention humaine est la plus nécessaire, comme les négociations et la prise de décision. Elles sont également capables d'avoir une vision plus large de toutes les opérations croisées se déroulant en même temps et de créer des stratégies de croissance plus efficaces.

Le système de planification des ressources de l'entreprise, (Enterprise Resource Planning (ERP) en anglais) ou également appelé Progiciel de Gestion Intégrée (PGI) en français, est un système de gestion qui aide les entreprises à automatiser ces processus et à centraliser les informations grâce à l'intégration numérique. Le système s'appuie sur des logiciels ou des ensembles d'applications, pour fournir aux entreprises des outils permettant de gérer de manière transparente les projets des différentes équipes.

En général, les logiciels ERP incluent des fonctionnalités qui aident les entreprises à naviguer dans leurs modules de processus les plus stratégiques et opérationnels, tels que les transactions d'achat, la gestion des stocks, les relations avec les fournisseurs, les opérations logistiques, la facturation des ventes, les flux financiers, la gestion des ressources humaines, le suivi des objectifs établis, exécution de la planification budgétaire, comptabilité fiscale, contrôle de la production, gestion juridique, états comptables, interactions avec les clients et autres activités qui pourraient être spécifiques au type d'entreprise. Dans le cas de nombreux logiciels ERP, les modules peuvent également être personnalisés pour s'adapter aux spécificités d'une entreprise.

L'ERP offre aux entreprises une vision globale de leurs opérations les plus complexes, la possibilité de prendre des décisions à grande échelle et d'identifier rapidement où le changement et l'innovation pourraient être nécessaires et quelles équipes devraient être impliquées.

ERPNext est une suite de planification des ressources d'entreprise gratuite et open-source. Elle a été conçue pour gérer les processus opérationnels de base des fabricants, des distributeurs et des sociétés de service.

De plus, des modules spécifiques adaptés aux secteurs de l’éducation, des soins de santé, de l’agriculture et des organisations à but non lucratif sont disponibles.

ERPNext, écrit en langage Python, utilise une base de données MariaDB pour stocker ses données et repose sur le Framework Frappe. L’application est sous licence GNU GPLv3 et son code source est hébergé sur GitHub.

Dans ce tutoriel, vous découvrirez comment installer et configurer ERPNext sur Ubuntu 18.04 (Bionic Beaver) sur un serveur dédié Scaleway Dedibox.

Pour débuter ce tutoriel, voici les prérequis :

  • Vous avez un compte et êtes connecté à votre console Scaleway Dedibox
  • Vous avez configuré votre clé SSH
  • Vous disposez d’un serveur dédié Scaleway Dedibox fonctionnant sur Ubuntu 18.04 (Bionic Beaver)
  • Vous détenez des privilèges sudo ou avez accès à l’utilisateur root
  • Vous avez configuré un enregistrement A pointant vers l’adresse IP de votre serveur

Comment configurer les paramètres régionaux

Commencez par configurer le mappage du clavier système de la console, ainsi que la langue et l'encodage des caractères sur l’hôte. Cette étape est nécessaire pour éviter tout problème lors du processus d’installation d’ERPNext ; il n’affecte en rien la langue de l’interface utilisateur que vous utiliserez sur l’interface Web d’ERPNext.

  1. Mettez à jour le gestionnaire de paquets apt et mettez à niveau le logiciel déjà installé sur le système :
sudo apt update && sudo apt upgrade -y
  1. Configurez les paramètres régionaux du système sur en_US.utf8 :
localectl set-keymap us && localectl set-locale LANG=en_US.utf8
  1. Ouvrez le fichier /etc/environment dans un éditeur de texte et ajoutez les lignes suivantes à la fin du fichier :
sudo nano /etc/environment
[...]
LC_ALL=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LANG=en_US.UTF-8

Enregistrez le fichier, quittez l’éditeur de texte et redémarrez votre serveur à l’aide de la commande reboot.

Exécutez toutes les étapes suivantes depuis votre compte utilisateur en utilisant les privilèges sudo.

Comment installer MariaDB

  1. ERPNext repose sur le moteur de base de données MariaDB, mais la version disponible par défaut dans les référentiels d’Ubuntu 18.04 LTS est obsolète et n’est pas prise en charge par ERPNext. Il vous suffit donc d'ajouter un miroir MariaDB à la configuration apt pour pouvoir installer une version plus récente sur le système :
sudo apt install software-properties-common
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.igh.cnrs.fr/pub/mariadb/repo/10.4/ubuntu bionic main'
sudo apt update
  1. Ensuite, installez MariaDB à l’aide du gestionnaire de paquets apt :
sudo apt install mariadb-server-10.4 mariadb-client-10.4
  1. Une fois le serveur MariaDB installé, c'est au tour des packages requis pour ERPNext :
sudo apt install libmysqlclient-dev python3-mysqldb
  1. Finalisez l’installation de MariaDB en exécutant l’outil de configuration interactif :
sudo mysql_secure_installation

L’outil de configuration vous invite à saisir le mot de passe MySQL actuel. Comme il s'agit d’une nouvelle installation, aucun mot de passe n’est encore configuré, vous pouvez donc appuyer sur Enter pour continuer. Lorsque vous êtes invité à configurer un mot de passe root pour MySQL, appuyez sur Y et saisissez un mot de passe secret et sa confirmation. Appuyez sur Y pour supprimer les utilisateurs anonymes lorsque vous y êtes invité, puis appuyez de nouveau sur Y pour interdire la connexion root. Confirmez la suppression de la base de données de test et rechargez les privilèges pour activer la nouvelle configuration.

  1. Nous utiliserons un utilisateur non root avec des privilèges de super-utilisateur pour nous connecter à la base de données avec ERPNext. Connectez-vous au shell MySQL :
sudo mysql
  1. Créez une base de données portant le nom de l’utilisateur que vous souhaitez utiliser pour les connexions à votre serveur MariaDB. Dans ce tutoriel, nous utilisons timmy, mais vous pouvez choisir n'importe quel identifiant.
CREATE DATABASE timmy;
  1. Créez un nouveau compte d’utilisateur et octroyez-lui les privilèges de super-utilisateur. Remplacez strong_database_password dans la commande suivante par un mot de passe sécurisé pour l’utilisateur :
GRANT ALL PRIVILEGES ON *.* TO 'timmy'@'%' IDENTIFIED BY 'strong_database_password' WITH GRANT OPTION;
  1. Videz les privilèges pour activer le nouveau compte d’utilisateur :
FLUSH PRIVILEGES;
  1. Quittez le shell MariaDB :
EXIT;
  1. Ouvrez le fichier /etc/mysql/conf.d/50-server.cnf dans un éditeur de texte :
sudo nano /etc/mysql/conf.d/50-server.cnf

Assurez-vous que l’ensemble de caractères est défini sur utfmb4_unicode_ci. Ensuite, enregistrez le fichier et quittez l’éditeur de texte :

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
 
[mysql]
default-character-set = utf8mb4
  1. Redémarrez le serveur MariaDB :
sudo service mysql restart

Comment configurer ERPNext

Installez les prérequis

  1. Installez les dépendances suivantes à l’aide du gestionnaire de paquets apt avant de poursuivre l’installation d’ERPNext :
sudo apt install -y apt-transport-https build-essentials curl mariadb-client python3-setuptools python3-dev python3-mysqldb libffi-dev python3-pip libcurl4 dnsmasq fontconfig git htop libcrypto++-dev libfreetype6-dev liblcms2-dev libldap2-dev libcups2-dev pv libjpeg8-dev libtiff5-dev tcl8.6-dev tk8.6-dev libssl-dev libdate-manip-perl zlib1g-dev libsasl2-dev libwebp-dev libxext6 libxrender1 libxslt1-dev libxslt1.1 libffi-dev logwatch ntpdate postfix python3-dev python-tk screen vim xfonts-75dpi xfonts-base
  1. Continuez d’installer les dépendances Python requises et mettez à niveau pip
sudo -H python3 -m pip install --upgrade setuptools cryptography psutil
  1. Téléchargez un script pour ajouter un référentiel NodeSource à votre système et enregistrez-le localement :
curl -sL https://deb.nodesource.com/setup_12.x -o nodesource_setup.sh
  1. Exécutez le script pour configurer le référentiel NodeSource avec le gestionnaire de paquets apt :
sudo bash nodesource_setup.sh
  1. Installez à présent NodeSource à l’aide de apt :
sudo apt install nodejs
  1. Ensuite, installez yarn à l’aide de npm :
sudo npm install -g yarn
  1. ERPNext utilise l’outil wkhtmltopdf pour convertir le contenu HTML en fichiers PDF à l’aide du moteur de rendu Qt WebKit pour générer des factures, des devis et autres rapports imprimables. Pour l’installer, accédez au répertoire /tmp et téléchargez le package requis :
cd /tmp && wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.bionic_amd64.deb
  1. Installez le package téléchargé à l’aide de dpkg :
sudo dpkg -i wkhtmltox_0.12.5-1.bionic_amd64.deb
  1. Suite à l’installation, copiez tous les fichiers binaires pertinents sur le répertoire /usr/bin :
sudo cp /usr/local/bin/wkhtmlto* /usr/bin/
  1. Une fois les fichiers en place, rendez-les exécutables :
sudo chmod a+x /usr/bin/wkhtmlto*
  1. Ensuite, retournez dans le répertoire /home de l’utilisateur :
cd /home/timmy

Installez Redis

ERPNext utilise les fonctionnalités de mise en cache de Redis pour optimiser les performances de la base de données.

  1. Installez-le à l’aide du gestionnaire de paquets apt :
sudo apt install redis-server
  1. Configurez Redis pour qu’il se lance automatiquement au démarrage du système :
sudo systemctl enable redis-server

Installez le CLI Bench de Frappe

Une fois les principaux prérequis de la stack ERPNext installés, installez l’interface de ligne de commande bench de Frappe. Elle a été conçue pour assister les utilisateurs lors de l’installation, de la configuration et de la gestion des applications à l’aide du Framework Frappe, comme ERPNext.

  1. Clonez le répertoire GitHub bench à l’aide de git :
git clone https://github.com/frappe/bench /home/timmy/.bench --depth 1 --branch master
  1. Installez le CLI bench à l’aide de pip3 :
sudo pip3 install -e /home/timmy/.bench

Installez le Framework Frappe

  1. En installant le Framework Frappe, vous allez peut-être dépasser la limite de fichiers d’Ubuntu. Pour éviter ce problème, définissez une limite supérieure et utilisez la commande suivante :
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
  1. Dans l’étape suivante, initialisez le Framework Frappe à l’aide de la commande suivante. Pensez à remplacer /home/timmy par le chemin d’accès de votre utilisateur :
bench init /home/timmy/frappe-bench --frappe-path https://github.com/frappe/frappe --frappe-branch version-12 --python python3

Une fois l’installation terminée, un message de ce type s’affichera :

✨  Done in 94.7s
Done in 96.74s.
INFO:bench.utils:setting up backups
no crontab for timmy
SUCCESS: Bench /home/timmy/frappe-bench initialized

Installez l’application Web ERPNext

  1. Accédez au répertoire dans lequel frappe-bench a été installé :
cd /home/timmy/frappe-bench
  1. Téléchargez ERPNext à l’aide de l’interface de ligne de commande bench :
bench get-app ERPNext https://github.com/frappe/erpnext --branch version-12
  1. Créez un nouveau site pour votre installation ERPNext :
bench new-site your_erpnext_domain --admin-password 'a_secure_erpnext_admin_password' --mariadb-root-username timmy --mariadb-root-password 'your_mariadb_root_password'

La création du site peut prendre un moment ; vous pouvez vous référer aux barres d’état pour suivre sa progression :

Installing frappe...
Updating DocTypes for frappe    	: [========================================]
Updating country info           	: [========================================]
  1. Une fois créé, installez ERPNext sur votre nouveau site à l’aide de bench :
bench --site your_erpnext_domain install-app ERPNext

Une fois de plus, vous pouvez vous référer à la barre d'état pour suivre la progression.

Installing ERPNext...
Updating DocTypes for ERPNext   	: [========================================]
Updating customizations for Address
  1. À présent, testez l’installation du site à l’aide de bench :
bench start

Bench déploiera un environnement de test et vous pourrez accéder à ERPNext à l’adresse http://your_erpnext_domain:8000. Si vous ouvrez cette URL dans votre navigateur Web, l’écran de connexion à ERPNext s'affiche :

Appuyez sur CTRL + C sur votre terminal pour arrêter l’environnement de test.

Configurez ERPNext pour la production

Notre environnement de test a prouvé que notre installation ERPNext fonctionne, mais certaines étapes supplémentaires sont nécessaires pour la sécuriser et la rendre prête pour la production. Nous utilisons de nouveau l’outil de ligne de commande bench pour installer les outils suivants sur la machine :

  • Fail2Ban, un outil pratique qui analyse les fichiers de log du serveur pour définir les patterns récurrents de défaillances, nous permettant de bloquer l’IP essayant d'exécuter des attaques par force brute sur un serveur.
  • Nginx, un serveur Web polyvalent qui sera utilisé comme proxy pour rediriger toutes les requêtes du port HTTP (Port 80) standard et du port HTTPS (Port 443) sur l’application ERPNext écoutant le port 8000.
  • Supervisor, un service qui garantit que tous les processus requis d’ERPNext sont constamment opérationnels, en les redémarrant en cas de défaillance.
  1. La commande suivante doit être exécutée depuis le répertoire frappe-bench de votre utilisateur. Exécutez bench avec ces paramètres et remplacez timmy par le nom de l’utilisateur propriétaire de l’environnement de production :
sudo bench setup production timmy

Il créera les fichiers de configuration suivants :

  • Nginx : deux fichiers de configuration : /etc/nginx/nginx.conf, et /etc/nginx/conf.d/frappe-bench.conf
  • Fail2Ban : un proxy jail (/etc/fail2ban/jail.d/nginx-proxy.conf), et une configuration de filtres (/etc/fail2ban/filter.d/nginx-proxy.conf)

Les valeurs par défaut configurées dans ces fichiers suffisent pour un premier démarrage et correspondent aux objectifs de ce tutoriel. Vous pouvez cependant les ajuster en fonction de votre charge utile.

  1. Pour optimiser la sécurité, nous utiliserons TLS pour crypter la connexion entre les clients et le serveur. Nous allons donc installer certbot sur la machine, un outil pouvant gérer la requête et le renouvellement des certificats Let’s Encrypt, ainsi que la configuration automatique de Nginx. Ajoutez l’archive de paquets certbot au gestionnaire de paquets apt :
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt update
  1. Ensuite, installez certbot à l’aide d’apt :
sudo apt install certbot python3-certbot-nginx
  1. Exécutez certbot pour obtenir un certificat TLS Let’s Encrypt et reconfigurer Nginx pour l’utiliser :
sudo certbot --nginx

Lorsque vous y êtes invité, saisissez votre adresse e-mail, acceptez les conditions d’utilisation du service et choisissez de rediriger toutes les requêtes vers le port HTTPS. Certbot demandera alors le certificat et mettra à jour la configuration Nginx en conséquence. Un message s’affiche une fois la configuration terminée :

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/your_erpnext_domain/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/your_erpnext_domain/privkey.pem
[...]

Configurez ERPNext

  1. Une fois l’installation d’ERPNext terminée, ouvrez un navigateur Web sur votre ordinateur local et faites-le pointer vers https://your_erpnext_domain/. La page de connexion s’affiche. Saisissez le nom d’utilisateur Administrator et le mot de passe défini lors de la configuration. Cliquez ensuite sur Login :
  1. Vous êtes maintenant connecté à l’assistant d’installation ERPNext. Commencez par choisir votre langue, puis cliquez sur Next :
  1. Définissez votre pays, votre fuseau horaire et votre devise, puis cliquez sur Next :
  1. Configurez votre premier compte d’utilisateur. Saisissez votre nom complet, votre adresse e-mail et un mot de passe secret. Cliquez sur Next pour poursuivre :
  1. Choisissez vos domaines. Les domaines comprennent un ensemble prédéfini de modules conçus pour différents types d’utilisation. Vous pouvez choisir un ou plusieurs domaines. Si vous ne savez pas lequel choisir, sélectionnez Distribution et cliquez sur Next pour accéder à l’étape suivante :
  1. Configurez votre marque : saisissez le nom de votre entreprise et son abréviation. Ensuite, cliquez sur Next pour poursuivre :
  1. Dans cette dernière étape, ERPNext vous demande de saisir les détails relatifs à votre organisation. Saisissez les informations relatives à l’activité de votre entreprise, le nom de votre banque, le type de plan comptable à utiliser, ainsi que les informations relatives à votre exercice fiscal. Cliquez ensuite sur Complete Setup :
  1. ERPNext configure vos paramètres. La configuration peut prendre un moment. La barre d’état vous donne des informations sur la progression de la tâche :
  1. Le tableau de bord d’ERPNext s’affiche. Vous pouvez voir un aperçu de toutes les catégories disponibles :
  1. Cliquez sur Getting Started pour lancer la configuration de votre application nouvellement installée. ERPNext fournit des assistants pour personnaliser tous les paramètres relatifs aux besoins commerciaux de votre entreprise :

Tirez parti de votre application

Bravo ! Vous venez d’installer, de configurer et de sécuriser une application ERPNext 12 complète. Dans une prochaine étape, vous voudrez peut-être la configurer en fonction de vos besoins commerciaux. Pour en savoir plus sur la configuration et la maintenance de l’application, consultez le manuel ERPNext officiel.