Deployment¶
Heroku¶
You can easily deploy Camus on Heroku with just a few commands. The Camus repository contains the necessary configuration files to enable this, namely app.json, Procfile, and runtime.txt.
To get started, create a Heroku account and install the Heroku CLI tool. Clone the Camus repo if you haven’t already, login to Heroku, and create a new Heroku project:
$ git clone https://github.com/mrgnr/camus.git && cd camus
$ heroku login -i
$ heroku create
The heroku create
command automatically configures a new git remote called
heroku
(which you can verify by running git remote -v
). To deploy Camus
to Heroku, simply push the master branch to the heroku remote:
$ git push heroku master
You should now be able to see Camus running in your browser:
$ heroku open
Configuration¶
You can use the heroku config
command to set environment variables that are
used to configure Camus. For example, set the SECRET_KEY and specify a TURN
server:
$ heroku config:set SECRET_KEY=aVerySecretKey
$ heroku config:set TURN_HOST=turn.example.com
$ heroku config:set TURN_PORT=3478
$ heroku config:set TURN_STATIC_AUTH_SECRET=mySuperSecretSecret
For more information, see Heroku’s configuration documentation.
Limitations¶
You should not use horizontal scaling (i.e. runnning Camus across multiple dynos using the
heroku ps:scale
command). Camus currently stores all room and client data in memory and has no backend storage, so there is no way to synchronize data across multiple dynos. If you need to scale (which is probably not necessary unless you have hundreds or thousands of simultaneous users), use vertical scaling with theheroku ps:resize
command instead.Any time you restart the Camus app on Heroku, room and client data will be lost, since Camus currently stores this data in memory.
By default, no TURN server is configured when you deploy Camus on Heroku. If you want to minimize the risk of users experiencing WebRTC connection issues, you should configure a TURN server, such as Coturn.
DigitalOcean with Terraform¶
You can deploy Camus on a DigitalOcean droplet using Terraform Camus. See the documentation there for instructions.