Fly.io is a platform for deploying applications to the edge. It's a great fit for Coder because it's easy to deploy, scale, and manage. In this guide, we'll walk through deploying Coder on Fly.io and creating remote workspaces as Fly.io (firecracker) machines.
Prerequisites
Deploy Coder
Log in to Fly.io with the CLI:
flyctl auth login
Create a new fly postgres database:
flyctl postgres create --name <postgres-app-name>
Create a new fly app:
flyctl apps create --name <coder-app-name>
Connect to the database with the coder fly app:
flyctl postgres attach --app <coder-app-name> <postgres-app-name>
Important Copy the connection string that is displayed in the terminal. You'll need it in the next step.
Create a new secret with the name
CODER_
and the value as the connection string you copied in the previous step.PG_ CONNECTION_ URL flyctl secrets set CODER_PG_CONNECTION_URL=<connection-string> --app <coder-app-name>
Edit the
fly.toml
file and update as per the example below:app = "<coder-app-name>" # Replace <coder-app-name> with the name of your app kill_signal = "SIGINT" kill_timeout = 5 primary_region = "ams" # See a list of regions here: https://fly.io/docs/reference/regions/ [experimental] auto_rollback = true private_network = true # Allows Coder to connect to the database [build] image = "ghcr.io/coder/coder:latest" [env] CODER_ACCESS_URL = "https://<coder-app-name>.fly.dev" # Replace <app-name> with the name of your app CODER_HTTP_ADDRESS = "0.0.0.0:3000" #CODER_VERBOSE = "true" # Uncomment this if you want to see more logs CODER_TELEMETRY_INSTALL_SOURCE = "fly.io" [[services]] protocol = "tcp" internal_port = 3000 processes = ["app"] [[services.ports]] port = 80 handlers = ["http"] force_https = true [[services.ports]] port = 443 handlers = ["tls", "http"] [services.concurrency] type = "connections" hard_limit = 25
Deploy the app:
Run the following command to deploy the app from the directory where the
fly.toml
file is located:flyctl deploy --app <coder-app-name>
Scale the Coder app to 1GB of memory:
flyctl scale memory 1024 --app <coder-app-name>
Congratulations! You've deployed Coder on Fly.io!. Go to the URL of your app and create your first user!