Fly checklist
Step-by-step checklist for promoting a Fly API through staging, UAT, and production—GitHub secrets, Fly env vars, tunnel, and go-live gates.
Check items off in your browser (saved locally on this page).
See Fly · Sentry · Branches · GitHub
Staging checklist
Everything to stand up and run in the staging Fly org (staging branch).
UAT checklist
Full list for UAT (uat branch, UAT Fly org)—including promotion from staging.
Production checklist
Full list for production (main branch, production Fly org).
GitHub Actions information
These are the minimum repository secrets required for deploy. Add them under Settings → Secrets and variables → Actions in the GitHub repo. The deploy workflow uses them for Sentry (source maps and release tied to the build).
SENTRY_AUTH_TOKENSENTRY_ORGSENTRY_PROJECT
All three must be defined before deploy can ship with production observability. More on go-live: Sentry standards.
Fly environment variables
Minimum Fly secrets on each tier’s app (fly secrets set). Set per app name in that tier’s Fly org.
MONGODB_URI— when the API uses MongoDB Atlas (MongoDB standards)SENTRY_ORGSENTRY_PROJECTSENTRY_ENVIRONMENT— e.g.staging,uat,productionCLOUDFLARE_TUNNEL_TOKEN— socloudflaredcan register the app with Cloudflare Tunnel
Example (one secret at a time or combined):
fly secrets set CLOUDFLARE_TUNNEL_TOKEN=<token> -a <fly-app-name>
Token from Cloudflare → your org’s tunnel → Install connector. See Fly tunnel standards.
Dedicated egress IPv4 (only if needed)
If the API talks to MongoDB Atlas or another service that uses IP access rules, manually attach a dedicated egress IPv4 to that Fly app and give that IP to the data layer.
fly ips allocate-egress —region iad -a <fly-app-name> —yes — then fly ips list and allowlist the egress address (not ingress).
If nothing external requires IP allowlisting, do not allocate an egress IP.
Atlas rule naming and key rotation: Naming conventions.