How to Self-Host Stremio Server with Docker Compose

What Is Stremio Server?

Stremio Server is the backend streaming component of Stremio, packaged as a standalone Docker container. It handles media transcoding via FFmpeg, addon communication, and stream delivery. Self-hosting the server component lets you run your own streaming backend independently of the Stremio desktop app — useful for headless servers, remote streaming, or integrating Stremio’s transcoding into your media stack. Official repo.

Prerequisites

  • A Linux server (Ubuntu 22.04+ recommended)
  • Docker and Docker Compose installed (guide)
  • 500 MB of free disk space for the application
  • 1 GB of RAM minimum (2 GB recommended for transcoding)
  • A domain name (optional, for remote access)

Docker Compose Configuration

Create a directory for Stremio Server and a docker-compose.yml file:

mkdir -p ~/stremio-server && cd ~/stremio-server
services:
  stremio-server:
    image: stremio/server:v4.20.16
    container_name: stremio-server
    ports:
      - "11470:11470"
      - "12470:12470"
    volumes:
      - stremio_data:/root/.stremio-server
    environment:
      - NO_CORS=0
    restart: unless-stopped

volumes:
  stremio_data:

Start the stack:

docker compose up -d

Initial Setup

  1. The server starts automatically and listens on port 11470 (HTTP) and 12470 (HTTPS)
  2. Open http://your-server-ip:11470 to verify the server is running
  3. Point your Stremio client (desktop, mobile, or web) to your server URL
  4. In the Stremio app settings, set the streaming server to http://your-server-ip:11470

Configuration

SettingEnvironment VariableDefaultDescription
CORSNO_CORS0Set to 1 to disable CORS checks (needed for some client configurations)
App pathAPP_PATH/root/.stremio-serverCustom path for settings and certificates
FFmpegFFMPEG_BINbundledCustom FFmpeg binary path (image includes Jellyfin FFmpeg 4.4.1-4)
FFprobeFFPROBE_BINbundledCustom FFprobe binary path

Ports

PortProtocolPurpose
11470HTTPMain API and streaming endpoint
12470HTTPSSecure API and streaming endpoint

The HTTPS endpoint uses a self-generated certificate stored in the data volume. For production use behind a reverse proxy, use the HTTP port and terminate SSL at the proxy.

Using Host FFmpeg

If you prefer using your host’s FFmpeg installation (for hardware acceleration support), mount it into the container:

    volumes:
      - stremio_data:/root/.stremio-server
      - /usr/bin/ffmpeg:/usr/bin/ffmpeg:ro
      - /usr/bin/ffprobe:/usr/bin/ffprobe:ro
    environment:
      - FFMPEG_BIN=/usr/bin/ffmpeg
      - FFPROBE_BIN=/usr/bin/ffprobe

Reverse Proxy

Example Nginx Proxy Manager configuration:

  • Scheme: http
  • Forward Hostname: stremio-server
  • Forward Port: 11470
  • Enable WebSocket support for streaming

See Reverse Proxy Setup for full configuration guides.

Backup

Back up the stremio_data volume — it contains server settings, generated certificates, and cache data.

See Backup Strategy for automated approaches.

Troubleshooting

Client Cannot Connect to Server

Symptom: Stremio app shows “Server not available” when pointing to your server URL. Fix: Verify the server is running: curl http://localhost:11470. Check that port 11470 is open in your firewall. If connecting remotely, ensure port forwarding or reverse proxy is configured.

Transcoding Failures

Symptom: Streams fail to play or show codec errors. Fix: Check server logs: docker compose logs stremio-server. The bundled FFmpeg (Jellyfin FFmpeg 4.4.1-4) may not support all codecs. Mount a newer host FFmpeg binary if needed.

High Memory Usage During Streaming

Symptom: Container uses excessive RAM when multiple streams are active. Fix: Stremio Server transcodes in real-time, which is memory-intensive. Limit concurrent streams by restricting client connections or increase available RAM.

CORS Errors in Web Client

Symptom: Stremio Web shows CORS-related errors in the browser console. Fix: Set NO_CORS=1 in the environment variables to disable CORS checking. This is required when accessing the server from a different domain than where it’s hosted.

Resource Requirements

  • RAM: ~100 MB idle, 500 MB-2 GB during active transcoding
  • CPU: High during transcoding (depends on codec and resolution), low when idle
  • Disk: ~200 MB for application, plus cache space for active streams

Verdict

Stremio Server is a niche tool — it’s specifically the backend component of the Stremio ecosystem, not a standalone media server. If you already use Stremio clients and want to self-host the streaming backend instead of relying on Stremio’s servers, this is the way to do it. For a general-purpose self-hosted media server, Jellyfin is a far better choice with a complete web UI, mobile apps, and active community. Stremio Server is for users who specifically want Stremio’s addon-based streaming model with a self-hosted backend.

Frequently Asked Questions

Is Stremio Server a full media server like Jellyfin?

No. Stremio Server is specifically the backend streaming and transcoding component of the Stremio ecosystem. It doesn’t have its own media library, web UI for browsing content, or user management. For a complete self-hosted media server, use Jellyfin or Plex.

Do I need Stremio Server if I use the desktop app?

Not necessarily. The Stremio desktop app includes a built-in server component. Self-hosting the server separately is useful for headless servers, remote streaming from a central server, or running the backend independently of any desktop client.

Does Stremio Server support hardware transcoding?

The bundled FFmpeg (Jellyfin FFmpeg 4.4.1-4) supports software transcoding. For hardware transcoding (NVIDIA NVENC, Intel Quick Sync, AMD VCE), mount a newer FFmpeg binary from the host with hardware acceleration support and pass through the GPU device to the container.

Can multiple users stream from one Stremio Server?

Yes, but concurrent transcoding is resource-intensive. Each active transcode stream uses significant CPU and RAM. A 2-core server can typically handle 1-2 simultaneous transcodes; more streams require more CPU.

What ports does Stremio Server use?

Port 11470 for HTTP and port 12470 for HTTPS. The HTTPS endpoint uses a self-generated certificate. In production behind a reverse proxy, use the HTTP port (11470) and terminate SSL at the proxy level.

Is Stremio Server open source?

The server Docker image is published by Stremio, but the server code itself is not fully open source. The Docker packaging and configuration is available on GitHub. Stremio’s addon SDK is open source, but the core server and client are proprietary.

Comments