services:
  streamhall:
    image: git.stdm.moe/stardream/streamhall:latest
    # To build from source instead: comment out image above and uncomment below
    # build: .
    container_name: streamhall
    restart: unless-stopped
    depends_on:
      - postgres
    ports:
      - "8085:8080"
    environment:
      # Generate with: openssl rand -hex 32
      SECRET_KEY: "REPLACE_ME"
      DATABASE_URL: "postgresql://streamhall:REPLACE_DB_PASSWORD@postgres:5432/streamhall"
      TZ: "UTC"
      RTMP_HOST: "srs"
      # Comma-separated list of video directories (optional label:path format)
      # Example for multiple dirs: "movies:/app/media/movies,anime:/app/media/anime"
      VIDEOS_DIRS: "/app/videos"
    volumes:
      - ./videos:/app/videos
      # Mount additional directories as needed:
      # - /local/path:/app/media/label

  postgres:
    image: postgres:16-alpine
    container_name: streamhall-postgres
    restart: unless-stopped
    environment:
      POSTGRES_DB: "streamhall"
      POSTGRES_USER: "streamhall"
      POSTGRES_PASSWORD: "REPLACE_DB_PASSWORD"
      TZ: "UTC"
    volumes:
      - ./postgres-data:/var/lib/postgresql/data

  srs:
    image: ossrs/srs:6
    container_name: streamhall-srs
    restart: unless-stopped
    ports:
      - "1935:1935"
      - "18088:8080"

  nginx-hls:
    image: nginx:alpine
    container_name: streamhall-nginx-hls
    restart: unless-stopped
    depends_on:
      - streamhall
    ports:
      - "8889:80"
    volumes:
      - ./nginx-hls.conf:/etc/nginx/conf.d/default.conf:ro
