177 lines
7.8 KiB
Markdown
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
|