Deployment
Each module ships its own Dockerfile and can be built and run independently. There is no single compose file covering the whole monorepo, because a given deployment normally needs only a subset.
A minimal deployment
Two services:
# Ubiq room server
cd Ubiq-server && docker build -t ubiq .
docker run -d --restart unless-stopped -p 8009:8009 -p 8011:8011 ubiq
# Database API
cd ../database-api && docker build -t vasili/database-api .
docker run -d --restart unless-stopped -p 5000:5000 \
-e DB_SERVER=mongo.example.org \
-e DB_USERNAME=<user> -e DB_PASSWORD=<password> \
-e X_API_KEY=<secret> \
vasili/database-api
Plus a MongoDB instance - see Data Model.
For a full VR interview deployment, use InterView
InterView provides a Docker Compose stack that brings up the Ubiq server and the Database API together with a Janus WebRTC gateway, an optional TURN relay and a web client, with versioned configuration and restart policies. Its setup guide is the fastest route to a working deployment.
Base images
docker-images/ holds shared base images used by the other modules.
| Image | Contents |
|---|---|
vasili/python |
NVIDIA cuDNN base with Python and ffmpeg preinstalled |
Speech builds on it.
Secrets
No module reads a secrets file; all take credentials from the environment.
| Secret | Used by |
|---|---|
X_API_KEY |
Database API, and every client that logs to it |
DB_PASSWORD |
Database API |
SOCKET_SECRET |
Chatbot |
| TURN credentials | Ubiq - in config/local.json |
Two committed defaults must be overridden
X_API_KEY defaults to the empty string, which accepts unauthenticated
requests. SOCKET_SECRET has a committed default value. Set both explicitly
in any deployment that is reachable by anything other than localhost.
Ports
Defaults. Several modules default to 5000, so they cannot run on the same host
without remapping.
| Module | Port |
|---|---|
| Database API | 5000 (PORT) |
| Ubiq | 8009 / 8010 / 8011 |
| Chatbot | 5000 (PORT) |
| speech2text | 5000 |