GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer InvoiceNinja sur le serveur Ubuntu 20.04 avec Apache/Nginx

Ce tutoriel vous montrera comment installer InvoiceNinja sur Ubuntu 20.04 avec un serveur Web Apache ou Nginx. InvoiceNinja est un logiciel de facturation open source et auto-hébergé, une alternative peu coûteuse aux plateformes de facturation en ligne commerciales telles que Freshbooks. InvoiceNinja fournit un service de facturation hébergé, mais si vous souhaitez héberger vous-même le logiciel, vous pouvez suivre les instructions ci-dessous.

Fonctionnalités d'InvoiceNinja

  • Avec InvoiceNinja, vous pouvez envoyer des factures à vos clients en utilisant votre propre nom de domaine et votre propre marque.
  • Gérez la facturation de plusieurs entreprises dans un seul compte.
  • Gagnez du temps en facturant automatiquement les clients à long terme avec des factures récurrentes.
  • Créez et envoyez facilement de belles propositions à vos clients.
  • Joindre des fichiers tiers aux factures.
  • Créer des tâches de projet et suivre le temps.
  • Organisez et planifiez le travail de votre client avec un outil visuel de gestion de projet.
  • Permettez à vos clients de voir toutes leurs transactions avec vous en un coup d'œil.
  • L'automatisation Zapier vous permet de transférer des données entre votre compte de facturation et des applications populaires telles que Gmail, Google Sheets, QuickBooks Online, Slack, Pipeline, MailChimp et des centaines d'autres.
  • Demandez des acomptes et des paiements partiels en utilisant encore et encore la même facture.
  • Utilisez une séquence d'e-mails de rappel automatique pré-écrite pour rappeler aux clients que votre facture doit être payée.
  • Recevez des notifications lorsqu'un client consulte et paie votre facture.
  • Et bien d'autres

Prérequis

Tout d'abord, vous avez besoin d'un serveur Linux avec au moins 512 Mo de RAM. Vous pouvez cliquer sur ce lien spécial pour obtenir un crédit gratuit de 100 $ sur DigitalOcean. (Pour les nouveaux utilisateurs uniquement). Si vous êtes déjà un utilisateur de DigitalOcean, vous pouvez cliquer sur ce lien spécial pour obtenir un crédit gratuit de 50 $ sur Vultr (pour les nouveaux utilisateurs uniquement). Une fois que vous avez un compte chez DigitalOcean ou Vultr, installez Ubuntu 20.04 sur votre serveur et suivez les instructions ci-dessous.

InvoiceNinja nécessite PHP et MySQL/MariaDB. Pour suivre ce tutoriel, vous devez déjà avoir configuré une pile LAMP ou LEMP. Si vous ne l'avez pas déjà fait, veuillez utiliser l'un des guides suivants.

  • Comment installer la pile LAMP (Apache, MariaDB, PHP) sur Ubuntu 20.04
  • Comment installer la pile LEMP (Nginx, MariaDB, PHP) sur Ubuntu 20.04

Et vous avez également besoin d'un nom de domaine, afin que vos clients puissent voir la facture via votre nom de domaine. J'ai enregistré mon nom de domaine chez NameCheap car le prix est bas et ils offrent une protection de confidentialité whois gratuite à vie.

Installons maintenant InvoiceNinja.

Étape 1 :Téléchargez le fichier zip d'installation d'InvoiceNinja sur le serveur Ubuntu 20.04

Connectez-vous à votre serveur Ubuntu 20.04 via SSH. Exécutez ensuite la commande suivante pour télécharger la dernière version du fichier zip InvoiceNinja sur votre serveur.

wget -O invoice-ninja.zip https://download.invoiceninja.com/

Une fois téléchargé, extrayez l'archive dans le /var/www/ répertoire avec unzip .

sudo apt install unzip

sudo mkdir -p /var/www/

sudo unzip invoice-ninja.zip -d /var/www/

