Installer Invoice Ninja avec Docker
Invoice Ninja

Installer Invoice Ninja avec Docker

Table des matières

GitHub - invoiceninja/invoiceninja: A source-available invoice, quote, project and time-tracking app built with Laravel
A source-available invoice, quote, project and time-tracking app built with Laravel - invoiceninja/invoiceninja

Merci pour l'idée, à une personne, qui, probablement, se reconnaîtra si elle passe par ici.

Aaaaah que c'est chiant de recevoir une facture... Aaaaah, que ça doit-être agréable d'en envoyer une! Gnek, gnek gnek...! 😁

Disons-le tout de suite, ce n'est pas tout le monde qui va utiliser cette application sur son serveur. Elle s'adresse aux petites et moyennes entreprises, aux indépendants ou encore, aux psychopathes qui veulent facturer sans raison, n'importe quoi à n'importe qui, on ne vous oublie pas.

Sérieusement!

Aujourd'hui nous allons parler d'Invoice Ninja! Une application qui va vous permettre de rédiger des fractures, oups, des factures.

Après une discussion avec un membre, disant que ce n'était pas forcément facile à installer, c'est vrai que l'information est une peu épars, c'est pourquoi je vous résume tout dans un petit concentré. Par contre suivez bien l'ordre du tutoriel à la lettre, si non "ça va couper".

💡
Il est vivement conseillé d'avoir au minimum du HTTPS. Mais cela peut fonctionner en local en HTTP. D'ailleurs pour avoir la personnalisation du logo, vous avez tout intérêt à relier ça à un domaine.

N'étant pas du tout familier avec ce genre d'application, je vais vous expliquer les choses importantes côté "technique" et un peu de configuration élémentaire dans l'application en elle-même.


⚡ Caractéristiques

Notre logiciel de facturation est spécialement conçu pour les petites et moyennes entreprises et les indépendants, car nous savons à quel point il peut être difficile de jongler avec les coûts logiciels élevés et l'administration financière tout en essayant de vous concentrer sur le reste de votre entreprise !

La liste étant ce qu'elle est (longue), je vous mets le lien direct:

Small Business Invoicing Features - Free Invoicing Software for Small Businesses | Invoice Ninja
More than invoicing.…

💾 L'installation

On va commencer par cloner le dépôt, faites cette commande à la racine du dossier où vous avez installé vos applications:

git clone https://github.com/invoiceninja/dockerfiles.git

Cela va créer un dossier nommé dockerfiles, on va le renommer histoire que ça soit propre et qu'on puisse s'y retrouver:

mv dockerfiles/ invoiceninja

On va se rendre dans le dossier:

cd invoiceninja

On va générer une clé d'application, que vous allez mettre de côté momentanément:

docker run --rm -it invoiceninja/invoiceninja php artisan key:generate --show

Cela va vous retourner quelque chose de semblable:

Nous allons éditer le docker-compose.yml car par défaut c'est le port 80, souvent usité:

nano docker-compose.yml

Je vais le changer en 8027 pour l'exemple:

Il est temps d'éditer le fichier env:

nano env

Veillez à changer:

  • APP_URL=http://in.localhost:8003 => Remplacez in.localhost par l'ip locale de votre serveur, cela doit ressembler à ça: http://192.168.1.152:8003. Si vous utilisez un domaine, indiquez l'URL complète: https://invoiceninja.mondomaine.com.
  • APP_KEY=insert your generated key in here => Remplacez insert your generated key in here par la clé d'application générée précédemment, cela doit ressembler à ça: APP_KEY=base64:G1tJW/JIZayIDmp0lo5CGhnPT/eEVPzNA3U9wtFLBwc=
  • IN_USER_EMAIL=admin@example.com => Remplacez admin@example.com par votre e-mail, cela fera office de nom d'utilisateur.
  • IN_PASSWORD=changeme! => Remplacez changeme! par un mot de passe, qui fera office de mot de passe de votre compte utilisateur.

Pour d'avantage de sécurité, nous allons changer les points suivants:

# DB connection
DB_HOST=db
DB_PORT=3306
DB_DATABASE=ninja
DB_USERNAME=ninja #2
DB_PASSWORD=ninja #3
  • DB_USERNAME=ninja #2 => Remplacez ninja par un nom d'utilisateur pour la base de données.
  • DB_PASSWORD=ninja #3 => Remplacez ninja par un mot de passe pour la base de données, évitez les caractères spéciaux.

Faites de même pour cette partie:

