generated from Labyricorn/labyricorn-project-template
rebrand: rename VoiceBox to TalkBox throughout codebase
CI / frontend-quality (push) Canceled after 0s
CI / frontend-quality (push) Canceled after 0s
- All 'voicebox'/'Voicebox'/'VOICEBOX' strings replaced with 'talkbox'/'TalkBox'/'TALKBOX' - Port changed from 17493 to 17494 (avoids conflict with upstream VoiceBox) - MCP tool namespace: voicebox.* -> talkbox.* - App bundle ID: sh.voicebox.app -> com.talkbox.app - Binary names: voicebox-server -> talkbox-server, voicebox-mcp -> talkbox-mcp - Docker user/group: voicebox -> talkbox - Database: voicebox.db -> talkbox.db - Env vars: VOICEBOX_* -> TALKBOX_* - Asset files renamed: voicebox-logo.* -> talkbox-logo.*, etc. - External binaries in tauri.conf.json updated to talkbox-server/talkbox-mcp
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
|
||||
## Overview
|
||||
|
||||
Docker support makes Voicebox easier to deploy, especially for:
|
||||
Docker support makes TalkBox easier to deploy, especially for:
|
||||
|
||||
- **Consistent Environments**: Same setup across dev/staging/prod
|
||||
- **GPU Passthrough**: Easy NVIDIA/AMD GPU access
|
||||
@@ -19,17 +19,17 @@ Docker support makes Voicebox easier to deploy, especially for:
|
||||
|
||||
```bash
|
||||
# CPU-only version
|
||||
docker run -p 8000:8000 -v voicebox-data:/app/data \
|
||||
ghcr.io/jamiepine/voicebox:latest
|
||||
docker run -p 8000:8000 -v talkbox-data:/app/data \
|
||||
ghcr.io/jamiepine/talkbox:latest
|
||||
|
||||
# NVIDIA GPU version
|
||||
docker run --gpus all -p 8000:8000 -v voicebox-data:/app/data \
|
||||
ghcr.io/jamiepine/voicebox:latest-cuda
|
||||
docker run --gpus all -p 8000:8000 -v talkbox-data:/app/data \
|
||||
ghcr.io/jamiepine/talkbox:latest-cuda
|
||||
|
||||
# AMD GPU version (experimental)
|
||||
docker run --device=/dev/kfd --device=/dev/dri -p 8000:8000 \
|
||||
-v voicebox-data:/app/data \
|
||||
ghcr.io/jamiepine/voicebox:latest-rocm
|
||||
-v talkbox-data:/app/data \
|
||||
ghcr.io/jamiepine/talkbox:latest-rocm
|
||||
```
|
||||
|
||||
Then open: `http://localhost:8000`
|
||||
@@ -42,12 +42,12 @@ Create `docker-compose.yml`:
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
voicebox:
|
||||
image: ghcr.io/jamiepine/voicebox:latest-cuda
|
||||
talkbox:
|
||||
image: ghcr.io/jamiepine/talkbox:latest-cuda
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- voicebox-data:/app/data
|
||||
- talkbox-data:/app/data
|
||||
- huggingface-cache:/root/.cache/huggingface
|
||||
environment:
|
||||
- GPU_MEMORY_FRACTION=0.8 # Use 80% of GPU memory
|
||||
@@ -62,7 +62,7 @@ services:
|
||||
capabilities: [gpu]
|
||||
|
||||
volumes:
|
||||
voicebox-data:
|
||||
talkbox-data:
|
||||
huggingface-cache:
|
||||
```
|
||||
|
||||
@@ -108,8 +108,8 @@ CMD ["uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||
|
||||
Build and run:
|
||||
```bash
|
||||
docker build -t voicebox .
|
||||
docker run -p 8000:8000 -v $(pwd)/data:/app/data voicebox
|
||||
docker build -t talkbox .
|
||||
docker run -p 8000:8000 -v $(pwd)/data:/app/data talkbox
|
||||
```
|
||||
|
||||
### Multi-Stage Build (Optimized)
|
||||
@@ -160,7 +160,7 @@ CMD ["uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||
|
||||
Build:
|
||||
```bash
|
||||
docker build -f Dockerfile.optimized -t voicebox:slim .
|
||||
docker build -f Dockerfile.optimized -t talkbox:slim .
|
||||
```
|
||||
|
||||
## GPU Support
|
||||
@@ -195,15 +195,15 @@ CMD ["uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||
**Run with GPU:**
|
||||
```bash
|
||||
docker run --gpus all -p 8000:8000 \
|
||||
-v voicebox-data:/app/data \
|
||||
voicebox:cuda
|
||||
-v talkbox-data:/app/data \
|
||||
talkbox:cuda
|
||||
```
|
||||
|
||||
**Docker Compose with GPU:**
|
||||
```yaml
|
||||
services:
|
||||
voicebox:
|
||||
image: voicebox:cuda
|
||||
talkbox:
|
||||
image: talkbox:cuda
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
@@ -249,8 +249,8 @@ CMD ["uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||
docker run --device=/dev/kfd --device=/dev/dri \
|
||||
--group-add video --ipc=host --cap-add=SYS_PTRACE \
|
||||
--security-opt seccomp=unconfined \
|
||||
-p 8000:8000 -v voicebox-data:/app/data \
|
||||
voicebox:rocm
|
||||
-p 8000:8000 -v talkbox-data:/app/data \
|
||||
talkbox:rocm
|
||||
```
|
||||
|
||||
**Note:** ROCm support varies by GPU model. Works best on Linux. See [AMD ROCm docs](https://rocm.docs.amd.com) for compatibility.
|
||||
@@ -260,9 +260,9 @@ docker run --device=/dev/kfd --device=/dev/dri \
|
||||
### Essential Volumes
|
||||
|
||||
```bash
|
||||
docker run -v voicebox-data:/app/data \ # Profiles, generations, history
|
||||
docker run -v talkbox-data:/app/data \ # Profiles, generations, history
|
||||
-v huggingface-cache:/root/.cache/huggingface \ # Downloaded models
|
||||
-p 8000:8000 voicebox
|
||||
-p 8000:8000 talkbox
|
||||
```
|
||||
|
||||
### Development Volume Mounts
|
||||
@@ -271,9 +271,9 @@ For development with hot-reload:
|
||||
|
||||
```bash
|
||||
docker run -v $(pwd)/backend:/app/backend \ # Live code changes
|
||||
-v voicebox-data:/app/data \
|
||||
-v talkbox-data:/app/data \
|
||||
-e RELOAD=true \
|
||||
-p 8000:8000 voicebox
|
||||
-p 8000:8000 talkbox
|
||||
```
|
||||
|
||||
### Custom Model Storage
|
||||
@@ -283,13 +283,13 @@ Use external model directory:
|
||||
```bash
|
||||
docker run -v /path/to/models:/models \
|
||||
-e MODELS_DIR=/models \
|
||||
-v voicebox-data:/app/data \
|
||||
-p 8000:8000 voicebox
|
||||
-v talkbox-data:/app/data \
|
||||
-p 8000:8000 talkbox
|
||||
```
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Configure Voicebox via environment variables:
|
||||
Configure TalkBox via environment variables:
|
||||
|
||||
```bash
|
||||
docker run -e TTS_MODE=local \
|
||||
@@ -297,7 +297,7 @@ docker run -e TTS_MODE=local \
|
||||
-e OPENAI_API_KEY=sk-... \
|
||||
-e GPU_MEMORY_FRACTION=0.8 \
|
||||
-e LOG_LEVEL=info \
|
||||
-p 8000:8000 voicebox
|
||||
-p 8000:8000 talkbox
|
||||
```
|
||||
|
||||
### Available Variables
|
||||
@@ -324,14 +324,14 @@ docker run -e TTS_MODE=local \
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
voicebox:
|
||||
image: ghcr.io/jamiepine/voicebox:latest-cuda
|
||||
container_name: voicebox
|
||||
talkbox:
|
||||
image: ghcr.io/jamiepine/talkbox:latest-cuda
|
||||
container_name: talkbox
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- voicebox-data:/app/data
|
||||
- talkbox-data:/app/data
|
||||
- huggingface-cache:/root/.cache/huggingface
|
||||
environment:
|
||||
- TTS_MODE=local
|
||||
@@ -353,7 +353,7 @@ services:
|
||||
start_period: 40s
|
||||
|
||||
volumes:
|
||||
voicebox-data:
|
||||
talkbox-data:
|
||||
driver: local
|
||||
huggingface-cache:
|
||||
driver: local
|
||||
@@ -371,7 +371,7 @@ docker compose -f docker-compose.prod.yml up -d
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
voicebox:
|
||||
talkbox:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
@@ -379,7 +379,7 @@ services:
|
||||
- "8000:8000"
|
||||
volumes:
|
||||
- ./backend:/app/backend:ro
|
||||
- voicebox-data:/app/data
|
||||
- talkbox-data:/app/data
|
||||
- huggingface-cache:/root/.cache/huggingface
|
||||
environment:
|
||||
- RELOAD=true
|
||||
@@ -388,7 +388,7 @@ services:
|
||||
command: uvicorn backend.main:app --host 0.0.0.0 --port 8000 --reload
|
||||
|
||||
volumes:
|
||||
voicebox-data:
|
||||
talkbox-data:
|
||||
huggingface-cache:
|
||||
```
|
||||
|
||||
@@ -401,12 +401,12 @@ Full stack with reverse proxy and monitoring:
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
# Main Voicebox app
|
||||
voicebox:
|
||||
image: ghcr.io/jamiepine/voicebox:latest-cuda
|
||||
# Main TalkBox app
|
||||
talkbox:
|
||||
image: ghcr.io/jamiepine/talkbox:latest-cuda
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- voicebox-data:/app/data
|
||||
- talkbox-data:/app/data
|
||||
- huggingface-cache:/root/.cache/huggingface
|
||||
environment:
|
||||
- TTS_MODE=local
|
||||
@@ -429,7 +429,7 @@ services:
|
||||
- ./nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
- ./ssl:/etc/nginx/ssl:ro
|
||||
depends_on:
|
||||
- voicebox
|
||||
- talkbox
|
||||
|
||||
# Prometheus monitoring (optional)
|
||||
prometheus:
|
||||
@@ -441,7 +441,7 @@ services:
|
||||
- prometheus-data:/prometheus
|
||||
|
||||
volumes:
|
||||
voicebox-data:
|
||||
talkbox-data:
|
||||
huggingface-cache:
|
||||
prometheus-data:
|
||||
```
|
||||
@@ -466,9 +466,9 @@ volumes:
|
||||
3. **Deploy:**
|
||||
```bash
|
||||
docker run --gpus all -d -p 80:8000 \
|
||||
-v voicebox-data:/app/data \
|
||||
-v talkbox-data:/app/data \
|
||||
--restart unless-stopped \
|
||||
ghcr.io/jamiepine/voicebox:latest-cuda
|
||||
ghcr.io/jamiepine/talkbox:latest-cuda
|
||||
```
|
||||
|
||||
### DigitalOcean
|
||||
@@ -477,7 +477,7 @@ Use GPU Droplet + Docker:
|
||||
|
||||
```bash
|
||||
# Create droplet via CLI
|
||||
doctl compute droplet create voicebox \
|
||||
doctl compute droplet create talkbox \
|
||||
--size gpu-h100x1-80gb \
|
||||
--image ubuntu-22-04-x64 \
|
||||
--region nyc3
|
||||
@@ -486,19 +486,19 @@ doctl compute droplet create voicebox \
|
||||
ssh root@<droplet-ip>
|
||||
curl -fsSL https://get.docker.com -o get-docker.sh
|
||||
sh get-docker.sh
|
||||
docker run --gpus all -d -p 80:8000 voicebox:cuda
|
||||
docker run --gpus all -d -p 80:8000 talkbox:cuda
|
||||
```
|
||||
|
||||
### Google Cloud Run (CPU-only)
|
||||
|
||||
```bash
|
||||
# Build and push
|
||||
docker build -t gcr.io/your-project/voicebox .
|
||||
docker push gcr.io/your-project/voicebox
|
||||
docker build -t gcr.io/your-project/talkbox .
|
||||
docker push gcr.io/your-project/talkbox
|
||||
|
||||
# Deploy to Cloud Run
|
||||
gcloud run deploy voicebox \
|
||||
--image gcr.io/your-project/voicebox \
|
||||
gcloud run deploy talkbox \
|
||||
--image gcr.io/your-project/talkbox \
|
||||
--platform managed \
|
||||
--region us-central1 \
|
||||
--memory 4Gi \
|
||||
@@ -510,10 +510,10 @@ gcloud run deploy voicebox \
|
||||
|
||||
Create `fly.toml`:
|
||||
```toml
|
||||
app = "voicebox"
|
||||
app = "talkbox"
|
||||
|
||||
[build]
|
||||
image = "ghcr.io/jamiepine/voicebox:latest"
|
||||
image = "ghcr.io/jamiepine/talkbox:latest"
|
||||
|
||||
[[services]]
|
||||
http_checks = []
|
||||
@@ -529,7 +529,7 @@ app = "voicebox"
|
||||
handlers = ["tls", "http"]
|
||||
|
||||
[mounts]
|
||||
source = "voicebox_data"
|
||||
source = "talkbox_data"
|
||||
destination = "/app/data"
|
||||
```
|
||||
|
||||
@@ -560,38 +560,38 @@ docker run --rm --device=/dev/kfd --device=/dev/dri rocm/dev-ubuntu-22.04:6.0 ro
|
||||
Container can't write to volumes:
|
||||
```bash
|
||||
# Fix permissions
|
||||
docker run --user $(id -u):$(id -g) -v $(pwd)/data:/app/data voicebox
|
||||
docker run --user $(id -u):$(id -g) -v $(pwd)/data:/app/data talkbox
|
||||
```
|
||||
|
||||
### Out of Memory
|
||||
|
||||
Reduce GPU memory usage:
|
||||
```bash
|
||||
docker run -e GPU_MEMORY_FRACTION=0.5 voicebox
|
||||
docker run -e GPU_MEMORY_FRACTION=0.5 talkbox
|
||||
```
|
||||
|
||||
Or use CPU-only:
|
||||
```bash
|
||||
docker run -e DEVICE=cpu voicebox
|
||||
docker run -e DEVICE=cpu talkbox
|
||||
```
|
||||
|
||||
### Model Download Fails
|
||||
|
||||
Ensure HuggingFace cache is writable:
|
||||
```bash
|
||||
docker run -v huggingface-cache:/root/.cache/huggingface voicebox
|
||||
docker run -v huggingface-cache:/root/.cache/huggingface talkbox
|
||||
```
|
||||
|
||||
Or use host cache:
|
||||
```bash
|
||||
docker run -v ~/.cache/huggingface:/root/.cache/huggingface voicebox
|
||||
docker run -v ~/.cache/huggingface:/root/.cache/huggingface talkbox
|
||||
```
|
||||
|
||||
### Port Already in Use
|
||||
|
||||
Change host port:
|
||||
```bash
|
||||
docker run -p 8080:8000 voicebox # Use port 8080 instead
|
||||
docker run -p 8080:8000 talkbox # Use port 8080 instead
|
||||
```
|
||||
|
||||
## Security Best Practices
|
||||
@@ -600,8 +600,8 @@ docker run -p 8080:8000 voicebox # Use port 8080 instead
|
||||
|
||||
Create non-root user in Dockerfile:
|
||||
```dockerfile
|
||||
RUN useradd -m -u 1000 voicebox
|
||||
USER voicebox
|
||||
RUN useradd -m -u 1000 talkbox
|
||||
USER talkbox
|
||||
```
|
||||
|
||||
### 2. Use Secrets for API Keys
|
||||
@@ -615,7 +615,7 @@ echo "sk-your-key" | docker secret create openai_key -
|
||||
docker service create \
|
||||
--secret openai_key \
|
||||
-e OPENAI_API_KEY_FILE=/run/secrets/openai_key \
|
||||
voicebox
|
||||
talkbox
|
||||
```
|
||||
|
||||
### 3. Network Isolation
|
||||
@@ -624,7 +624,7 @@ Use internal networks for multi-container setups:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
voicebox:
|
||||
talkbox:
|
||||
networks:
|
||||
- internal
|
||||
nginx:
|
||||
@@ -646,7 +646,7 @@ Prevent resource exhaustion:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
voicebox:
|
||||
talkbox:
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
@@ -663,10 +663,10 @@ services:
|
||||
|
||||
```bash
|
||||
# Use 80% of GPU (default 90%)
|
||||
docker run -e GPU_MEMORY_FRACTION=0.8 voicebox
|
||||
docker run -e GPU_MEMORY_FRACTION=0.8 talkbox
|
||||
|
||||
# Allow GPU memory growth (prevents OOM)
|
||||
docker run -e TF_FORCE_GPU_ALLOW_GROWTH=true voicebox
|
||||
docker run -e TF_FORCE_GPU_ALLOW_GROWTH=true talkbox
|
||||
```
|
||||
|
||||
### Model Caching
|
||||
@@ -676,14 +676,14 @@ Pre-download models to volume:
|
||||
```bash
|
||||
# Download models first
|
||||
docker run --rm -v huggingface-cache:/root/.cache/huggingface \
|
||||
voicebox python -c "
|
||||
talkbox python -c "
|
||||
from transformers import WhisperProcessor, WhisperForConditionalGeneration
|
||||
WhisperProcessor.from_pretrained('openai/whisper-base')
|
||||
WhisperForConditionalGeneration.from_pretrained('openai/whisper-base')
|
||||
"
|
||||
|
||||
# Then run normally
|
||||
docker run -v huggingface-cache:/root/.cache/huggingface voicebox
|
||||
docker run -v huggingface-cache:/root/.cache/huggingface talkbox
|
||||
```
|
||||
|
||||
### Multi-Worker Setup
|
||||
@@ -728,10 +728,10 @@ Then scrape `/metrics` with Prometheus.
|
||||
|
||||
View container logs:
|
||||
```bash
|
||||
docker logs -f voicebox
|
||||
docker logs -f talkbox
|
||||
|
||||
# Or with compose
|
||||
docker compose logs -f voicebox
|
||||
docker compose logs -f talkbox
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
@@ -748,7 +748,7 @@ Help improve Docker support:
|
||||
1. Test on different platforms (AMD GPU, ARM64, etc.)
|
||||
2. Submit Dockerfile optimizations
|
||||
3. Share deployment configurations
|
||||
4. Report issues: [GitHub Issues](https://github.com/jamiepine/voicebox/issues)
|
||||
4. Report issues: [GitHub Issues](https://github.com/jamiepine/talkbox/issues)
|
||||
|
||||
## Resources
|
||||
|
||||
|
||||
Reference in New Issue
Block a user