svtplayarr Docker Image Size (tag) Build and Publish Docker Image

*arr stack integration for SVT Play and NRK (Swedish and Norwegian public broadcaster streaming services)

Overview

SVTPlayArr is a service that integrates SVT Play and NRK (the respective public broadcaster streaming services for Sweden and Norway) with your *arr stack. When content is requested through Jellyseerr or Overseerr and is available on SVT Play or NRK, it will be automatically downloaded using svtplay-dl.

Features

Installing

Docker Compose:

Chose a container registry:

Docker Hub:

services:
  svtplayarr:
    image: username/svtplayarr:latest
    # ... rest of config

GitHub Container Registry:

services:
  svtplayarr:
    image: ghcr.io/username/svtplayarr:latest
    # ... rest of config

Quick Start

  1. Copy the environment file:
    cp .env.example .env
    
  2. Edit .env with your *arr stack configuration:
    # Required
    SONARR_API_KEY=your_api_key
    RADARR_API_KEY=your_api_key
       
    # Paths
    MOVIES_PATH=/path/to/movies
    TV_PATH=/path/to/tv
    
  3. Start the service:
    docker-compose up -d
    
  4. Configure Jellyseerr/Overseerr webhook (see Webhook Setup section below)

Webhook URL Configuration

The webhook URL depends on your setup:

Configuration

Environment Variables

Variable Description Default
SONARR_API_KEY Sonarr API key Required
SONARR_URL Sonarr URL http://sonarr:8989
RADARR_API_KEY Radarr API key Required
RADARR_URL Radarr URL http://radarr:7878
MOVIES_PATH Movies download path /downloads/movies
TV_PATH TV shows download path /downloads/tv
LOG_LEVEL Logging level INFO

SVTPlay-dl Options

svtplay-dl options are configurable via the config/config.yml file:

svtplay_dl:
  quality: "best"          # Video quality
  subtitle: true           # Download subtitles
  force_subtitle: false    # Force subtitle download
  remux: false            # Remux to mkv
  merge_subtitle: false   # Merge subtitles into video
  thumbnail: false        # Download thumbnails

API Endpoints

GET /health

Health check endpoint

POST /webhook

Jellyseerr/Overseerr webhook endpoint

GET /webhook/test

Shows webhook format examples and test information

GET /search?title=&type=<tv|movie>

Search for content manually

GET /config

Get current configuration

POST /config

Update configuration

Docker Compose Integration

version: '3.8'

services:
  svtplayarr:
    build: .
    container_name: svtplayarr
    restart: unless-stopped
    ports:
      - "2626:2626"
    volumes:
      - ./config:/config
      - /path/to/movies:/downloads/movies
      - /path/to/tv:/downloads/tv
    environment:
      - SONARR_API_KEY=your_key
      - RADARR_API_KEY=your_key
    networks:
      - arr-network

networks:
  arr-network:
    external: true

Jellyseerr/Overseerr Webhook Setup

The webhook URL depends on your Docker setup:

  1. Go to Jellyseerr/Overseerr Settings → Notifications
  2. Add a new Webhook notification
  3. Set URL to: http://svtplayarr:2626/webhook
  4. Enable for “Media Requested” events
  5. Set request types to both Movies and TV Shows

Scenario 2: Jellyseerr/Overseerr on host, SVTPlayArr in Docker

  1. Use URL: http://localhost:2626/webhook
  2. Ensure port 2626 is exposed (already configured in docker-compose.yml)

Scenario 3: Different Docker networks

  1. Use URL: http://<host-ip>:2626/webhook where <host-ip> is your Docker host IP
  2. Alternative: Connect containers to same network

Scenario 4: Testing webhook manually

curl -X POST http://localhost:2626/webhook \
  -H "Content-Type: application/json" \
  -d '{"media":{"title":"Example Show","mediaType":"tv"}}'

Requirements

Troubleshooting

Logs

docker-compose logs -f svtplayarr

Test Connection

curl http://localhost:2626/health

Test Webhook Format

curl http://localhost:2626/webhook/test
curl "http://localhost:2626/search?title=Example%20Show&type=tv"

Building

Local Build

# Build locally
make build

# Test locally
make test

# Run production
make run