Coucou!
Ce poste a pour but de vous présenter K7, un projet sur lequel je travaille depuis plus de 3 ans maintenant et qui est arrivé à un très bon niveau de maturité!
K7 est un serveur média que j'ai conçu comme une alternative à Plex et/ou Jellyfin.
tldr; le projet est accessible ici.
--- Petit paté histoire
La question logique c'est "Pourquoi?", et la réponse est plutôt simple!
J'ai toujours adoré l'UX et l'UI de Plex mais j'ai également toujours détesté la direction que l'entreprise prenait (quand bien même logique puisque c'est une entreprise qui doit faire du profit pour vivre et faire vivre ses employés), l'aspect surveillance et auth non selfhosted me gênait aussi beaucoup. J'ai utilisé Plex pendant près de 12 ans tout en tentant de m'en défaire dès que possible..
Jellyfin est apparu et je l'ai immédiatement installé mais à l'époque du lancement c'était vraiment pas terrible, très néanmoins très rapidement Jellyfin est devenu sensiblement meilleur que Plex sur pas mal d'aspects (meilleur support sur le playback, gratuiteté complète, customisation immense native et avec plugins) MAIS l'UX/UI a toujours été en deçà pour moi de Plex. Surtout sur la partie musicale où Plexamp a été et est encore à ce jour à mes yeux incroyable.
J'ai tenté quelques fois de contribuer à Jellyfin pour me rapprocher de mon idéal mais ça n'a jamais été jusqu'au bout (j'ai par exemple tenté d'implémenter chez eux le rating étoiles), ce qui est compréhensible vu le travail dantesque qu'ils accomplissent au quotidien avec leur dette technique issue du fork Emby et les sollicitations de leur communauté.
J'ai donc fini par me dire que créer mon propre serveur média ne devait pas être si compliqué que ça. Et pour faire court, c'était pas si facile et vraiment pas aussi court que je l'aurai imaginé. Comme dit plus haut, ça m'aura donc pris plus de 3 ans pour imaginer, développer et arriver à une bonne stabilité sur K7.
--- Fin du petit paté histoire
Alors ça vaut quoi K7? Tout est bien détaillé dans le repo github mais grosso modo le plus important selon moi:
- support d'une authentification 100% locale incluant une compatibilité OIDC
- choix du provider de la base de données postgres (recommandé) ou sqlite
- customisation avancée de l'UX
- paramètres par défaut globalement définissables par l'adminisateur avec la possibilité pour chaque utilisateur d'écraser par ses propres préférences (pratique pour configurer pour les utilisateurs type papa/maman qui n'iront jamais visiter les paramètres)
- système de fédération qui permet de partager du contenu entre plusieurs serveurs K7 (pour partager le contenu aux utilisateurs d'un autre serveur, équivalent grosso-modo au partage Plex)
- clients web, android (incluant tv), ios, windows et applications subsonic
- playlists et collections dynamiques à la Plex
- filtres avancés pour du contrôle parental
- système de partage social (partager des avis entre utilisateurs, playlists, collections, etc)
Tout est conçu en opt-in, donc par exemple pour la partie sociale, chaque utilisateur doit activer pour partager et/ou voir du contenu des autres utilisateurs. La vie privée est au cœur de l'outil!
Je pourrais m'étaler encore longtemps parce qu'il y a énormément de choses et de détails que j'adore partager mais ça fera un poste un peu trop imbuvable donc je vais m'arrêter là pour la présentation.
Je partage mon projet car même s'il est taillé spécifiquement pour mes besoins personnels, je suis certain qu'il pourrait servir à d'autres que moi! 😀
Une démo est disponible sur https://k7.kaybi.dev si vous souhaitez juste jeter un œil au mode guest (qui est très limité en fonctionnalités).
Je suis disponible pour toutes questions aussi bien ici que sur discord 👋