I installed Jellyfin on Kali Linux. Here’s how it really went

I’m Kayla. I love free stuff that just works. Jellyfin does that. But on Kali? I had questions. So I tried it on my own gear and kept notes. I later turned those notes into a full guide—read the complete walkthrough with extra screenshots if you prefer a more step-by-step approach.

Short answer: it works. It’s fast. It’s also a tiny bit quirky on Kali. I’ll show you what I ran, what broke, and what I fixed. For a broader look at how other Linux distros handle everyday apps, my go-to resource is Desktop Linux Reviews — worth a peek if you’re comparing options. Their recent piece on FydeOS, for example, walks you through the entire download process and got me curious about Chrome-OS-style setups—check it out here.

My setup (so you know I actually did this)

  • Laptop: ThinkPad T480, i5-8350U, 16 GB RAM
  • OS: Kali rolling (fresh install, 2024)
  • Storage: a 2 TB USB drive named “SeagateMovies”
  • Network: wired at first, then Wi-Fi
  • Clients: Android TV (Jellyfin app), iPhone Safari, and a cheap Roku stick

The quick path that worked for me

I went with the official Jellyfin Debian repo (the process is also outlined in Jellyfin’s general installation guide). Yes, it says Debian “bookworm.” Kali is rolling, but this still worked fine on my box. I only used it for Jellyfin. I didn’t pull my whole system from that repo.

Here are the exact commands I ran:

sudo apt update
sudo apt install -y curl gnupg ca-certificates

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/jellyfin.gpg > /dev/null

echo "deb [signed-by=/etc/apt/keyrings/jellyfin.gpg arch=$(dpkg --print-architecture)] https://repo.jellyfin.org/debian bookworm main" | sudo tee /etc/apt/sources.list.d/jellyfin.list

sudo apt update
sudo apt install -y jellyfin jellyfin-ffmpeg

sudo systemctl enable --now jellyfin
sudo systemctl status jellyfin --no-pager

Then I opened a browser and went to:

http://localhost:8096

If I was on another device, I used my laptop’s IP:

http://192.168.1.50:8096

Did it load? Yep. First try.

Setup felt smooth, even on Kali

The first-run wizard was simple. I made an admin user. I added my media.

My movies lived at:

/media/kayla/SeagateMovies/Movies
/media/kayla/SeagateMovies/Shows

Jellyfin scanned fast. About 15 minutes for ~600 movies and a bunch of TV. Thumbnails took longer. I let it run at night so my fan didn’t scream while I worked.

Tip: Settings > Scheduled Tasks. I pushed the heavy jobs to 2 AM. My laptop thanked me.

Small snags I hit (and how I fixed them)

  • Media permissions were grumpy

    • Symptom: Jellyfin saw the folder but said “no files.”
    • Fix: I gave Jellyfin read rights. I kept it simple:
      sudo setfacl -R -m u:jellyfin:rx /media/kayla/SeagateMovies
      sudo systemctl restart jellyfin
      

      After that, the scan worked.
      If your library lives behind a maze of symbolic links, you might also like this deep-dive on safely deleting symlinks in Linux—handy before you start cleaning things up.

  • Port stuff

    • I didn’t have a firewall on yet. If you use UFW:
      sudo apt install -y ufw
      sudo ufw allow 8096/tcp
      sudo ufw allow 8920/tcp   # HTTPS if you set it later
      
    • If 8096 is taken, you can change it in Dashboard > Networking.
  • Repo worry on Kali

    • I was nervous using a Debian repo on Kali. So I kept it tight. I installed only jellyfin and jellyfin-ffmpeg from that repo. I didn’t run big upgrades off it. No weird package mess for me.

Playback and real-life use

  • Android TV app: worked great. Direct play for 1080p. Instant.
  • iPhone Safari: 4K HEVC needed transcoding for my older phone. It still played fine.
  • Roku stick: slower to start, but steady. Subtitles synced well.

I streamed a 20 GB 4K file to my TV while copying files over Wi-Fi. No stutter. That was a nice surprise.

Hardware acceleration: worth the 5 minutes

My Intel iGPU (UHD 620) helped a lot. Software transcode made my CPU hot. Hardware made it chill (for deeper tweaks, Jellyfin documents Intel VAAPI setup here).

What I installed:

sudo apt install -y vainfo intel-media-va-driver-non-free
sudo usermod -aG video,render jellyfin
sudo systemctl restart jellyfin
vainfo | head

Then I went to Dashboard > Playback and enabled VAAPI. I picked:

  • VAAPI device: /dev/dri/renderD128
  • Allowed H.264/H.265 both

Result? A 4K HEVC file to my iPad dropped CPU from ~350% to ~60%. Fans calmed down. You know what? That alone made me smile.

Note: NVIDIA folks, you’ll want the NVIDIA driver first. VAAPI can work via nvidia-vaapi-driver in some cases, but NVENC is a whole thing. If that sounds messy, Docker may be easier.

First-time polish I liked

  • OpenSubtitles plugin worked after I added my login. Handy for old films.
  • Theme music plugin was cute. Not needed, but it made my TV folder feel fancy.
  • The web app is quick. Even on Kali, the UI felt snappy.

Things I didn’t love

  • Using “bookworm” on Kali feels odd. It worked, but I kept an eye out.
  • Thumbnails can be heavy on laptops. Schedule them or your fan will howl.
  • A USB drive can sleep. Scans will pause. I turned off sleep on my Seagate with the vendor tool.

If the repo path gives you grief: Docker plan B

I tested Docker too. It’s clean on Kali and keeps Jellyfin in a box.

sudo apt update
sudo apt install -y docker.io docker-compose-plugin
sudo usermod -aG docker $USER
newgrp docker

mkdir -p ~/jellyfin/{config,cache,media}

compose.yml:

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    user: 1000:1000
    volumes:
      - ~/jellyfin/config:/config
      - ~/jellyfin/cache:/cache
      - ~/jellyfin/media:/media
      - /dev/dri:/dev/dri
    ports:
      - 8096:8096
      - 8920:8920
    restart: unless-stopped

Then:

docker compose up -d

This ran the same for me, and VAAPI still worked with /dev/dri passed through.

Little extras that helped

  • Remote access: I used Tailscale. No port forward. My phone could stream from anywhere.
  • Backups: I zipped /var/lib/jellyfin before updates. It saved my layouts once.
  • Library hygiene: I kept folders tidy (MovieName (Year)/MovieName.mkv). Matching got way better.
  • Social watching: Some folks set up Jellyfin so they can stream movies to a date or keep a long-distance arrangement fun. If you’re in that boat and want a dedicated place to talk, the Sugar Daddy Chat community offers real-time messaging where you can coordinate movie nights and handle the relationship side of things, all without clogging up your tech channels. If you’re closer to the Kannapolis area and prefer a straightforward classifieds board to meet casual viewing partners, check out the listings on Backpage Kannapolis where you can post or browse local ads for company, making it easy to keep your Jellyfin nights lively without the usual dating-app fuss.

Final take

Installing Jellyfin on Kali surprised me. It was easy, fast, and stable. The repo choice felt weird at first, but real talk—it worked fine on my rig. If that makes you uneasy, Docker is a solid backup.

Would I do it again on Kali? Yes. For a home server? Also yes. It’s free,