Deployment - MunifTanjim/stremthru GitHub Wiki

docker-compose

Create directories for volume mounts

mkdir -p ./docker/.volumes/traefik/letsencrypt
mkdir -p ./docker/.volumes/warp
mkdir -p ./docker/.volumes/stremthru

Clone StremThru Repository

git clone https://github.com/MunifTanjim/stremthru.git
cd stremthru
cp .env.example .env.prod

Config: stremthru/.env.prod

STREMTHRU_HTTP_PROXY=http://warp:1080
STREMTHRU_PROXY_AUTH=YOUR_USERNAME:YOUR_PASSWORD
STREMTHRU_STORE_AUTH=YOUR_USERNAME:STORE_NAME:STORE_TOKEN
# STREMTHRU_REDIS_URI=
# STREMTHRU_DATABASE_URI=sqlite://./data/stremthru.db

Compose file: compose.yaml

services:
  traefik:
    image: traefik:v3.2
    container_name: traefik
    command:
      - '--api.insecure=true'
      - '--providers.docker=true'
      - '--providers.docker.exposedbydefault=false'
      - '--entryPoints.web.address=:80'
      - '--entryPoints.websecure.address=:443'
      - '--certificatesresolvers.letsencrypt.acme.httpchallenge=true'
      - '--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web'
      - '--certificatesresolvers.letsencrypt.acme.email=<YOUR_EMAIL_ADDRESS_HERE>'
      - '--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json'
    ports:
      - 80:80
      - 443:443
      - 8080:8080
    volumes:
      - ./docker/.volumes/traefik/letsencrypt:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro

  warp:
    image: caomingjun/warp
    ports:
      - 127.0.0.1:1080:1080
    environment:
      - WARP_SLEEP=2
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun
    sysctls:
      - net.ipv6.conf.all.disable_ipv6=0
      - net.ipv4.conf.all.src_valid_mark=1
    volumes:
      - ./docker/.volumes/warp:/var/lib/cloudflare-warp
    restart: always

  stremthru:
    image: muniftanjim/stremthru:latest
    build:
      context: ./stremthru
      dockerfile: ./Dockerfile
    labels:
      - traefik.enable=true
      - traefik.http.routers.stremthru.rule=Host(`stremthru.<YOUR_DOMAIN_HERE>`)
      - traefik.http.routers.stremthru.entrypoints=websecure
      - traefik.http.routers.stremthru.tls.certresolver=letsencrypt
    ports:
      - 127.0.0.1:6002:8080
    env_file:
      - ./stremthru/.env.prod
    volumes:
      - ./docker/.volumes/stremthru:/app/data
    restart: unless-stopped

Run

# build
docker compose build stremthru
# or pull
docker compose pull stremthru

# start
docker compose up -d traefik warp stremthru