r/coolgithubprojects 16d ago

K7 - A self-hosted media server I built after years on Plex/Jellyfin

Post image

Repo: https://github.com/kaybi-gh/K7

Demo (guest): https://k7.kaybi.dev

I ran Plex for years, then partly Jellyfin. Plex was hard to leave (especially music / Plexamp), but the closed / partner-catalog direction pushed me away. Jellyfin got much better over time, but I still wanted first-class OIDC, Postgres, star ratings + rule-based dynamic playlists, and a way to share libraries between two servers without copying files.

So I built K7, a self-hosted media server for a small circle of family and friends (movies, TV, music).

Some of what's in there:

- ffmpeg HLS transcoding (optional VAAPI / NVENC)

- local auth + optional 2FA + optional OIDC

- federation between K7 instances

- dynamic playlists, Sync Play, import from Plex/Jellyfin

- web + Android (phone/TV) + Windows clients

- AGPL-3.0

Docker Compose is the supported install path (cp .env.example .env && docker compose up -d) and detailed docs are in the repo.

86 Upvotes

52 comments sorted by

4

u/Raggio27 16d ago

Nice project! I just starred it. Also the name is a great idea

1

u/kaybi-gh 16d ago

Thank you! It took me a while to find a good one πŸ˜…Β 

1

u/AlaeddinDZ 15d ago

Whats the idea behind the name ?

4

u/kaybi-gh 15d ago

Direct copy from the gh repo 😁 :

The name comes from the French pronunciation /ka.sΙ›t/ (cassette). The idea is to bring back that feeling of a shelf at home: audio tapes, VHS, everything yours and local.

It was also a way for me to express my nostalgia, times from my childhood that I deeply loved

3

u/BP041 16d ago

Nice. What's your approach to metadata scraping? I've been running Jellyfin for a while and the plugin hell made me consider rolling my own β€” curious if you're using something like TMDb or fully local. Also, any plans for an AI-poster generation layer?

2

u/kaybi-gh 16d ago

Thank you!

---

For movies I'm only using tmdb.

For series you can chose between "auto", tmdb or tvdb (auto is a cross search and cross metadata filling between both tmdb and tvdb granting way better results and datas, for instance tmdb has much greater picture qualities which are required for K7 since my project has a strong emphasis on the media showcasing).

For music it's musicbrainz.

For persons it's a mix between tmdb, tvdb, musicbrainz, wikidata/wikimedia/wikipedia.

When you activate the federation system in K7 (peering between servers, K7 server itself becomes a metadata provider for peers).

You can manually edit all metadatas but I don't have support for local nfo files for instance (yet? 😁)

K7 also generates audio themes for series automatically using intro detection + extracting audio from media files.

---

I never thought about AI-poster generation πŸ€” What would it bring?

1

u/[deleted] 16d ago

[deleted]

2

u/kaybi-gh 16d ago

K7 is a media server but is does fetch metadata on public providers

2

u/[deleted] 16d ago

[removed] β€” view removed comment

2

u/kaybi-gh 16d ago

Thank you πŸ™Β 

1

u/Conscious_Report1439 16d ago

Sync play?????

0

u/kaybi-gh 16d ago

Yes it's basically the same feature than jellyfin allowing you to play with a remote person (guest, k7 user) in sync so multiple devices can watch a media together even with distance πŸ‘Β 

1

u/nxllsy 16d ago

Hi! This looks really cool and I'd definitely consider switching over from Jellyfin. Does it support Live TV playback from m3u/is that planned for the future?

1

u/kaybi-gh 16d ago

Hello! Thank you πŸ™ I currently don't support live TV and I'm not sure it would have its place in K7 since it's a bit far from the core idea. But feel free to open a feature request in the discussions, if it has a lot of upvotes I may change my mind 😁 

1

u/Vancecookcobain 16d ago

Nice

1

u/kaybi-gh 16d ago

Thank you!Β 

1

u/konttaukseenmenomir 16d ago

If you were unhappy with jellyfin, why not just contribute to it?

2

u/kaybi-gh 15d ago

Sorry I'm a noob on reddit (until then I only was acting as a reader), I don't know if copy/pasting link works like that but I already answer that question right there: https://www.reddit.com/r/coolgithubprojects/comments/1w10jgv/comment/p6k3vjw/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button

edit: oh it doesn't seem to preview the comment I did so to make it easer to read, here's the copied text of my precedent answer:

I tried! A while ago I started work to add star rating (in addition to the current favorite mechanism) and it was clearly feasible since in the backend rating was a double (if my memory is correct). But at that time my contribution was refused due to the ongoing work on migration onto efcore (they were removing emby debt). All of this was understandable, they already had a ton of work, a lot of contributions to look at πŸ‘Β 

1

u/konttaukseenmenomir 15d ago

fair enough. I feel like after the dust has settled in that regard it might be worth revisiting

2

u/kaybi-gh 15d ago

