AIOLiveTVAIOLiveTV
Getting Started

Deployment

How to deploy AIOLiveTV using Docker, Vercel, or from source.

Docker

Docker is the recommended way to run AIOLiveTV locally or on a VPS. Build from this repository or use the compose file in the repo root.

Use the latest tag for the latest release.

Only BASE_URL and SECRET_KEY are required environment variables - these (and a few other bootstrap variables) must be set in the environment. Almost everything else is a runtime setting best configured from the dashboard Settings page after first start. 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 Oracle Cloud's Always Free tier or find cheap options on LowEndBox.

Download the compose file and sample env:

curl -O https://raw.githubusercontent.com/mrcanelas/aiolivetv/main/compose.yaml
curl -o .env https://raw.githubusercontent.com/mrcanelas/aiolivetv/main/.env.sample

Edit .env to set at minimum a SECRET_KEY (64-character hex string). See Environment Variables.

Start the container:

docker compose up -d

Open 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 aiolivetv.example.com and youremail@example.com:

services:
  aiolivetv:
    image: ghcr.io/mrcanelas/aiolivetv:latest
    container_name: aiolivetv
    restart: unless-stopped
    ports:
      - 3000:3000
    env_file:
      - .env
    labels:
      - 'traefik.enable=true'
      - 'traefik.http.routers.aiolivetv.rule=Host(`aiolivetv.example.com`)'
      - 'traefik.http.routers.aiolivetv.entrypoints=websecure'
      - 'traefik.http.routers.aiolivetv.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.

Docker CLI

docker run -p 8080:3000 \
  -e BASE_URL=http://localhost:8080 \
  -e SECRET_KEY=Your64CharacterHexKeyGoesHere \
  -v aiolivetv-data:/app/data \
  ghcr.io/mrcanelas/aiolivetv:latest

To build from source instead of using a prebuilt image:

git clone https://github.com/mrcanelas/aiolivetv.git
cd aiolivetv
docker build -t aiolivetv .
docker run -p 8080:3000 \
  -e BASE_URL=http://localhost:8080 \
  -e SECRET_KEY=Your64CharacterHexKeyGoesHere \
  aiolivetv

Vercel

AIOLiveTV can be deployed as a Vercel Container Function. This keeps the current Express server and frontend, but requires external PostgreSQL and Redis. See Vercel for environment variables, Cron Jobs, and the first-deploy checklist.


Other free platforms

These platforms offer free tiers that can run AIOLiveTV, but they are not permanent solutions — they can be revoked or stop working at any time:

PlatformNotes
Hugging FaceRequires a custom Dockerfile setting ENV PORT=7860
KoyebFree tier available
RenderFree tier available

From source

Node.js v24 and pnpm v11 were used during development. Earlier versions may not work.

Clone the repository:

git clone https://github.com/mrcanelas/aiolivetv.git
cd aiolivetv

Install dependencies:

pnpm install

Build the project:

pnpm run build
pnpm run metadata

Start the server:

pnpm run start

Open http://localhost:3000/stremio/configure.

Change the PORT environment variable to use a different port.

On this page