K7 serveur média

Kaybi

Nouveau membre
5 Août 2026
7
3
3
Bonjour à tous!

Ce sujet a juste pour but de vous présenter K7, mon projet gratuit et open-source que j'ai entamé il y a un peu plus de 3 ans maintenant!
1786019246825.png

Avant de commencer ce projet, j'étais un simple utilisateur/administrateur de Plex, puis de Jellyfin mais j'ai toujours été frustré sur pas mal de points..

Côté Plex l'aspect pas entièrement selfhosté et pas open-source était déjà compliqué à accepter pour moi mais j'avais du mal à m'en séparer car à l'époque l'UI et l'UX étaient, il faut bien le reconnaitre, au dessus de Jellyfin. Mais avec les différentes directions qu'ils ont pris (contenu plex/partenaires externes trop mis en valeur vs contenu selfhosted, features invasives sur la vie privée en OPT-OUT et avec des méthodes dignes des scams de l'époque pour en sortir), j'ai décidé de franchir le cap et d'utiliser partiellement Jellyfin, partiellement car en réalité j'avais gardé Plex pour la musique parce que PlexAmp vs Jellyfin il n'y avait pas de retour arrière possible.

Jellyfin, l'expérience de setup en tant qu'admin était bien plus complète mais aussi avec une learning-curve un peu plus raide. L'interface (ui/ux) était franchement bof. Bien entendu, c'était à l'époque où je l'avais installé, il y a près de 8 ans. Depuis tout a beaucoup changé et franchement ils font mieux que Plex sur plein d'aspects désormais (toujours pas sur la musique 😬). Néanmoins il reste toujours des points de frictions:
- pas de support oidc (alors qu'on a tous envie une fois qu'on a setup un provider de tout centraliser dessus héhé)
- pas de partage média entre différents serveurs
- pas de support postgres (qui régit ma stack)
- pour la partie musicale, pas de rating en étoiles et de "smart playlist" à la plex avec des règles dynamiques (ce qui me bloquait prioritairement pour me passer de Plex personnellement)
- j'en passe car le but est pas d'être exhaustif (et ca vous intéressera probablement pas plus que ça) mais juste de mettre en valeur ce qui moi me gênait le plus

Fort heureusement Jellyfin est open-source et donc on peut y contribuer! Seulement mes contributions (notamment une pour permettre le rating en étoiles qui était 100% faisable car le back stocke une valeur en double) n'ont jamais pu aller jusqu'au bout et je blame pas du tout les maintainers de Jellyfin car ils travaillent d'arrache-pied sur plein d'autres sujets bien plus prioritaires et le tout sur leur temps libre. La faute est plutôt à l'historique et la dimension du projet, Jellyfin est issu d'un fork d'Emby et c'est du code historique rempli de dette technique. Le nettoyage se fait peu à peu mais c'est long et les features se font du coup plutôt rares. Il y a bien la notion de plugin mais elle reste limitée.
Par exemple le plugin jellyfin sso: https://github.com/9p4/jellyfin-plugin-sso a fini par jeter l'éponge:
Project archived because I'm tired of working on this after all the years.

Alors plutôt que de me plaindre, ce qui n'aurait rien fait avancer, j'ai décidé de me lancer dans mon propre projet de média serveur open-source. Ca a été long, il y a eu des moments de doute, des pauses car c'était très prenant sur ma vie perso mais malgré les difficultés je suis heureux d'avoir pu enfin sortir ma v1.0.0 cette semaine!!

Le projet est trouvable ici: https://github.com/kaybi-gh/K7
Vous trouverez de la doc sur le readme principal du repo et ici: https://github.com/kaybi-gh/K7/blob/main/docs/README.md
Pour voir un peu à quoi ça ressemble, vous avez une démo accessible ici: https://k7.kaybi.dev et des screenshots ici https://github.com/kaybi-gh/K7/blob/main/screenshots/README.md

Je ne liste pas toutes les features ici, le readme les couvre largement!
Si vous voulez m’aider à gagner un peu en visibilité, votre petite étoile est la bienvenue ⭐
Mais le plus précieux pour moi, c’est vos retours d’essai chez vous
Et si vous voulez discuter du projet, avec grand plaisir !

J'ajoute aussi un petit paragraphe pour parler d'IA car je sais que c'est un sujet d'actualité, et oui j'ai utilisé l'IA (comme je le fais au travail) pour m'aider parfois à 100% sur des tâches qui m'intéressent moins comme les docs/commentaires, les petits outils comme celui qui me permet de regénérer les screenshots du repo mais aussi à 20-30% pour du code boilerplate, ou des code reviews (étant seul ca aide pas mal), des audits, etc.

