Invoice Ninja est une application de facturation en ligne gratuite et open-source pour les indépendants et les entreprises qui vous aide à accepter les paiements, à suivre les dépenses, à créer des propositions et à effectuer des tâches chronométrées. Il s'agit d'une application de facturation auto-hébergée très similaire aux applications de facturation commerciales telles que Freshbooks. Il vous permet de créer votre propre facture personnalisée et de l'envoyer en ligne en une seconde.
Invoice Ninja est très utile pour les petites et moyennes entreprises. Si vous recherchez un logiciel de facturation sécurisé et facile à utiliser, Invoice Ninja est la meilleure option pour vous.
Dans ce tutoriel, nous allons vous montrer comment installer Invoice Ninja avec Apache et Let's Encrypt SSL sur le serveur Ubuntu 20.04.
Prérequis
- Un serveur exécutant Ubuntu 20.04.
- Un nom de domaine valide pointé vers l'adresse IP de votre serveur.
- Un mot de passe root est configuré sur le serveur.
Mise en route
Tout d'abord, il est recommandé de mettre à jour vos packages système vers la dernière version. Exécutez la commande suivante pour mettre à jour tous les packages :
apt-get update -y
Une fois tous les packages mis à jour, installez les autres dépendances requises avec la commande suivante :
apt-get install software-properties-common apt-transport-https ca-certificates gnupg2 -y
Une fois toutes les dépendances installées, vous pouvez passer à l'étape suivante.
Installer le serveur LAMP
Ensuite, vous devrez installer Apache, MariaDB et PHP sur votre système. Tout d'abord, installez les packages Apache et MariaDB avec la commande suivante :
apt-get install apache2 mariadb-server -y
Après avoir installé les deux packages, vous devrez installer PHP version 7.2 et d'autres extensions sur votre système.
Par défaut, Ubuntu 20.04 est livré avec PHP version 7.4. Vous devrez donc ajouter le référentiel Ondrej à votre système.
Vous pouvez ajouter le dépôt PHP Ondrej avec la commande suivante :
add-apt-repository ppa:ondrej/php
Une fois le référentiel ajouté, installez le PHP et les autres extensions avec la commande suivante :
apt-get install php7.2 libapache2-mod-php7.2 php-imagick php7.2-fpm php7.2-mysql php7.2-common php7.2-gd php7.2-json php7.2-curl php7.2-zip php7.2-xml php7.2-mbstring php7.2-bz2 php7.2-intl php7.2-gmp unzip -y
Après avoir installé tous les packages, vérifiez la version installée de PHP avec la commande suivante :
php -v
Vous devriez voir le résultat suivant :
PHP 7.2.34-8+ubuntu20.04.1+deb.sury.org+1 (cli) (built: Oct 31 2020 16:57:33) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.34-8+ubuntu20.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
Configurer la base de données MariaDB
Ensuite, vous devrez créer une base de données et un utilisateur pour Invoice Ninja. Tout d'abord, connectez-vous à la console MariaDB avec la commande suivante :
mysql
Une fois connecté, créez une base de données et un utilisateur avec la commande suivante :
MariaDB [(none)]> create database invoicedb;
MariaDB [(none)]> create user [email protected] identified by 'password';
Ensuite, accordez tous les privilèges à la billedb avec la commande suivante :
MariaDB [(none)]> grant all privileges on invoicedb.* to [email protected];
Ensuite, videz les privilèges et quittez la console MariaDB avec la commande suivante :
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Installer Facture Ninja
Tout d'abord, téléchargez la dernière version d'Invoice Ninja sur son site officiel :
wget -O invoice-ninja.zip https://download.invoiceninja.com/
Une fois le téléchargement terminé, décompressez le fichier téléchargé dans le répertoire racine d'Apache à l'aide de la commande suivante :
unzip invoice-ninja.zip -d /var/www/html/
Ensuite, définissez les autorisations et la propriété appropriées avec la commande suivante :
chown -R www-data:www-data /var/www/html/ninja
chmod -R 755 /var/www/html/ninja
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Configurer Apache pour Invoice Ninja
Ensuite, vous devrez créer un fichier de configuration d'hôte virtuel apache pour Invoice Ninja. Vous pouvez le créer avec la commande suivante :
nano /etc/apache2/sites-available/ninja.conf
Ajoutez les lignes suivantes :
<VirtualHost *:80> ServerName invoice.example.com DocumentRoot /var/www/html/ninja/public <Directory /var/www/html/ninja/public> DirectoryIndex index.php Options +FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/invoice-ninja.error.log CustomLog ${APACHE_LOG_DIR}/invoice-ninja.access.log combined Include /etc/apache2/conf-available/php7.2-fpm.conf </VirtualHost>
Enregistrez et fermez le fichier puis activez le fichier d'hôte virtuel avec la commande suivante :
a2ensite ninja.conf
Ensuite, activez les modules apache requis à l'aide de la commande suivante :
a2enmod mpm_event proxy_fcgi setenvif
a2enmod rewrite
Enfin, redémarrez le service Apache pour appliquer les modifications :
systemctl restart apache2
Vous pouvez maintenant vérifier l'état de l'Apache à l'aide de la commande suivante :
systemctl status apache2
Vous devriez obtenir le résultat suivant :
? apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2020-12-27 07:15:15 UTC; 11s ago Docs: https://httpd.apache.org/docs/2.4/ Process: 25097 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 25113 (apache2) Tasks: 55 (limit: 2353) Memory: 5.3M CGroup: /system.slice/apache2.service ??25113 /usr/sbin/apache2 -k start ??25114 /usr/sbin/apache2 -k start ??25115 /usr/sbin/apache2 -k start Dec 27 07:15:15 ubuntu systemd[1]: Starting The Apache HTTP Server..
À ce stade, Apache est configuré pour servir Invoice Ninja. Vous pouvez maintenant passer à l'étape suivante.
Accéder à Invoice Ninja
Maintenant, ouvrez votre navigateur Web et accédez à Invoice Ninja en utilisant l'URL http://invoice.example.com . Vous serez redirigé vers la page suivante :
Fournissez l'URL de votre site Web, les détails de la base de données, le nom d'utilisateur de l'administrateur, le mot de passe et cliquez sur Soumettre bouton. Vous serez redirigé vers l'écran de connexion d'Invoice Ninja :
Fournissez votre nom d'utilisateur et votre mot de passe d'administrateur et cliquez sur CONNEXION bouton. Vous devriez voir le tableau de bord Invoice Ninja dans l'écran suivant :
Sécuriser Invoice Ninja avec Let's Encrypt SSL
C'est toujours une bonne idée de sécuriser votre site Web avec Let's Encrypt SSL. Vous devrez installer le client Certbot pour installer et gérer le SSL. Vous pouvez l'installer avec la commande suivante :
apt-get install python3-certbot-apache -y
Une fois le Certbot installé, exécutez la commande suivante pour sécuriser votre site Web avec Let's Encrypt SSL :
certbot --apache -d invoice.example.com
Il vous sera demandé de fournir votre adresse e-mail et d'accepter les conditions d'utilisation comme indiqué ci-dessous :
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator standalone, Installer None Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Plugins selected: Authenticator apache, Installer apache Obtaining a new certificate Performing the following challenges: http-01 challenge for invoice.example.com Enabled Apache rewrite module Waiting for verification... Cleaning up challenges Created an SSL vhost at /etc/apache2/sites-available/invoice-le-ssl.conf Enabled Apache socache_shmcb module Enabled Apache ssl module Deploying Certificate to VirtualHost /etc/apache2/sites-available/invoice-le-ssl.conf Enabling available site: /etc/apache2/sites-available/invoice-le-ssl.conf
Ensuite, sélectionnez si vous souhaitez ou non rediriger le trafic HTTP vers HTTPS comme indiqué ci-dessous :
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Tapez 2 et appuyez sur Entrée pour installer le SSL Let's Encrypt pour votre site Web :
Enabled Apache rewrite module Redirecting vhost in /etc/apache2/sites-enabled/invoice.conf to ssl vhost in /etc/apache2/sites-available/invoice-le-ssl.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://invoice.example.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=invoice.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/invoice.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/invoice.example.com/privkey.pem Your cert will expire on 2020-10-23. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Vous pouvez désormais accéder à votre site Web en toute sécurité à l'aide de l'URL https://invoice.example.com.
Conclusion
Toutes nos félicitations! vous avez installé et configuré avec succès Invoice Ninja avec Let's Encrypt SSL sur le serveur Ubuntu 20.04. Vous pouvez maintenant explorer Invoice Ninja pour plus de fonctionnalités et le déployer dans l'environnement de production. N'hésitez pas à me demander si vous avez des questions.