Key Takeaways
- Web-hosting sizing rules underallocate RAM and NVMe for n8n AI agent workloads—profile execution volume, concurrency, and model hosting first.
- Cloud subscriptions cushion low volumes, but self-hosting wins after thousands of daily executions—managed Postgres and backup costs shift the math.
- n8n 2.0 forces PostgreSQL-only, external task runners, and default security hardening across every self-hosted VPS production stack.
Table of Contents
The Cloud Pricing Cushion That Vanishes at Scale
A team crossing 5,000 daily agent executions in 2026 faces an arithmetic problem that cloud subscriptions cannot hide from: per-execution pricing scales linearly with adoption, while a correctly sized Virtual Private Server does not.
That is the core argument of a new production guide from n8n Lab, which maps the exact RAM, CPU, storage, and GPU thresholds required to move n8n from a fragile single-process install into a hardened self-hosted automation stack.
The guide also exposes a costly mismatch in the market: most VPS sizing advice was written for websites, where the bottleneck is concurrent HTTP requests.
AI agent workloads do not fail that way.
They fail on persistent memory for agent state and vector databases, on concurrent long-running webhook listeners, on strict security boundaries, and on NVMe write IOPS.
The result is that teams following web-hosting rules either overspend on idle CPU or ship servers that exhaust RAM during the first burst of external webhook traffic.
Why Web-Hosting Sizing Rules Destroy Agent Workloads
The production stack that n8n Lab configures is a decoupled container architecture: Caddy terminates TLS and routes webhooks, n8n executes workflows, PostgreSQL replaces SQLite for concurrent writes, and Redis manages queues during traffic spikes.
Optional Ollama stays on a separate internal port so local models never face public exposure.
The guide builds its sizing framework around a five-question workload profile: execution volume, concurrency profile, model hosting strategy, state persistence requirements, and reliability target.
Those answers cascade into every decision downstream.
Without them, the guide argues, infrastructure selection becomes guesswork.
Size for your current reality plus three months of growth headroom.
That restraint matters because over-provisioning for aspirational scale is a primary source of wasted capital.
RAM tiers that map to execution profile
Memory is the first bottleneck in agent infrastructure, not CPU.
n8n, PostgreSQL, Redis, and an optional Ollama model all compete for the same physical RAM pool.
The guide splits total memory requirements into three explicit tiers.
- API-orchestration tier: 4–8GB total RAM for moderate volumes calling cloud LLM APIs.
- High-concurrency plus vector tier: 8–16GB to absorb large queue backlogs, pgvector queries, and concurrent payload parsing.
- Local inference tier: 16–32GB or more when an 8B–13B parameter model loads into memory alongside the agent stack.
Those figures include the host operating system, Docker runtime, and database services, not just the n8n process.
That distinction is often missing from generic ‘n8n requires enough RAM’ guidance.
CPU, storage, and the GPU threshold
For CPU, the guide assigns 2–4 vCPUs to low-concurrency API orchestration and 4–8 dedicated vCPUs to high-concurrency or vector search workloads.
Local inference without a GPU pushes the requirement to 8 or more dedicated vCPUs.
But the guide is blunt about CPU inference: even small 8B models produce high latency, and real-time conversational agents require GPU acceleration.
Storage is equally strict.
NVMe drives are mandatory, not optional.
- Base stack plus moderate logging: 40–80GB NVMe with aggressive execution pruning.
- Production stack plus vector database: 100–200GB NVMe as embeddings scale with the corpus.
- Local model hosting: 250GB or more NVMe, with an 8B model consuming roughly 5GB on disk and a 70B model exceeding 40GB.
The guide’s provider mapping moves straight from that profile to budget and geography.
EU data residency plus CPU-only workload maps to Hetzner Cloud.
Developer experience and managed volumes map to DigitalOcean.
RAM-heavy consolidation maps to Contabo, and GPU inference maps to Vultr Cloud GPU instances.
The framework pairs those profiles with monthly cost bands: $20–$50 for baseline Hetzner or Contabo CPU instances, $50–$150 for DigitalOcean or Vultr general compute, and $150 or more for GPU-enabled hardware.
The n8n 2.0 Breaking Point That Resets Production Deployments
If the guide supplies the sizing arithmetic, real-time platform data reveals why its timing matters.
As of early September 2026, stable n8n sits at 2.37.10 and beta at 2.38.3.
The 2.0 line is a major release, not an incremental bump.
Official n8n deployment documentation warns that self-hosting on AWS EKS is recommended only for expert users, citing data loss, security, and downtime as concrete operational risks.
That caution collides with a widely repeated fantasy that switching from SaaS to a VPS is a simple cost-saving move.
The guide closes part of that gap with explicit hardening steps: SSH key-only authentication, UFW firewall rules, fail2ban brute-force protection, and TLS termination through Caddy.
But the platform itself has changed around the deployment model.
The cloud-tier discrepancy is not a mistake
One of the most useful tensions in the current data is the memory gap between official cloud tiers and the guide’s VPS baseline.
Official n8n cloud resource tiers list 320MB of RAM for the Start plan and 640MB for the Pro 10,000-execution plan.
By contrast, the VPS guide sets the n8n instance baseline at 1GB and high-volume at 4GB or more.
Official Kubernetes manifests run even leaner: pod memory requests start at 250Mi and limits sit at 500Mi.
That allocation works because the orchestration layer assumes a managed Postgres backend and horizontal pod scaling outside the application container.
On a single VPS, such lean per-pod numbers are not practical when PostgreSQL, Redis, and the host OS share the same memory pool.
The difference is not editorial inflation.
A self-hosted VPS must absorb all of those services simultaneously, which is why raw VM RAM requirements run higher.
This also explains why self-hosting is not automatically cheaper at low volume.
At €24 per month for 2,500 executions on n8n Cloud Starter and €60 per month for 10,000 executions on Pro, the SaaS tier carries a real economic cushion for small internal tools.
Self-hosted hidden costs also shift the equation.
Managed PostgreSQL, Redis, and encrypted off-site backups can add €20–€55 per month unless the team has the capacity to manage those services directly.
The breakpoint shifts when execution volume climbs and when data residency or vector infrastructure forces a move to dedicated hardware.
Security defaults and task runners now force stack changes
The 2.0 breaking changes actively reshape what a self-hosted stack must include.
MySQL and MariaDB support is gone, leaving PostgreSQL as the long-term compatibility path — a direction the guide already bakes into its Docker Compose configuration.
SQLite moves to a new pooling driver with WAL mode, a single write connection, and a pool of read connections.
n8n’s benchmark claims up to a 10x improvement over the legacy SQLite driver, but still not enough to displace PostgreSQL for production concurrency.
More disruptive are the security defaults.
Code node environment access is blocked by default.
ExecuteCommand and LocalFileTrigger are disabled by default.
OAuth callback authentication is required by default, and file access is restricted to a dedicated directory.
Task runners are no longer part of the main n8n Docker image.
Python Code nodes now require an external task runner in native Python mode, which means any VPS stack relying on the previous inline Pyodide behavior must add a separate n8nio/runners image or accept broken workflows.
These changes do not invalidate the sizing tiers.
They add a new operational condition: a self-hosted deployment is no longer just n8n, PostgreSQL, Redis, and Caddy.
It may also require a dedicated task runner container, hardened file permissions, and a security review of every Code node exposed to untrusted input.
The Real Moat Is Operational Discipline, Not Per-Execution Arbitrage
The durable advantage in self-hosted AI automation is not a one-time reduction in per-execution fees — it is the controlled stack that survives a 500-webhook burst without surrendering margin to cloud overages. For teams engineering agent workflows that need to scale without losing control, programmatic SEO and AI automation engineering is how Andres SEO Expert approaches it — contact the team.
Frequently Asked Questions
Does self-hosting n8n on a VPS become cheaper than n8n Cloud at high execution volumes?
Self-hosting becomes cost-effective at higher execution volumes because per-execution pricing scales linearly with adoption while a fixed VPS cost does not. However, hidden costs such as managed PostgreSQL, Redis, backups, and maintenance must be factored in. The breakpoint depends on execution volume, data residency, and infrastructure needs.
Why does AI agent workload sizing require more RAM than typical web hosting?
AI agent workloads fail on persistent memory, queue backlogs, vector databases, and long-running webhooks rather than concurrent HTTP requests. n8n, PostgreSQL, Redis, and optional Ollama compete for the same RAM pool, so memory is the first bottleneck and web-hosting sizing rules often overspend on CPU or undersize RAM.
What are the recommended RAM tiers for self-hosted n8n in 2026?
The guide maps total memory to three tiers: API-orchestration (4–8GB), high-concurrency plus vector (8–16GB), and local inference (16–32GB+). These figures include the host OS, Docker runtime, and database services, not just the n8n process.
What core n8n 2.0 breaking changes force changes to a VPS stack?
n8n 2.0 removes MySQL and MariaDB support, requiring PostgreSQL. SQLite uses a new pooling driver with WAL mode. Security defaults block Code node environment access, ExecuteCommand, and LocalFileTrigger. OAuth callback authentication is required by default. Python Code nodes now require an external task runner container, so self-hosted stacks must add a dedicated task runner image.
Is NVMe storage mandatory for production self-hosted n8n agent workloads?
Yes. NVMe drives are mandatory. Base stacks with logging need 40–80GB, production with vector databases need 100–200GB, and local model hosting requires 250GB or more. NVMe ensures adequate write IOPS for execution pruning and embeddings.
Why do n8n Cloud resource tiers report much lower RAM than a VPS baseline?
n8n Cloud tiers list 320MB to 640MB of RAM because the orchestration layer assumes managed Postgres and horizontal pod scaling. On a single VPS, n8n, PostgreSQL, Redis, and the host OS share one memory pool, so raw VM RAM requirements are higher — typically starting at 1GB for the instance and scaling up from there.
