- streamer/windows: vash-broadcast.exe (setup/login/start/stop/status/doctor) with per-instance OBS, tosu and FFmpeg, a supervised worker, OCR room selection and OBS scene reconciliation; built and tested on Linux only - streamer/relay.ts shared with Vash TV; Cloudflare Access proxy for dev/staging - worker status validation and live score helpers for the site - STREAMING_HANDOFF.md and streamer/ALPHA_TEST.md record what is unverified Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
32 lines
1.4 KiB
Docker
32 lines
1.4 KiB
Docker
# Build from the repository root:
|
|
# docker build -f streamer/tourney/Dockerfile -t vash-tourney streamer
|
|
FROM oven/bun:1 AS build
|
|
WORKDIR /src
|
|
COPY tv/main.ts tv/main.ts
|
|
COPY agent.ts obs.ts tosu.ts tourney.ts link.ts relay.ts vash-api.ts ./
|
|
RUN bun build tv/main.ts --compile --minify --outfile /vash-tv \
|
|
&& bun build agent.ts --compile --minify --outfile /vash-agent
|
|
|
|
FROM debian:bookworm-slim
|
|
RUN sed -i 's/Components: main/Components: main contrib/' /etc/apt/sources.list.d/debian.sources \
|
|
&& dpkg --add-architecture i386 \
|
|
&& apt-get update \
|
|
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
|
wine wine32:i386 wine64 xvfb ffmpeg chromium tini ca-certificates \
|
|
fonts-noto-core fonts-noto-cjk fonts-noto-color-emoji xdotool tesseract-ocr \
|
|
pulseaudio pulseaudio-utils x11vnc novnc websockify libfuse2 \
|
|
winetricks cabextract wget unzip \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& useradd --create-home --uid 1000 tv
|
|
COPY --from=build /vash-tv /usr/local/bin/vash-tv
|
|
COPY --from=build /vash-agent /usr/local/bin/vash-agent
|
|
COPY tourney/start.sh /usr/local/bin/vash-tourney-start
|
|
RUN chmod +x /usr/local/bin/vash-tourney-start
|
|
USER tv
|
|
ENV WINEPREFIX=/data/wine WINEARCH=win32 GAMEPLAY_DISPLAY=:98 GAMEPLAY_WIDTH=1280 GAMEPLAY_HEIGHT=720 \
|
|
OSU_EXE=/data/osu/osu!.exe TOSU_BIN=/data/tosu/tosu PULSE_SOURCE=vash.monitor
|
|
WORKDIR /home/tv
|
|
VOLUME /data
|
|
EXPOSE 6080
|
|
ENTRYPOINT ["tini", "-g", "--", "vash-tourney-start"]
|