# MySQL
MYSQL_ROOT_PASSWORD=ninjaAdm1nPassword
MYSQL_USER=ninja #2
MYSQL_PASSWORD=ninja #3
MYSQL_DATABASE=ninja 
  • MYSQL_ROOT_PASSWORD=ninjaAdm1nPassword => Remplacez ninjaAdm1nPassword par un autre mot de passe, évitez les caractères spéciaux.
  • MYSQL_USER=ninja #2 => Remplacez ninja par le même nom d'utilisateur choisi à l'étape prétendante, au point #2.
  • MYSQL_PASSWORD=ninja #3 => Remplacez ninja par le même mot de passe choisi à l'étape prétendante, au point #3.

Toujours dans le dossier invoiceninja, on va appliquer les bonnes permissions:

chmod 755 docker/app/public
sudo chown -R 1500:1500 docker/app

Nous pouvons a présent déployer l'application:

docker-compose up -d

ou avec docker-compose V2:

docker compose up -d

Rendez-vous sur l'ip:port, suivant l'IP de votre serveur local et du port choisi, 8027 dans mon cas:

http://ip:8027/

ou votre domaine:

https://invoiceninja.mondomaine.com

🔑 Première connexion

Lorsque vous lancez Invoice Ninja, vous arrivez ici:

  • Email address => Entre l'e-mail que vous avez choisi dans le fichier env.
  • Password => Entrez le mot de passe que vous avez choisi dans le fichier env.

Cliquez sur Login, vous allez être redirigé sur le tableau de bord, ou presque:

Veillez à compléter:

  • Company Name => Entre le nom de votre société.
  • Language => Choisissez votre langue.
  • Currency => Choisissez votre device.

Cliquez sur Save et cette fois-ci, vous êtes redirigé vers votre tableau de bord:


🎨 Personnalisation

Rappel, sans nom de domaine et SSL je n'ai pas réussi à faire fonctionner l'option de logo.

On va un peu personnaliser tout ça. Cliquez sur Paramètres dans le menu de gauche:

Ensuite cliquez sur Informations sur l'entreprise:

Cliquez sur Logo:

Cliquez ou glissez votre logo dans la zone prévue et envoyez votre logo:

Ce qui donne:


✉️ Configurer le serveur mail

Si vous avez votre propre serveur mail, vous connaissez déjà les informations de celui-ci qu'il faudra indiquer plus bas.

Si vous n'avez pas votre propre serveur mail il est possible d'utiliser ceux de Gmail, Outlook, Infomaniak,.. Je vous invite à lire l'article suivant pour avoir les informations nécessaires:

Configurer le SMTP pour envoyer un mail avec une application Docker
Tutoriel pour configurer le SMTP afin d’envoyer un mail à partir de vos applications self-hosted.

Sur votre instance Ninja Invoice, rendez-vous dans Paramètres, Paramètres d'e-mail:

Vous arriverez ici:

  • Fournisseur de messagerie => SMTP
  • De l'email => Indiquez votre adresse e-mail.
  • Nom de l'expéditeur => Indiquez soit un nom ou le nom de votre entreprise.
  • Nom de réponse => Indiquez soit un nom ou le nom de votre entreprise.
  • Adresse de réponse => Indiquez votre adresse e-mail.
  • Domaine => Indiquez le serveur SMTP de votre serveur mail.
  • Port => 587 de préférence, adaptez suivant votre serveur mail.
  • Chiffrement => SSL/TLS de préférence.
  • Nom d'utilisateur => Indiquez votre adresse e-mail.
  • Mot de passe => Indiquez le mot de passe du compte e-mail. Attention avec Gmail par exemple, il faudra créer un mot de passe d’application. Procédure décrite dans le lien juste ici plus haut. Si vous en avez l'occasion c'est toujours mieux.

Quand vous avez terminé la configuration, cliquez sur Sauvegarder, en haut à droite:

Et pour terminer, cliquez sur Envoyer un e-mail de test pour vérifier le bon fonctionnement:

Vous devriez avoir ceci en retour:


❗ Très important! Portail client

Il y a un réglage qu'il faut impérativement effectuer. Rendez-vous dans le menu de gauche, dans Paramètres, ensuite Portail client:

Dans URL du domaine, remplacez le contenu du champ par votre domaine complet:

Terminez en cliquant sur Sauver, en haut à droite:


zarev

->.<-
🐧 Passionné de self-hosting, je partage ce que je connais et me nourris des connaissances des bonnes âmes qui partagent avec moi. Soutenons l'utilisation des apps open source et leurs développeurs.