mirror of
https://github.com/lfnovo/open-notebook.git
synced 2026-10-19 09:13:16 +00:00
* docs: stop teaching 0.0.0.0 SurrealDB port exposure in setup snippets Bind port 8000 to 127.0.0.1 in every compose and docker run snippet (README, quick starts, installation, configuration and development docs, and the examples/docker-compose-*.yml files), matching the shipped docker-compose.yml from #1025. Drop the redundant --bind 0.0.0.0:8000 from containerized surreal start commands (it is the in-container default) and add !override to docker-compose.override.yml.example so the opt-in re-publish actually replaces the base port binding instead of colliding with it. Docs that discuss reaching the database from another machine now point at the override example plus a firewall/SSH-tunnel note. Closes #1034 * docs: parameterize creds in manual compose example, note Compose version for !override
127 lines
4.2 KiB
YAML
127 lines
4.2 KiB
YAML
# Docker Compose with Speaches (Local TTS/STT)
|
|
#
|
|
# This setup includes Speaches for free, private speech processing:
|
|
# - Text-to-Speech (TTS): Generate podcast audio locally
|
|
# - Speech-to-Text (STT): Transcribe audio/video content locally
|
|
#
|
|
# Why Speaches?
|
|
# - Free: No per-minute/per-character costs
|
|
# - Private: Audio never leaves your machine
|
|
# - Offline: Works without internet
|
|
# - OpenAI-compatible: Drop-in replacement for OpenAI TTS/STT
|
|
#
|
|
# Usage:
|
|
# 1. Copy this file to your project folder as docker-compose.yml
|
|
# 2. Change OPEN_NOTEBOOK_ENCRYPTION_KEY below
|
|
# 3. Run: docker compose up -d
|
|
# 4. Download models (see instructions below)
|
|
# 5. Configure in UI: Settings → API Keys → Add OpenAI-Compatible
|
|
#
|
|
# Full documentation:
|
|
# - TTS setup: https://github.com/lfnovo/open-notebook/blob/main/docs/5-CONFIGURATION/local-tts.md
|
|
# - STT setup: https://github.com/lfnovo/open-notebook/blob/main/docs/5-CONFIGURATION/local-stt.md
|
|
|
|
services:
|
|
surrealdb:
|
|
image: surrealdb/surrealdb:v2
|
|
command: start --log info --user root --pass root rocksdb:/mydata/mydatabase.db
|
|
user: root
|
|
ports:
|
|
# Localhost only — the database uses default credentials, so never
|
|
# publish this port on 0.0.0.0
|
|
- "127.0.0.1:8000:8000"
|
|
volumes:
|
|
- ./surreal_data:/mydata
|
|
environment:
|
|
- SURREAL_EXPERIMENTAL_GRAPHQL=true
|
|
restart: always
|
|
pull_policy: always
|
|
|
|
speaches:
|
|
image: ghcr.io/speaches-ai/speaches:latest-cpu
|
|
container_name: speaches
|
|
ports:
|
|
- "8969:8000"
|
|
volumes:
|
|
- hf-hub-cache:/home/ubuntu/.cache/huggingface/hub
|
|
restart: unless-stopped
|
|
# For GPU acceleration, use: ghcr.io/speaches-ai/speaches:latest-cuda
|
|
# and add GPU device mapping (see docs/5-CONFIGURATION/local-tts.md)
|
|
|
|
open_notebook:
|
|
image: lfnovo/open_notebook:v1-latest
|
|
ports:
|
|
- "8502:8502"
|
|
- "5055:5055"
|
|
environment:
|
|
# REQUIRED: Change this to your own secret string
|
|
- OPEN_NOTEBOOK_ENCRYPTION_KEY=change-me-to-a-secret-string
|
|
|
|
# Database connection
|
|
- SURREAL_URL=ws://surrealdb:8000/rpc
|
|
- SURREAL_USER=root
|
|
- SURREAL_PASSWORD=root
|
|
- SURREAL_NAMESPACE=open_notebook
|
|
- SURREAL_DATABASE=open_notebook
|
|
volumes:
|
|
- ./notebook_data:/app/data
|
|
depends_on:
|
|
- surrealdb
|
|
- speaches
|
|
restart: always
|
|
pull_policy: always
|
|
|
|
volumes:
|
|
hf-hub-cache:
|
|
|
|
# ==========================================
|
|
# AFTER STARTING: Download Speech Models
|
|
# ==========================================
|
|
#
|
|
# For TTS (Text-to-Speech):
|
|
# docker compose exec speaches uv tool run speaches-cli model download speaches-ai/Kokoro-82M-v1.0-ONNX
|
|
#
|
|
# For STT (Speech-to-Text):
|
|
# docker compose exec speaches uv tool run speaches-cli model download Systran/faster-whisper-small
|
|
#
|
|
# ==========================================
|
|
# CONFIGURATION IN OPEN NOTEBOOK
|
|
# ==========================================
|
|
#
|
|
# 1. Go to Settings → API Keys
|
|
# 2. Click "Add Credential" → Select "OpenAI-Compatible"
|
|
# 3. Configure:
|
|
# - Name: "Local Speaches"
|
|
# - Base URL for TTS: http://host.docker.internal:8969/v1 (macOS/Windows)
|
|
# or: http://172.17.0.1:8969/v1 (Linux)
|
|
# - Base URL for STT: (same as TTS)
|
|
# 4. Click Save → Test Connection
|
|
#
|
|
# 5. Go to Settings → Models
|
|
# 6. Add TTS Model:
|
|
# - Provider: openai_compatible
|
|
# - Model Name: speaches-ai/Kokoro-82M-v1.0-ONNX
|
|
# - Display Name: Local TTS
|
|
#
|
|
# 7. Add STT Model:
|
|
# - Provider: openai_compatible
|
|
# - Model Name: Systran/faster-whisper-small
|
|
# - Display Name: Local Whisper
|
|
#
|
|
# ==========================================
|
|
# TESTING
|
|
# ==========================================
|
|
#
|
|
# Test TTS:
|
|
# curl "http://localhost:8969/v1/audio/speech" -s \
|
|
# -H "Content-Type: application/json" \
|
|
# --output test.mp3 \
|
|
# --data '{"input": "Hello, local TTS works!", "model": "speaches-ai/Kokoro-82M-v1.0-ONNX", "voice": "af_bella"}'
|
|
#
|
|
# Test STT:
|
|
# curl "http://localhost:8969/v1/audio/transcriptions" \
|
|
# -F "file=@test.mp3" \
|
|
# -F "model=Systran/faster-whisper-small"
|
|
#
|
|
# Available voices: af_bella, af_sarah, am_adam, am_michael, bf_emma, bm_george
|
|
# Available models: See docs/5-CONFIGURATION/local-stt.md for model sizes
|