How to self-host n8n on Contabo
n8n Cloud starts around $24/mo and bills by executions. The open-source version is free and, on a ~$5/mo Contabo VPS, gives you unlimited executions and full control of your data. Here's how to do it — the easy 1-click way and the flexible Docker way — plus the gotchas that trip people up.
Prices checked Aug 2026. This site runs on a Contabo VPS.
The quick math
n8n's community edition is free to self-host for your own business under its Sustainable Use License — unlimited workflows, no per-user fee. The only cost is the server. Contabo's base Cloud VPS is about $5/mofor 4 vCPU, 8 GB RAM and NVMe — which happens to be n8n's recommended production spec, not just its minimum. So the whole setup is roughly a tenth of an entry n8n Cloud plan, with no execution caps.
What you need
- · A Contabo Cloud VPS — the base tier (4 vCPU / 8 GB / NVMe) is plenty for a single-tenant n8n.
- · A domain (or subdomain) you can point at the server — required for a real SSL certificate and for OAuth logins.
- · About 30 minutes.
Path A — Contabo's free 1-click n8n image (easiest)
Contabo runs a free 1-Click Apps program that includes n8n. The image is Ubuntu 24.04 with Docker, a Caddy reverse proxy and automatic Let's Encrypt SSL already wired together — so you skip installing any of that by hand. It's the fastest route if you just want a working, HTTPS-secured n8n.
- 1. When ordering the VPS (or later, from the Contabo control panel), choose n8n under 1-Click Apps.
- 2. Pick a location and set your admin password.
- 3. Wait ~30 minutes — Contabo emails you the access details. Caddy has already issued the SSL certificate.
- 4. Open the URL, log in, and you're in the n8n editor.
The catch: you get Contabo's chosen stack (likely SQLite-backed by default, which is fine for light use but not ideal at volume). If you want PostgreSQL and full control of the compose file, use Path B instead.
Path B — plain VPS + Docker (more control)
Install n8n yourself with Docker Compose and PostgreSQL, behind a reverse proxy for HTTPS. More steps, but you own the whole stack and get a production database.
- 1. Point your domain — add an A record for e.g. n8n.example.com to the VPS IP.
- 2. Install Docker and the Compose plugin on the server.
- 3. Create a docker-compose.yml — n8n + PostgreSQL, with the data volumes persisted so upgrades don't wipe your workflows:
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "127.0.0.1:5678:5678"
environment:
- N8N_HOST=n8n.example.com
- N8N_WEBHOOK_URL=https://n8n.example.com
- N8N_PROXY_HOPS=1
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=db
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=change-me
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- db
db:
image: postgres:16-alpine
restart: always
environment:
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=change-me
- POSTGRES_DB=n8n
volumes:
- pg_data:/var/lib/postgresql/data
volumes:
n8n_data:
pg_data:- 4. Put a reverse proxy in front for HTTPS — nginx, Caddy or Traefik terminates TLS on port 443 and proxies to n8n on 127.0.0.1:5678. Caddy is the least effort (automatic Let's Encrypt); nginx + certbot works too.
- 5. Bring it up with docker compose up -d, then open https://n8n.example.com and create the owner account.
Gotchas worth knowing before you start
Set the public webhook URL
Behind a reverse proxy, n8n otherwise shows internal :5678 addresses in webhooks and the UI. Set N8N_WEBHOOK_URL to your public https:// domain (this replaces the older WEBHOOK_URL, which now logs a deprecation warning), and N8N_PROXY_HOPS=1 when you're behind one proxy.
HTTPS isn't optional if you use OAuth
Google and other providers reject non-HTTPS callback URLs, so the domain + TLS step is required the moment you add an OAuth credential — not just a nice-to-have.
Use PostgreSQL for anything real
n8n defaults to SQLite; PostgreSQL is the production choice for reliability and concurrency (MySQL/MariaDB have been deprecated since v1.0). Persist the Postgres volume in compose.
What about local AI?
For most people, n8n on a cheap CPU VPS orchestrating external LLM APIs (OpenAI, Claude, etc.) is the practical "AI automation" setup. Running models locally needs a GPU — Contabo has a GPU Cloud line (from around €690/mo), but that's a different, far pricier product, and there's no pre-built local-LLM image.
Is it really free? (licensing)
The software is free to self-host for your own internal business or personal use under n8n's Sustainable Use License — unlimited workflows, no per-seat charge. You'd only need a commercial license if you white-label n8n as a paid product, offer it as a hosted service to your customers, or let end-users connect their own accounts to build workflows (multi-tenant SaaS). Building your own internal automations — even for clients — is fine.
Self-hosted vs n8n Cloud
| Self-hosted (Contabo) | n8n Cloud | |
|---|---|---|
| Cost | ~$5/mo flat VPS, unlimited executions | From ~$24/mo, tiered by executions/active workflows |
| Ops | You own updates, backups, TLS, uptime | Managed for you |
| Data | Entirely on your server | On n8n's infrastructure |
| Best for | Cost control, data ownership, high volume, tinkering | Non-technical users, fastest start |
One line: Cloud buys convenience and managed reliability; self-hosting buys flat cost, unlimited executions and data ownership at the price of doing your own ops. If you're comfortable on a Linux box, self-hosting on Contabo is the value pick.
Frequently asked
Is self-hosting n8n free?
The software is. n8n's community edition ships under the Sustainable Use License (fair-code): self-hosting it for your own internal business or personal use is free — unlimited workflows, no per-user fee. You only pay for the server it runs on (about $5/mo on Contabo). You'd only need a paid license to resell n8n, offer it as a hosted service to your customers, or let end-users connect their own accounts (multi-tenant SaaS).
What are the minimum server requirements for n8n?
For testing, roughly 1–2 vCPU and 2 GB RAM will do. For production you want 2–4 vCPU, 8 GB RAM, NVMe storage and PostgreSQL — 2 GB starts swapping once Postgres and heavy JSON payloads run together. Contabo's cheapest Cloud VPS (4 vCPU / 8 GB / NVMe, ~$5/mo) already meets the recommended production tier, so you don't need to upsize for a normal single-tenant setup.
n8n Cloud or self-hosted — which is cheaper?
Self-hosted is far cheaper at volume: a flat ~$5/mo VPS with unlimited executions versus n8n Cloud's subscription tiered by executions and active workflows (from around $24/mo). The trade-off is ops: with self-hosting you own updates, backups, TLS and uptime. Cloud buys convenience; self-hosting buys flat cost and data ownership.
Does Contabo have a one-click n8n install?
Yes. Contabo offers a free 1-Click Apps program that includes n8n — an Ubuntu 24.04 image with Docker, a Caddy reverse proxy and automatic Let's Encrypt SSL already wired up. You select it during checkout (or add it later from the control panel), set a password, and it's live in about 30 minutes. Installing on a plain VPS yourself is still an option if you want more control over the stack.
Related
Some links here are affiliate links — we earn a commission on Contabo and n8n, at no extra cost to you, and it never changes the recommendation. See our Affiliate Disclosure.