Skip to main content

Deploying Miru on Render

Miru 3.0 is designed to run on Render with:

  • one web service
  • one worker service
  • one Postgres database
  • one Render Key Value instance

For the fastest setup, use the repository Blueprint at the root of the repo:

Or use the one-click button from the main repository README.

Branch model​

  • production: deploy branch for app.miru.so
  • develop: integration branch
  • stable-3-0: release preparation branch

One-click deploy​

  1. Open the Deploy to Render button from the README.
  2. Confirm the Blueprint resources.
  3. Fill in the required secret values.
  4. Create the stack.
  5. Set APP_BASE_URL to your Render hostname first, then to your custom domain when DNS is ready.

Services created by the Blueprint​

  • miru-web
  • miru-worker
  • miru-db
  • miru-redis

Required environment variables​

These should be provided during Blueprint setup or immediately after first deploy:

  • APP_BASE_URL
  • DEFAULT_MAILER_SENDER
  • DEFAULT_FROM_EMAIL
  • REPLY_TO_EMAIL
  • EMAIL_DELIVERY_METHOD
  • POSTMARK_API_TOKEN
  • SENTRY_DSN
  • STRIPE_SECRET_KEY
  • STRIPE_PUBLISHABLE_KEY
  • STRIPE_WEBHOOK_ENDPOINT_SECRET
  • STRIPE_MONTHLY_PRICE_ID
  • STRIPE_YEARLY_PRICE_ID
  • STRIPE_PLAN_PAGE_URL
  • GOOGLE_OAUTH_CLIENT_ID
  • GOOGLE_OAUTH_CLIENT_SECRET
  • GOOGLE_CLIENT_ID
  • GOOGLE_CLIENT_SECRET
  • CLOUDFLARE_R2_ACCESS_KEY_ID
  • CLOUDFLARE_R2_SECRET_ACCESS_KEY
  • CLOUDFLARE_R2_BUCKET_NAME
  • CLOUDFLARE_R2_ENDPOINT
  • CLOUDFLARE_R2_REGION

Custom domain​

For production:

  1. Add app.miru.so as a custom domain in Render.
  2. Point DNS at the Render web service.
  3. Verify https://app.miru.so/health.
  4. Verify email/password login.
  5. Verify Google OAuth after the callback host changes to the custom domain.

Worker​

The worker runs:

bundle exec rake solid_queue:start

Make sure the worker has the same shared app secrets as the web service.

Verification after deploy​

Run these checks before cutover:

  1. https://<your-domain>/health
  2. log in with a real owner account
  3. verify one worker-backed action
  4. verify one mailer flow
  5. check Sentry for new unresolved errors