Vendre un abonnement Jellyfin avec Stripe : formules, essai et suspension

Configurez Cashier pour facturer l’accès à votre serveur Jellyfin via votre propre compte Stripe : formules, essai, et activation au paiement ou suspension en cas de non-paiement, sans rien supprimer.

Si vous faites tourner un serveur Jellyfin pour un club, une communauté ou un groupe d’amis, la question finit toujours par se poser : comment couvrir la facture d’hébergement ? Cashier est notre réponse pour les auto-hébergeurs. Il transforme votre serveur Jellyfin en service payant : un visiteur choisit une formule, paie via votre propre compte Stripe, et le compte Jellyfin devient actif immédiatement. Quand un renouvellement n’est pas payé, le compte est suspendu jusqu’au règlement de la facture — et jamais supprimé automatiquement.

Ce dernier point compte. Cashier n’est pas un contrôleur de licences qui efface les utilisateurs ; c’est une caisse. Il fonctionne avec Registration, qui fournit la page d’inscription et la création de compte, tandis que Cashier gère les formules, Stripe et l’état de l’abonnement. Vous pouvez lire la description complète du produit sur la page Cashier et suivre le guide d’utilisation.

Avant de commencer

Quelques points à régler avant de toucher au moindre réglage.

Droits sur les contenus. Cashier facture vos utilisateurs via votre propre compte Stripe. Vous êtes seul responsable de détenir les droits sur le contenu ou le service que vous facturez — par exemple les films, séries ou chaînes de votre serveur. MediaLab Works ne fournit que le logiciel et n’est pas partie à vos ventes, et Stripe peut fermer ou restreindre un compte qui facture des contenus sans en détenir les droits (voir la liste des activités restreintes de Stripe). Ne facturez donc que des contenus que vous possédez ou pour lesquels vous disposez d’une licence, et gardez votre serveur privé, réservé à vos membres payants.

Votre propre compte Stripe. Les paiements arrivent sur votre compte Stripe ; les données de carte ne touchent jamais votre serveur. Stripe prélève ses propres frais par paiement. Pensez aussi à la fiscalité : Cashier prend en charge une adresse de facturation facultative et Stripe Tax, tous deux désactivés par défaut ; décidez donc si vous en avez besoin avant d’activer la vente.

Prérequis :

  • Jellyfin Server 12.2 ou plus récent (Linux, Windows ou Docker).
  • Registration de MediaLab, installé et sous licence — Cashier utilise sa page d’inscription, ses réglages d’e-mail et la création de compte.
  • Un compte Stripe et votre serveur joignable en HTTPS, pour que Stripe puisse appeler le webhook.
  • Une licence Cashier valide. Vous pouvez démarrer l’essai gratuit de 30 jours depuis la page License du plugin si vous n’avez pas encore de clé.

Installez Cashier depuis votre dépôt de plugins privé (recommandé), depuis le catalogue public, ou manuellement à partir du zip dans Account → Licenses. Ouvrez ensuite la page du plugin dans Dashboard → Plugins → Cashier by MediaLab, cliquez sur Open License page et activez votre clé.

Étape par étape

1. Configurez d’abord Registration

Installez Registration et activez sa licence, puis renseignez son adresse publique et son SMTP. Cashier envoie tous les e-mails aux abonnés — facture à régler, échec de paiement, paiement réussi, suspension, réactivation — via les réglages SMTP de Registration ; si le mail ne fonctionne pas ici, il ne fonctionnera pas non plus plus tard.

2. Collez votre clé Stripe

Ouvrez Dashboard → Cashier et allez dans Keys. Collez votre clé secrète Stripe (sk_…) — ou, mieux, une clé restreinte rk_… — cliquez sur Save and test, puis sur Create the webhook automatically. La clé est stockée dans data/secrets.json, qui est exclu de la configuration envoyée au navigateur.

Si votre serveur n’a pas d’adresse HTTPS publique, vous pouvez sauter le webhook automatique : Cashier lit alors les événements Stripe toutes les 15 minutes, sans aucun port ouvert.

3. Définissez le nom du service et l’adresse publique

