[{"data":1,"prerenderedAt":188},["ShallowReactive",2],{"seo-verification":3,"blog-heberger-invoice-ninja-vps-fr":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-heberger-invoice-ninja-vps-fr",{"id":9,"slug":10,"slugs":11,"title":14,"excerpt":15,"readTime":16,"views":17,"isPinned":18,"publishedAt":19,"updatedAt":20,"category":21,"categories":26,"featuredImage":28,"bgImage":29,"posterImage":30,"relatedSolution":28,"intro":31,"sections":32,"ctaTitle":28,"ctaBody":28,"ctaButton":126,"ctaUrl":127,"relatedPosts":128},432,"heberger-invoice-ninja-vps",{"fr":10,"en":12,"ar":12,"es":13},"host-invoice-ninja-vps","alojar-invoice-ninja-vps","Héberger Invoice Ninja sur son VPS","Déployez Invoice Ninja 5.13.45 sur votre VPS avec Docker Compose, MySQL 8.4 et Redis 7.4. Facturation auto-hébergée, Elastic License 2.0, sans abonnement SaaS.",10,0,false,"2026-10-11T00:00:00+00:00","2026-10-13T14:10:28+00:00",{"id":22,"name":23,"slug":24,"color":25,"icon":24},3,"Déploiement","deploiement","bg-success\u002F10 text-success",[27],{"id":22,"name":23,"slug":24,"color":25,"icon":24},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-invoice-ninja-vps-poster.svg","Les éditeurs SaaS de facturation facturent par utilisateur ou par volume de transactions.",[33,37,49,52,80,83,86,117,120,123],{"type":34,"title":35,"body":36},"h2","Pourquoi auto-héberger sa facturation","Les éditeurs SaaS de facturation facturent par utilisateur ou par volume de transactions. FreshBooks démarre à 19 $\u002Fmois pour un seul utilisateur ; QuickBooks Online atteint 35 à 90 $\u002Fmois selon le plan. À mesure que l'équipe grossit ou que le nombre de clients augmente, la facture SaaS suit une courbe linéaire sans rapport avec la valeur produite. Sur un VPS entrée de gamme à 99 DH\u002Fmois, Invoice Ninja tourne sans limite d'utilisateurs ni de clients, et le coût reste fixe quelle que soit la croissance. La donnée de facturation reste dans votre infrastructure, soumise à votre politique de rétention, sans traverser les serveurs d'un tiers. C'est également la voie choisie par plus de 100 000 entreprises dans le monde qui ont opté pour le déploiement auto-hébergé d'Invoice Ninja.",{"type":38,"title":39,"items":40},"ul","Ce que vous obtenez avec Invoice Ninja 5.13.45",[41,42,43,44,45,46,47,48],"Devis, factures récurrentes, avoirs et bons de commande dans une interface unifiée","Passerelles de paiement intégrées : Stripe, PayPal, SEPA, Mollie, GoCardless et une vingtaine d'autres","Portail client auto-hébergé avec visualisation et paiement en ligne des factures","Suivi du temps facturable par projet et par tâche, intégrable à chaque ligne de facture","API REST complète et webhooks pour connecter votre ERP, CRM ou pipeline comptable","Authentification OIDC générique ajoutée en version 5.13.43 (18 septembre 2026) pour SSO d'entreprise","Support multi-devises et multi-langues avec rendu PDF natif côté serveur","Module white-label optionnel à 30 $\u002Fan pour retirer la mention « Created with Invoice Ninja »",{"type":34,"title":50,"body":51},"Prérequis chiffrés pour Invoice Ninja 5.13.45","La version 5.13.45, sortie le 9 octobre 2026, exige un environnement minimal précis. Comptez au minimum 2 Go de RAM dédiés à l'ensemble de la stack : le conteneur PHP-FPM d'Invoice Ninja consomme entre 300 et 500 Mo selon la charge, MySQL 8.4 LTS en prend 400 à 700 Mo selon le buffer pool configuré, Redis 7.4 reste léger à 30-50 Mo au repos. Un VPS avec 2 vCPU et 4 Go de RAM offre une marge confortable pour la génération PDF en parallèle. Côté stockage, prévoyez au moins 10 Go pour les volumes Docker : la base de données croît lentement, mais les PDF de factures s'accumulent dans `storage\u002F`. MySQL 8.4 LTS est recommandé par la documentation officielle pour ses garanties de compatibilité jusqu'en 2032 ; évitez MariaDB qui présente des incompatibilités connues avec certaines migrations d'Invoice Ninja v5. Redis 7.4 gère la file de travaux asynchrones (envoi d'e-mails, génération de PDF). PHP 8.2 ou 8.3 est embarqué dans l'image officielle `invoiceninja\u002Finvoiceninja:5.13.45` ; vous n'avez pas à l'installer séparément. Docker Engine 24+ et Docker Compose v2.x sont requis.",{"type":53,"title":54,"steps":55},"steps","Déployer Invoice Ninja sur VPS",[56,59,62,65,68,71,74,77],{"title":57,"body":58},"Préparer l'arborescence de travail","Connectez-vous en SSH à votre VPS et créez un répertoire dédié : `mkdir -p \u002Fopt\u002Finvoiceninja\u002F{data,logs,public} && cd \u002Fopt\u002Finvoiceninja`. Ce répertoire accueillera le fichier Compose, le fichier d'environnement et les volumes persistants. Assurez-vous que Docker et Docker Compose v2 sont installés : `docker compose version` doit retourner une version 2.x.",{"title":60,"body":61},"Créer le fichier docker-compose.yml","Créez `\u002Fopt\u002Finvoiceninja\u002Fdocker-compose.yml` avec les services suivants. Le service `db` utilise l'image `mysql:8.4` avec un volume nommé `db_data`. Le service `redis` utilise `redis:7.4-alpine`. Le service `app` utilise `invoiceninja\u002Finvoiceninja:5.13.45` et dépend de `db` et `redis` ; montez `.\u002Fdata:\u002Fvar\u002Fwww\u002Fapp\u002Fstorage` et `.\u002Fpublic:\u002Fvar\u002Fwww\u002Fapp\u002Fpublic`. Exposez le port `9000` en interne uniquement — nginx fera l'interface publique. Déclarez les trois services dans un réseau `app-net` interne de type `bridge` pour les isoler du reste de l'hôte.",{"title":63,"body":64},"Configurer les variables d'environnement","Créez `\u002Fopt\u002Finvoiceninja\u002F.env` (jamais versionné). Les variables essentielles : `APP_ENV=production`, `APP_DEBUG=false`, `APP_URL=https:\u002F\u002Fvotre-domaine.com`, `DB_HOST=db`, `DB_DATABASE=invoiceninja`, `DB_USERNAME=ninja`, `DB_PASSWORD=\u003Cmot_de_passe_fort>`, `MYSQL_ROOT_PASSWORD=\u003Croot_pwd>`, `REDIS_HOST=redis`, `QUEUE_CONNECTION=redis`, `MAIL_MAILER=smtp`, `MAIL_HOST=\u003Cvotre_smtp>`, `MAIL_PORT=587`, `MAIL_USERNAME=\u003Ccompte>`, `MAIL_PASSWORD=\u003Cpwd>`, `MAIL_FROM_ADDRESS=noreply@votredomaine.com`, `MAIL_ENCRYPTION=tls`. Choisissez des mots de passe d'au moins 32 caractères aléatoires.",{"title":66,"body":67},"Générer la clé d'application APP_KEY","Avant le premier démarrage, générez la clé de chiffrement Laravel. Lancez d'abord les conteneurs en arrière-plan : `docker compose up -d db redis`. Attendez 20 secondes que MySQL initialise sa base, puis démarrez l'application : `docker compose up -d app`. Générez la clé : `docker compose exec app php artisan key:generate`. Copiez la valeur retournée (format `base64:…`) et injectez-la dans `.env` sous la variable `APP_KEY`. Redémarrez le conteneur app : `docker compose restart app`. Sans cette étape, tous les tokens de session et les données chiffrées en base seront illisibles.",{"title":69,"body":70},"Configurer nginx en reverse proxy","Créez `\u002Fetc\u002Fnginx\u002Fsites-available\u002Finvoiceninja.conf`. Le bloc `server` écoute sur le port 443 avec le certificat Let's Encrypt (voir le bloc tip suivant). La directive `root` pointe vers `\u002Fopt\u002Finvoiceninja\u002Fpublic`. Le bloc `location \u002F` utilise `try_files $uri $uri\u002F \u002Findex.php?$query_string`. Le bloc `location ~ \\.php$` passe les requêtes à `fastcgi_pass 127.0.0.1:9000` avec les paramètres `SCRIPT_FILENAME` et `PATH_INFO` standards. Ajoutez `client_max_body_size 100M` pour autoriser l'import de fichiers joints volumineux. Activez la configuration : `ln -s \u002Fetc\u002Fnginx\u002Fsites-available\u002Finvoiceninja.conf \u002Fetc\u002Fnginx\u002Fsites-enabled\u002F && nginx -t && systemctl reload nginx`.",{"title":72,"body":73},"Lancer les migrations et la première connexion","Une fois nginx configuré, lancez les migrations de base de données : `docker compose exec app php artisan migrate --force`. L'opération prend 30 à 60 secondes selon les ressources disponibles. Accédez ensuite à `https:\u002F\u002Fvotre-domaine.com` dans un navigateur : l'assistant de configuration vous demande de créer le compte administrateur (e-mail, mot de passe) et de saisir les informations de votre entreprise (raison sociale, IBAN si souhaité). À l'issue de cet assistant, Invoice Ninja est opérationnel.",{"title":75,"body":76},"Activer la file de travaux asynchrones","Invoice Ninja s'appuie sur des workers Laravel pour l'envoi d'e-mails et la génération de PDF en arrière-plan. Dans le fichier Compose, ajoutez un service `worker` qui utilise la même image `invoiceninja\u002Finvoiceninja:5.13.45`, monte les mêmes volumes, et exécute la commande `php artisan queue:work --sleep=3 --tries=3`. Ce service ne doit pas exposer de port. Sans worker actif, les e-mails de factures sont mis en file mais jamais envoyés.",{"title":78,"body":79},"Configurer les passerelles de paiement","Dans le backoffice (menu Paramètres > Passerelles de paiement), activez Stripe en collant vos clés publique et secrète depuis le tableau de bord Stripe. Pour PayPal, utilisez les identifiants OAuth de votre application REST PayPal. Pour SEPA via GoCardless, renseignez l'access token GoCardless Sandbox puis basculez sur l'environnement Production après tests. Chaque passerelle peut être activée ou désactivée par devise et par plan tarifaire client.",{"type":81,"body":82},"tip","Pour obtenir un certificat TLS Let's Encrypt avec Certbot, installez le package `python3-certbot-nginx` puis exécutez `certbot --nginx -d votre-domaine.com`. Certbot modifie automatiquement la configuration nginx pour rediriger HTTP vers HTTPS et renouvelle le certificat toutes les 60 jours via un timer systemd. Vérifiez que le port 80 est ouvert dans votre pare-feu avant de lancer Certbot : `ufw allow 80\u002Ftcp`. Une fois le certificat obtenu, vous pouvez refermer le port 80 si vous le souhaitez et forcer le HTTPS en ajoutant `add_header Strict-Transport-Security \"max-age=31536000\" always;` dans le bloc server nginx.",{"type":34,"title":84,"body":85},"Connecter les passerelles de paiement","Invoice Ninja 5.13.45 supporte nativement plus de 25 passerelles. Stripe est la plus complète : elle gère les paiements par carte, le prélèvement SEPA, les virements ACH et, depuis la version 5.13.43, Stripe PromptPay pour les marchés d'Asie du Sud-Est. Pour l'activer, créez une clé API restreinte dans le tableau de bord Stripe avec les permissions `charges:write`, `customers:write` et `payment_methods:read`, puis saisissez-la dans Invoice Ninja. PayPal s'intègre via l'API REST (pas l'ancienne API NVP) : créez une application dans le portail développeur PayPal, récupérez le `client_id` et le `client_secret`, et configurez-les dans la passerelle PayPal d'Invoice Ninja. Pour les prélèvements SEPA en Europe, GoCardless est la voie recommandée : le mandat de débit est signé en ligne par le client depuis le portail Invoice Ninja, sans échange de RIB par e-mail. Mollie constitue une alternative tout-en-un appréciée pour les entreprises européennes : elle unifie carte, virement, iDEAL et Bancontact sous une seule intégration.",{"type":87,"title":88,"headers":89,"rows":92},"comparison","Invoice Ninja auto-hébergé vs plan SaaS hébergé",[5,90,91],"Auto-hébergé VPS","SaaS Invoice Ninja hébergé",[93,97,101,105,109,113],[94,95,96],"Coût mensuel","99 DH\u002Fmois (VPS fixe)","Gratuit jusqu'à 20 clients, puis 11-16 $\u002Fmois",[98,99,100],"Limite de clients","Non plafonnée","20 clients en plan gratuit",[102,103,104],"Contrôle des données","Données sur votre infrastructure","Données chez Invoice Ninja Inc.",[106,107,108],"Mises à jour","Manuelles (commande docker pull)","Automatiques",[110,111,112],"White-label","30 $\u002Fan (optionnel)","Inclus dans les plans payants",[114,115,116],"Maintenance serveur","À votre charge","Gérée par l'éditeur",{"type":34,"title":118,"body":119},"Sauvegarder et mettre à jour Invoice Ninja","La stratégie de sauvegarde doit couvrir deux éléments distincts : la base de données MySQL et le volume de stockage des fichiers. Pour MySQL, planifiez un dump quotidien avec `docker compose exec db mysqldump -u ninja -p invoiceninja | gzip > \u002Fbackups\u002Finvoiceninja-$(date +%Y%m%d).sql.gz` via un cron ou un timer systemd. Pour les fichiers (PDF générés, logos, pièces jointes), sauvegardez le répertoire `.\u002Fdata` avec rsync vers un stockage objet S3-compatible. Conservez au minimum 30 jours glissants et testez la restauration trimestriellement.\n\nPour mettre à jour vers une version future, la procédure est la suivante : mettez à jour le tag de l'image dans votre fichier Compose (par exemple de `5.13.45` vers la version suivante), tirez la nouvelle image avec `docker compose pull app`, puis exécutez `docker compose up -d app worker` suivi de `docker compose exec app php artisan migrate --force`. La migration s'exécute automatiquement au démarrage dans certaines configurations, mais il est plus sûr de la déclencher explicitement. Consultez le changelog GitHub avant toute mise à jour majeure (passage de 5.x à 6.x le cas échéant) : des étapes de migration supplémentaires peuvent être requises.",{"type":34,"title":121,"body":122},"Dépannage : erreurs courantes","Quatre problèmes reviennent fréquemment lors du déploiement initial.\n\n**Erreur `SQLSTATE[HY000] [2002] Connection refused`** : MySQL n'est pas encore prêt au moment où le conteneur app tente de s'y connecter. Ajoutez une directive `healthcheck` sur le service `db` et une condition `service_healthy` dans `depends_on` du service app. Alternativement, attendez 30 secondes après `docker compose up -d db` avant de démarrer app.\n\n**Les e-mails ne partent pas** : vérifiez que le service worker est bien en cours d'exécution avec `docker compose ps worker`. Si le statut est `Exited`, inspectez les logs : `docker compose logs worker`. La cause la plus fréquente est un `MAIL_HOST` incorrect ou un port SMTP bloqué par le pare-feu de l'hébergeur.\n\n**Page blanche ou erreur 500 après migration** : le répertoire `storage\u002F` n'a pas les bonnes permissions. Depuis l'hôte, exécutez `docker compose exec app chown -R www-data:www-data \u002Fvar\u002Fwww\u002Fapp\u002Fstorage && docker compose exec app php artisan config:clear && docker compose exec app php artisan cache:clear`.\n\n**La génération PDF produit des fichiers vides** : Invoice Ninja utilise Snappy (wkhtmltopdf) ou une alternative selon la configuration. Vérifiez que la variable `PDF_GENERATOR` est définie (valeurs possibles : `snappy`, `browsershot`, `phantom`) et que le binaire correspondant est présent dans l'image. L'image officielle `invoiceninja\u002Finvoiceninja:5.13.45` inclut wkhtmltopdf ; si vous avez construit une image custom, assurez-vous de l'avoir inclus.",{"type":34,"title":124,"body":125},"Invoice Ninja auto-hébergé : ce qu'il faut retenir","Invoice Ninja 5.13.45, publié le 9 octobre 2026, est une solution de facturation mature et activement maintenue. L'Elastic License 2.0 autorise l'auto-hébergement pour tout usage interne sans restriction : vous n'avez pas à débourser un centime tant que vous n'en revendiez pas l'accès comme service. La stack Docker (image officielle + MySQL 8.4 LTS + Redis 7.4) est reproductible en moins d'une heure sur n'importe quel VPS disposant de 2 Go de RAM. Le module white-label reste optionnel à 30 $\u002Fan : pour la grande majorité des freelances et PME, la mention « Created with Invoice Ninja » dans le pied de page des PDF n'est pas un obstacle. Si votre volume de clients dépasse 20 ou que vos données de facturation doivent rester dans votre infrastructure pour des raisons légales ou de conformité, le déploiement auto-hébergé est économiquement et techniquement justifié. Pour aller plus loin, notre équipe est disponible à support@servorbit.com pour vous aider à dimensionner votre VPS et configurer les sauvegardes.","Découvrir nos offres Professionnels","\u002Fsolutions\u002Fprofessionnels",[129,152,168],{"id":130,"slug":131,"slugs":132,"title":136,"excerpt":137,"readTime":16,"views":17,"isPinned":18,"publishedAt":138,"updatedAt":139,"category":140,"categories":146,"featuredImage":28,"bgImage":29,"posterImage":148,"relatedSolution":149},421,"migrer-bitwarden-cloud-vaultwarden-vps",{"fr":131,"en":133,"ar":134,"es":135},"migrate-bitwarden-cloud-to-vaultwarden-vps","نقل-bitwarden-cloud-إلى-vaultwarden-على-vps","migrar-bitwarden-cloud-a-vaultwarden-vps","Migrer de Bitwarden cloud vers Vaultwarden sur VPS","Migrez intégralement de Bitwarden cloud vers Vaultwarden : identifiants, organisations et pièces jointes, sans rien perdre. Guide CLI complet avec dépannage.","2026-10-07T00:00:00+00:00","2026-10-07T23:07:24+00:00",{"id":141,"name":142,"slug":143,"color":144,"icon":145},8,"Sécurité & Monitoring","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[147],{"id":141,"name":142,"slug":143,"color":144,"icon":145},"\u002Fblog\u002Fcovers\u002Fmigrer-bitwarden-cloud-vaultwarden-vps-poster.svg",{"categorySlug":150,"appSlug":151},"cybersecurity","vaultwarden",{"id":153,"slug":154,"slugs":155,"title":159,"excerpt":160,"readTime":161,"views":17,"isPinned":18,"publishedAt":162,"updatedAt":163,"category":164,"categories":165,"featuredImage":28,"bgImage":29,"posterImage":167,"relatedSolution":28},427,"docker-compose-mise-a-jour-best-practices-vps",{"fr":154,"en":156,"ar":157,"es":158},"docker-compose-update-best-practices-vps","أفضل-ممارسات-تحديث-docker-compose-على-vps","docker-compose-actualizacion-buenas-practicas-vps","Mettre à jour une stack Docker Compose en production","Protocole complet pour mettre à jour Docker Compose en production : pinning de version, backup de volumes et rollback en deux minutes.",9,"2026-10-09T00:00:00+00:00","2026-10-09T22:36:09+00:00",{"id":22,"name":23,"slug":24,"color":25,"icon":24},[166],{"id":22,"name":23,"slug":24,"color":25,"icon":24},"\u002Fblog\u002Fcovers\u002Fdocker-compose-mise-a-jour-best-practices-vps-poster.svg",{"id":169,"slug":170,"slugs":171,"title":175,"excerpt":176,"readTime":141,"views":17,"isPinned":18,"publishedAt":177,"updatedAt":178,"category":179,"categories":185,"featuredImage":28,"bgImage":29,"posterImage":187,"relatedSolution":28},430,"heberger-maybe-vps",{"fr":170,"en":172,"ar":173,"es":174},"how-to-host-maybe-on-a-vps","كيفية-استضافة-maybe-على-خادم-vps","como-alojar-maybe-en-un-vps","Héberger Maybe sur un VPS : finances personnelles sous contrôle","Installez Maybe, l'application open source de gestion financière, sur votre VPS avec Docker. Gardez vos données sous votre contrôle, sans abonnement SaaS.","2026-10-10T00:00:00+00:00","2026-10-10T21:55:40+00:00",{"id":180,"name":181,"slug":182,"color":183,"icon":184},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[186],{"id":180,"name":181,"slug":182,"color":183,"icon":184},"\u002Fblog\u002Fcovers\u002Fheberger-maybe-vps-poster.svg",1791900952846]