← Back to list

I Cancelled Every Streaming Subscription. This 10-Year-Old i5 Replaced Them All.

The breaking point was a Friday night.

Sidharth kumar samal · 2026-04-17 17:16 · 22 claps · 3.0 min read
#self-hosting #privacy #media-server #jellyfin #docker
Open on Medium ↗
Wiki topics: ☁️ · DevOps & Cloud 🔒 · Cybersecurity 🎬 · Film & Television

I Cancelled Every Streaming Subscription. This 10-Year-Old i5 Replaced Them All.

The breaking point was a Friday night.

I sat on my couch, remote in hand, scrolling through four different streaming apps. I was looking for one specific movie.

  • App 1: “Not available in your region.”
  • App 2: “Available for rent (₹150).”
  • App 3: “Leaving the platform in 2 days.”
  • App 4: “Only available with the ‘Premium 4K’ tier.”

I looked at my bank statement. Between Netflix, Prime, Disney+, and a few others, I was paying nearly ₹2,000 every single month. I was paying a “Streaming Tax” for the privilege of searching for content I couldn’t actually watch.

The “E-Waste” Solution

I walked over to my closet and pulled out a dusty Intel i5–3317U Mini Pc. It was from 2013. It had 4GB of RAM and a battery that lasted exactly twelve minutes. Most people would have dropped it off at an e-waste center years ago.

I saw a high-performance, 24/7 automation beast.

I didn’t need a ₹1,00,000 rack-mounted server. I didn’t need a “Pro” subscription to another cloud service. I just needed a 1TB hard drive, a handful of Docker containers, and a weekend to architect my own “Invisible Netflix.”

🛠️ Step-by-Step: Building Your 1TB Automated Media Empire

Prerequisites

  • OS: Ubuntu 20.04+ installed.
  • Hardware: Any old PC (I used an i5 with 4GB RAM).
  • Docker: Installed and running (sudo apt install docker-compose).
  • Domain: A domain managed by Cloudflare (e.g., yourdomain.com).

Step 1: Structure Your File System

For the “Arr” stack to work without errors, your folder structure is everything. We use a “Atomic Move” structure to enable Hardlinks.

# Create the root media directory on your 1TB drive
mkdir -p /mnt/1tb_hdd/media/{downloads,movies,tv}

# Create the config directory for Docker
mkdir -p ~/media-stack
cd ~/media-stack

Step 2: The Master Docker-Compose

Create a file named docker-compose.yml. This configuration is optimized for low-RAM systems.

services:
  # Search & Indexing
  prowlarr:
    image: lscr.io/linuxserver/prowlarr:latest
    container_name: prowlarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Kolkata
    volumes:
      - ./config/prowlarr:/config
    ports:
      - 9696:9696
    restart: unless-stopped

  flaresolverr:
    image: ghcr.io/flaresolverr/flaresolverr:latest
    container_name: flaresolverr
    ports:
      - 8191:8191
    restart: unless-stopped

  # Content Management
  radarr:
    image: lscr.io/linuxserver/radarr:latest
    container_name: radarr
    volumes:
      - ./config/radarr:/config
      - /mnt/1tb_hdd/media:/media
    ports:
      - 7878:7878
    restart: unless-stopped

  sonarr:
    image: lscr.io/linuxserver/sonarr:latest
    container_name: sonarr
    volumes:
      - ./config/sonarr:/config
      - /mnt/1tb_hdd/media:/media
    ports:
      - 8989:8989
    restart: unless-stopped

  # The Player & Requests
  jellyfin:
    image: lscr.io/linuxserver/jellyfin:latest
    container_name: jellyfin
    volumes:
      - ./config/jellyfin:/config
      - /mnt/1tb_hdd/media/movies:/data/movies
      - /mnt/1tb_hdd/media/tv:/data/tv
    ports:
      - 8096:8096
    restart: unless-stopped

  jellyseerr:
    image: fallenbagel/jellyseerr:latest
    container_name: jellyseerr
    ports:
      - 5055:5055
    restart: unless-stopped

Run it: docker-compose up -d

Step 3: Connect the Brains (Prowlarr)

  1. Open [http://your-ip:9696.](http://your-ip:9696.)
  2. Go to Settings > Indexers. Add FlareSolverr as a proxy using [http://flaresolverr:8191.](http://flaresolverr:8191.)
  3. Add your favorite trackers (1337x, RuTracker).
  4. Go to Settings > Apps and add Radarr and Sonarr. Use their API keys found in their respective “Settings > General” tabs.

Step 4: Solving the “Download” Port Conflict

Since we use Filebrowser on 8080, we must shift qBittorrent.

  1. Open your qBittorrent container settings.
  2. Change the WebUI port to 8090.
  3. Crucial: In Radarr/Sonarr, go to Settings > Download Clients and add qBittorrent using port 8090 and the username admin (password found in your logs).

Step 5: Secure Remote Access (Cloudflare Tunnel)

This is how you request movies from your phone in Bhubaneswar without exposing your IP.

  1. Install cloudflared on your server.
  2. Run cloudflared tunnel login.
  3. Create a tunnel: cloudflared tunnel create media-tunnel.
  4. Map your domain in the Cloudflare Dashboard:
  • request.yourdomain.com -> http://localhost:5055 (Jellyseerr)
  • watch.yourdomain.com -> http://localhost:8096 (Jellyfin)

Step 6: Enable the “Digital Bouncer”

To ensure no one else can request movies on your server:

  1. Go to Cloudflare Zero Trust > Access > Applications.
  2. Create a “Self-Hosted” application for request.yourdomain.com.
  3. Set a policy to only allow Your Email.
  4. Now, you’ll receive an OTP (One-Time Password) via email every time you want to add a movie.

Jellyfin

Jellyfin

🏁 The Final Result

Open your browser, go to your new “Request” URL, search for a movie, and hit Request. Within minutes, Radarr will find it, qBittorrent will download it, and it will appear in your Jellyfin library — all while you are away from home.

Self-hosted. Automated. Secure.


메타데이터
post_id
e7e7dee77248
slug
i-cancelled-every-streaming-subscription-this-10-year-old-i5-replaced-them-all-e7e7dee77248
url
https://medium.com/@sidharthkumarsamal/i-cancelled-every-streaming-subscription-this-10-year-old-i5-replaced-them-all-e7e7dee77248
canonical_url
https://medium.com/@sidharthkumarsamal/i-cancelled-every-streaming-subscription-this-10-year-old-i5-replaced-them-all-e7e7dee77248
author_url
https://medium.com/@sidharthkumarsamal
status
ok
fetched_at
2026-08-18 11:45:58