docker image for Stremio server and web player updated daily with latest development versions
500K+
Stremio is a free application which lets you stream your favorite shows and movies.
The Docker images in this repository bundle stremio-server, ffmpeg and web player for you, ready to use in a small Alpine image.
I built this to run Stremio on my Raspberry Pi 5 and couldn't find something that has both player and server but also the official image seemed too big but also lacks the Web Player and doesn't work out of the box if no HTTPS is configured.
AUTO_SERVER_URL or SERVER_URL to automatically configure the streaming server URL in the web player.IPADDRESS is provided.amd64, arm/v6, arm/v7, arm64/v8, and ppc64le.docker / docker compose commands apply. On macOS, Docker pulls the matching image for your Mac: Intel (linux/amd64) or Apple Silicon (M series) (linux/arm64).amd64 image and Apple Silicon (M series) use the arm64 image; Docker Desktop selects the correct architecture automatically.curl -sSL https://get.docker.com | sh
sudo usermod -aG docker $(whoami)
exit
And log in again.
docker or docker compose.Option A: Using Docker Compose (Recommended)
# Clone the repository
git clone https://github.com/tsaridas/stremio-docker.git
cd stremio-docker
# Edit compose.yaml if needed, then run:
docker compose up -d
The compose file includes common settings like NO_CORS: 1 and AUTO_SERVER_URL: 1.
Option B: Using Docker Run
docker run -d \
--name=stremio-docker \
-e NO_CORS=1 \
-e AUTO_SERVER_URL=1 \
-v ./stremio-data:/root/.stremio-server \
-p 8080:8080/tcp \
--restart unless-stopped \
tsaridas/stremio-docker:latest
The Web UI will now be available on http://<YOUR_SERVER_IP>:8080. The streaming server will be auto-configured for you from the URL of the browser you are using to open it.
💡 Your configuration files and cache will be saved in
./stremio-dataon your host machine.
These options can be configured by setting environment variables using -e KEY="VALUE" in the docker run command.
| Env | Default | Example | Description |
|---|---|---|---|
IPADDRESS | - | 192.168.1.10 | Set this to a valid IPv4 in order to enable https and generate certificates with stremio domain. If you set this to 0-0-0-0 it will try to automatically get your public ip. Getting the public ip and DNS is not reliable and might need multiple retries. It will not work for IPv6 |
SERVER_URL | - | http://192.168.1.10:11470/ | Manually sets the streaming server URL. This is useful when you want to force a specific URL. |
AUTO_SERVER_URL | 0 | 1 | When set to 1, the streaming server URL is automatically detected from the browser's URL. This is the recommended setting for most users. |
NO_CORS | 1 | 0 | Set to enable server's cors. Default is disabled. |
CASTING_DISABLED | - | 1 | Set to disable casting. You should set this to 1 if you're getting SSDP errors in the logs |
WEBUI_LOCATION | - | http://192.168.1.10:8080 | Sets the redirect page for web player and automatically sets up streaming server for you when one tries to access server at port 11470 or 12470. Default is https://app.strem.io/shell-v4.4/ |
WEBUI_INTERNAL_PORT | 8080 | 9090 | Sets the port inside the docker container for the web player |
FFMPEG_BIN | - | /usr/bin/ | Set for custom ffmpeg bin path |
FFPROBE_BIN | - | /usr/bin/ | Set for custom ffprobe bin path |
APP_PATH | - | /srv/stremio-path/ | Set for custom path for stremio server. Server will always save cache to /root/.stremio-server though so it's only for its config files. |
DOMAIN | - | your.custom.domain | Set for custom domain for stremio server. Server will use the specified domain for the web player and streaming server. This should match the certificate and cannot be applied without specifying CERT_FILE |
CERT_FILE | - | certificate.pem | Set for custom certificate path. The server and web player will load the specified certificate. |
USERNAME | - | myusername | Set for custom username for http simple authentication. |
PASSWORD | - | Mypassword | Set for custom password for http simple authentication. |
DISABLE_CACHING | - | 1 | Disable caching for server if set to 1. |
There are multiple other options defined but probably best not setting any.
Here are some common ways to configure and use this Docker image.
This is the easiest option and works on your local network without needing a public IP or DNS.
IPADDRESS environment variable.NO_CORS=1 to allow the web player to connect to the server.AUTO_SERVER_URL=1 to automatically set the server URL.docker run -d \
--name=stremio-docker \
-e NO_CORS=1 \
-e AUTO_SERVER_URL=1 \
-p 8080:8080 \
tsaridas/stremio-docker:latest
Access Stremio at http://<YOUR_LAN_IP>:8080.
This option automatically gets a certificate for a *.stremio.rocks subdomain and points it to your public IP address.
IPADDRESS=0.0.0.0 to auto-detect your public IP.8080 and configure port forwarding on your router.docker run -d \
--name=stremio-docker \
-e IPADDRESS=0.0.0.0 \
-e AUTO_SERVER_URL=1 \
-p 8080:8080 \
tsaridas/stremio-docker:latest
The container will generate a certificate and an A record for your public IP. To find the FQDN, look for a .pem file in your mounted volume (~/.stremio-server).
This is useful for accessing Stremio via HTTPS on your local network. It generates a certificate for a *.stremio.rocks subdomain that resolves to your private IP.
Set IPADDRESS to your server's private LAN IP (e.g., 192.168.1.10).
The container will generate a certificate for a domain like 192-168-1-10.519b6502d940.stremio.rocks. Find the exact FQDN from the .pem filename in your mounted volume.
Add an entry to your hosts file on your client machine to point the FQDN to your server's private IP.
/etc/hostsc:\Windows\System32\Drivers\etc\hosts192.168.1.10 192-168-1-10.519b6502d940.stremio.rocks
Run the container:
docker run -d \
--name=stremio-docker \
-e IPADDRESS=192.168.1.10 \
-e AUTO_SERVER_URL=1 \
-p 8080:8080 \
-v ./stremio-data:/root/.stremio-server \
tsaridas/stremio-docker:latest
Access Stremio at https://192-168-1-10.519b6502d940.stremio.rocks:8080.
If you have your own domain and SSL certificate, you can use them directly.
certificate.pem) in the directory you mount to /root/.stremio-server.DOMAIN and CERT_FILE environment variables.docker run -d \
--name=stremio-docker \
-e DOMAIN=your.custom.domain \
-e CERT_FILE=certificate.pem \
-e AUTO_SERVER_URL=1 \
-v ./stremio-data:/root/.stremio-server \
-p 8080:8080 \
tsaridas/stremio-docker:latest
The WebPlayer will be available at https://your.custom.domain:8080.
To update to the latest version, simply run:
docker stop stremio-docker
docker rm stremio-docker
docker pull tsaridas/stremio-docker:latest
And then run your docker run or docker compose up -d command again.
We build our own ffmpeg from the jellyfin repo (version 4.4.1-4), which includes:
On Linux, hardware acceleration is used when the GPU is available to the container. To enable it, you must expose your GPU device to the container.
Windows and macOS
Docker Desktop on Windows and macOS does not expose Linux VAAPI devices the way this image expects. Transcoding runs on the CPU; plan for higher CPU use than on a Linux host with GPU passthrough.
Support for Intel/AMD GPU Transcoding (VAAPI) — Linux only
If you have a supported Intel or AMD GPU on Linux, you can enable hardware transcoding by passing the dri device to the container:
Docker Compose:
services:
stremio:
# ... your other config
devices:
- "/dev/dri:/dev/dri"
Docker CLI:
docker run -d \
# ... your other flags
--device /dev/dri:/dev/dri \
tsaridas/stremio-docker:latest
Builds are created for the following architectures:
linux/amd64linux/arm/v6linux/arm/v7linux/arm64/v8linux/ppc64leImages are automatically built and tested on pull requests using GitHub Actions.
Build tags:
latest: Builds when a new version of the server or Web Player is released.nightly: Builds daily from the development branch of the web player.vX.X.X: Specific release versions.Images are hosted on Docker Hub.
Stremio's web app stores settings in the browser's local storage. You can pre-configure these settings by editing the localStorage.json file and mounting it into the container:
docker run -d \
# ... your other flags
-v /path/to/your/localStorage.json:/srv/stremio-server/build/localStorage.json \
tsaridas/stremio-docker:latest
The old Stremio shell files are available at http(s)://<your_url>/shell/. These may have issues with some content like YouTube videos.
Stremio can be heavy on DNS queries. It's recommended to use a local DNS cache like dnsmasq to improve performance.
The restart_if_idle.sh script can restart the Stremio server when it's not in use. You can add this as a healthcheck in your compose.yaml:
healthcheck:
test: ["CMD-SHELL", "./restart_if_idle.sh"]
interval: 1h
start_period: 1h
retries: 1
USERNAME and PASSWORD environment variables.IPADDRESS is set.NO_CORS=1.PRs and Issues are welcome. If you find an issue, please let me know.
Content type
Image
Digest
sha256:0d4a05746…
Size
79.9 MB
Last updated
about 20 hours ago
docker pull tsaridas/stremio-docker:nightly