Files
StreamHall/docker-compose.yml
T
Stardream dc949bdeab
Build and Push Docker Image / build (push) Failing after 1m5s
feat: local push file browser, VOD serving, and admin UX overhaul
Local push & file browser
- File browser with breadcrumb nav, search, directory memory, .. row,
  and hidden/system folder filtering (./@/#)
- Color-coded file extension tags; file sizes shown inline
- Per-file push modal with random stream key generator and responsive width
- Folder multi-file push modal: independent stream keys per file,
  batch start/stop, inline live-dot status with real-time duration
- Push status inline in file rows replacing top push-jobs area;
  job detail modal with copy/stop/add-stream actions
- /h/<slug> HLS proxy route registered automatically on push start
- Folder push and publish-archive recurse subfolders via os.walk
- "Add to existing stream" dropdown at file, folder, and job modal entries
- Stream editor supports prefilling multiple source links via links array
- list_folder_videos API returns playable files with signed URLs

VOD / video serving
- /video/<token>/<payload> endpoint with HMAC-signed URLs and
  HTTP Range support (206 Partial Content, seek-capable)
- Publish-archive button on file rows and folder rows

Admin UX
- Replace all 18 native alert() with themed Toast notifications
  (success/error/info/warn, 3.5s auto-dismiss, dark mode aware)
- Replace all 3 native confirm() with custom modal (showConfirm)
- Custom overlay scrollbar for admin.html and index.html: no layout
  shift, theme-colored, auto-hides after 1.5s, drag-supported
- background-attachment: fixed on admin and index body backgrounds
- Drag handle for viewport config rows in stream editor
- Pagination and real-time search for hidden push address mapping table
- Pagination for stream analytics detail table with SSE-safe page state
- Stream picker search placeholder i18n
- Lang toggle button title/aria-label i18n
- View URL hash renamed: push -> local, obs -> remote

Index (public) page
- Load more: viewport-aware initial batch calculated from .stream-switch
  bottom position; ghost-style button; card entrance animation with
  50ms per-card stagger on load-more click only

Infrastructure
- Dockerfile: install ffmpeg; separate requirements COPY for layer cache
- docker-compose.yml: add RTMP_HOST, VIDEOS_DIRS env vars, videos volume
- README: document VIDEOS_DIRS mount methods, password reset procedure

Fixes
- action=add 500 error: psycopg3 dict_row does not support int subscript
- Lang toggle button title/aria-label missing i18n keys
- API Keys list not re-rendering on language switch
- Admin stream count per tab showing combined LIVE+ARCHIVE total
- Em dash in api.new_token_hint replaced with hyphen
2026-05-22 21:10:33 +10:00

55 lines
1.5 KiB
YAML

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:
SECRET_KEY: "change-this-secret"
DATABASE_URL: "postgresql://streamhall:streamhall_pg_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: "streamhall_pg_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