Install flyctl
CLI-based deploy using the public Docker image, Fly Postgres, and generated
Manifest secrets.
Overview
Fly.io runs Manifest as a long-running Docker container close to users, with a Fly Postgres database in the same private network. This is not a browser one-click button. The Manifest repository includes adeploy/fly/deploy.sh script that creates the app, creates Postgres, attaches DATABASE_URL, sets secrets, and deploys the public Docker image.
Prerequisites
- A Fly.io account with billing enabled.
flyctlinstalled and authenticated withfly auth login.- Permission to create Fly apps and Postgres apps.
Deploy
From the Manifest repository root:docker.io/manifestdotbuild/manifest:6, provisions Fly Postgres, attaches it as DATABASE_URL, and generates separate values for BETTER_AUTH_SECRET and MANIFEST_ENCRYPTION_KEY. Re-running the script keeps existing secrets instead of rotating sessions or encrypted provider credentials.
Open Manifest
Open the deployed app and create the first admin account:Production notes
- The template keeps one Machine running so Manifest is always available for agents.
- For production, choose a larger Postgres configuration or Fly Managed Postgres instead of the small script default.
- Add a custom domain before configuring OAuth callback URLs.
- Set
MANIFEST_TELEMETRY_DISABLED=1as a Fly secret if you want to disable anonymous self-hosted telemetry. - Destroy both the app and database when testing is done.