Sigma Logic AI Lead with AI. Thrive with Innovation.
Automation

Self-hosted n8n: when data rules force it

When self-hosting n8n is genuinely required rather than preferred, what it actually costs to run, and the four things people forget until the first outage.

On this page 11 sections
  1. Key takeaways
  2. Who this applies to
  3. When it is genuinely required
  4. The distinction that catches people
  5. What it actually costs
  6. The four things people forget
  7. A workable baseline
  8. Where we land on this
  9. When not to self-host
  10. Frequently asked questions
  11. Next step

Self-host n8n when a contract, a regulator or a data-residency requirement means workflow payloads cannot sit on a vendor’s infrastructure. Otherwise, hosted is usually the better trade. Self-hosting costs roughly $20-80 a month in infrastructure and considerably more in the engineering attention nobody budgets: backups, upgrades, queue mode, and being the person paged at 3am.

The honest framing is that self-hosting solves one specific problem very well and adds four others. If you do not have that one problem, you are buying the others for nothing.

Key takeaways

  • Self-hosting the orchestrator does not keep your data in your estate. Your workflows still call outward.
  • The server is cheap. The operational attention is not.
  • Without queue mode, one long workflow blocks the others.
  • Back up the database, not the container. The workflows and credentials live in Postgres.
  • If nobody owns upgrades, you will be running a version with a known vulnerability within a year.

Who this applies to

You have decided on n8n and are choosing between n8n Cloud and running it yourself. Or someone has told you self-hosting is required and you want to know whether that is true.

When it is genuinely required

Four cases where self-hosting is the correct answer rather than a preference.

A contractual data-processing restriction. An enterprise customer’s contract names where their data may be processed and by whom. Adding a workflow vendor to that chain requires an amendment nobody wants to negotiate.

Regulatory data residency. The workflow handles personal data of people in a jurisdiction with residency requirements, and the hosted region does not satisfy them.

Reaching systems with no public endpoint. The automation must query an internal database, an ERP on a private network, or a service behind your VPN. A hosted platform cannot reach it without exposing it, and exposing it is a worse decision than self-hosting.

Payload sensitivity that survives scrutiny. Health records, full card data, legal documents under privilege. Note “survives scrutiny”: a lot of data described as too sensitive for a vendor is already in a hosted CRM.

The distinction that catches people

Self-hosting the orchestrator is not the same as keeping data in your estate.

Your self-hosted n8n still calls the CRM API, still sends text to a model provider, still posts to the messaging platform. Those payloads leave your network exactly as they would have from hosted n8n. What changes is that the workflow engine and its execution logs are yours.

That is a real reduction in exposure and it is narrower than most people assume when they say “we self-host for compliance”. If the requirement is that a document never reaches a third party, self-hosting the automation tool does not achieve it - you need the model and every integration inside the boundary too, which is a much larger project.

Be precise about which requirement you are satisfying, because auditors are.

What it actually costs

LineTypicalNote
Compute$20-60/moA small VM handles modest workloads
Managed Postgres$15-50/moDo not run the database in the same container
Backups and storage$5-15/moCheap, and the thing people skip
Reverse proxy and TLS$0Caddy or nginx, plus a certificate
Monitoring$0-30/moUptime and disk at minimum
Infrastructure total$40-155/mo
Engineering attention2-6 hrs/moUpgrades, incidents, capacity

The last row is the real cost, and it is the one that never appears in the comparison against a hosted plan. At a loaded engineering rate, two to six hours a month is comparable to or larger than the infrastructure line, and it does not scale down when things are quiet - it arrives in lumps when something breaks.

The self-hosted n8n baseline that is enough for most deployments Internet reaches a reverse proxy handling TLS, then the n8n main process for the editor and webhooks. A Redis queue feeds two workers. Postgres, managed rather than a container, is backed up daily to separate storage and the backup is tested. A secrets manager holds the encryption key. Monitoring covers uptime and disk space. Internet Reverse proxy TLS n8n main UI, webhooks Redis Worker Worker Postgres managed, not a container Daily backup off-box, tested Secrets encryption key Monitoring uptime, and a disk-space alert Docker Compose on one VM, queue mode with two workers, a monthly upgrade window
Everything in the picture fits on one small VM with Docker Compose. The two boxes people skip are the tested backup and the disk alert, which between them cover most self-hosted outages.

The four things people forget

1. Queue mode

By default, n8n executes workflows in the main process. One workflow that takes four minutes blocks the ones behind it, and a burst of webhooks can queue up behind a slow run.

Queue mode splits execution across worker processes with Redis coordinating. It is the difference between a toy deployment and one that survives concurrency, and it is not the default.

