Back · Hosting
paas

Render

Docker deploy with managed Postgres.

Difficulty
Monthly cost from: ~$7–25/mo
Best for: Teams comfortable with render.yaml / Docker.

Render runs n8n as a Web Service from the official Docker image, paired with a Render managed Postgres and a persistent disk for /home/node/.n8n.

Pros

  • Simple Docker deploys
  • Managed Postgres
  • Auto TLS + custom domains

Cons

  • No community node install without custom image
  • Cold starts on free tier

Prerequisites

  • A Render account
  • A payment method (free tier sleeps and isn't suitable for webhooks)
  • Optional custom domain

Step-by-step guide

  1. Step 1

    Create a new Web Service

    Choose 'Deploy an existing image' and enter n8nio/n8n as the image.

  2. Step 2

    Add a persistent disk

    Mount a disk at /home/node/.n8n so config/binary data survive redeploys.

  3. Step 3

    Add Render Postgres

    Create a managed Postgres instance and copy its connection details into DB_* env vars.

  4. Step 4

    Set env vars & deploy

    Set N8N_HOST to your onrender.com URL or custom domain, WEBHOOK_URL, N8N_ENCRYPTION_KEY; Render provides free TLS.

Scaling & queue mode

Scale the Render service vertically (larger instance type) or run a second service as an `n8n worker` in queue mode connected to a shared Redis (Render Key Value) and Postgres instance.

Backup & upgrade

Render Postgres includes automated daily backups on paid plans; upgrade n8n by bumping the image tag in the service settings and triggering a manual deploy.

Security checklist

  • Always run behind HTTPS (Caddy/Traefik/Nginx + Let's Encrypt) — never expose port 5678 directly.
  • Set a strong, permanent N8N_ENCRYPTION_KEY and back it up (losing it breaks stored credentials).
  • Use Postgres, not the default SQLite, for anything beyond local testing.
  • Enable N8N_BASIC_AUTH or an SSO/proxy layer if the instance is reachable from the internet.
  • Restrict inbound firewall rules to 80/443 (and SSH from your IP only).
  • Keep the n8n image pinned and update on a schedule instead of always using :latest in production.

Cost breakdown

  • Starter Web Service$7/mo
  • Managed Postgresfrom $6/mo

Troubleshooting & FAQ

+Can I use SQLite instead of Postgres?

n8n defaults to SQLite, which works for testing but isn't recommended for production: no concurrent writers, harder backups, and risk of corruption under load. Use Postgres for anything real.

+My webhooks return 404 / don't trigger — why?

WEBHOOK_URL must match the public HTTPS URL exactly (including trailing slash), and the workflow must be activated (not just saved) for production webhook URLs to work.

+How do I move from Render to another host later?

Export workflows/credentials with the n8n CLI (`n8n export:workflow --all` / `export:credentials --all`) or the REST API, restore the Postgres dump on the new host, then import.

+Do I lose data if the container restarts?

No, as long as n8n_data and the Postgres volume are mounted as named Docker volumes (not ephemeral container storage), your data persists across restarts and image updates.