Menace Voice is self-hosted with Docker. Everything ships as two images (dograh-api and dograh-ui) plus Postgres, Redis, and MinIO, orchestrated with Docker Compose. Pick the deployment path that matches what you're trying to do:
| Path | Use it when | Guide |
|---|---|---|
| Local Docker | You want to try Menace Voice on your own machine. No public URL, no telephony. | Docker → Option 1 |
| Remote server | You want a real server reachable from the internet, with HTTPS out of the box (via a free sslip.io certificate — no domain required). | Docker → Option 2 |
| Custom domain | You already have a remote deployment and want your own domain (e.g. voice.yourcompany.com) instead of the sslip.io URL. | Custom Domain |
| Heroku | One-click PaaS deployment. | Heroku — coming soon |
Browsers treat microphone access as a secure-context feature, so the app must be served over HTTPS — or accessed at localhost/127.0.0.1 over HTTP, which is also a secure context. Local Docker uses http://localhost:3010 and therefore does not need a certificate.
After you deploy#
Once the platform is running, these guides cover keeping it running:
- Authentication — switch from the built-in local email/password provider to Stack Auth for social login.
- Scaling — run multiple FastAPI workers behind nginx for higher call throughput.
- Update — move an existing deployment to a newer Menace Voice version.
Where to start#
- Kicking the tires? Start with local Docker — running in a few minutes, no server needed.
- Putting it in front of real callers? Use remote server deployment, then layer on a custom domain if you want one.
- Already running and need to upgrade? Go straight to Update.
- Expecting high call volume? Read Scaling once your base deployment is live.
Related#
- Contribution: Setup — for developing on Menace Voice itself rather than deploying it
- Environment Variables