Deployments
IntraCord is self-hosted with Docker. Everything ships as two images (IntraCord-api and IntraCord-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 IntraCord 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 IntraCord 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 IntraCord itself rather than deploying it
- Environment Variables