Saisissez le nom du service affiché aux clients et l’adresse publique du serveur (par exemple https://jellyfin.example.com). L’adresse sert au retour depuis Stripe et au webhook ; elle doit donc être correcte.

4. Définissez vos formules

Vérifiez les formules : période (mensuelle ou annuelle), nombre de lectures simultanées et prix. Les formules sont définies par le nombre d’appareils pouvant lire en même temps — par exemple de 1 à 4 écrans. Cliquez sur Save and send to Stripe : les prix sont créés dans votre compte Stripe. Notez qu’un prix modifié crée un nouveau prix Stripe, tandis que les abonnés existants conservent le leur jusqu’à ce qu’ils changent de formule.

5. Essai et délai de grâce

Réglez les jours d’essai (un essai gratuit facultatif pour le premier abonnement) et le délai de grâce. Le délai de grâce correspond à la durée pendant laquelle un compte reste actif après un échec de paiement, le temps que Stripe réessaie — 3 jours par défaut.

6. Activez la vente

Quand tout ce qui précède est en place, activez la vente. Les nouveaux clients choisissent alors une formule sur la page d’inscription et paient ; leur compte est activé dès que Stripe confirme le paiement. Désactiver la vente plus tard laisse chaque compte en l’état.

Comportement du paiement et du non-paiement

C’est le cœur du plugin ; cela vaut la peine de le comprendre avant d’ouvrir les portes.

  • Le paiement active. Dès que Stripe confirme le paiement, le compte est activé avec les limites de la formule. Aucune validation manuelle : le paiement la remplace.
  • Le non-paiement suspend. Après un échec de paiement, le compte reste actif pendant le délai de grâce, le temps que Stripe réessaie, puis il est désactivé. Le règlement de la facture le réactive.
  • Rien n’est supprimé par défaut. La suppression des comptes suspendus depuis longtemps est facultative et désactivée par défaut. La ligne d’abonné n’est supprimée qu’en même temps que l’utilisateur du serveur, et seulement à ce moment-là.
  • La limite de flux est appliquée. La lecture au-delà du nombre d’appareils de la formule est bloquée nativement (MaxActiveSessions) à la connexion ou au démarrage de la lecture, donc cela fonctionne avec n’importe quel client.
  • Stripe est réconcilié toutes les 15 minutes, au cas où un webhook serait manqué.

Les abonnés disposent d’une page client à /Cashier/Page dans n’importe quel navigateur, et les téléviseurs peuvent payer depuis un téléphone via un QR code généré sur le serveur — sans ressource externe. Le Stripe Customer Portal est configuré pour vous : les clients peuvent changer de carte ou de formule, consulter leurs factures et résilier.

Pour l’administration au quotidien, les listes Subscribers et Payments montrent qui paie quoi, et le journal affiche chaque changement d’état. La page d’administration ne fait que renvoyer vers le Stripe Dashboard ; elle ne l’intègre pas.

Conseils et dépannage

Les paiements n’activent pas les comptes. Presque toujours, le webhook n’atteint pas le serveur. Vérifiez que l’adresse publique est joignable en HTTPS depuis Internet. Même si le webhook est en panne, Cashier se réconcilie avec Stripe toutes les 15 minutes : un événement manqué est donc récupéré — mais corrigez quand même l’adresse.

Aucun e-mail aux clients. Vérifiez les réglages SMTP dans Registration ; Cashier n’a pas les siens.

Testez avant de facturer qui que ce soit. Utilisez d’abord Stripe en mode test, effectuez une inscription via la page client et observez le compte passer de pending à active dans la liste Subscribers.

Surveillez la licence. Sans licence Cashier valide, aucune nouvelle inscription payante n’est acceptée tant que la licence n’est pas de nouveau valide — rien n’est supprimé, et les données des abonnés existants ne sont pas affectées. Le plugin vérifie la clé d’abonnement une fois par jour ; sans Internet, il continue de fonctionner 7 jours après la dernière vérification réussie.

Gardez votre licence à jour. Une licence à vie reçoit les versions publiées pendant sa fenêtre de mises à jour. Si les mises à jour automatiques de Jellyfin installent une version plus récente non licenciée, le plugin s’arrête avec « version not licensed » jusqu’à ce que vous utilisiez Roll back to x.y.z sur sa page License. Pour éviter cela, pointez Jellyfin vers votre dépôt de plugins privé, qui ne propose que les versions autorisées par votre licence.

Changements de formule. Comme un prix modifié crée un nouveau prix Stripe, les abonnés existants conservent leur ancien prix jusqu’à ce qu’ils changent de formule. Annoncez les changements de prix à vos membres plutôt que de supposer qu’ils migreront automatiquement.

Conclusion

Cashier simplifie la partie comptable d’un serveur communautaire : des formules selon les lectures simultanées, une facturation mensuelle ou annuelle, un essai gratuit si vous le souhaitez, et une règle claire — le paiement active, le non-paiement suspend, rien n’est supprimé. Comme l’argent arrive sur votre propre compte Stripe et que les données de carte n’atteignent jamais votre serveur, vous gardez la maîtrise des contenus comme des paiements.

Commencez par la page produit Cashier, parcourez le guide et gardez le changelog à portée de main pour les nouvelles versions. Si quelque chose ne se comporte pas comme décrit, la base de connaissances et la FAQ sont l’étape suivante, et vous pouvez toujours nous contacter.

Cet article a été rédigé avec l’aide de l’IA à partir de la documentation de nos produits ou des sources indiquées et vérifié automatiquement avant publication.

À lire ensuite

Vous utilisez Emby, Jellyfin ou Nextcloud ?

Nos plugins et applications ajoutent la TV en direct, les sous-titres, l’inscription et la sécurité à votre propre serveur, avec un essai gratuit.