Fly.io deployment example
This project modifies the bot_runner.py server to launch a new machine for each user session. This is a recommended approach for production vs. running shell processess as your deployment will quickly run out of system resources under load.
For this example, we are using Daily as a WebRTC transport and provisioning a new room and token for each session. You can use another transport, such as WebSockets, by modifying the bot.py and bot_runner.py files accordingly.
Setting up your fly.io deployment
Create your fly.toml file
You can copy the example-fly.toml as a reference. Be sure to change the app name to something unique.
Create your .env file
Copy the base env.example to .env and enter the necessary API keys.
FLY_APP_NAME should match that in the fly.toml file.
Launch a new fly.io project
fly launch or fly launch --org your-org-name
Set the necessary app secrets from your .env
Note: you can do this manually via the fly.io dashboard under the "secrets" sub-section of your deployment (e.g. "https://fly.io/apps/fly-app-name/secrets") or run the following terminal command:
cat .env | tr '\n' ' ' | xargs flyctl secrets set
Deploy your machine
fly deploy
Connecting to your bot
Send a post request to your running fly.io instance:
curl --location --request POST 'https://YOUR_FLY_APP_NAME/'
This request will wait until the machine enters into a starting state, before returning the a room URL and token to join.