Le -d L'option spécifie le répertoire cible. Les fichiers Web InvoiceNinja seront extraits vers /var/www/ninja . Pour mieux identifier chaque répertoire, vous pouvez le renommer en invoice-ninja .

sudo mv /var/www/ninja /var/www/invoice-ninja

Ensuite, nous devons changer le propriétaire de ce répertoire en www-data afin que le serveur Web puisse écrire dans ce répertoire.

sudo chown www-data:www-data /var/www/invoice-ninja/ -R

Nous devons également modifier l'autorisation du storage répertoire.

sudo chmod 755 /var/www/invoice-ninja/storage/ -R

Étape 2 :Créer une base de données et un utilisateur dans MariaDB

Connectez-vous au serveur de base de données MariaDB avec la commande suivante. Puisque MariaDB utilise maintenant unix_socket plugin pour authentifier la connexion de l'utilisateur, il n'est pas nécessaire d'entrer le mot de passe root MariaDB. Nous avons juste besoin de préfixer le mysql commande avec sudo .

sudo mysql

Créez ensuite une base de données pour Invoice Ninja. Ce tutoriel nomme la base de données invoiceninja . Vous pouvez utiliser le nom de votre choix.

create database invoiceninja;

Créez l'utilisateur de la base de données. Encore une fois, vous pouvez utiliser votre nom préféré pour cet utilisateur. Remplacez your-password avec votre mot de passe préféré.

create user ninja@localhost identified by 'your-password';

Accordez à cet utilisateur tous les privilèges sur la invoiceninja base de données.

grant all privileges on invoiceninja.* to ninja@localhost;

Vider les privilèges et quitter.

flush privileges;

exit;

Étape 3 :Installer les modules PHP

Notez qu'InvoiceNinja ne prend actuellement pas en charge PHP7.4. Pour une meilleure compatibilité, il est recommandé d'ajouter le PPA PHP7.3 et d'installer PHP7.3.

sudo add-apt-repository ppa:ondrej/php

Exécutez ensuite les commandes suivantes pour installer les modules PHP requis ou recommandés par InvoiceNinja.

sudo apt install php-imagick php7.3-fpm php7.3-mysql php7.3-common php7.3-gd php7.3-json php7.3-curl php7.3-zip php7.3-xml php7.3-mbstring php7.3-bz2 php7.3-intl php7.3-gmp

Si vous utilisez le serveur Web Apache, vous devez désactiver le module PHP pour Apache.

sudo a2dismod php7.4

Vous devez également désactiver le module prefork MPM.

sudo a2dismod mpm_prefork

Vous devez maintenant exécuter la commande suivante pour activer trois modules afin d'utiliser PHP-FPM, que mod_php est installé sur votre serveur.

sudo a2enmod mpm_event proxy_fcgi setenvif

Puis redémarrez Apache.

sudo systemctl restart apache2

Étape 4 :Configuration du serveur Web

Nous pouvons utiliser le serveur Web Apache ou Nginx.

Apache

Si vous préférez Apache, créez un fichier d'hôte virtuel pour Invoice Ninja.

sudo nano /etc/apache2/sites-available/invoice-ninja.conf

Mettez le texte suivant dans le fichier. Remplacez invoice.yourdomain.com avec votre propre sous-domaine pour Invoice Ninja. N'oubliez pas de définir un enregistrement A pour le nom de domaine dans votre gestionnaire DNS. (Notez que la racine Web est définie sur /var/www/invoice-ninja/public/ , pas /var/www/invoice-ninja/ )

<VirtualHost *:80>
    ServerName invoice.yourdomain.com
    DocumentRoot /var/www/invoice-ninja/public

    <Directory /var/www/invoice-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.3-fpm.conf
</VirtualHost>

Enregistrez et fermez le fichier. Activez ensuite cet hôte virtuel.

sudo a2ensite invoice-ninja.conf

