TranscendCode

Run n8n for Free Forever: Render + Supabase + Cron Job Hack

Bryce Mc Williams
#n8n#automation#serverless#render#supabase#free#tutorial#workflow#docker

The Problem: n8n Without Breaking the Bank

n8n is one of the best open-source workflow automation tools—powerful enough for production workflows, flexible enough for personal projects. The catch? The hosted version starts at $20/month, and self-hosting requires server management.

As a solo developer experimenting with automation, I wanted n8n running 24/7 for free. After testing several approaches, I found a combination that works reliably:

Render free tier (Docker hosting) + Supabase free PostgreSQL (persistent storage) + cron-job.org (prevents spin-down)

Total cost: €0/month. Here’s the complete setup that I’ve been running for months.

Why This Stack Works

Render Free Tier:

Supabase Free Tier:

cron-job.org:

Prerequisites

  1. GitHub account (for Render deployment)
  2. Supabase account (free tier)
  3. 30 minutes to set up

Step 1: Fork n8n Repository

Render deploys from GitHub repositories. Fork the official n8n repo or create a simple Dockerfile:

  1. Create new GitHub repo: n8n-render-free
  2. Add a Dockerfile:
FROM n8nio/n8n:latest

This gives you control over updates and configuration.

Step 2: Create Supabase Database

Supabase provides the persistent PostgreSQL database n8n needs.

  1. Sign up at supabase.com (free tier)
  2. Create new project: n8n-render-free
  3. Choose region close to you (Frankfurt for EU users)
  4. Copy these values to a note:
    • Host: Database connection string host
    • Port: 5432 (usually)
    • Database: postgres (default)
    • User: postgres (default)
    • Password: Your generated password

Step 3: Deploy n8n on Render

Now deploy n8n using Render’s free tier.

  1. Go to render.com and sign up (free)
  2. Click “New +” → “Web Service”
  3. Connect your GitHub account, select your n8n repo
  4. Name: n8n-free
  5. Region: Choose closest (Frankfurt for EU)
  6. Branch: master
  7. Runtime: Docker
  8. Instance Type: Free (750 hours/month)
  9. Environment Variables (critical for Supabase):
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=your-supabase-host.supabase.co
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=postgres
DB_POSTGRESDB_USER=postgres
DB_POSTGRESDB_PASSWORD=your-supabase-password
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=your-secure-password
N8N_HOST=your-render-url.onrender.com
N8N_PORT=5678
N8N_PROTOCOL=https
WEBHOOK_URL=https://your-render-url.onrender.com/
GENERIC_TIMEZONE=Europe/Amsterdam
EXECUTIONS_PROCESS=main
  1. Click Create Web Service

Render builds and deploys n8n (~2-3 minutes). Your n8n instance will be available at https://your-n8n-name.onrender.com.

Step 4: Initial Setup and Testing

  1. Visit your n8n URL
  2. Create owner account (use the basic auth credentials you set)
  3. Create your first workflow to test functionality
  4. Verify workflows save to Supabase (check Supabase dashboard)

Important: On first visit after spin-down, expect 30-60 second startup delay. Subsequent requests are instant.

Step 5: Prevent Spin-Down with cron-job.org

Render free tier spins down services after 15 minutes of inactivity. Fix this with free cron jobs.

  1. Go to cron-job.org
  2. Click “New Cron Job”
  3. URL: https://your-n8n-name.onrender.com/ (your Render URL)
  4. Schedule: Every 5 minutes (*/5 * * * *)
  5. Timeout: 30 seconds
  6. User Agent: Leave default
  7. Click “Save Cron Job”

cron-job.org pings your n8n every 5 minutes, keeping Render awake 24/7.

Step 6: Verify Persistence

Test that data survives restarts:

  1. Create a workflow with several nodes
  2. Manually restart your Render service
  3. Wait 1-2 minutes for restart
  4. Refresh n8n—your workflows should still be there!

Supabase persistence ensures no data loss during spin-downs.

Complete Environment Variables Reference

Here’s the full list of environment variables I recommend:

# Database (Supabase PostgreSQL)
DB_TYPE=postgresdb
DB_POSTGRESDB_HOST=your-supabase-host.supabase.co
DB_POSTGRESDB_PORT=5432
DB_POSTGRESDB_DATABASE=postgres
DB_POSTGRESDB_USER=postgres
DB_POSTGRESDB_PASSWORD=your-password

# Basic Authentication (protect your n8n)
N8N_BASIC_AUTH_ACTIVE=true
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=super-secure-password

# Hosting
N8N_HOST=your-n8n-name.onrender.com
N8N_PORT=5678
N8N_PROTOCOL=https
WEBHOOK_URL=https://your-n8n-name.onrender.com/

# Timezone
GENERIC_TIMEZONE=Europe/Amsterdam

# Executions
EXECUTIONS_PROCESS=main

Limitations and Gotchas

This free setup has tradeoffs you should understand:

Spin-Down Behavior

Resource Constraints

Database Limits

Not for Production

This setup is perfect for:

Don’t use for:

Cost Breakdown: €0/Month

Render: Free tier (750 hours/month) Supabase: Free tier (500MB, unlimited API) cron-job.org: Free (unlimited cron jobs) GitHub: Free (public repositories)

Total: €0/month

Performance Optimization Tips

Reduce Startup Time

Add to environment variables:

N8N_METRICS=true
EXECUTIONS_TIMEOUT=300

Workflow Best Practices

  1. Pin n8n version in Dockerfile
  2. Disable execution history for non-critical workflows
  3. Use webhook triggers instead of polling where possible
  4. Export workflows regularly as JSON backup

Backup Strategy

  1. Manual export: n8n Settings → Export all workflows as JSON
  2. Automated backup: Schedule workflow that exports to Google Drive/Dropbox
  3. Supabase dashboard: Export database periodically

Troubleshooting

Problem: Render Won’t Start

Cause: Missing environment variables or Docker build failure.

Solution:

Problem: n8n Can’t Connect to Database

Cause: Wrong Supabase credentials or network restrictions.

Solution:

Problem: cron-job.org Not Keeping Alive

Cause: Wrong URL or cron job timeout.

Solution:

Problem: Workflows Disappear

Cause: Database connection failed during startup.

Solution:

Alternatives Comparison

ProviderCostPersistenceUptimeEase of Setup
Render + Supabase€0Yes99.9%Medium
Railway Hobby€5/moYes100%Easy
Fly.io€5/moYes100%Medium
DigitalOcean App€5/moYes100%Easy

When to Upgrade

Move to paid hosting when:

Recommended upgrade: Render Starter (€7/month) + Supabase Pro (€25/month) = €32/month total.

Conclusion

This Render + Supabase + cron-job.org stack gives you production-grade n8n hosting for free. It’s perfect for learning, prototyping, and personal automation projects.

Key benefits:

Limitations you should accept:

For zero-budget developers wanting to learn n8n or build personal automation, this is the best free option available.

Now go build your first workflow and start automating your life!

← Back to Blog