n8n is the workflow tool people reach for when Zapier’s per-task pricing stops making sense, or when the thing they want to automate involves data they would rather not hand to a third party. It is a visual editor: chain nodes together, trigger on a schedule, a webhook, or a button.
You can pay for n8n Cloud, and for a lot of people that is the right answer. This is about the other case.
Do the boring thing first
If you install n8n and walk away, come back and read this section before you do anything else.
n8n 2.x dropped HTTP basic auth. There is no generated password and no credentials file. Instead, the first person to open the URL creates the owner account.
Your install gets a public URL. If you install it, get distracted, and set up the owner account tomorrow, then anyone who reaches that URL in the meantime can claim your instance. Not brute-force it. Just claim it, by filling in a form.
So: install, open the URL, create the owner account. Sixty seconds. Then go and do the rest.
I would rather put this at the top of the post than in a troubleshooting section at the bottom, because the failure is silent. Nothing warns you.
When self-hosting actually wins
Three cases, honestly.
Your workflows touch credentials you do not want to hand over. This is the real one. An automation that reads your invoices, posts to your CRM and pings your internal Slack needs credentials for all three. Self-hosting means those credentials sit in a database on a machine you control, rather than in someone else’s multi-tenant system. Nothing about the cloud version is careless here. It is a question of who you would rather trust, and some teams have that answer decided for them by a compliance requirement.
Your execution volume is lumpy. Per-execution pricing is excellent when you run a few hundred workflows a month and painful when a batch job fires ten thousand. A VM does not care. It costs the same whether the workflow ran twice or twenty thousand times, and the ceiling is the machine rather than the invoice.
You want to reach something private. Workflows that talk to a database, an internal API, or another app on the same VM are straightforward when n8n is running next to them, and awkward when it is not.
When it does not
If your automations are half a dozen low-volume workflows connecting SaaS products that all have public APIs, self-hosting is worse. You are taking on upgrades, backups and an occasional evening of debugging in exchange for saving a small subscription. That is not a good trade, and I would rather say so than sell you a VM.
The version worth paying for is the one where you were going to run a server anyway.
What it costs
n8n is genuinely light. It needs about 512 MB, and the packaging caps it at 1 GB, so the smallest VM is plenty:
| Size | Specs | Monthly |
|---|---|---|
| Small | 2 vCPU, 4 GB | €12.99 |
| Medium | 4 vCPU, 8 GB | €19.99 |
Small is the right default. What pushes you up is not n8n itself but what your workflows do: heavy data transforms, large HTTP payloads, many concurrent executions. If you are moving big batches around, size up. If you are posting form submissions to a spreadsheet, you will never notice.
Billing is hourly and starts when the VM provisions. A card is required. And to be clear about something most hosts leave vague: stopping a VM does not stop the bill. The disk, IP and reserved compute are still yours. Only terminating stops the meter.
The upside of a VM rather than a per-seat plan is that n8n is not the only thing that can live on it. If you also want a wiki, a database UI or an analytics install, they share the machine you are already paying for.
Installing it
Dashboard, then Apps, then n8n, then Install. There is nothing to fill in, no API keys and no tokens, though it is worth setting the timezone at install time because that is what your cron and schedule nodes will use. The default is UTC, which is fine until a workflow that should run at 9am runs at 10am for half the year.
About a minute later you get a URL like https://n8n-something.suji.fr.
Claiming the owner account
Open that URL immediately. n8n shows a Set up owner account screen on first run. Enter your email, your name and a password, and you land straight in the workflow editor. That account is your admin login.
On every later visit the same URL shows a Sign in screen instead, which is how you can tell at a glance whether an install has been claimed.
Always reach n8n through the https://<subdomain>.suji.fr address. n8n sets a secure cookie, so if you tunnel straight to the container’s plain-HTTP port the browser refuses the cookie and the login silently fails, with credentials that look wrong but are not.
If you lose the password later, open the per-app Terminal from the dashboard, pick n8n, and run:
n8n user-management:reset
That resets the owner account so you can set a new password on your next visit. The exact subcommand moves around between versions, so n8n --help is the fallback.
Building your first workflow
The editor is a canvas. A workflow is a trigger plus some nodes.
- Click Add first step and pick a trigger: Manual to run it by hand, Schedule for cron, Webhook to fire it from outside.
- Add action nodes and connect them by dragging between the dots on their edges.
- The first time a node talks to an external service, n8n asks you to create a credential for it. These are stored encrypted on the install’s own volume, which is the whole argument for self-hosting made concrete: your Google token lives on your machine.
- Click Execute workflow to test it while you watch the data move between nodes.
- Toggle Active in the top right when you want it to run on its own.
Step 5 is the one people forget. A workflow you executed manually and never activated will sit there doing nothing on its schedule, looking exactly like a workflow that is working.
The click-by-click, plus the troubleshooting for the handful of things that actually break, is in the n8n app docs.
The webhook thing worth knowing
When you build a workflow with a webhook trigger, the editor shows you two URLs, and they are not interchangeable.
The test URL is only live while the editor canvas is open. It exists so you can click “listen” and fire a request to see the shape of the data.
The production URL works whenever the workflow is set to Active.
Give an external service the test URL and it will work perfectly while you are watching and stop the moment you close the tab. This is the single most common “it worked yesterday” report, and it is always this.
The same public address is used for OAuth redirect URLs, so when you connect a Google or Microsoft credential, that is the redirect you register in their console.
Worth trying if
You already wanted a machine, your workflows touch credentials you would rather keep, or your execution count is spiky enough that per-task pricing has started to annoy you.
If none of those are true, n8n Cloud is a perfectly good product and you should use it.
The docs have the rest.