AutomationFlowsTutorials › n8n Cloud vs self-hosted: which to choose

n8n Cloud vs self-hosted: which to choose

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

  1. Assess your pricing needs: Log into your n8n account at n8n.io and 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.
  2. 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 from github.com/n8n-io/n8n, run npm install, then npx n8n start on your server; expect 1-2 hours initial setup plus weekly monitoring for updates and security patches.
  3. 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 master in your n8n directory, followed by npm update and a restart; n8n releases bi-weekly, so budget 30 minutes monthly to avoid falling behind on security fixes.
  4. 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.
  5. Compare customisation limits: In Cloud, access core nodes like HTTP Request and IF, but custom code nodes need approval—go to Settings > Custom Nodes and request via support. Self-hosted allows unrestricted installs: In your instance, run n8n import:package community-node-package for any npm package, enabling deep tweaks like integrating proprietary APIs without limits.
  6. 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.
  7. 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:5678 using 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.
  8. Validate your choice: Run a benchmark workflow (e.g., a Cron trigger to Google Sheets append) 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

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.