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:
- Runs Docker containers indefinitely (with spin-down workaround)
- 750 hours/month (25 days 24/7)
- 512MB RAM, 0.1 CPU—enough for n8n
- Public HTTPS URL
- Automatic deployments from GitHub
Supabase Free Tier:
- PostgreSQL database (n8n’s preferred database)
- 500MB storage
- Unlimited API requests (fair use)
- No spin-down—persistent data
- Built-in authentication and real-time features (bonus)
cron-job.org:
- Free cron jobs every minute
- Pings your n8n instance to prevent Render spin-down
- Simple setup, reliable uptime
Prerequisites
- GitHub account (for Render deployment)
- Supabase account (free tier)
- 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:
- Create new GitHub repo:
n8n-render-free
- 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.
- Sign up at supabase.com (free tier)
- Create new project:
n8n-render-free
- Choose region close to you (Frankfurt for EU users)
- 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.
- Go to render.com and sign up (free)
- Click “New +” → “Web Service”
- Connect your GitHub account, select your n8n repo
- Name:
n8n-free
- Region: Choose closest (Frankfurt for EU)
- Branch:
master
- Runtime:
Docker
- Instance Type: Free (750 hours/month)
- 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
- 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
- Visit your n8n URL
- Create owner account (use the basic auth credentials you set)
- Create your first workflow to test functionality
- 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.
- Go to cron-job.org
- Click “New Cron Job”
- URL:
https://your-n8n-name.onrender.com/ (your Render URL)
- Schedule: Every 5 minutes (
*/5 * * * *)
- Timeout: 30 seconds
- User Agent: Leave default
- 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:
- Create a workflow with several nodes
- Manually restart your Render service
- Wait 1-2 minutes for restart
- 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
- 15-minute inactivity → service sleeps
- 30-60 second wakeup on first request after sleep
- cron-job.org pings every 5 minutes → near-100% uptime
Resource Constraints
- 512MB RAM: Enough for 5-10 concurrent workflows
- 0.1 CPU: Light workflows only
- 750 hours/month: 25 days 24/7
Database Limits
- 500MB storage: ~10,000 workflow executions
- Unlimited API requests: No practical limit
Not for Production
This setup is perfect for:
- Learning n8n
- Prototyping workflows
- Personal automation
- Small team collaboration
Don’t use for:
- Business-critical workflows
- High-volume processing
- Heavy data transformation
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
Reduce Startup Time
Add to environment variables:
N8N_METRICS=true
EXECUTIONS_TIMEOUT=300
Workflow Best Practices
- Pin n8n version in Dockerfile
- Disable execution history for non-critical workflows
- Use webhook triggers instead of polling where possible
- Export workflows regularly as JSON backup
Backup Strategy
- Manual export: n8n Settings → Export all workflows as JSON
- Automated backup: Schedule workflow that exports to Google Drive/Dropbox
- Supabase dashboard: Export database periodically
Troubleshooting
Problem: Render Won’t Start
Cause: Missing environment variables or Docker build failure.
Solution:
- Check Render logs for errors
- Verify all DB_* environment variables are set
- Ensure Supabase database is accessible
Problem: n8n Can’t Connect to Database
Cause: Wrong Supabase credentials or network restrictions.
Solution:
- Verify host, port, user, password in Render environment variables
- Test Supabase connection from Render logs
- Check Supabase project status (not paused)
Problem: cron-job.org Not Keeping Alive
Cause: Wrong URL or cron job timeout.
Solution:
- Verify cron-job.org pings your exact Render URL
- Test URL responds with 200 OK
- Set cron interval to every 5 minutes
Problem: Workflows Disappear
Cause: Database connection failed during startup.
Solution:
- Verify Supabase credentials in Render
- Check Render logs for PostgreSQL connection errors
- Restart Render service and watch startup logs
Alternatives Comparison
| Provider | Cost | Persistence | Uptime | Ease of Setup |
|---|
| Render + Supabase | €0 | Yes | 99.9% | Medium |
| Railway Hobby | €5/mo | Yes | 100% | Easy |
| Fly.io | €5/mo | Yes | 100% | Medium |
| DigitalOcean App | €5/mo | Yes | 100% | Easy |
When to Upgrade
Move to paid hosting when:
- Workflows take >5 minutes (Render free timeout)
- >20 concurrent executions (RAM limit)
- >500MB database storage (Supabase free limit)
- Mission-critical 24/7 uptime required
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:
- Zero cost
- Persistent data
- Reliable uptime
- Production features (HTTPS, PostgreSQL, Docker)
- Scalable to paid tiers when needed
Limitations you should accept:
- 30-60 second spin-up delay (first request only)
- Resource constraints (light workflows)
- Manual backups required
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!