Commit Graph

9 Commits

Author SHA1 Message Date
Jeff Emmett c06e17c016 Connect WG to traefik-public for direct Whisper access
Worker accesses Whisper via Docker DNS (whisper-local:8000) instead
of through the WG tunnel, avoiding 524 timeout on large audio uploads.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 20:16:25 +00:00
Jeff Emmett 8068a64265 Add whisper.jeffemmett.com host override to WG container
Routes Whisper API traffic directly to local Traefik instead of
through the WG tunnel via Cloudflare, avoiding 524 timeouts on
large audio file uploads.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 20:14:40 +00:00
Jeff Emmett 091ad039af Reverse WireGuard architecture: server on Netcup, client at home
Flipped WG topology to avoid WSL2 UDP port forwarding issues:
- Netcup is now WG server (has public IP, listens on UDP 51820)
- Home WSL2 is WG client (connects outbound, no port forwarding needed)
- Home client NAT masquerades worker traffic through residential IP
- AllowedIPs=0.0.0.0/0 routes all worker internet through tunnel

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 20:06:04 +00:00
Jeff Emmett 19468aeac8 Add WireGuard tunnel for YouTube downloads through residential IP
YouTube blocks datacenter IPs. This adds a WireGuard client sidecar
to route worker traffic through a home residential IP tunnel.
- wireguard/ has the WG server config (runs on WSL2 at home)
- Worker uses network_mode: service:wireguard for tunnel routing
- wg-client/ and cookies.txt added to .gitignore (contain secrets)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 19:58:39 +00:00
Jeff Emmett fb5d189334 fix: make cookies file writable for yt-dlp cookie saving
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 12:39:50 +00:00
Jeff Emmett 7e121334ba fix: simplify cookies mount path
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 12:38:46 +00:00
Jeff Emmett 5018915b10 fix: mount YouTube cookies file for yt-dlp authentication
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 12:35:49 +00:00
Jeff Emmett 6ab5f805a4 fix: use arq CLI to start worker instead of python -m
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 12:33:02 +00:00
Jeff Emmett 6aa8a676ec feat: ClipForge Phase 1 - core pipeline MVP
Self-hosted AI video clipper (Opus Clip alternative).
Pipeline: YouTube URL -> yt-dlp download -> Whisper transcription ->
Ollama AI clip selection -> FFmpeg extraction.

- FastAPI backend with PostgreSQL + Redis + ARQ worker
- 7-stage processing pipeline with SSE progress tracking
- Services: download (yt-dlp), transcription (whisper.jeffemmett.com),
  AI analysis (Ollama), clip extraction (FFmpeg stream copy)
- API: create jobs, track progress, list clips, render, download
- Docker Compose with Traefik labels for clip.jeffemmett.com

Cost: $0/video using existing infrastructure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 12:27:43 +00:00