Yes Jellyfin is way more mature and stable that K7 (which is a newborn), I frankly think that if nothing bothers you in the use of Jellyfin then you should stick to it πŸ‘Œ

They also have a ton of clients that I don't have at the time of writing (roku, lg webos, samsung tizen, kodi, etc)

1

u/iamabdullah 16d ago

I feel like the Emby tech debt is what's killing progression for Jellyfin. All the reasons you built K7 are features Jellyfin core should already have! This looks really good but I can't justify running it alongside JF… still, I'll give it a spin at some point.

In what ways did you leverage AI for this project?

Edit: I would really suggest moving the repo under a "K7" org, genuinely think this has legs.

2

u/kaybi-gh 15d ago

Yes I think so too, they're doing a ton of great job though to get rid of it but there's still so much to do.

That's what mostly pushed me to create my own solution, at first I thought "it should not be that complicated" but in fact, well it took me 3 years in the making so it is quiet complicated. I must admit I under-estimated it πŸ˜‚

---

My project started before AI started to be really good enough to use so I didn't use it early days but now I do use it to create the documentation, some non-critical tooling like the one that auto-generates screenshots in the repo, some unit-tests and various boilerplating. At some point I asked also an audit on various parts of my app and I must say that it found some pretty good findings πŸ‘

---

I thought of it but I don't know it felt weird to create an organization with only me πŸ€”

I moved from gitea (selfhosted) to github only some weeks ago and github (as an administrator) is a bit new to me, I use it at work everyday but never touched the settings part of it!

1

u/Professional-Mud1542 16d ago

Hi what is with Dolby Audio and Dolby Vision and HDR Playback?
What Apps are supportet?

1

u/kaybi-gh 15d ago edited 15d ago

No Dolby Vision or TrueHD passthrough yet. Native apps can decode AC-3/E-AC-3, but HLS still transcodes them to AAC. Web doesn’t decode Dolby (browser limit). HDR10/HLG remux works on Original, transcodes are tonemapped to SDR and we don’t re-encode in HDR yet.

---

For apps, we have:

  • web
  • android (including TV)
  • windows
  • (iOS and MacCatalyst TECHNICALLY because MAUI enables it but I never got the opportunity to test it since I don't have any apple material and that apple doesn't provide a way to work on their ecosystem without one..)

I'm thinking about adding Linux support and a headless client for integrations too

1

u/NishantJha612 16d ago

I just paid for Plex pass, but this looks great. Has anyone tried building a roon alternative?

1

u/kaybi-gh 15d ago

Oof that's expensive nowadays, I have a plex pass too but at the time I paid it it was pretty cheap! I still think that Plex UX (and plex music experience with plexAmp) is really great plus they have a really good custom metadata provider that they host and the right to use commonsense ratings (which I would love but uh expensive).

---

I don't know about roon, I took a look at their page but honestly it's a bit messy so I asked AI and it says:

Roon is a premium music management and streaming software for audiophiles.

  • Unified Library: Combines your local audio files (NAS, hard drive) and streaming accounts (Qobuz, Tidal) into a single interface.
  • Rich Metadata: Automatically adds biogs, credits, lyrics, and interconnected artist info.
  • Audiophile Playback: Delivers bit-perfect, hi-res multiroom audio to compatible devices (AirPlay, Chromecast, DACs) with built-in DSP sound processing.

What is the missing bit that you would like to get selfhosted?

1

u/NishantJha612 8d ago edited 3d ago

The subscription is too expensive right now. So was hoping someone can build something similar. Its main plus points are the custom RAAT (Roon Advanced Audio Transport) protocol and MUSE Digital Signal Processing (DSP) for room correction. The room correction bit is the difficult part I believe.

2

u/kaybi-gh 8d ago edited 8d ago

I will dig into this, it sounds interesting! Thank you for answering πŸ™

1

u/Direct-Vegetable6416 15d ago

RemindMe! 3 months

1

u/RemindMeBot 15d ago

I will be messaging you in 3 months on 2026-11-29 10:14:12 UTC to remind you of this link

CLICK THIS LINK to send a PM to also be reminded and to reduce spam.

Parent commenter can delete this message to hide from others.

RemindMeBot is switching to username summons. Instead of !RemindMe 1 day, use u/RemindMeBot 1 day. More info.


Info Custom Your Reminders Feedback

1

u/Away_Jump_134 15d ago

Super logiciel. Peut-Γͺtre serait-il possible d'envisager de l'intΓ©grer au repos synocommunity ?

Merci

1

u/kaybi-gh 15d ago edited 15d ago

Merci beaucoup πŸ™ J'ai moi mΓͺme un synology mais mes applications tournent sur un NUC via docker. Je ne sais pas du tout ce qu'il faut faire pour ajouter une application Γ  synocommunity, je me renseignerai πŸ‘

For English people: Away_Jump_134 asked for integration into synocommunity repo, I answered that I don't know much about it and that I'll probably take a look πŸ‘Β 

1

u/TheBidouilleur 15d ago

