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".
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:
💾 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:
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: