efddb4e511
Scriberr transcribes audio and video locally with WhisperX and speaker diarization, and it lands on ana-ml2 rather than ana-docker because the work is GPU-shaped: ana-docker offers eight cores already shared with fifty containers and thirty-seven gigabytes of disk, against ninety-six cores, terabytes on /tank and idle capacity on GPU1. The reservation names device 1 explicitly, since GPU0 is fully committed to the gen seat, and the container is confirmed to see that card alone. The image is built from source, which is not a preference. These are Blackwell cards at sm_120; the published CUDA image covers Pascal through Ada only, and the blackwell image the upstream README documents has never been published at all. The path upstream actually ships for sm_120 is Dockerfile.cuda.12.9, carrying CUDA 12.9 and cu128 torch, so that is what gets built. The compose header says so, because the obvious cleanup is to swap in the published image and that would silently drop the deployment to CPU. Two configuration details are load-bearing and documented where someone would go to change them. The application runs as uid 10001 rather than the usual 1000: that Dockerfile moves its user aside for Ubuntu 24.04's own uid-1000 account and chowns /app accordingly, while the entrypoint's remapping covers only the data directories, so at 1000 the process cannot open its database and restarts forever behind a SQLite error that reads as though the machine were out of memory. Secure cookies stay off while the service is reached over plain HTTP, or sessions are dropped by the browser and login appears to loop for no visible reason. Storage is bind-mounted onto /tank because model weights run to several gigabytes and the root pool on that host is nearly full. Also adds the scriberr service alias to internal DNS, following the existing alias convention so consumers name the service rather than the box.
45 lines
2.8 KiB
Bash
45 lines
2.8 KiB
Bash
# Scriberr — copy to .env on the host at /opt/docker/compose/scriberr/.env
|
|
# Real .env is gitignored and lives only on ana-ml2.
|
|
|
|
# ── Image ────────────────────────────────────────────────────────────────
|
|
# Built locally from Dockerfile.cuda.12.9 — see the compose header for why
|
|
# the published scriberr-cuda image is NOT usable on these Blackwell cards.
|
|
SCRIBERR_IMAGE=scriberr:local-blackwell
|
|
|
|
# ── Network ──────────────────────────────────────────────────────────────
|
|
SCRIBERR_PORT=8080
|
|
SCRIBERR_BIND=0.0.0.0
|
|
# CORS. Must list every origin the UI is actually reached from, or the
|
|
# browser blocks the API calls. Comma-separated, no spaces, no trailing /.
|
|
SCRIBERR_ALLOWED_ORIGINS=http://10.250.50.54:8080,http://scriberr.ana.internal:8080
|
|
|
|
# ── GPU ──────────────────────────────────────────────────────────────────
|
|
# GPU0 is fully committed to the `gen` seat; GPU1 is the one with headroom.
|
|
SCRIBERR_GPU_ID=1
|
|
|
|
# ── Storage (on /tank — NOT the root pool, weights are multi-GB) ─────────
|
|
SCRIBERR_DATA_DIR=/tank/scriberr/data
|
|
SCRIBERR_ENV_DIR=/tank/scriberr/whisperx-env
|
|
|
|
# ── Runtime ──────────────────────────────────────────────────────────────
|
|
# ⚠ 10001, not the fleet-usual 1000. The Blackwell image's `appuser` IS 10001
|
|
# and its PUID remapping is broken — at 1000 the app cannot open its SQLite DB
|
|
# and crash-loops. The /tank dirs are chowned to 10001:10001 to match.
|
|
# See README "The PUID trap".
|
|
SCRIBERR_PUID=10001
|
|
SCRIBERR_PGID=10001
|
|
# Keep false while the app is served over plain HTTP. Setting this true
|
|
# without TLS makes login silently fail (cookie marked Secure, dropped).
|
|
SCRIBERR_SECURE_COOKIES=false
|
|
|
|
# ── Optional: summarisation / transcript chat ────────────────────────────
|
|
# Scriberr speaks the OpenAI API. Point it at the LiteLLM gateway so this
|
|
# costs nothing and stays on-prem, rather than a paid vendor key.
|
|
# Configure the base URL in the Scriberr UI (Settings -> AI provider):
|
|
# base URL : http://10.250.50.70:4000/v1
|
|
# model : summarizer (or gen / gen-reasoning)
|
|
# The key below is the shared all-agents gateway key.
|
|
# ⚠ That key also reaches PAID passthrough models (GLM, Kimi) on a shared
|
|
# tab — keep the configured model on a free local seat.
|
|
# SCRIBERR_OPENAI_API_KEY=
|