Files
2026-06-09 18:40:21 +02:00

177 lines
7.8 KiB
Markdown

---
title: InvoiceShelf
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, accounting, invoiceshelf, invoicing, php, laravel, vue, crater-fork, docker]
confidence: high
contested: false
sources:
- https://selfh.st/apps/?tag=accounting
- https://github.com/InvoiceShelf/InvoiceShelf
- https://invoiceshelf.com/
---
# 🧾 InvoiceShelf
> Fork moderne de **Crater Invoice**, solution open-source complète de **facturation, devis, dépenses et paiements** pour freelances et PME, écrite en Laravel + Vue.js.
| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://invoiceshelf.com/ |
| **GitHub** | https://github.com/InvoiceShelf/InvoiceShelf |
| **License** | AGPL-3.0 |
| **Langage** | PHP (Laravel 13) / Vue.js 3 |
| **Étoiles** | ⭐ 1 700 (≈352 sur selfh.st) |
| **Dernière MAJ** | 2026-06-04 |
| **Catégorie** | [[cat-accounting]] |
## 📝 Description
**InvoiceShelf** est né en 2021 du **fork de Crater Invoice** lorsque le mainteneur principal a cessé d'assurer les releases. La communauté a repris le flambeau pour proposer une solution de facturation moderne, sous AGPL-3.0, bâtie sur **Laravel 13** (PHP 8.4+) côté back et **Vue.js 3 + Vite** côté front. Le projet a depuis accumulé **132 contributeurs**, plus de 1 700 étoiles et 17 releases stables.
Fonctionnellement, InvoiceShelf couvre l'intégralité du cycle de vente : gestion de **clients** (multi-adresses, multi-contacts), **devis** convertibles en factures, **factures récurrentes**, **paiements** partiels, **dépenses** catégorisées, **portail client** en marque blanche (le client voit ses factures et les règle sans créer de compte), **multi-sociétés** (plusieurs entités juridiques sur une même instance) et **champs personnalisés** sur les documents. Les exports PDF sont générés via des templates Blade configurables.
L'upgrade récent vers **Laravel 13** et **Node 24** a modernisé la stack : ESLint 10, Vite 8 (Rolldown), Tailwind 4 avec configuration CSS-based. La roadmap 2026 inclut l'intégration **Stripe** pour l'acceptation directe des paiements et un **marketplace de templates**. Les apps mobiles (React Native) sont annoncées pour Android et iOS.
Idéal pour : « Je veux une alternative open-source à Invoice Ninja, auto-hébergée, sans limite de clients, avec un vrai portail client et la possibilité d'ajouter mes propres champs sur les factures ».
## 🚀 Installation
### Option 1 : Docker Compose (recommandé)
```yaml
# docker-compose.yml
version: "3.8"
services:
app:
image: invoiceninja/invoiceshelf:latest
container_name: invoiceshelf-app
restart: unless-stopped
environment:
APP_URL: https://invoiceshelf.example.com
APP_KEY: ${APP_KEY}
DB_HOST: db
DB_DATABASE: invoiceshelf
DB_USERNAME: invoiceshelf
DB_PASSWORD: invoiceshelf
REDIS_HOST: redis
MAIL_MAILER: smtp
MAIL_HOST: smtp.example.com
MAIL_PORT: 587
MAIL_USERNAME: ${MAIL_USERNAME}
MAIL_PASSWORD: ${MAIL_PASSWORD}
MAIL_ENCRYPTION: tls
volumes:
- ./storage:/var/www/html/storage
depends_on:
- db
- redis
networks: [invoiceshelf]
db:
image: mysql:8.0
container_name: invoiceshelf-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: invoiceshelf
MYSQL_USER: invoiceshelf
MYSQL_PASSWORD: invoiceshelf
volumes:
- ./data/db:/var/lib/mysql
networks: [invoiceshelf]
redis:
image: redis:7-alpine
container_name: invoiceshelf-redis
restart: unless-stopped
networks: [invoiceshelf]
nginx:
image: nginx:alpine
container_name: invoiceshelf-nginx
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
- ./certs:/etc/nginx/certs
depends_on:
- app
networks: [invoiceshelf]
networks:
invoiceshelf:
driver: bridge
```
`APP_KEY` se génère avec `docker run --rm invoiceninja/invoiceshelf php artisan key:generate --show`. L'installeur web se lance ensuite sur `/install`.
### Option 2 : Installation manuelle (LAMP)
Prérequis : PHP 8.4+ avec extensions `bcmath, curl, gd, intl, mbstring, mysql, xml, zip`, MySQL 8 / MariaDB 10.11+, Node 24+, Composer 2. Cloner le repo, `composer install`, `npm install && npm run build`, configurer `.env`, `php artisan migrate --seed`, configurer Apache/Nginx pour pointer vers `public/`. Voir la [documentation d'installation](https://docs.invoiceshelf.com/installation.html).
## ⚙️ Configuration
- **Multi-sociétés** : crée plusieurs entités juridiques, chacune avec son logo, son SIRET, son compte bancaire.
- **Devises** : une devise par société, conversion automatique (taux stocké en base) à l'édition de facture.
- **Taxes** : TVA, GST, taxes composées (TVA + surcharge), supports de la facturation électronique.
- **Templates PDF** : modifiables via Blade, plusieurs livrés par défaut.
- **Portail client** : URL dédiée par client (`/customer/portal/{token}`), aucune création de compte.
- **Webhooks sortants** : notifier un ERP/CRM à chaque paiement/facture émise.
- **Mises à jour in-app** : à partir de la v2.0, l'UI détecte les versions et bloque la mise à jour si PHP n'est pas compatible.
- **Authentification** : email/password par défaut, OAuth2 (Google, GitHub) en option.
## 🔄 Alternatives
### Open Source
- [[app-crater]] — Le projet parent (peu maintenu, InvoiceShelf est la branche vivante).
- [[app-solidinvoice]] — PHP/Symfony 7, facturation pour freelances, plus léger.
- [[app-akaunting]] — Comptabilité PHP, plus large fonctionnellement.
- **Invoice Ninja** (v5) — Concurrent direct, modèle source-available, forké d'anciennes versions d'INV.
- **Crater (original)** — Encore en ligne mais quasi-abandonné.
- [[app-bigcapital]] — Comptabilité double + stock, plus ambitieux.
### Propriétaires (ce que cette app remplace)
- **Invoice Ninja Cloud** — Version SaaS fermée, Pro à $20/mois.
- **FreshBooks** — Facturation SaaS pour freelances.
- **Wave Invoicing** — Freemium fermé.
- **Zoho Invoice** — Suite Zoho, fermé.
- **QuickBooks Simple Start** — Facturation de base, fermé.
## 🔒 Sécurité
- **HTTPS obligatoire** : via Traefik ou Caddy en frontal, sinon Nginx avec Let's Encrypt.
- **`APP_KEY` critique** : 32+ caractères, jamais commit, rotation = perte de toutes les sessions.
- **2FA** : activable pour les comptes admin (TOTP + recovery codes).
- **CSRF/XSS** : protection native Laravel, ne pas la désactiver.
- **Permissions fichiers** : `storage/` et `bootstrap/cache/` en 775 pour l'utilisateur web.
- **Mise à jour** : suivre les releases, l'updateur intégré vérifie la compatibilité PHP.
- **Logs** : `storage/logs/laravel.log` à monitorer, intégration [[app-glances]]/[[app-prometheus]] possible.
- **Audit** : table `audit_logs` pour tracer les connexions et modifications critiques.
## 📚 Ressources
- Site officiel : https://invoiceshelf.com/
- Documentation utilisateur : https://docs.invoiceshelf.com/
- Guide développeur : https://docs.invoiceshelf.com/developer-guide.html
- API : https://api-docs.invoiceshelf.com/
- Repository : https://github.com/InvoiceShelf/InvoiceShelf
- Discord : https://discord.gg/eHXf4zWhsR
- Crowdin (traductions) : https://crowdin.com/project/invoiceshelf
- App mobile (en cours) : https://github.com/InvoiceShelf/mobile
## 🔗 Pages Liées
- [[cat-accounting]] — Catégorie parente
- [[app-crater]] — Projet parent (peu actif)
- [[app-solidinvoice]] — PHP/Symfony 7 plus léger
- [[app-akaunting]] — Comptabilité PHP plus large
- [[app-bigcapital]] — Comptabilité double + stock
- [[app-traefik]] — Reverse proxy HTTPS
- [[recettes-docker-compose]] — Templates Docker
- [[securisation-home-lab]] — Bonnes pratiques