Why Self-Host n8n Instead of Using Make or Zapier

n8n is the odd one out in the no-code automation space: it’s open source, and you can run it yourself instead of paying per-operation on someone else’s cloud. For AI workflows specifically — where you might be processing sensitive documents, chaining multiple LLM calls, or running high-volume batch jobs — self-hosting removes the operation-count ceiling that makes Make or Zapier expensive at scale, and keeps data off a third party’s servers if that matters for your compliance posture. The trade-off is you own the uptime, updates, and security of the server it runs on.

Getting n8n Running (Docker Route)

The fastest reliable self-host path is Docker, on any VPS — DigitalOcean, Hetzner, or a Hostinger VPS plan all work fine for light-to-moderate workloads.

  1. Provision a VPS with at least 2GB RAM (n8n plus a Postgres database is comfortable at 2GB; 1GB works but you’ll want swap enabled).
  2. Install Docker and Docker Compose on the server.
  3. Write a docker-compose.yml defining an n8n service, a Postgres service for persistent workflow/credential storage, and a volume mount so workflow data survives container restarts.
  4. Set environment variables for N8N_ENCRYPTION_KEY (protects stored credentials — generate a long random string and back it up, losing it locks you out of saved credentials), N8N_HOST, and webhook URL settings.
  5. Put it behind a reverse proxy (Caddy or Nginx) with a free Let’s Encrypt TLS certificate — n8n’s editor and any webhook-triggered workflow need HTTPS in production.
  6. Run docker compose up -d and confirm the editor loads at your domain.

Total time for someone comfortable with a terminal: 45-90 minutes. n8n also offers a managed cloud plan starting around $20/month if self-hosting the server isn’t worth the maintenance overhead for your case — worth comparing before committing to self-hosting.

A Real AI Workflow: Document Q&A Over Your Own Files

A common, genuinely useful self-hosted n8n build is a private document question-answering pipeline — upload PDFs or docs, ask questions, get answers grounded in your own content, without sending the raw documents through a third-party automation platform’s cloud.

  1. Trigger: A webhook node (or a Google Drive “file created” trigger) fires when a new document lands.
  2. Extract text: Use n8n’s Extract from File node to pull raw text from the PDF/DOCX.
  3. Chunk and embed: Split the text into chunks (n8n’s Text Splitter node), then send each chunk to an embeddings endpoint — OpenAI’s text-embedding-3-small or a self-hosted alternative like Ollama running a local embedding model, keeping everything on your own infrastructure if that’s the goal.
  4. Store vectors: Write the embeddings to a vector store node — n8n has native nodes for Pinecone, Qdrant, and Supabase’s pgvector. A self-hosted Qdrant container alongside n8n keeps the whole stack off third-party clouds.
  5. Query workflow: A second workflow, triggered by an incoming question (webhook, chat trigger, or Slack), embeds the question, retrieves the closest-matching chunks from the vector store, and passes them plus the question to an LLM node (n8n’s AI Agent or Basic LLM Chain node) to generate a grounded answer.
  6. Return the answer via the webhook response, a Slack message, or written back into a database record.

Cloud vs. Self-Hosted vs. Make/Zapier

n8n self-hosted n8n Cloud Make / Zapier
Pricing model Flat VPS cost (~$10-40/mo) Per-workflow tiers (~$20+/mo) Per-operation, scales with volume
Data location Your server, full control n8n’s cloud Vendor’s cloud
AI/LLM nodes Full native AI Agent, vector store nodes Same as self-hosted Basic HTTP calls to AI APIs, less native tooling
Maintenance You patch/update/monitor Managed Managed
Best for High-volume or sensitive-data AI workflows Teams wanting n8n’s AI nodes without server ops Simple integrations, fastest initial setup

Operational Pitfalls

  • Forgetting to back up N8N_ENCRYPTION_KEY. If your server is rebuilt and this key is lost, every stored credential (API keys, OAuth tokens) becomes unreadable and must be re-entered manually.
  • No database backups. Postgres holds every workflow definition and execution history — set up an automated daily pg_dump to off-server storage, not just server snapshots.
  • Webhook nodes exposed without auth. A publicly reachable webhook URL with no header-auth check is an open door; n8n supports header-based or basic-auth protection on webhook triggers — use it for anything that isn’t purely internal.
  • Running out of memory on long AI chains. Multi-step AI Agent workflows with large context windows can spike memory; monitor with docker stats and size the VPS with headroom, not right at the edge.

FAQ

Is self-hosted n8n really free?
The software is free (fair-code licensed); you pay only for the VPS (roughly $10-40/month depending on size) plus whatever AI API usage (OpenAI, Anthropic, etc.) your workflows consume. There’s no per-operation fee like Make or Zapier.

Can I use local/open-source LLMs instead of OpenAI to keep everything fully private?
Yes — n8n’s AI nodes support Ollama as a model provider, so you can run models like Llama or Mistral locally on the same server (or a separate GPU box) and never send data to an external API at all.

How hard is it to update n8n once it’s running?
With the Docker Compose setup, updating is typically docker compose pull && docker compose up -d, which pulls the new image and restarts the container. Always snapshot the server or back up the Postgres volume first in case a version bump changes something incompatibly.

Verdict

Self-hosted n8n is the right call once your AI automation either handles data you don’t want on a third party’s servers, or runs at a volume where per-operation pricing on Make/Zapier starts hurting. For a first AI workflow or a small team not wanting to own server maintenance, n8n Cloud or Make are still the lower-friction starting points — move to self-hosting once you know the workflow is worth the operational investment.