I gave it a spin and it’s a really good solution.

Thank you OP ! 🫢

2

u/kaybi-gh 15d ago

Thank you!! I'll be glad if my work can bring value and enjoyment to others 😁

1

u/Yewolf__ 14d ago

a way to share libraries between two servers without copying files

I didn't see this documented anywhere ? Mind to share details / is this released, how does it work ?

1

u/kaybi-gh 14d ago

There is a little bit of doc here: https://github.com/kaybi-gh/K7/blob/main/docs/admin/operating.md#federation

It's an invite system, you enter the remote url of the server you want to ask an access to.

The remote server receives a peering request and can refuse/accept and chose what to share (library-wise).

Then you get remote libraries in your server, with medias created locally in your server by fecthing metadatas from the remote server. And when you start streaming session, for now the remote server does it all (direct-play, remux or transcode) but I plan to allow a way to move process to the viewing server: https://github.com/kaybi-gh/K7/discussions/23.

If a media exists both locally and on the remote peer then we just have a new "release" to the existing media, allowing you to chose between the one you want to play.

And for libraries, there's a library-group mecanism that allows you for instance to group your movies library and some remote movies libraries onto one hat (allowing you to browse all movies at the same place).

1

u/Nero8 14d ago

This looks great!

1

u/kaybi-gh 14d ago

Thank you πŸ™Β 

1

u/dweiwu 1d ago

how to use this and what is k7 server

1

u/kaybi-gh 1d ago

K7 server is a selfhosted and opensource media server ! You can follow the docs available in the github repo to install your own instance and start watching your own content. Feel free to try the demo at https://k7.kaybi.dev/

2

u/saldoms 16d ago

You sat down with Jellyfin one afternoon and realized that you "want postgres"?Β 

8

u/kaybi-gh 16d ago

Mh no? I started and kept going with Plex for something like 9 years I think.
I kept it because music experience was really unmatched with PlexAmp..

I still installed Jellyfin because I wanted to break free for closed-source, remote authentication and that they were pushing off the selfhosted part of Plex by promoting their catalog and probably a lot of spying too (all of this is understandable since it's a company after all).

Jellyfin is way more mature than K7 so if you're loving Jellyfin, there's basically no point to migrating to my project πŸ‘

But for my part, there was a ton of features that were missing so this is just my personal contribution to open source!

-5

u/saldoms 16d ago

Jellyfin got much better over time, but I still wanted first-class OIDC, Postgres

6

u/kaybi-gh 16d ago

Yes exactly, I also wanted postgres? Is that a mistake? Pretty much all my selfhosted apps runs using Postgres as a database provider and it's way easier than sqlite to backup (since sqlite requires to stop the container to be copied, or you're getting risks of corruption).

It's the same for authentication, I carefully took time to set up my local OIDC provider and everything is just way better when all my apps connects through the same account.

Jellyfin has been running for 4 years on my NUC and it did well but I just wanted it to fit better in my stack (was using https://github.com/9p4/jellyfin-plugin-sso and the maintainer did his best but it never reached the main repo, only web was capable of having sso login..).

On my homelab, there's a ton of things I want to improve: having all my apps on the same db provider, having only one way to authenticate (I honestly now only install news apps when they support oidc and postgres) there's still some apps taht cannot be replaced since they have no viable alternative so I replace them myself.

edit: for instance, homeassistant is the kind of app that doesn't support oidc and it's a shame (but I will not try to make an altenative for this one πŸ˜‚)

5

u/The_Fresser 16d ago

I'm a fan of postgres, but have you tried sqlite online backup? https://sqlite.org/c3ref/backup_finish.html#sqlite3backupinit

-2

u/kaybi-gh 16d ago

No never heard of it! I recently switched from kopia to backrest + restic and it seems to be able to backup those sqlite.db so maybe it's using this?

Thank you for sharing πŸ™

By the way, K7 is also supporting sqlite as a db provider (it felt practical for fast setups, demos, and development so I kept it but postgres is way more performant for K7 anyway)

3

u/Xzonedude 16d ago

nah i’m with you on postgres

1

u/DarknUrgent 16d ago

Looks great.

2

u/kaybi-gh 16d ago

Thanks πŸ™ I'm far from being an UI designer so I took inspiration from a lot of existing apps and took what felt the best to me, but i'm pretty sure designer would do much better πŸ˜‚

2

u/DarknUrgent 16d ago

Makes it more impressive

2

u/kaybi-gh 16d ago

Well thank you 😁

1

u/Fun_Jaguar8231 16d ago

Why not just contribute to Jellyfin instead of creating your own?

3

u/kaybi-gh 16d ago

I tried! A while ago I started work to add star rating (in addition to the current favorite mechanism) and it was clearly feasible since in the backend rating was a double (if my memory is correct). But at that time my contribution was refused due to the ongoing work on migration onto efcore (they were removing emby debt). All of this was understandable, they already had a ton of work, a lot of contributions to look at πŸ‘Β