n8n is a workflow automation platform you run yourself: a visual, node-based canvas for wiring apps and APIs together, with JavaScript or Python right there for when drag-and-drop nodes aren’t enough. It’s the self-hostable answer to Zapier and Make, and lately a go-to way to connect local AI models to real automations instead of just chatting with them. This page covers what n8n does, where it fits in a homelab, its licensing, and how to get it running in Docker.
Quick facts: n8n is fair-code software built by n8n GmbH in Berlin, distributed under its own Sustainable Use License rather than a standard open-source license like MIT or GPL. The Community Edition is free to self-host with no cap on workflow executions; paid Cloud and Enterprise tiers add hosting, support, and extra permissions on the same core product.
What is n8n?
n8n describes itself as combining “the flexibility of code with the speed of no-code,” and that’s fair. Build workflows visually: drag a trigger node (a webhook, a schedule, an app event) onto a canvas, chain it to action nodes, then branch with logic nodes as things get complicated. Over 400 built-in integrations cover the usual apps, plus generic HTTP Request and Webhook nodes for anything else with an API. When no ready-made node fits, a Code node drops you into JavaScript or Python without leaving the workflow. n8n has leaned hard into AI lately: LangChain-based nodes let a workflow call an LLM, pull context from a vector store, or hand a model tools it decides how to use, the gap between a chatbot that answers and an agent that acts.
n8n vs Zapier and Make: why self-host
| n8n (self-hosted) | Zapier | Make | |
|---|---|---|---|
| Hosting | Your own server, or n8n Cloud | Cloud only | Cloud only |
| Pricing | Free Community Edition; you cover the server | Per task, tiered plans | Per operation, tiered plans |
| Execution limits | None, self-hosted | Capped by plan | Capped by plan |
| Your data | Stays on your infrastructure | Zapier’s servers | Make’s servers |
| License | Sustainable Use License (fair-code) | Proprietary SaaS | Proprietary SaaS |
Zapier and Make bill per task or operation and cap how much you can automate on whatever plan you’re paying for, with every run passing through their servers. Self-hosted n8n has no execution ceiling and nothing leaves your network, in trade for running the server yourself. If you’ve already got a box running for Jellyfin or a NAS, that trade costs you almost nothing extra.
What n8n is actually good for in a homelab
- Routing alerts you’ll actually see: Uptime Kuma downtime, a Sonarr or Radarr event, a failed backup, sent to Discord, Telegram, or a phone push instead of another dashboard tab
- Picking up where Home Assistant’s own automation editor gets awkward: multi-step logic, conditions across several services, a real branch instead of a single if-then
- Connecting to a self-hosted Ollama instance to summarize documents, watch a folder, or answer questions over your own files, nothing leaving your network; n8n’s self-hosted-ai-starter-kit packages n8n, Ollama, a vector database, and PostgreSQL into one Compose file for exactly this
- Gluing other self-hosted apps together: an RSS feed into a Discord channel, a scheduled off-site copy of an Immich export, a note posted whenever a watched folder gets a new file
See our Best Self-Hosted AI Tools roundup and Self-Hosted LLM Guide for the Ollama side of that pairing.
Installing n8n with Docker
- Install Docker and Docker Compose if they’re not already on the box.
- Make a project folder and drop a
docker-compose.ymlfile in it, below. - Run
docker compose up -dto pull the image and start the container. - Open
http://localhost:5678and create the instance owner account. You only do this once.
services:
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n
restart: unless-stopped
ports:
- "127.0.0.1:5678:5678"
environment:
- GENERIC_TIMEZONE=Europe/Paris
- TZ=Europe/Paris
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
docker compose up -d
That’s enough for an instance reachable only from your own network, on n8n’s default SQLite database, bound to 127.0.0.1 on purpose until you put something in front of it, more below. Running enough workflows or users to strain SQLite? Swap in PostgreSQL instead; n8n keeps ready-made Compose files for that on its hosting repository on GitHub.
Minimal configuration: webhooks, environment variables, remote access
A default install is fine for testing workflows by hand, but anything triggered by an incoming webhook needs three more environment variables so n8n knows its own public address: N8N_HOST, the domain it’s reached at; N8N_PROTOCOL, https once TLS is in front of it; and WEBHOOK_URL, the public URL n8n hands webhook nodes. Get these wrong and generated URLs point nowhere useful, the most common first-install snag people hit. Set GENERIC_TIMEZONE and TZ too; skip them and scheduled workflows default to New York time regardless of where your server sits.
Don’t forward port 5678 straight to the internet. There’s no reverse proxy, TLS, or rate limiting in front of it on its own. Put Nginx Proxy Manager, Caddy, or Traefik in front for a real certificate, or skip public exposure and reach your instance over a mesh VPN like Tailscale, the same call our Jellyfin remote access guide walks through.
Is n8n open source? The Sustainable Use License, explained
Worth getting right, since it’s tempting to assume any self-hostable dev tool on GitHub is MIT or GPL. n8n isn’t. It’s fair-code: the source is public, free to read, self-host, and modify, but it ships under n8n’s own Sustainable Use License (SUL) v1.0, not an OSI-approved open-source license. A separate n8n Enterprise License covers a small slice of files (marked .ee. in the filename) powering paid-tier features like SSO. Everything else falls under the SUL.
Here’s what the SUL actually restricts, straight from the license text: use or modify the software for your own internal business purposes or personal, non-commercial use, and redistribute it only free of charge and only for non-commercial purposes. In practice that rules out one thing: standing up a paid hosting business that resells n8n as a competitor to n8n Cloud. It doesn’t touch a homelab running its own instance, or a company automating its own internal work, which is what nearly everyone reading this page is doing.
FAQ
Is n8n free to self-host?
Yes. The Community Edition is free under the Sustainable Use License, with no cap on workflows. You only pay for n8n Cloud’s hosting or an Enterprise license for SSO and advanced permissions.
What’s the difference between n8n and Zapier or Make?
Zapier and Make are cloud-only, billed per task or operation. n8n runs the same way through n8n Cloud, or self-hosted on your own hardware with no execution limits and no per-task bill.
Can n8n connect to a local LLM like Ollama?
Yes. n8n’s LangChain-based AI nodes talk to any Ollama model over its local API, and the official self-hosted-ai-starter-kit bundles n8n, Ollama, a vector database, and PostgreSQL into one Compose file.
Do I need Docker to self-host n8n?
No, npm works too (npx n8n), but Docker is what n8n’s docs recommend, mainly because updates and cleanup stay simple.
Is self-hosting n8n difficult?
The Docker install takes minutes. What takes planning is everything around it: a domain, TLS, and a reverse proxy or VPN if you want to reach it and its webhooks from outside your network.
n8n is one of three tools our Best Self-Hosted AI Tools roundup builds a homelab AI stack around, alongside Ollama and Open WebUI; the Self-Hosted LLM Guide covers getting those two running first. Browse the Self-Hosted AI hub or the Homelab hub for more of what we cover here.