Open Heroku deploy
Deploy-button guide with Heroku Postgres, generated secrets, and required
values for the app URL and S3-compatible recording storage.
Overview
Heroku can deploy Manifest with the repositoryapp.json and heroku.yml. The deploy button creates a Cedar container-stack app, provisions Heroku Postgres, generates Manifest secrets, and builds a tiny Heroku Dockerfile that uses the public Manifest image.
Heroku asks for a few values before it can deploy. Set BETTER_AUTH_URL to the public URL for the app name you choose. Heroku dynos have an ephemeral filesystem, so request logs write to external S3-compatible storage rather than local disk: set the bucket, region, and access key for that storage too.
Prerequisites
- A Heroku account with billing enabled.
- Permission to create apps, add-ons, and config vars.
- A private S3-compatible bucket and an access key limited to it, for request logs.
Deploy
- Open the Heroku deploy link.
- Choose an app name.
- Set
BETTER_AUTH_URLto:
- Fill in the recording storage values:
REQUEST_RECORDING_S3_BUCKET,REQUEST_RECORDING_S3_REGION,REQUEST_RECORDING_S3_ACCESS_KEY_ID, andREQUEST_RECORDING_S3_SECRET_ACCESS_KEY. LeaveREQUEST_RECORDING_S3_ENDPOINTblank only when using AWS S3. - Deploy the app.
BETTER_AUTH_SECRET and MANIFEST_ENCRYPTION_KEY, provisions Postgres as DATABASE_URL, builds Dockerfile.heroku, and starts the web dyno.
Open Manifest
Open the deployed app and create the first admin account. Fresh installs redirect to/setup; the first account you create becomes the admin.
Verify the deployment:
Production notes
- Heroku sets
PORTautomatically, so the template does not pin a port. PGSSLMODE=no-verifyenables TLS for Heroku Postgres without editing the managedDATABASE_URL.DB_POOL_MAX=8andAUTH_DB_POOL_MAX=4leave headroom under the Essential-0 connection limit.- Use a custom domain before configuring production OAuth callbacks.
- Heroku’s filesystem is ephemeral, which is why the deploy collects S3-compatible storage for request logs up front. Recordings live in your bucket, not on the dyno.