How to Self-Host n8n for FREE in Minutes (2025 Guide)

Alex Tarlescu

Alex Tarlescu

How to Self-Host n8n for FREE in Minutes (2025 Guide)

Quick Summary

Are you tired of monthly subscription fees for workflow automation tools? Want more control and privacy over your automation data? This guide will show you how to self-host n8n for free—using Render and Supabase—so you get powerful workflow automation with no usage limits and ful…

Are you tired of monthly subscription fees for workflow automation tools? Want more control and privacy over your automation data? This guide will show you how to self-host n8n for free—using Render and Supabase—so you get powerful workflow automation with no usage limits and full data privacy.

n8n hosting documentation showing deployment options


What is n8n?

n8n (pronounced “n-eight-n”) is a powerful workflow automation tool (think open-source Zapier/Make) you can self-host. This means:

  • Cost savings: No monthly fees.
  • Data privacy: Your data stays on your server.
  • Unlimited workflows: No artificial limits.
  • Customization & Security: Configure anything to your needs.

Prerequisites

  • Free Render account
  • Free Supabase (or direct PostgreSQL) account
  • Basic understanding of environment variables (don’t worry, steps are shown)

Step 1: Set Up Your Database (1–3 minutes)

With Supabase

  1. Sign up and log in to Supabase.
  2. Click “New Project”, give it a name (e.g., n8n-tutorial).
  3. Generate and save a secure database password.
  4. Choose the region nearest you.
  5. Wait for initialization (2–3 minutes).
  6. In Project Settings → Database, copy your HostPortUser, and Password.

With Render PostgreSQL

  1. In the Render dashboard, click “New” → “PostgreSQL”.
  2. Name your database (e.g., n8n_db).
  3. Choose the same region as your web service.
  4. Select “Free” tier for testing, or “Starter” for more resources.
  5. Click “Create Database” and wait for deployment.

Step 2: Deploy n8n on Render (1–4 minutes)

  1. Sign up and log in to Render.
  2. Click “New” → “Web Service”.
  3. Select “Deploy an existing image” and use the Docker image:docker.io/n8nio/n8n
  4. Name your service (e.g., n8n-tutorial).
  5. Select the region matching your database.
  6. Choose “Free” instance type for testing (upgrade for production).
n8n Docker installation guide for self-hosting

Step 3: Configure Environment Variables (1–3 minutes)

In your Render deployment, add these environment variables (replace placeholders with your actual credentials):

NODE_ENV=production
N8N_PORT=5678
N8N_PROTOCOL=https
N8N_HOST=your-service-name.onrender.com
N8N_LOG_LEVEL=info
N8N_ENCRYPTION_KEY=your_generated_secure_key_here
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false
N8N_RUNNERS_ENABLED=true

# Webhook configuration
WEBHOOK_URL=https://your-service-name.onrender.com/
N8N_PAYLOAD_SIZE_MAX=16
N8N_ENDPOINT_WEBHOOK=/webhook
N8N_ENDPOINT_WEBHOOK_TEST=/webhook-test

# Timezone settings
GENERIC_TIMEZONE=America/New_York
TZ=America/New_York

# Database configuration
DATABASE_URL=postgresql://your_db_user:your_db_password@your_db_host/your_db_name?sslmode=require
DB_POSTGRESDB_DATABASE=your_db_name
DB_POSTGRESDB_HOST=your_db_host
DB_POSTGRESDB_PASSWORD=your_db_password
DB_POSTGRESDB_USER=your_db_user
DB_POSTGRESDB_PORT=5432
  • For N8N_ENCRYPTION_KEY, generate a strong random string (e.g., from [randomkeygen.com]).
  • For DATABASE_URL, ensure the ?sslmode=require is at the end.
  • Use your database details from Supabase or Render.

Once done, click Save Changes or Create Web Service to deploy/redeploy.


Step 4: Access n8n & Initial Setup

  • Once deployment is “Live,” click your service URL.
  • You’ll be prompted to create an admin account—enter your email and password.

Step 5: Test Your Setup

  1. Inside n8n, click “Create new workflow”.
  2. Name it (e.g. “Ping Service”).
  3. Add a “Webhook” trigger node (GET request).
  4. Add a “Respond to Webhook” node to return { "status": "available" }.
  5. Test using the webhook URL. If you get “status: available”, you’re good!

Optional: Enable Free Lifetime Features

  • Go to Settings → License.
  • Paste the activation key emailed to you by n8n for free lifetime features and community nodes.

Troubleshooting

Step 3: Configure Environment Variables (1–3 minutes)

In your Render deployment, add these environment variables (replace placeholders with your actual credentials):

Illustration of configuring environment variables for self-hosting n8n.
  • Database errors: Double-check DB credentials and ?sslmode=require.
  • Webhooks not firing: Make sure WEBHOOK_URL matches your live n8n URL.
  • Slow startup: Free Render tier will “sleep” after inactivity; upgrade to always-on if needed.

Pros and Cons

Pros:

  • Free for testing, very affordable for always-on (~$13/month total)
  • Unlimited workflow limits
  • Full data ownership
  • Community & custom node access

Cons:

  • Free tier spins down after inactivity (causes cold starts)
  • You’re responsible for updates and maintenance
  • Limited support compared to official cloud

  • Use “Starter” tiers for always-on instances—still cheaper than n8n’s hosted cloud.

Conclusion

Congrats! You now have a secure, self-hosted n8n instance for zero to very low monthly cost—perfect for learning, prototyping, personal automations, or even small business workflows.

If you found this guide useful, please share it!


*Questions? Drop a comment and I’ll help you out! Disclosure: Some links are affiliate links (no extra cost to you).


If you need a ready-to-use .env file template or have advanced requirements (e.g., custom Docker builds), feel free to ask!

Found this useful? Share it.

Ready to automate?

Want AI like this for your business?

We build the systems we write about. Book a call to see what we can automate for you.