Files
wiki/Catalogue-Self-Hosted/apps/app-invoiceshelf.md
T
2026-06-09 18:40:21 +02:00

7.8 KiB

title, created, updated, type, tags, confidence, contested, sources
title created updated type tags confidence contested sources
InvoiceShelf 2026-06-07 2026-06-07 app
catalogue
accounting
invoiceshelf
invoicing
php
laravel
vue
crater-fork
docker
high false
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é)

# 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.

⚙️ 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

🔗 Pages Liées