Navigation
On this page

Docker Compose

Understanding the Mediabox MCP Docker Compose stack, its services, ports, volumes, and customization options.

Mediabox MCP runs as a multi-container Docker Compose stack. This page explains each service, its configuration, and how to customize the stack.

Service Overview

ServiceImageHost PortDescription
Jellyfinlscr.io/linuxserver/jellyfin8096Media streaming server
MCP ServerBuilt from ./mcp-server3000AI tool server (25 MCP tools)
Sonarrlscr.io/linuxserver/sonarr8989TV show management
Radarrlscr.io/linuxserver/radarr7878Movie management
qBittorrentlscr.io/linuxserver/qbittorrent8085BitTorrent client
PyLoadlscr.io/linuxserver/pyload-ng8001Direct download manager
Prowlarrlscr.io/linuxserver/prowlarr9696Indexer manager
FlareSolverrghcr.io/flaresolverr/flaresolverr8191Cloudflare bypass proxy

Optional Services

ServiceImagePortDescription
Telegram BotBuilt from ./mcp-telegram-clientTelegram interface for managing media via chat. Enabled during wizard setup.
Bazarrlscr.io/linuxserver/bazarr6767Automatic subtitle downloader. Enabled during wizard setup.

Caddy (reverse proxy) and Cloudflared (tunnel client) are added by the wizard when selecting VPS or Tunnel deployment modes respectively. They are not present in the base docker-compose.yml.

Ports

In local mode, services are accessible directly on their host ports:

http://localhost:8096   # Jellyfin
http://localhost:3000   # MCP Server
http://localhost:8989   # Sonarr
http://localhost:7878   # Radarr
http://localhost:8085   # qBittorrent
http://localhost:8001   # PyLoad
http://localhost:9696   # Prowlarr
http://localhost:8191   # FlareSolverr

In VPS mode, all ports are bound to 127.0.0.1 and accessed through Caddy subdomains (e.g., jellyfin.your-domain.com).

Volumes

Configuration Volumes

Each service stores its configuration in a subdirectory of ./config/:

Volume PathPurpose
./config/jellyfinJellyfin configuration, metadata, and database
./config/sonarrSonarr configuration and database
./config/radarrRadarr configuration and database
./config/qbittorrentqBittorrent configuration
./config/prowlarrProwlarr configuration and database
./config/pyloadPyLoad configuration

Media Volumes

Media files are stored in ./media/ and shared between Jellyfin, Sonarr, Radarr, and the MCP server:

media/
  movies/    # Movies (managed by Radarr)
  tv/        # TV shows (managed by Sonarr)
  anime/     # Anime
  music/     # Music

The ./downloads/ directory is used by qBittorrent and PyLoad for active downloads before they are imported.

Network Configuration

All services communicate over a shared Docker bridge network called mediabox-net. Services reference each other by container name (e.g., Sonarr connects to qBittorrent at http://qbittorrent:8085).

networks:
  mediabox-net:
    driver: bridge

Internal ports used for service-to-service communication:

ServiceInternal URL
Jellyfinhttp://jellyfin:8096
MCP Serverhttp://mcp-server:3000
Sonarrhttp://sonarr:8989
Radarrhttp://radarr:7878
qBittorrenthttp://qbittorrent:8085
PyLoadhttp://pyload:8000
Prowlarrhttp://prowlarr:9696
FlareSolverrhttp://flaresolverr:8191

Customization Tips

Changing Ports

To change a service’s host port, modify the ports mapping in docker-compose.yml:

services:
  jellyfin:
    ports:
      - "9096:8096"  # Changed from 8096 to 9096 on the host

GPU Transcoding (Jellyfin)

To enable hardware-accelerated transcoding in Jellyfin, pass through your GPU:

services:
  jellyfin:
    devices:
      - /dev/dri:/dev/dri  # Intel/AMD GPU
    # For NVIDIA, use the NVIDIA Container Toolkit instead

Restarting After Changes

After modifying docker-compose.yml, apply the changes:

docker compose up -d

Docker Compose will only recreate containers whose configuration has changed.