Security fixes: - Block /proc /sys /dev /run /boot in /api/browse-dirs (path traversal) - Verify yt-dlp output stays inside TEMP_DIR before registration - Remove Access-Control-Allow-Origin: * from /api/proxy-audio - TTL-based temp file registry (default 2h) to prevent disk fill Performance: - Cache settings + routing rules in memory (mtime-checked); eliminates per-request disk reads on every TTS call UI: - Add container name (optional) field to Docker stack TTS/STT engine cards (Qwen3 Voice Clone, Voice Design, Custom Voice, Streaming, NVIDIA Magpie, Parakeet) — enables Stop/Start/Restart buttons on all engine cards, matching the existing Other Local TTS/STT cards Refactor — backend: - server.py: 5560 lines → 43-line entry point - core/ package: constants, registry, validation, docker_client, config, routing, audio, voice, presets, tts_helpers - routes/ package: admin, settings, library, stt, sources, docker, tts, conversation (FastAPI APIRouter modules) - Dockerfile + docker-compose.yml updated to include core/ and routes/ Refactor — frontend: - static/app.js: 8744 lines → 16 modules in static/js/ utils, voice-inspector, voice-sources, integrations, routing, settings, voice-clone, voice-library, tts-preview, benchmark, stt, init, engines, ai-backends, generation, conversation - static/loader.js updated to load modules sequentially Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
39 lines
2.1 KiB
Docker
39 lines
2.1 KiB
Docker
# ─────────────────────────────────────────────────────────────────────────────
|
|
# TTS Voice Creator - Clone and Design — Docker image (ARM64 / aarch64 compatible)
|
|
#
|
|
# Web app (FastAPI + WaveSurfer.js) — no VNC, no Qt, no X11.
|
|
# Accessible on port 7890 via any browser.
|
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
FROM python:3.11-slim-bookworm
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
ENV PYTHONUNBUFFERED=1
|
|
|
|
# ── System packages ───────────────────────────────────────────────────────────
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
ffmpeg \
|
|
curl \
|
|
ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# ── Python dependencies ───────────────────────────────────────────────────────
|
|
COPY requirements.txt /tmp/requirements.txt
|
|
RUN pip install --no-cache-dir -r /tmp/requirements.txt
|
|
|
|
# ── Application ───────────────────────────────────────────────────────────────
|
|
WORKDIR /app
|
|
COPY server.py .
|
|
COPY core/ core/
|
|
COPY routes/ routes/
|
|
COPY static/ static/
|
|
|
|
# ── Runtime user ──────────────────────────────────────────────────────────────
|
|
RUN mkdir -p /voices/active_voices /voices/hidden_voices /home/app/.config/tts-voice-creator && \
|
|
useradd -m -s /bin/bash app && \
|
|
chown -R app:app /app /voices /home/app
|
|
|
|
USER app
|
|
|
|
EXPOSE 7890
|
|
CMD ["python3", "server.py"]
|