Deployment
How to deploy AIOStreams using Docker, ElfHosted, or from source.
Docker
Docker is the recommended way to run AIOStreams. Official images are published to both ghcr.io and Docker Hub.
Use the latest tag for the latest stable release, or nightly for the latest commit build.
Only BASE_URL and SECRET_KEY are required environment variables.
All others are optional. See the full list in Environment
Variables.
Rather than running this on a personal device, consider hosting on a server or VPS. You can use a free Oracle VPS or find cheap options on LowEndBox.
Docker Compose (recommended)
Download the compose file and sample env:
curl -O https://raw.githubusercontent.com/Viren070/AIOStreams/main/compose.yaml
curl -o .env https://raw.githubusercontent.com/Viren070/AIOStreams/main/.env.sampleEdit .env to set at minimum a SECRET_KEY (64-character hex string). See Environment Variables.
Start the container:
docker compose up -dOpen http://localhost:3000/stremio/configure to complete setup.
Traefik (HTTPS)
Stremio requires HTTPS for addons hosted outside of localhost. Traefik is a convenient reverse proxy that can obtain Let's Encrypt certificates automatically.
Requirements:
- A domain or subdomain with a CNAME/A record pointing to your server's public IP
- Port 443 open on the server
Free domains are available from DuckDNS and Afraid.org.
Merge the following into your compose.yaml, replacing aiostreams.example.com and youremail@example.com:
services:
aiostreams:
image: ghcr.io/viren070/aiostreams:latest
container_name: aiostreams
restart: unless-stopped
ports:
- 3000:3000
env_file:
- .env
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.aiostreams.rule=Host(`aiostreams.example.com`)'
- 'traefik.http.routers.aiostreams.entrypoints=websecure'
- 'traefik.http.routers.aiostreams.tls.certresolver=letsencrypt'
volumes:
- ./data:/app/data
traefik:
image: traefik:v3
container_name: traefik
restart: unless-stopped
ports:
- 443:443
command:
- '--providers.docker=true'
- '--providers.docker.exposedbydefault=false'
- '--entryPoints.websecure.address=:443'
- '--certificatesresolvers.letsencrypt.acme.tlschallenge=true'
- '--certificatesresolvers.letsencrypt.acme.email=youremail@example.com'
- '--certificatesresolvers.letsencrypt.acme.storage=/config/acme.json'
volumes:
- '/var/run/docker.sock:/var/run/docker.sock'
- './traefik:/config'Then run docker compose up -d.
Torrentio / strem.fun blocks
Torrentio and other strem.fun addons block certain server IP ranges (e.g. Oracle VPS), causing 403 errors. You can work around this with a VPN via gluetun:
ADDON_PROXY=http://gluetun:8080
ADDON_PROXY_CONFIG=*:false,*.strem.fun:trueMulti-addon Compose
For a full compose template that includes popular self-hosted addons (Jackett, Prowlarr, etc.), see Viren070/stremio-addons-docker-compose-template.
Docker CLI
# GitHub Container Registry
docker run -p 8080:3000 \
-e BASE_URL=http://localhost:8080 \
-e SECRET_KEY=Your64CharacterHexKeyGoesHere \
-v aiostreams-data:/app/data \
ghcr.io/viren070/aiostreams:latest
# Docker Hub
docker run -p 8080:3000 \
-e BASE_URL=http://localhost:8080 \
-e SECRET_KEY=Your64CharacterHexKeyGoesHere \
-v aiostreams-data:/app/data \
viren070/aiostreams:latestPass additional environment variables with -e:
docker run -p 8080:3000 \
-e BASE_URL=http://localhost:8080 \
-e SECRET_KEY=... \
-e LOG_LEVEL=debug \
viren070/aiostreams:latestTo build from source instead of using a prebuilt image:
git clone https://github.com/Viren070/AIOStreams.git
cd AIOStreams
docker build -t aiostreams .
docker run -p 8080:3000 \
-e BASE_URL=http://localhost:8080 \
-e SECRET_KEY=Your64CharacterHexKeyGoesHere \
aiostreamsElfHosted (paid, managed)
Using the link below supports the project — 33% of your AIOStreams subscription goes to the author.
AIOStreams is available as a paid product on ElfHosted. Private instances have Torrentio enabled, avoid rate-limits, and require no self-hosting knowledge.
Other free platforms
These platforms offer free tiers that can run AIOStreams, but they are not permanent solutions — they can be revoked or stop working at any time:
| Platform | Notes |
|---|---|
| Hugging Face | Requires a custom Dockerfile setting ENV PORT=7860 |
| Koyeb | Free tier available |
| Render | Free tier available |
From source
Node.js v22 and pnpm v10.15 were used during development. Earlier versions may not work.
Clone the repository:
git clone https://github.com/Viren070/AIOStreams.git
cd AIOStreamsInstall dependencies:
pnpm installBuild the project:
pnpm run build
pnpm run metadata --channel=nightlyStart the server:
pnpm run startOpen http://localhost:3000/stremio/configure.
Change the PORT environment variable to use a different port.