This tutorial compares n8n Cloud and self-hosted options, covering pricing, operational burden, upgrades, data residency, customisation limits, decision criteria, and switching costs to help you choose the right setup. It's for technical users already familiar with n8n basics who build automations and need practical guidance on deployment decisions.
Why this matters
Choosing between n8n Cloud and self-hosted can make or break your automation strategy: Cloud offers quick setup but locks you into vendor pricing and data policies, while self-hosting gives full control at the cost of ongoing maintenance. This decision avoids common traps like unexpected scaling fees or compliance headaches, ensuring your workflows run reliably without hidden operational surprises.
Step-by-step
- Assess your pricing needs: Log into your n8n account at
n8n.ioand navigate to the pricing page. Compare Cloud tiers—Starter at €20/month for 2,500 executions, Pro at €50/month for 10,000—against self-hosted costs, which start free but add server expenses (e.g., €10-50/month on DigitalOcean for a basic VPS). Calculate your expected executions using n8n's workflow history to estimate if Cloud's pay-per-use fits better than self-managing hardware. - Evaluate operational burden: For Cloud, sign up at
cloud.n8n.io, click "Create Instance," select a region, and deploy in under 5 minutes—no server setup required, but you're reliant on n8n's uptime (99.9% SLA). For self-hosted, clone the repo fromgithub.com/n8n-io/n8n, runnpm install, thennpx n8n starton your server; expect 1-2 hours initial setup plus weekly monitoring for updates and security patches. - Check upgrade cadence: In Cloud, updates roll out automatically—visit your dashboard, and you'll see notifications for new features like AI nodes without downtime. Self-hosted requires manual pulls: Run
git pull origin masterin your n8n directory, followed bynpm updateand a restart; n8n releases bi-weekly, so budget 30 minutes monthly to avoid falling behind on security fixes. - Review data residency: During Cloud signup, choose a region (EU, US, etc.) to comply with GDPR—data stays in that zone. For self-hosted, deploy on your preferred cloud (e.g., AWS EU-West-1) using Docker:
docker run -it --rm --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n n8nio/n8n; this ensures full control over where data resides, ideal for strict regulations like HIPAA. - Compare customisation limits: In Cloud, access core nodes like
HTTP RequestandIF, but custom code nodes need approval—go to Settings > Custom Nodes and request via support. Self-hosted allows unrestricted installs: In your instance, runn8n import:package community-node-packagefor any npm package, enabling deep tweaks like integrating proprietary APIs without limits. - Determine when each fits: If you're a solo builder with <10 workflows and value speed, pick Cloud—expect zero ops hassle. For teams needing scalability or sensitive data, choose self-hosted if you have DevOps skills; test by running a sample workflow on a local Docker instance to gauge maintenance comfort.
- Estimate switching costs: To migrate from Cloud to self-hosted, export workflows via the UI (Executions > Export All), then import into your local n8n at
localhost:5678using the JSON upload. Factor in 2-4 hours for reconfiguration of credentials and webhooks; reverse migration is simpler—invite your Cloud instance to pull from self-hosted via API keys. - Validate your choice: Run a benchmark workflow (e.g., a
Crontrigger toGoogle Sheetsappend) on both setups. Monitor execution times and costs over a week; if self-hosted exceeds your ops tolerance, stick with Cloud.
Worked example
Consider a common e-commerce automation: syncing new Shopify orders to a CRM like HubSpot. In n8n Cloud, start with a Shopify Trigger node set to "On new order," which fires on webhook events from your store. Connect it to an IF node filtering orders over £100 (using expression {{ $json.total_price > 10000 }} for cents), then route high-value ones to a HubSpot node creating contacts with fields like email and amount. Finally, add a Slack node for notifications. Deploy via the Cloud dashboard—webhooks auto-configure, and the workflow runs serverlessly, handling 50 orders/day without you lifting a finger.
For self-hosted, install n8n on a VPS, then build the same flow: The Shopify Trigger requires manually setting the webhook URL to your server's https://yourdomain.com/webhook/shopify (use NGINX reverse proxy for SSL). The IF logic remains identical, but you can add a custom Code node for advanced processing, like encrypting sensitive data before the HubSpot call. End-to-end, it processes orders in under 2 seconds per execution, with full logs accessible via docker logs n8n, but you'll need to restart the container after any node updates.
Common pitfalls
- Underestimating self-hosted maintenance: Symptom: Workflows fail silently after OS updates break Docker. Fix: Set up automated backups with
crontabrunningdocker exec n8n n8n export:workflow --all --output=/backup/workflows.jsonweekly, and use tools like Watchtower for auto-updates. - Cloud execution limits surprise: Symptom: Workflows pause mid-month due to hitting tier caps, delaying critical tasks. Fix: Monitor via the Cloud dashboard's usage graph; upgrade tiers proactively or add a
Waitnode to throttle executions if nearing limits. - Data residency oversights: Symptom: EU users face fines for US-hosted Cloud data. Fix: During setup, select the EU region explicitly; for self-hosted, verify with
curl ifconfig.methat your server IP matches the compliant zone. - High switching friction: Symptom: Exported JSON workflows lose credential mappings on import. Fix: Use n8n's
Credentialsexport/import feature before migrating, and test with a dummy workflow to remap any broken references. - Custom node incompatibilities: Symptom: Self-hosted custom nodes crash on upgrades. Fix: Pin versions in
package.jsonand test post-update withn8n test:workflowon a staging instance.
Related workflows in the catalog
Explore the n8n workflow catalog at n8n.io/workflows for ready-to-import templates like "Shopify to HubSpot Sync" or "Slack Notification on Form Submissions," which adapt easily to Cloud or self-hosted setups. With over 14,000+ importable workflows, you can fork these to test deployment differences—search for "e-commerce" or "CRM integration" to find patterns matching your use case. These examples often include notes on scalability, helping refine your choice between hosted and on-prem.