docker-compose but with built-in TLS, global networking, and managed Postgres.
Overview
This guide covers deploying MergeWatch to Fly.io, provisioning a managed Fly Postgres cluster, setting secrets, and configuring the GitHub App webhook.Prerequisites
Gather your GitHub App credentials
| Variable | Description |
|---|---|
GITHUB_APP_ID | Numeric App ID from the GitHub App settings page |
GITHUB_PRIVATE_KEY | PEM-formatted private key generated for the App |
GITHUB_WEBHOOK_SECRET | Secret used to validate incoming webhook payloads |
Deploy to Fly.io
Launch the app
From a directory containing a This creates a
Dockerfile (or use the MergeWatch image directly), run:fly.toml configuration file. The --no-deploy flag lets you configure secrets before the first deploy.Set environment variables and secrets
Use
fly secrets set for sensitive values. Fly encrypts these at rest and injects them as environment variables at runtime.fly secrets set triggers a redeploy by default. Since we used --no-deploy above, the first deploy happens in the next step.Deploy
Set up Postgres
Fly.io offers a managed Postgres service that runs as a Fly app in the same private network as your MergeWatch instance.Configure the webhook URL
Your Fly.io app is available athttps://your-app.fly.dev. Set the webhook URL on your GitHub App to:
mergewatch with whatever name you chose during fly launch.
