Skip to content

Deployment

Viren070 edited this page Nov 8, 2025 · 18 revisions

This page covers the ways that this addon can be deployed.

Docker

Docker is a quick and convenient way to run this. Official images are available at the ghcr.io and docker.io registries.

You can use either the latest tag to get the latest stable release, or the nightly tag to get the latest build available - it builds off of every commit made to the repository.

Rather than running this on a personal device, you can follow these instructions to run it on a server or VPS. You can use a free VPS from Oracle for this, or some cheap ones found on LowEndBox.

Docker Compose

  1. Download the compose.yaml and .env.sample files:

    curl -O https://raw.githubusercontent.com/Viren070/AIOStreams/main/compose.yaml
    curl -o .env https://raw.githubusercontent.com/Viren070/AIOStreams/main/.env.sample
  2. Edit the .env file to your liking.

  3. Run the following command:

    docker compose up -d
  4. Access the addon at http://localhost:3000

Note

Torrentio and other strem.fun addons (Anime Kitsu, Torrent Catalogs) block certain server IP ranges from accessing the addon, like Oracle VPS. This causes 403 errors when attempting to create a user with these addons. There is no reliable workaround to this. You can try using a VPN via gluetun and hoping the VPN server you choose is not already blocked but it will likely become blocked.

Adjust your AIOStreams .env as follows

ADDON_PROXY=http://gluetun:8080
ADDON_PROXY_CONFIG=*:false,*.strem.fun:true
Example Compose
services:
  gluetun:
    image: qmcgaw/gluetun
    container_name: gluetun
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    environment: 
      - SETUPYOURVARS=HERE
     # See https://github.com/qdm12/gluetun-wiki/blob/main/setup/providers for details on how to set up your environment variables for your VPN provider.
    volumes:
      - ./gluetun:/gluetun
    healthcheck:
      test: ["CMD", "/gluetun-entrypoint", "healthcheck"]
      interval: 60s
      timeout: 5s
      retries: 3
      start_period: 1m

  # Use Gost as a proxy because its better.
  gost:
    image: ginuerzh/gost
    container_name: gost
    restart: unless-stopped
    network_mode: service:gluetun
    command: "-L :8080"
    depends_on:
      gluetun:
        condition: service_healthy
        restart: true

Traefik

For an easy way to get HTTPS (which is required to install Stremio addons outside of localhost), you can use Traefik as a reverse proxy.

Requirements:

  • A domain/subdomain with a CNAME/A record pointing to the public IP of the server
  • A server with ports 443 open

Tip

You can use free domains from DuckDNS and Afraid

  1. Modify your compose.yaml to include Traefik like so:
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
    environment:
      - TZ=Etc/UTC # change this if needed
    ports:
      - 443:443
    command:
      - '--ping=true'
      - '--api=true'
      - '--api.dashboard=false'
      - '--api.insecure=false'
      - '--global.sendAnonymousUsage=false'
      - '--global.checkNewVersion=false'
      - '--log=true'
      - '--log.level=DEBUG'
      - "--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"
    healthcheck:
      test: ["CMD", "traefik", "healthcheck", "--ping"]
      interval: 10s
      timeout: 5s
      retries: 3
  1. Make sure you replaced the following with their actual values:
  • aiostreams.example.com: Replace with your hostname you are using for AIOStreams
  • youremail@example.com: Replace with your email, used for Let's Encrypt notifications
  1. Then run the following command:

    docker compose up -d

Compose with other addons

If you have other self-hosted addons, you'd like AIOStreams to use, fill them in in the .env file.

If you are looking for a more complete compose.yaml with more addons, you can use my template here.

Docker CLI

You can use the prebuilt images using one of the following commands, just make sure to provide a SECRET_KEY as AIOStreams will not start without it. See the https://github.com/Viren070/AIOStreams/blob/main/.env.sample for details on generating one, as it requires a specific format.

GitHub Container Registry:

docker run -p 8080:3000 -e SECRET_KEY=Your64CharacterHexKeyGoesHere -v aiostreams-data:/app/data ghcr.io/viren070/aiostreams:latest

Docker Hub:

docker run -p 8080:3000 -e SECRET_KEY=Your64CharacterHexKeyGoesHere -v aiostreams-data:/app/data viren070/aiostreams:latest

If you would like to pass one of the environment variables, you can provide the -e flag, e.g. to provide a SECRET_KEY

docker run -p 8080:3000 -e SECRET_KEY=... viren070/aiostreams:latest

If you don't want to use a prebuilt image, or want to build from a commit that isn't tagged with a version yet, you can build the image yourself using the following commands:

git clone https://github.com/Viren070/aiostreams.git
cd aiostreams
docker build -t aiostreams .
docker run -p 8080:3000 aiostreams

ElfHosted (paid)

Note

Use the link below to support me, 33% of your AIOStreams subscription will go to me ❤️

AIOStreams is available as a paid product on ElfHosted. This offers you a no-hassle experience where you can expect things to "just work".

Private ElfHosted instances have Torrentio enabled, avoid ratelimits of other ElfHosted instances, and your instance itself will also have no rate limit.

Other

This addon can be deployed using some free solutions, but these should not be considered permanent solutions and can stop working at any point.

From source

You need Node.js, git, and npm installed. Node v22 and pnpm v10.15 were used in the development of this project. I can not guarantee earlier versions will work.

  1. Clone the project and set it as the current directory
    git clone https://github.com/Viren070/AIOStreams.git
    
    cd aiostreams
    
  2. Install project dependencies
    pnpm i
    
  3. Build project
    pnpm run build
    pnpm run metadata --channel=nightly
    
  4. Run project
    pnpm run start
    
  5. Go to http://localhost:3000/configure

You can change the PORT environment variable to change the port that the addon will listen on.

Clone this wiki locally