Containerized Media Management: Deploying Seerr for Automated Discovery and API-Driven Workflows


Containerized Media Management: Deploying Seerr for Automated Discovery and API-Driven Workflows

seerr-team/seerr

2026-02-23

If you’re running a media server, you know the headache of friends texting you at 2 AM asking, "Hey, can you add the latest season of that one show?" Seerr solves that by providing a beautiful, automated interface for those requests.

From an architecture perspective, Seerr is brilliant because it acts as a centralized orchestrator. Instead of giving everyone access to your backend (Plex/Jellyfin) or your "arr" apps (Sonarr/Radarr), you give them a safe, read-only frontend.

Decoupling
Users interact with Seerr; Seerr talks to the APIs of your other services.

Authentication
It integrates with Plex/Jellyfin, so users don't need a new set of credentials.

Automation
Once a request is approved, it automatically sends the instructions to your download clients. No manual clicking required.

As engineers, we love containers. It keeps the environment clean and makes updates a breeze. Here is a standard docker-compose.yml snippet to get you started.

services:
  seerr:
    image: fallenbagel/jellyseerr:latest # Using Jellyseerr for Jellyfin/Plex compatibility
    container_name: jellyseerr
    environment:
      - LOG_LEVEL=info
      - TZ=Asia/Tokyo
    volumes:
      - /path/to/appdata/config:/app/config
    ports:
      - 5055:5055
    restart: unless-stopped

Steps to deploy

Save the code above to a file.

Run docker-compose up -d.

Open your browser and head to http://localhost:5055.

If you want to build custom scripts (e.g., a Telegram bot that checks request status), Seerr has a robust API. Here’s a quick Python example of how you might fetch all pending requests

import requests

# Your Seerr URL and API Key (found in Settings > General)
BASE_URL = "http://your-server-ip:5055/api/v1"
API_KEY = "your_super_secret_api_key"

headers = {
    "X-Api-Key": API_KEY,
    "Content-Type": "application/json"
}

def get_pending_requests():
    response = requests.get(f"{BASE_URL}/request?take=10&skip=0&filter=pending", headers=headers)
    if response.status_code == 200:
        requests_data = response.json().get('results', [])
        for req in requests_data:
            print(f"User requested: {req['media']['externalServiceId']} - Status: {req['status']}")
    else:
        print(f"Error: {response.status_code}")

get_pending_requests()

Notifications
Use the "Notifications" feature to link it to Discord or Slack. You'll get a ping the second a friend requests a movie.

Auto-Approve
You can set rules so that trusted users (like yourself) get their requests approved and sent to the download queue instantly, while others require your manual "OK."

Discovery
It’s not just for requests! It has a "Trending" and "Recommended" section that helps you find what to watch next based on your current library.

It's essentially the "Glue" that makes a DIY media server feel like a professional Netflix-style experience.


seerr-team/seerr




Simplifying LLM Tooling with IBM's mcp-context-forge

Think of mcp-context-forge as a central hub for your Large Language Model (LLM) applications. In a typical setup, your LLM might need to access various tools


Integration Testing Solved: Using Testcontainers for Disposable Database Instances in JUnit

Testcontainers is a Java library that allows you to easily spin up real services (like databases, message brokers, web browsers


Beyond Budgeting: Exploring Firefly III's Tech Stack for Developers

Firefly III is an open-source tool that uses double-entry bookkeeping to help you track your finances. While its primary purpose is finance management


containerd: The Engine Driving Modern Container Runtimes

containerd is a core container runtime that manages the complete container lifecycle of its host system. It's an open-source project donated to the Cloud Native Computing Foundation (CNCF) and provides a robust


Moby Project: Your Gateway to Custom Containerization

Here's how Moby can be incredibly useful from a software engineer's perspective, along with how to get started and some conceptual code examples


Architecting Autonomous Chatbots: A Deep Dive into AstrBot, Docker, and Python Plugins

Think of it as the "Swiss Army Knife" for building AI agents that actually live where people talk—whether that's Discord


LizardByte/Sunshine: The Open-Source Game Streaming Host

Sunshine is a self-hosted game stream host designed to work with clients like Moonlight. Think of it as a server-side application that captures your desktop


The API-First Note-Taking Solution: Why Engineers are Switching to Memos

Memos is essentially a "lightweight self-hosted micro-blogging" platform. Think of it as a private, open-source version of Twitter (X) or Google Keep


From Cloud to Edge: How WasmEdge Empowers Next-Gen Application Development

Imagine a scenario where your code runs almost anywhere, incredibly fast, and with a tiny memory footprint. That's essentially what WasmEdge offers


The Engineer's Blueprint: Deep Diving into Docker, Kafka, and the DataTalksClub Course

Think of Data Engineering as the "plumbing" of the tech world. Without it, even the most advanced AI models are just Ferraris with no fuel