Initial commit
This commit is contained in:
commit
9cea1c1bba
13 changed files with 848 additions and 0 deletions
106
docker-compose.yml
Normal file
106
docker-compose.yml
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
services:
|
||||
|
||||
# ── LiveKit signalling server ──────────────────────────────────────────────
|
||||
livekit:
|
||||
image: livekit/livekit-server:latest
|
||||
ports:
|
||||
- "7880:7880"
|
||||
- "7881:7881"
|
||||
- "7882:7882/udp"
|
||||
command: --dev --bind 0.0.0.0
|
||||
environment:
|
||||
- "LIVEKIT_KEYS=devkey: secret"
|
||||
|
||||
# ── Ollama (LLM) ──────────────────────────────────────────────────────────
|
||||
ollama:
|
||||
image: ollama/ollama:latest
|
||||
ports:
|
||||
- "11434:11434"
|
||||
volumes:
|
||||
- ollama_data:/root/.ollama
|
||||
# Pull model on startup if not already present
|
||||
entrypoint: >
|
||||
sh -c "ollama serve &
|
||||
sleep 5 &&
|
||||
ollama pull ${DEFAULT_MODEL:-hf.co/mradermacher/Heretic-Dolphin3.0-Qwen2.5-3b-i1-GGUF:Q4_K_M} &&
|
||||
tail -f /dev/null"
|
||||
healthcheck:
|
||||
test: ["CMD", "ollama", "list"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 20
|
||||
start_period: 30s
|
||||
|
||||
# ── Whisper STT server ────────────────────────────────────────────────────
|
||||
whisper:
|
||||
image: fedirz/faster-whisper-server:0.6.0-rc.3-cpu
|
||||
ports:
|
||||
- "8778:8000"
|
||||
environment:
|
||||
- WHISPER__MODEL=${WHISPER_MODEL:-base}
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "python3 -c \"import urllib.request; urllib.request.urlopen('http://localhost:8000/health')\""]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 30s
|
||||
|
||||
# ── Kokoro TTS (OpenAI-compat, CPU) ───────────────────────────────────────
|
||||
kokoro:
|
||||
image: ghcr.io/remsky/kokoro-fastapi-cpu:v0.8.1
|
||||
ports:
|
||||
- "8880:8880"
|
||||
environment:
|
||||
- DOWNLOAD_MODEL=true
|
||||
volumes:
|
||||
- kokoro_models:/app/api/src/models
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8880/health"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 30s
|
||||
|
||||
# ── Token server + browser UI ─────────────────────────────────────────────
|
||||
ui:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
ports:
|
||||
- "7731:7731"
|
||||
env_file: .env
|
||||
environment:
|
||||
- OLLAMA_BASE_URL=http://ollama:11434/v1
|
||||
depends_on:
|
||||
livekit:
|
||||
condition: service_started
|
||||
ollama:
|
||||
condition: service_healthy
|
||||
|
||||
# ── Voice agent ───────────────────────────────────────────────────────────
|
||||
agent:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile.agent
|
||||
env_file: .env
|
||||
environment:
|
||||
- LIVEKIT_URL=ws://livekit:7880
|
||||
- LIVEKIT_API_KEY=devkey
|
||||
- LIVEKIT_API_SECRET=secret
|
||||
- OLLAMA_BASE_URL=http://ollama:11434/v1
|
||||
- TTS_BACKEND=kokoro
|
||||
- KOKORO_BASE_URL=http://kokoro:8880/v1
|
||||
- WHISPER_BASE_URL=http://whisper:8000/v1
|
||||
depends_on:
|
||||
livekit:
|
||||
condition: service_started
|
||||
ollama:
|
||||
condition: service_healthy
|
||||
kokoro:
|
||||
condition: service_healthy
|
||||
whisper:
|
||||
condition: service_healthy
|
||||
|
||||
volumes:
|
||||
ollama_data:
|
||||
kokoro_models:
|
||||
Loading…
Add table
Add a link
Reference in a new issue