InboxorcistInboxorcist

Render

Deploy Inboxorcist to Render with automatic deployments.

Render provides automatic deployments from Git with a free tier.

Render can auto-detect the render.yaml blueprint file:

  1. Log in to Render
  2. Click New > Blueprint
  3. Connect your GitHub repository
  4. Render will detect deploy/render.yaml automatically
  5. Configure environment variables when prompted
  6. Click Apply

Manual Deployment

Step 1: Create Web Service

  1. Click New > Web Service
  2. Connect your GitHub repository
  3. Configure the service:
SettingValue
Nameinboxorcist
EnvironmentDocker
Dockerfile PathDockerfile
Instance TypeStarter

Step 2: Add Persistent Disk

For SQLite persistence:

  1. Go to Disks
  2. Click Add Disk
  3. Configure:
    • Name: inboxorcist-data
    • Mount Path: /app/data
    • Size: 1 GB

Step 3: Set Environment Variables

Go to Environment and add:

# Required - Security
JWT_SECRET=your-jwt-secret-min-32-chars
ENCRYPTION_KEY=your-64-character-hex-encryption-key

# App URL (your Render domain)
APP_URL=https://inboxorcist.onrender.com

# Optional - Google OAuth (can also be configured via /setup UI)
# GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
# GOOGLE_CLIENT_SECRET=GOCSPX-your-secret

Google OAuth credentials are optional. You can configure them via the web UI at /setup after deployment.

Render can auto-generate secrets. Set generateValue: true in the blueprint for JWT_SECRET and ENCRYPTION_KEY.

Step 4: Configure Health Check

Go to Settings and set:

  • Health Check Path: /health
  • Health Check Port: 6616

Step 5: Deploy

Click Manual Deploy > Deploy latest commit or push to trigger automatic deployment.

Database Options

  1. Click New > PostgreSQL
  2. Create database with:
    • Name: inboxorcist-db
    • Database: inboxorcist
    • User: inboxorcist
  3. Copy the Internal Database URL
  4. Add to your web service environment variables:
    DATABASE_URL=postgresql://...internal-connection-string

Option B: External PostgreSQL

If you have an existing PostgreSQL database (e.g., Supabase, Neon, or your own):

  1. Go to Environment in your web service
  2. Add DATABASE_URL with your connection string:
    postgres://user:password@host:5432/dbname

Option C: SQLite with Persistent Disk

If no DATABASE_URL is set, Inboxorcist uses SQLite automatically. To persist data, add a disk (see Step 2 above).

Custom Domain

  1. Go to Settings > Custom Domains
  2. Add your domain
  3. Configure DNS as instructed
  4. Update APP_URL to your custom domain

Auto-Deploy

Render automatically deploys when you push to the connected branch. To disable:

  1. Go to Settings
  2. Toggle Auto-Deploy off

Monitoring

Logs

View real-time logs in the Logs tab.

Metrics

Monitor CPU, memory, and bandwidth in the Metrics tab.

Alerts

Configure alerts for downtime in Settings > Notifications.

Pricing

Render's free tier includes:

  • 750 hours/month of web service runtime
  • Auto-sleep after 15 minutes of inactivity
  • 100 GB bandwidth

Free tier services spin down after inactivity. First request after sleep takes 30-60 seconds.

Blueprint Reference

The deploy/render.yaml file configures:

services:
  - type: web
    name: inboxorcist
    runtime: docker
    dockerfilePath: ./Dockerfile
    healthCheckPath: /health
    disk:
      name: inboxorcist-data
      mountPath: /app/data
      sizeGB: 1
    envVars:
      - key: JWT_SECRET
        generateValue: true
      - key: ENCRYPTION_KEY
        generateValue: true
      # Google OAuth can be configured via /setup UI or added here:
      # - key: GOOGLE_CLIENT_ID
      #   sync: false
      # - key: GOOGLE_CLIENT_SECRET
      #   sync: false

Troubleshooting

Service Won't Start

Check the Logs tab for startup errors. Common issues:

  • Missing environment variables
  • Health check failing (wrong path or port)

Slow Cold Starts

Free tier services sleep after inactivity. Upgrade to paid plan for always-on.

Disk Full

If SQLite database grows large:

  1. Go to Disks
  2. Increase disk size
  3. Redeploy

OAuth Redirect Mismatch

Ensure your Google Cloud Console redirect URI matches ${APP_URL}/auth/google/callback exactly, including https://.

On this page