n8n
Visual workflow automation, self-hostable under a non-OSI fair-code licence
A node-graph automation engine: triggers, HTTP calls, branching, and JavaScript or Python code nodes wired together on a canvas, plus a large library of service integrations. It replaces Zapier or Make for people who would rather run the engine themselves than pay per task.
Our verdict on n8n#
n8n is not open source and never has been. The licence is the Sustainable Use License 1.0: you may use and modify it for your own internal business purposes or personal use, and you may redistribute it only free of charge and only for non-commercial purposes. Running it for your own company, including making money with the workflows, is fine. Selling it as a hosted service, white-labeling it, or removing the branding is not. Separately, any source file with .ee. in its name or .ee in its directory is excluded entirely and needs an Enterprise licence, which is where SSO, log streaming and the rest sit. That out of the way, it is the most capable self-hosted automation engine there is, and 2.0 (August 2026) tightened a lot of dangerous defaults: task runners on by default, Code node environment access blocked, MySQL and MariaDB support dropped. Budget for the upgrade reading, not just the container pull.
Who n8n is for#
Choose it if
- A small business replacing a four-figure annual Zapier bill with a 2 GB VPS, where the workflows are internal and nobody resells them
- Anyone whose automations need to touch a service on the LAN that a cloud automation tool cannot reach
- Developers who want a visual graph but keep escaping into a Code node for the hard 10 percent
- Teams already running PostgreSQL and Redis who can put n8n in queue mode without adding new classes of infrastructure
Look elsewhere if
- You want to offer n8n to your own customers as a hosted or embedded product; that is exactly what the licence forbids without a commercial agreement
- You need SSO, and paying for an Enterprise plan is not on the table
- You want a set-and-forget appliance; releases land several times a week and majors carry real breaking changes
What running it actually looks like#
The honest first decision is single instance or queue mode. Single instance is one container on 5678 with a volume at /home/node/.n8n, SQLite inside it, and everything (webhooks, scheduling, execution) in one Node process. Queue mode is a main instance plus Redis plus one or more worker containers, all sharing PostgreSQL and all needing the identical N8N_ENCRYPTION_KEY; the docs explicitly say do not run queue mode against SQLite. Go to queue mode when a long execution starts blocking your webhooks, not before. From 2.0 the main n8nio/n8n image no longer contains the external-mode task runner, so that is a second image (n8nio/runners). Release channels were renamed latest and next to stable and beta, and the docs recommend pinning an exact version rather than tracking a channel at all.
Resource profile#
- Memory
- 400 MB idle, around 900 MB in ordinary use. A Node process that holds every item of a running workflow in memory, plus task runner processes for Code nodes since 2.0. A single workflow pulling a large HTTP response can push a small instance into `JavaScript heap out of memory`; these are estimates, the project publishes no minimum.
- CPU and acceleration
- Idle between triggers, then spikes for the duration of an execution. Code nodes and large JSON transforms are the expensive part; manual executions cost roughly double because n8n copies the data for the editor UI.
- Storage growth
- Execution history is the thing that grows, and it grows fast if you save successful executions. Binary data now goes to filesystem or database rather than memory, so an instance handling attachments needs real disk. Prune aggressively.
- Operational load
- 4 of 5, Heavy. Weekly releases on a fast-moving major version, a documented list of breaking changes between 1.x and 2.x, an encryption key that has to be restored alongside the database, and a queue mode topology of main plus Redis plus workers plus task runners once you outgrow one process. Restores are worth rehearsing.
Figures describe a small single-household install and are the working assumptions behind our stack planner. Your numbers will differ with library size, user count and hardware. See methodology.
Data and backup surface#
Two things, and people back up one of them. The database (~/.n8n/database.sqlite, or a pg_dump of PostgreSQL) holds workflows, credentials and executions. The encryption key lives in ~/.n8n/config inside the user folder and is what the credential ciphertext is keyed to. Restore the database onto an instance that generated its own new key and n8n starts fine, shows every workflow, and cannot decrypt a single credential. Back up the whole /home/node/.n8n volume, not just the database, and store N8N_ENCRYPTION_KEY in your password manager too. Execution history is the bulk of the data and is regenerable in the sense that you do not need it: prune it before it fills the disk.
Derived backup shape
SQLite backup. sqlite3 <db> ".backup out.db" while running, or stop the container and copy. A live cp of a WAL-mode SQLite file can restore corrupt.
Traps and surprises#
The encryption key makes credentials unrecoverable
n8n generates a random key on first start and saves it in the ~/.n8n folder. The official wording: if this data cannot be found at startup, n8n automatically creates a new key and any existing credentials can no longer be decrypted. There is no recovery, no re-entry prompt, no partial decrypt. Set N8N_ENCRYPTION_KEY explicitly from day one and treat it as a secret you restore before the database.
It is source-available, not open source
The Sustainable Use License permits use and modification for internal business or personal purposes and redistribution only free of charge and only non-commercially. It is not OSI-approved and it is not copyleft. Files with .ee. in the filename or .ee in the dirname are carved out entirely and require an n8n Enterprise License. Branches other than master are described as not licensed at all.
2.0 changed defaults that silently break workflows
Code nodes can no longer read environment variables (N8N_BLOCK_ENV_ACCESS_IN_NODE now defaults true), $evaluateExpression() returns null or errors inside Code nodes because runners run in secure mode, ExecuteCommand and LocalFileTrigger are disabled by default, file nodes are confined to ~/.n8n-files, and the Start node is gone. Run the Migration Report under Settings (present since 1.121.0) before you pull 2.x.
MySQL and MariaDB were removed in 2.0
Deprecated since 1.0, dropped in 2.0. If your instance is still on MySQL you must migrate to PostgreSQL or SQLite with the database migration tool before upgrading, because the 2.x image will not talk to it. The legacy SQLite driver also went away; sqlite-pooled (WAL mode, one writer, a read pool) is now the only SQLite driver.
Queue mode cannot use filesystem binary data
n8n does not support filesystem binary storage in queue mode, because workers do not share the main instance's disk. Your options are database (the default in queue mode, and it bloats PostgreSQL fast with attachments) or S3-compatible external storage. Plan the binary data path at the same time you plan the queue, not after the first workflow that handles a PDF fails.
Specifications#
- Category
- Dashboards and automation glue
- Licence
- Sustainable Use License 1.0 (plus n8n Enterprise License for .ee files) (Source available)
- Written in
- TypeScript / Node.js
- First release
- 2019
- Maturity
- Mature
- Datastore
- SQLite by default, PostgreSQL for anything serious; Redis required in queue mode
- Default ports
5678- Ships as
- docker, docker compose, kubernetes
- arm64 builds
- Yes
- Identity
- Local accounts only. The self-hosted community build has local accounts only: SAML, OIDC and LDAP are all gated behind an Enterprise plan, so free self-hosters put an auth proxy in front or live with n8n's own user table.
- Replaces
- Zapier, Make, Microsoft Power Automate, Workato
- Project site
- n8n.io
- Source
- github.com/n8n-io/n8n
- Documentation
- docs.n8n.io/deploy/host-n8n
Alternatives to n8n#
Everything else in dashboards and automation glue, closest in operational weight first.
| Tool | Ops load | Idle RAM | Licence |
|---|---|---|---|
| Homarr | 2, Light | 500 MB | Apache-2.0 |
| Homepage | 2, Light | 110 MB | GPL-3.0 |
| Glance | 1, Set and forget | 25 MB | AGPL-3.0 |
Where n8n comes up elsewhere#
Head to head
Sources#
Facts on this page were checked against the project's own material. Where a number is our own estimate rather than a published figure, the text says so.
Published . Last reviewed . Found something out of date? Tell us and we will fix it and log the change.