The signal you need it: workflows that used to run in seconds start reporting minutes, or webhooks time out under load. If you are running anything webhook-triggered with real traffic, configure it before launch rather than after the first incident.

2. Backups of the right thing

Workflows, credentials and execution history live in the database, not in the container image. Snapshotting the VM is not a backup strategy if the database is managed separately, and re-creating credentials by hand across forty workflows is a genuinely bad afternoon.

Back up Postgres on a schedule, store it somewhere else, and restore it once to prove the backup works. An unrestored backup is a hypothesis. The workflows themselves belong in git as well - see version controlling n8n workflows - though a repository is not a substitute for the database backup, because credentials are never in the export. Self-hosting is also the prerequisite for shipping a custom node, which is the other reason teams end up here.

The encryption key deserves its own mention: credentials are encrypted with a key held in the environment. Lose that key and your backup restores workflows with unusable credentials. Store it in your secrets manager, not only in the deployment config.

3. Upgrades

n8n releases frequently. Self-hosting means you decide when to take those releases, which sounds like control and behaves like deferral.

Set a cadence - monthly is reasonable - and treat it as maintenance rather than a project. Read the release notes for breaking changes to nodes you use, upgrade a staging instance first, and keep the previous image tag so a rollback is one command.

The failure mode is not a dramatic outage. It is being eighteen months behind, on a version with a published vulnerability, with an upgrade path that now spans several breaking changes at once.

4. Somebody is on call

A hosted platform has an operations team. Self-hosted, that is you.

Decide explicitly who is notified when the instance is down and what their response is. “We will notice” is not a plan for something running your nightly reconciliation.

A workable baseline

For most self-hosted deployments, this is enough and less than people build:

  • Docker Compose on a single VM: n8n, Postgres, Redis, and a reverse proxy handling TLS
  • Queue mode with two workers
  • Managed Postgres if your provider offers one, rather than a container
  • Daily database backup to separate storage, retained a month, restored once as a test
  • Uptime monitoring, plus a disk-space alert - full disks are the most common self-hosted outage
  • The encryption key in a secrets manager
  • Monthly upgrade window

Kubernetes is rarely justified for this. If your organisation already runs it and has the operational muscle, fine. If adopting it is part of the automation project, that is a much larger commitment than the automation warranted.

Where we land on this

We self-host for clients when one of the four conditions at the top is genuinely met, and we recommend hosted when it is not - which is more often than clients expect when they arrive asking for self-hosting.

The reasoning is that self-hosting relocates a cost rather than removing one. The hosted subscription becomes infrastructure plus an operational obligation that outlives the engagement. When we hand over a self-hosted deployment, we are handing over something that needs upgrading, monitoring and occasionally rescuing, and if there is no named person on the client side who owns that, we have built a liability with a good-looking architecture diagram.

The version of that conversation that costs us: a client wants self-hosting for reasons that turn out to be preference rather than requirement, and the honest answer is that hosted is better for them. Saying so trims the scope of the engagement. It also avoids the call eight months later where nothing has been upgraded and something has stopped.

When not to self-host

When the requirement is vague. “We are quite security-conscious” is not a data-residency requirement. Find out what actually constrains you before designing around it.

When there is no owner. Repeated because it is the deciding factor. An unowned self-hosted deployment decays predictably.

When your volume is small. A few hundred executions a month on hosted costs less than the attention self-hosting demands.

When you are still deciding what to build. Self-host later if you must. Starting hosted and moving is straightforward, because the workflows export.

Frequently asked questions

Does self-hosting make n8n free?

The software is free to run under its licence for internal use. Total cost is infrastructure plus operational time, which is often comparable to a hosted plan at modest volume and much cheaper at high volume.

Can we self-host and still use AI nodes?

Yes, and note what that means: those nodes call an external model provider, so your payloads leave your network at that point. If the requirement is that content never reaches a third-party model, you need a self-hosted model too, which is a substantially larger undertaking.

How much traffic can a single instance handle?

More than most businesses generate, provided queue mode is on and workflows are not doing heavy processing in the main process. The constraint is usually a specific slow workflow rather than aggregate volume.

What breaks most often?

Disk filling with execution history, and credentials expiring. Set an execution-data retention policy on day one - unbounded history is the most common cause of a self-hosted instance falling over.

Is Docker Compose really enough?

For most business automation, yes. Reach for anything larger when you have a specific requirement it solves, not on principle.

Next step

If you are not sure whether your requirement genuinely forces self-hosting, that question is worth settling before the build rather than after. The n8n and Make engagement covers it, including the answer that hosted is fine.

Related: n8n vs Make for business automation · n8n error handling · Why automations fail silently · Maintenance and support

Let's talk

Got a workflow this applies to?

Describe it in a couple of sentences. We will tell you whether it is worth automating, what we would build, and roughly what it takes.