Neon’s serverless Postgres brings branching and autoscaling to the same projects you previously ran on Supabase. If you already have n8n running on Render with Supabase as the backing database, you can migrate in under 30 minutes using Neon’s import flow, then swap your Render environment variables to the Neon pooler connection string.
⚠️ Protect your credentials. Replace all example hostnames, usernames, and passwords below with values from your own projects. Never commit real secrets to Git.
Prerequisites
- Supabase project containing your existing n8n data
- Neon account (free tier works)
- Render web service running
hub.docker.com/r/n8nio/n8n - Local access to
psql(optional)
Step 1: Prepare Supabase connection details
- In Supabase, find connection details via top left Connect icon.
- Grab the entire Session Pooler URI (IPv4-friendly).
- Copy the full string somewhere safe; you’ll paste it into Neon’s import tool.
Example (replace values accordingly):
postgresql://<supabase-user>:<supabase-password>@<supabase-pooler-host>:5432/postgresStep 2: Run Neon’s import tool
- In the Neon console, Projects page.
- Click Import data ➜ under Check compatibility.
- Paste the Supabase session pooler URI you saved earlier.
- CLick on Run Checks and go through creating a new project and to start importing.
- Wait for Neon to finish copying tables, indexes, and data.
Step 3: Verify data inside Neon
Go through the database that was just imported and check that all the data is there.
If you self-hosted custom schemas or extensions on Supabase, review them and recreate any role grants or triggers you need.
Step 4: Update Render environment variables
Render only exposes IPv4 networking on the free tier, so point n8n at Neon’s pooler endpoint (ends with -pooler.<region>.neon.tech). Set the following environment variables in your Render service (replace placeholders in angle brackets):
| Key | Value |
|---|---|
DB_TYPE | postgresdb |
DB_POOL_MODE | transaction |
DB_POSTGRESDB_HOST | <neon-pooler-host> (e.g., hello-123-pooler.<region>.neon.tech) |
DB_POSTGRESDB_PORT | 5432 |
DB_POSTGRESDB_DATABASE | <neon-database> (e.g., neondb) |
DB_POSTGRESDB_USER | <neon-user> (e.g., neondb_owner) |
DB_POSTGRESDB_PASSWORD | <neon-password> |
DB_POSTGRESDB_MAX_POOL_SIZE | 10 |
DB_POSTGRESDB_CONNECTION_TIMEOUT | 600 |
DB_POSTGRESDB_SSLMODE | require |
DB_POSTGRESDB_CHANNELBINDING | require |
DB_POSTGRESDB_SSL_REJECT_UNAUTHORIZED | true |
DB_POSTGRESDB_SSL_CA_FILE | /etc/ssl/certs/ca-certificates.crt |
GENERIC_TIMEZONE | e.g., Asia/Singapore |
N8N_BLOCK_ENV_ACCESS_IN_NODE | false |
N8N_ENCRYPTION_KEY | Paste your existing key (do not rotate unless needed) |
N8N_RUNNERS_ENABLED | true |
N8N_HOST | 0.0.0.0 |
N8N_PROTOCOL | https |
N8N_PROXY_HOPS | 1 |
N8N_PORT | 5678 |
PORT | 5678 |
N8N_VERSION_NOTIFICATIONS_DISABLED | true |
WEBHOOK_URL | https://<render-subdomain>.onrender.com |
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS | true |
After saving the new variables, trigger a redeploy or hit Manual Deploy ➜ Clear build cache & deploy in Render.
Step 5: Validate n8n
- Visit your Render URL and log into n8n.
- Open a workflow, execute a node, and confirm results appear.
- Restart the Render service once to ensure data persists across restarts.
Step 6: (Optional) Remove Supabase
Once you’re confident your Neon setup is stable:
- Disable Supabase database access or archive the project.
- Update any external integrations (e.g., analytics or BI tools) to point at Neon.
- Rotate credentials if you shared the old Supabase connection string with teammates.
Troubleshooting tips
- Connection refused? Ensure you used the pooler hostname and that
sslmode=requireis present. - Channel binding errors? Set
DB_POSTGRESDB_CHANNELBINDING=requireon Render and append&channel_binding=requireto manual connection strings. - Slow imports? Large datasets may take several minutes. Monitor Neon’s import logs for progress.
What’s next
Neon gives you branching, point-in-time restore, and autoscaling. Experiment with development branches for testing risky automations, or take advantage of Neon’s CLI for CI/CD migrations while Render continues hosting your n8n instance.