Overview
This guide walks you through deploying Smallest Self-Host Text-to-Speech (TTS) using Docker Compose. You’ll have a fully functional text-to-speech service running in under 15 minutes.
Ensure you’ve completed all prerequisites before starting this guide.
Step 1: Create Project Directory
Create a directory for your deployment:
mkdir -p ~/smallest-tts
cd ~/smallest-tts
Step 2: Login to Container Registry
Authenticate with the Smallest container registry using credentials provided by support:
Enter your username and password when prompted.
Save your credentials securely. You’ll need them if you restart or redeploy the containers.
Step 3: Create Environment File
Create a .env file with your license key:
cat > .env << 'EOF'
LICENSE_KEY=your-license-key-here
EOF
Replace your-license-key-here with the actual license key provided by Smallest.ai.
Never commit your .env file to version control. Add it to .gitignore if using git.
Step 4: Create Docker Compose File
Create a docker-compose.yml file for TTS deployment:
version : "3.8"
services :
lightning-tts :
image : quay.io/smallestinc/lightning-tts:latest
ports :
- "8876:8876"
environment :
- LICENSE_KEY=${LICENSE_KEY}
- REDIS_HOST=redis
- REDIS_PORT=6379
- PORT=8876
deploy :
resources :
reservations :
devices :
- driver : nvidia
count : 1
capabilities : [ gpu ]
restart : unless-stopped
networks :
- smallest-network
api-server :
image : quay.io/smallestinc/self-hosted-api-server:latest
container_name : api-server
environment :
- LICENSE_KEY=${LICENSE_KEY}
- LIGHTNING_TTS_BASE_URL=http://lightning-tts:8876
- API_BASE_URL=http://license-proxy:3369
- REDIS_HOST=redis
- REDIS_PORT=6379
ports :
- "7100:7100"
networks :
- smallest-network
restart : unless-stopped
depends_on :
- lightning-tts
- license-proxy
license-proxy :
image : quay.io/smallestinc/license-proxy:latest
container_name : license-proxy
environment :
- LICENSE_KEY=${LICENSE_KEY}
- PORT=3369
networks :
- smallest-network
restart : unless-stopped
redis :
image : redis:7-alpine
container_name : redis-server
ports :
- "6379:6379"
networks :
- smallest-network
restart : unless-stopped
command : redis-server --appendonly yes
healthcheck :
test : [ "CMD" , "redis-cli" , "ping" ]
interval : 5s
timeout : 3s
retries : 5
networks :
smallest-network :
driver : bridge
name : smallest-network
Step 5: Start Services
Launch all services with Docker Compose:
First Time Startup
Subsequent Startups
First startup will take 3-5 minutes as the system:
Pulls container images (~15-25 GB, includes TTS models)
Initializes GPU and loads models
Models are embedded in the container - no separate download needed. After the first run, startup takes 30-60 seconds as images are cached.
Step 6: Monitor Startup
Watch the logs to monitor startup progress:
Look for these success indicators:
Redis Ready
redis-server | Ready to accept connections
License Proxy Ready
license-proxy | License validated successfully
license-proxy | Server listening on port 3369
Lightning TTS Ready
lightning-tts | Model loaded successfully
lightning-tts | Server ready on port 8876
API Server Ready
api-server | Connected to Lightning TTS
api-server | API server listening on port 7100
Press Ctrl+C to stop following logs.
Step 7: Verify Installation
Check that all containers are running:
Expected output:
NAME IMAGE STATUS
api-server quay.io/smallestinc/self-hosted-api-server Up
license-proxy quay.io/smallestinc/license-proxy Up
lightning-tts quay.io/smallestinc/lightning-tts Up
redis-server redis:7-alpine Up (healthy)
Step 8: Test API
Test the API with a sample request:
curl -X POST http://localhost:7100/v1/speak \
-H "Authorization: Token ${ LICENSE_KEY }" \
-H "Content-Type: application/json" \
-d '{
"text": "Hello, this is a test of the text-to-speech service.",
"voice": "default"
}'
Or use the health check endpoint first: curl http://localhost:7100/health
Expected response: {"status": "healthy"}
Common Startup Issues
Error: could not select device driver "nvidia"Solution: sudo systemctl restart docker
docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi
If this fails, reinstall NVIDIA Container Toolkit.
License Validation Failed
Error: License validation failedSolution:
Verify LICENSE_KEY in .env is correct
Check internet connectivity
Ensure firewall allows HTTPS to console-api.smallest.ai
Error: port is already allocatedSolution:
Check what’s using the port:Either stop the conflicting service or change the port in docker-compose.yml
Managing Your Deployment
Stop Services
Restart Services
View Logs
docker compose logs -f [service-name]
Examples:
docker compose logs -f api-server
docker compose logs -f lightning-tts
Update Images
Pull latest images and restart:
docker compose pull
docker compose up -d
Remove Deployment
Stop and remove all containers:
Remove containers and volumes:
Using -v flag will delete all data. Models will need to be re-downloaded on next startup.
What’s Next?