Merci de m'avoir lu!!
 
Mais le plus précieux pour moi, c’est vos retours d’essai chez vous
Je vais tester, mais
. Pas de client TV (navigateur web, je suppose) ?
. Pas de récupération des infos sur TMBD (ou autres) ?
. Gestion des sous-titres ? (pas proposé sur la démo)
Sinon l'interface est vraiment sympa et la démo fonctionne nickel (fluide).
j'avais gardé Plex
Perso, j'ai gardé Plex pour les deux fonctionnalités suivantes :
- Le client AndroidTV (celui de Jellyfin est très difficilement utilisable)
- Le fusionnage des dossiers/fichiers/artiste ou série – plus particulièrement utile pour la musique (je n'ai encore trouvé aucun serveur de musique qui propose cette fonctionnalité, indispensable pour le classement).

Et, j'utilise Jellyfin pour les vidéos "personnelles" et clips/vidéos type YouTube (qui passent nickel avec Jellyfin et pas super avec Plex). Avec le client TV "Wholphin" qui donne une ergonomie proche de celui de Plex.

j'ai décidé de me lancer dans mon propre projet de média serveur open-source.
Merci pour cette proposition et déjà super boulot (y). ⁣ Je te fais un retour dès que j'ai le temps de tester ;)
 
Je vais tester, mais
. Pas de client TV (navigateur web, je suppose) ?
. Pas de récupération des infos sur TMBD (ou autres) ?
. Gestion des sous-titres ? (pas proposé sur la démo)
Sinon l'interface est vraiment sympa et la démo fonctionne nickel (fluide).
Alors aujourd'hui j'ai:
- client web
- client android (comprenant android TV qui a d'ailleurs des affichages un peu différents pour être mieux adaptés à une navigation télécommande)
- client windows (.exe portable)

Les clients sont disponibles dans les releases sur github (il faut sideloader les apk pour android tv).

Tu verras pas tout sur la démo parce qu'en tant que guest on cache un bon paquet de features, et les médias disponibles sont ultra light pour pas saturer mon rikiki VPS Ovh ahaha.

Pour les features, dont tu parles, on récupère bien les métadonnées et ce depuis plusieurs providers:
- Pour les films TMDB
- Pour les séries un mix de TVDB et TMDB (ou configurable TMDB uniquement mais c'est pas aussi riche)
- Pour les musiques musicbrainz
- Pour les personnes tvdb, tmdb, musicbrainz et on croise avec wikidata, wikimedia et wikipedia

On a bien les sous-titres (exemple sur un film chez moi qui en a) et on tente de déduire la langue proprement et si les sous-titres sont forcés, complets ou sourds et malentendants (pareil pour l'audio). Par contre j'ai rien qui permet d'aller chercher des sous-titres en live via opensubtitles par exemple, c'est que ceux intégrés dans tes fichiers locaux.
1786032837398.png

Petit bonus sur la partie sous-titres, tu peux configurer en tant qu'admin et en tant qu'utilisateur (override) tes préférences de pistes audio et sous-titres (c'est configurable par bibliothèque pour le moment):
1786032983370.png

Aperçu du mode TV:
1786032562269.png

Perso, j'ai gardé Plex pour les deux fonctionnalités suivantes :
- Le client AndroidTV (celui de Jellyfin est très difficilement utilisable)
- Le fusionnage des dossiers/fichiers/artiste ou série – plus particulièrement utile pour la musique (je n'ai encore trouvé aucun serveur de musique qui propose cette fonctionnalité, indispensable pour le classement).
Mon client android TV est utilisable mais je le trouve encore perfectionnable, ca dépend peut-être de ma box (j'ai des nokia streaming box 8000 mais elles rament à fond ces derniers temps). Donc justement avoir des retours ça m'aiderait beaucoup!

Pour la fusion des médias, j'ai uniquement des fonctionnalités de ré-identification (rattacher un média mal identifié) et toute une panoplie de diagnostics pour aider l'admin en cas de manques mais j'ai rien qui permet facilement de fusionne les médias (j'aimerai le faire mais ca n'y est pas encore 😁).

Et, j'utilise Jellyfin pour les vidéos "personnelles" et clips/vidéos type YouTube (qui passent nickel avec Jellyfin et pas super avec Plex). Avec le client TV "Wholphin" qui donne une ergonomie proche de celui de Plex.
J'ai réfléchi aux vidéos personnelles/youtube et je vois pas trop ça avoir sa place dans K7 pour le coup, mais je suis toujours ouvert à la discussion pour comprendre les usages!

Je connaissais pas le client Wholphin merci! C'est vrai que c'est joli et ça ressemble bien à Plex.

Merci pour cette proposition et déjà super boulot (y). ⁣ Je te fais un retour dès que j'ai le temps de tester ;)
C'est un travail très personnel car il est vraiment adapté à ma vision du media server idéal et j'ai travaillé seul dessus avec du coup personne pour me donner d'autres idées ou contester certains de mes choix/directions donc forcément ça ne plaira pas à tout le monde ça c'est sûr..
Trop bien merci, j'ai hâte d'avoir de tes retours!!
 
Trop bien merci, j'ai hâte d'avoir de tes retours!!
Bon, je n'arrive pas à lancer le serveur. Je ne suis pas spécialiste de Docker ;).
Mes deux containers fonctionnent, mais je pense avoir un problème d'identification entre la DB (postgres) et l'interface web (K7).

1786094604542.png

1786092276303.png

En bref un petit coup de main ou un YAML simple ou mini tuto.
 
Dernière édition:
Bon, je n'arrive pas à lancer le serveur. Je ne suis pas spécialiste de Docker ;).
Mes deux containers fonctionnent, mais je pense avoir un problème d'identification entre la DB (postgres) et l'interface web (K7).
Oui en effet ça a bien l'air d'être le problème! Pas de soucis, on a chacun notre niveau et au contraire c'est intéressant pour moi parce que ma doc est justemment peut-être pas assez claire..
Tu as suivi la documentation ici? https://github.com/kaybi-gh/K7/blob/main/docs/admin/install.md#quick-start-with-the-published-image

Sinon en tout cas en gros tu peux:
1- Télécharger le fichier docker-compose.yaml (disponible ici)
2- Télécharger le fichier .env.example (disponible ici) et le renommer en .env (il faut qu'il soit à côté du docker-compose.yaml)
3- Modifier les variables POSTGRES_PASSWORD et SECURITY__APIKEYS__HASHSECRET dans ton fichier .env
4- Optionnellement ajouter la variable SETUP_TOKEN (un texte quelconque) dans ton fichier .env car il te sera demandé de le saisir au moment de créer ton compte admin (si tu ne le renseignes pas, tu en auras un assigné d'office et tu le trouveras dans les logs du container K7)
5- Faire un docker compose up -d en étant dans le même dossier que tes fichiers docker-compose.yaml et .env
6- Aller sur http://tamachine:7080
7- Créer ton compte administrateur
8- Aller dans le menu avatar en haut à droite (tu cliques sur ton avatar) puis dans l'entrée administration pour enfin naviguer dans Contenu > Bibliothèque pour ajouter ta première bibliothèque
👍
 
Attends 2 mn, je n'arrive pas avec ton p**** de jeton :mad: j'ai mis dans mon .env
1786107705249.png
Et cela ne marche pas :

1786107745412.png

Il faut que je crée un nom d'utilisateur et passe dans le YAML ou je peux créer direct ici ?
Message automatiquement fusionné :

Du coup je m’interroge, tu avais tenté avec quoi initialement? Un outil qui gère docker type portainer?
Si tu veux que la plupart l'installe facilement sur leur NAS ou serveur, il te faut proposer un YAML à configurer dans un outil type Portainer ou une console Docker ;)
 
Attends 2 mn, je n'arrive pas avec ton p**** de jeton :mad: j'ai mis dans mon .env
Arg désolé je t'ai envoyé le mauvais nom c'était K7_SETUP_TOKEN
😬
Si tu veux que la plupart l'installe facilement sur leur NAS ou serveur, il te faut proposer un YAML à configurer dans un outil type Portainer ou une console Docker ;)
Portainer n'utilise pas des équivalents à docker-compose? Il faut que je creuse en effet!
Par console Docker tu entends par exemple un docker run xxx? C'est vrai que c'est plus rapide mais ça ferait partir sur une base de données sqlite (que je déconseille quand même pour des raisons de perfs et de facilité de backup).
 
Bon, j'ai réussi à joindre un dossier (cela n'a pas été des plus simple – je suis sur ZimaOS).

1786112584006.png

Je n'ai pas trop compris comment on active le transcodage :

1786113057532.png
 
Bon, j'ai réussi à joindre un dossier (cela n'a pas été des plus simple – je suis sur ZimaOS).
Génial! Il y a des spécificités sur les dossiers ZimaOS? Je connais pas du tout

Je n'ai pas trop compris comment on active le transcodage :
D'après ce que je lis dans ta signature, tu es sur des machines sans GPU donc je suppose que tu veux utiliser le iGPU de ton processeur!
C'est ce que je fais sur mon NUC et du coup simplement ajouter ceci à ton docker-compose.yaml devrait suffire:
Code:
devices:
  - /dev/dri:/dev/dri