Initial vault setup

This commit is contained in:
2026-06-09 18:40:21 +02:00
commit bda02d587f
3692 changed files with 402457 additions and 0 deletions
@@ -0,0 +1,165 @@
---
title: Invoice Ninja
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, accounting, invoice, facturation, laravel, php, crm, paiements]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Accounting, https://github.com/invoiceninja/invoiceninja, https://invoiceninja.com/]
---
# Invoice Ninja 🦊
> Plateforme complète de facturation, devis, gestion clients et paiements en ligne — alternative open source à FreshBooks et Harvest, en Laravel.
| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://invoiceninja.com/ |
| **GitHub** | https://github.com/invoiceninja/invoiceninja |
| **License** | AGPL-3.0 (code) + Elastic License v2 (certaines briques) |
| **Langage principal** | PHP (Laravel) + Vue.js (React Native pour les apps mobiles) |
| **Étoiles GitHub** | ⭐2649 |
| **Dernière MAJ** | 2026-05-28 |
| **Catégorie** | [[cat-accounting]] |
## Description
Invoice Ninja est une **plateforme de facturation et de gestion commerciale** écrite en **Laravel** (PHP 8+) avec un frontend Vue.js. L'outil s'adresse aux **freelances, agences et PME** qui ont besoin d'émettre des factures professionnelles, suivre leurs paiements, gérer leurs clients et accepter des règlements en ligne — le tout depuis une interface web élégante et une API REST documentée.
Les fonctionnalités natives couvrent la **création de factures/devis/avoirs en PDF personnalisable**, la **gestion des clients et contacts**, le **suivi des temps** (timesheet) et la conversion temps → facture, la **gestion des dépenses et notes de frais**, les **rappels automatiques de paiement**, la **facture récurrente/abonnement**, et un **portail client** où le destinataire peut consulter et payer ses factures. Les **passerelles de paiement** (Stripe, PayPal, Mollie, Checkout, Braintree, Square, GoCardless, etc.) sont intégrables via des modules et permettent l'encaissement direct depuis la facture.
Le projet est distribué sous une **double licence** : le code principal est **AGPL-3.0** (donc libre et auto-hébergeable), mais l'éditeur a progressivement basculé certaines briques (notamment le v5 et le SDK mobile) sous **Elastic License v2**, ce qui interdit la revente en SaaS concurrent. Pour un auto-hébergeur, l'usage reste gratuit et conforme à l'esprit open source. La v5 (UI refondue) coexiste avec la v4 (LTS) qui reste très utilisée.
## Installation
### Via Docker (recommandé)
```yaml
# docker-compose.yml
services:
server:
image: invoiceninja/invoiceninja:latest
container_name: invoice-ninja
restart: unless-stopped
depends_on:
db:
condition: service_healthy
ports:
- "8080:80"
environment:
- APP_URL=https://facture.example.com
- APP_KEY=base64:GénérerAvecArtisanKey:Generate
- DB_HOST=db
- DB_DATABASE=ninja
- DB_USERNAME=ninja
- DB_PASSWORD=ChangeMoiDbPass
- MAIL_HOST=smtp.example.com
- MAIL_PORT=587
- MAIL_USERNAME=facture@example.com
- MAIL_PASSWORD=ChangeMoiMailSMTP
- MAIL_FROM_ADDRESS=facture@example.com
- MAIL_FROM_NAME="Ma Société"
- PHANTOMJS_PDF_GENERATOR=false
volumes:
- ninja-data:/var/www/html/storage
- ninja-public:/var/www/html/public
- ninja-logs:/var/www/html/storage/logs
db:
image: mysql:8.0
container_name: ninja-db
restart: unless-stopped
environment:
- MYSQL_DATABASE=ninja
- MYSQL_USER=ninja
- MYSQL_PASSWORD=ChangeMoiDbPass
- MYSQL_RANDOM_ROOT_PASSWORD=ChangeMoiRootMysql
volumes:
- ninja-db:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 10
# Cron pour les relances et factures récurrentes
cron:
image: invoiceninja/invoiceninja:latest
container_name: ninja-cron
restart: unless-stopped
depends_on:
- server
entrypoint: |
sh -c 'while true; do
php /var/www/html/artisan schedule:run;
sleep 60;
done'
volumes:
ninja-data:
ninja-public:
ninja-logs:
ninja-db:
```
### Installation manuelle
1. Pré-requis : PHP 8.1+, MySQL 8 ou MariaDB 10.5+, Composer, Node 18+ (build), Nginx, Redis (optionnel mais recommandé pour le cache).
2. `git clone https://github.com/invoiceninja/invoiceninja.git && cd invoiceninja`
3. `composer install --no-dev` puis `php artisan key:generate`
4. Configurer `.env` (DB, APP_URL, MAIL, REDIS).
5. `php artisan migrate --seed` pour initialiser la base.
6. `npm ci && npm run build` pour le frontend.
7. Servir `public/` via Nginx + PHP-FPM, en redirigeant toutes les requêtes vers `index.php`.
8. Configurer un cron : `* * * * * cd /var/www/invoiceninja && php artisan schedule:run >> /dev/null 2>&1`.
## Configuration
- **Premier compte** : créer un super-admin via `php artisan ninja:create-account --email=admin@example.com --password=...`.
- **Personnalisation PDF** : designer les templates (logos, couleurs, mentions légales FR : SIRET, TVA intracommunautaire, numéro RCS).
- **Numérotation** : format configurable par type de document (ex : `F{YYYY}{MM}{SEQ}` pour des factures numérotées par mois).
- **Devises** : multi-devises activable, taux de change stockés par facture (figés à l'émission).
- **Paiements en ligne** : configurer au moins Stripe ou Mollie dans `Settings → Payment Gateways` — la clé API secrète reste côté serveur.
- **Espace client** : activable par client, permet de consulter / payer / refuser une facture sans login tiers.
- **Intégrations** : Zapier, webhooks sortants, API REST v1 (très utilisée par les intégrateurs).
## Alternatives
### Open source
- [[app-akaunting]] — concurrent direct, plus axé comptabilité pure qu'UX facturation.
- [[app-invoiceplane]] — facturation PHP minimaliste, plus léger, sans le volet paiement en ligne aussi riche.
- [[app-odoo]] — ERP complet avec module facturation très puissant, mais lourd.
- **Crater** — facturation open source plus jeune, stack Node.js/React, interface moderne.
- **SolidInvoice** — fork/équivalent PHP pour la facturation simple.
### Propriétaires
- **FreshBooks** — référence pour les freelances, non libre et données hébergées.
- **Harvest + Forecast** — suivi du temps et facturation, lissé sur le cloud.
- **Wave** — gratuit en ligne, modèle freemium publicitaire.
- **Pennylane** — français, plus axé compta + sync bancaire que facturation pure.
## Sécurité
- **HTTPS obligatoire** : les factures portent des informations clients et des liens de paiement — à chiffrer en transit.
- **`APP_KEY`** : clé de chiffrement Laravel pour les sessions/cookies — sauvegarder hors conteneur, sa perte rend les sessions illisibles.
- **Stockage S3** : pour les PDF de factures à fort volume, basculer le disque sur S3 (ou MinIO auto-hébergé) plutôt que le volume local.
- **Sauvegardes** : `mysqldump` quotidien + `tar` de `ninja-data` (logos, PDF générés, documents attachés).
- **Rotation des clés API** : Stripe/Mollie — surveiller l'usage, configurer des alertes.
- **Mises à jour** : suivre la v5 stable ; les montées de version impliquent souvent des migrations DB.
## Ressources
- Site officiel : https://invoiceninja.com/
- Documentation : https://invoiceninja.readthedocs.io/
- Dépôt GitHub : https://github.com/invoiceninja/invoiceninja
- API REST : https://api-docs.invoiceninja.com/
- Forum communautaire : https://forum.invoiceninja.com/
- selfh.st : https://selfh.st/apps/?tag=Accounting
## Pages Liées
- [[cat-accounting]] (catégorie parente)
- [[app-akaunting]] — comptabilité Laravel, plus complète
- [[app-invoiceplane]] — facturation PHP simple
- [[app-crater]] — alternative Node.js moderne
- [[recettes-docker-compose]] — templates de déploiement
- [[securisation-home-lab]] — bonnes pratiques