Nous devons activer le module de réécriture.

sudo a2enmod rewrite

Redémarrez Apache pour que les modifications prennent effet.

sudo systemctl restart apache2

Rendez-vous maintenant sur invoice.yourdomain.com et vous serez redirigé vers la page de l'assistant de configuration d'Invoice Ninja (invoice.yourdomain.com/setup ). Si vous voyez la page Apache par défaut au lieu de l'assistant de configuration, vous devez désactiver l'hôte virtuel par défaut.

sudo a2dissite 000-default.conf

Et redémarrez Apache.

Avant de saisir des informations dans l'assistant de configuration, nous devons activer HTTPS, ce qui est expliqué à l'étape 4.

Nginx

Si vous préférez Nginx, créez un invoice-ninja.conf fichier dans /etc/nginx/conf.d/ répertoire.

sudo nano /etc/nginx/conf.d/invoice-ninja.conf

Mettez le texte suivant dans le fichier. Remplacez invoice.yourdomain.com avec votre propre sous-domaine pour Invoice Ninja. N'oubliez pas de définir un enregistrement A pour le nom de domaine dans votre gestionnaire DNS. (Notez que la racine Web est définie sur /var/www/invoice-ninja/public/ , pas /var/www/invoice-ninja/ )

server {
    listen 80;
    listen [::]:80;
    server_name invoice.yourdomain.com;

    root /var/www/invoice-ninja/public/;
    index index.php index.html index.htm;
    charset utf-8;

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

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log  /var/log/nginx/invoiceninja.access.log;
    error_log   /var/log/nginx/invoiceninja.error.log;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
    }

    location ~ /\.ht {
        deny all;
    }
}

Enregistrez et fermez le fichier. Testez ensuite la configuration de Nginx.

sudo nginx -t

Si le test réussit, rechargez Nginx pour que les modifications prennent effet.

sudo systemctl reload nginx

Rendez-vous maintenant sur invoice.yourdomain.com et vous serez redirigé vers la page de l'assistant de configuration d'Invoice Ninja (invoice.yourdomain.com/setup ). Avant de saisir des informations dans l'assistant de configuration, nous devons activer HTTPS.

Étape 5 :Activer HTTPS

Pour chiffrer le trafic HTTP, nous pouvons activer HTTPS en installant un certificat TLS gratuit émis par Let's Encrypt. Exécutez la commande suivante pour installer le client Let's Encrypt (certbot) sur le serveur Ubuntu 20.04.

sudo apt install certbot

Si vous utilisez Nginx, vous devez également installer le plugin Certbot Nginx.

sudo apt install python3-certbot-nginx

Ensuite, exécutez la commande suivante pour obtenir et installer le certificat TLS.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d invoice.yourdomain.com

Si vous utilisez Apache, installez le plugin Certbot Apache.

sudo apt install python3-certbot-apache

Et exécutez cette commande pour obtenir et installer le certificat TLS.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d invoice.yourdomain.com

  • --nginx  :Utilisez le plug-in nginx.
  • --apache :Utilisez le plug-in Apache.
  • --agree-tos  :acceptez les conditions d'utilisation.
  • --redirect  :Forcer HTTPS par redirection 301.
  • --hsts :Ajoutez l'en-tête Strict-Transport-Security à chaque réponse HTTP. Forcer le navigateur à toujours utiliser TLS pour le domaine. Protège contre le SSL/TLS Stripping.
  • --staple-ocsp :active l'agrafage OCSP. Une réponse OCSP valide est agrafée au certificat que le serveur propose pendant TLS.

Le certificat devrait maintenant être obtenu et installé automatiquement.

Étape 6 :Terminez l'installation avec l'assistant de configuration

Allez maintenant sur invoice.yourdomain.com et entrez les informations de la base de données, les paramètres SMTP et créez un utilisateur administrateur.

Si vous souhaitez utiliser votre propre serveur de messagerie pour envoyer des e-mails aux clients, veuillez consulter l'article suivant pour configurer votre propre serveur de messagerie. Remarque que je recommande fortement d'exécuter le serveur de messagerie iRedMail sur un nouveau système d'exploitation propre. L'installation d'iRedMail sur un système d'exploitation doté d'autres applications Web peut échouer et probablement casser les applications existantes.

  • Comment configurer facilement un serveur de messagerie complet sur Ubuntu 20.04 avec iRedMail

Lorsque vous utilisez votre propre serveur de messagerie, vous avez le choix entre deux pilotes :SMTP et Sendmail .

  • Choisir SMTP si votre serveur de messagerie et Invoice Ninja fonctionnent sur deux hôtes différents.
  • Choisissez Sendmail si votre serveur de messagerie et Invoice Ninja fonctionnent sur le même hôte.

Si vous choisissez SMTP , utilisez les paramètres comme ci-dessous.

  • hôte :mail.votredomaine.com  port :587   Cryptage :TLS. Et entrez votre nom d'utilisateur et votre mot de passe.

Si vous choisissez Sendmail , utilisez les paramètres comme ci-dessous.

  • hôte :127.0.0.1   port :25    Cryptage :rien. Vous n'avez pas besoin d'entrer de nom d'utilisateur ou de mot de passe.

Après avoir créé l'utilisateur administrateur, vous pouvez vous connecter à InvoiceNinja.

Configurer des tâches Cron

Nous devons configurer des tâches Cron pour envoyer des factures récurrentes et des rappels par e-mail. Modifiez le fichier crontab de l'utilisateur root.

sudo crontab -e

Ajoutez les lignes suivantes à la fin de ce fichier.

#InvoiceNinja
0 8 * * * /usr/bin/php7.3 /var/www/invoice-ninja/artisan ninja:send-invoices > /dev/null
0 8 * * * /usr/bin/php7.3 /var/www/invoice-ninja/artisan ninja:send-reminders > /dev/null

Enregistrez et fermez le fichier. Les deux tâches Cron s'exécuteront à 8 heures du matin tous les jours. Vous pouvez également exécuter manuellement une tâche comme ci-dessous.

sudo /usr/bin/php7.3 /var/www/invoice-ninja/artisan ninja:send-invoices

Suppression de la marque Invoice Ninja

Par défaut, votre facture aura la marque Invoice Ninja, vous pouvez acheter une licence en marque blanche pour 30 $/an pour supprimer la marque Invoice Ninja de la facture et du portail client. Accédez aux settings -> Invoice Design , cliquez sur le white-label lien en bas pour acheter.

Conclusion

J'espère que ce tutoriel vous a aidé à installer Invoice Ninja sur le serveur Ubuntu 20.04. Comme toujours, si vous avez trouvé cet article utile, abonnez-vous à notre newsletter gratuite pour obtenir plus de trucs et astuces. Prenez soin de vous 🙂


Ubuntu
  1. Comment installer Nginx sur Ubuntu 20.04

  2. Comment installer Jenkins Automation Server avec Apache sur Ubuntu 16.04

  3. Comment installer MediaWiki avec Nginx sur Ubuntu 16.04

  4. Comment installer le serveur HTTP Git avec Nginx sur Ubuntu 16.04

  5. Comment installer le serveur HTTP Git avec Nginx sur Ubuntu 20.04

Installez Roundcube Webmail sur Ubuntu 20.04 avec Apache/Nginx

Comment installer Sonerezh Music Streaming Server sur Ubuntu 16.04 avec Apache ou Nginx

Comment installer InvoiceNinja sur le serveur Ubuntu 18.04 avec Apache/Nginx

Comment installer phpMyAdmin avec Apache sur Ubuntu 22.04 LTS

Comment installer Nginx sur Ubuntu

Comment installer LetsEncrypt avec Nginx sur Ubuntu 15.04