Answer three simple questions — we will pick an affordable server, hand you ready-made configs and a ten-minute step-by-step guide. Free, no sign-up.Ответьте на три простых вопроса — мы подберём недорогой сервер, дадим готовые настройки и пошаговую инструкцию на десять минут. Бесплатно, без регистрации.
Know your way around servers? Expert mode — the full form with the formula and sources.Разбираетесь в серверах? Экспертный режим — полная форма с формулой и источниками.
Pick the closest one — you can change it later.Выберите самое похожее — потом можно поменять.
Roughly — we will add a safety margin anyway.Примерно — запас мы всё равно заложим.
Attachments need extra memory and disk.Вложения требуют больше памяти и диска.
How much server does your self-hosted n8n actually need?
Answer six questions (or just pick a scenario) → get RAM / vCPU / disk, what it costs vs n8n Cloud, and a personal deployment kit: tuned .env, docker-compose.yml, HTTPS proxy and nightly backups. Every constant is sourced from n8n’s official docs, n8n’s own benchmark, and measured community reports — not vibes.
| Plan | RAM | vCPU | SSD | Price |
|---|---|---|---|---|
| Lite | 1 GB | 1 | 20 GB | from $5.94/mo — too small for n8n |
| Start | 2 GB | 2 | 30 GB | from $10.19/mo |
| Medium ◀ | 4 GB | 3 | 40 GB | from $21.24/mo |
| Premium | 8 GB | 4 | 50 GB | from $33.99/mo |
| Elite | 16 GB | 6 | 80 GB | from $50.99/mo |
| Exclusive | 32 GB | 8 | 100 GB | from $76.49/mo |
| Self-hosted | n8n Cloud | |
|---|---|---|
| Your volume | 9,120 runs/mo (no cap) | 91% of Pro quota |
| Per 1,000 runs | $2.33 | ≈$6.25 |
| Per year | $254.88 | €600 ≈ $684 |
| You keep | ≈$35.76/mo · ≈$429/yr |
Turn this exact size into a ready-to-run stack: docker-compose.yml + tuned .env + HTTPS reverse proxy + nightly backup script — consistent with each other, downloadable as one archive.
Build my config ↓Pre-filled from your Step 1 result — change it up there and this updates. Compose topology follows the official n8n-io/n8n-hosting patterns. Current: 4 GB · single · PostgreSQL
# n8n 2.x · SINGLE mode · sized for 300 runs/day (peak ≈10 concurrent)
# Generated by the n8n Server Sizing Calculator · topology follows n8n-io/n8n-hosting
name: n8n
services:
n8n:
image: docker.n8n.io/n8nio/n8n:stable
restart: unless-stopped
ports:
- "127.0.0.1:5678:5678" # proxy handles the public side
env_file: .env
volumes:
- n8n_data:/home/node/.n8n
logging:
driver: json-file
options: { max-size: "10m", max-file: "3" } # unrotated logs are the classic disk-killer
depends_on:
postgres:
condition: service_healthy
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
- POSTGRES_DB=n8n
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=change-me
volumes:
- pg_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n"]
interval: 10s
retries: 5
logging:
driver: json-file
options: { max-size: "10m", max-file: "3" } # unrotated logs are the classic disk-killer
caddy:
image: caddy:2-alpine
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
- caddy_config:/config
logging:
driver: json-file
options: { max-size: "10m", max-file: "3" }
volumes:
n8n_data:
pg_data:
caddy_data:
caddy_config:
# Production hardening: move task runners to a sidecar (external mode) —
# n8n docs → Hosting → Configuration → Task runners (image: n8nio/runners:stable)
The short versions. Every number below comes from the same sourced formula as the calculator — expand “How this is calculated” at the bottom for receipts.
A whole VPS with Ubuntu, Docker and idle n8n measures ~860 MB; each parallel simple run adds 40–50 MB. So it’s not the daily total that sizes your box — it’s how many runs overlap at peak. 2 GB handles light schedules, 4 GB is the production comfort zone, AI workloads start at 8 GB.
→ Get the exact number for your workload1 GB: no — benchmarks hit memory errors even at idle-plus-a-few-runs. 2 GB: yes, for a few hundred light runs a day with no AI nodes and no big files. The moment you add an AI Agent node or 20+ overlapping webhook runs, 2 GB boxes start OOM-killing n8n mid-execution.
→ Check your own load against the thresholdsThe server is the whole bill: roughly $10/mo (2 GB VPS) to $76/mo (32 GB) — the license is free and executions are unlimited. n8n Cloud starts at €20/mo (billed annually) for 2,500 runs. Past a few hundred runs a day, self-hosting is usually several times cheaper per run — the honest trade is ~1 hour/month of your own maintenance.
→ See your exact cost vs n8n CloudThe license: yes (Sustainable Use license — free for internal business use, source-available). You pay for the server and your time. What’s not free: a few Enterprise-only features — SSO, Git-based environments, and notably S3 binary storage: without an Enterprise license n8n won’t even start in s3 mode.
→ Size the server that free n8n needsFor tinkering, sure. For anything with webhooks you need a public HTTPS URL — behind home NAT that means tunnels that drop, dynamic-IP breakage, and your automations dying when the household reboots the router. A $10/mo VPS with a real IP and 99.9% uptime is the boring, correct answer for production.
→ See what that VPS should look likeNo — not for a single node. n8n is a Node.js app: AI Agent nodes send API calls to OpenAI, Claude or whatever model you connect, so the heavy compute happens in the provider’s datacenter, not on your server. A GPU in an n8n box just sits idle. What AI workflows actually consume is RAM — the community-verified floor is 8 GB. The only time a GPU matters is if you also run local models (Ollama and friends) on the same machine — and that’s a separate build sized for the model, not for n8n.
→ Size an AI-ready server (no GPU required)Rule of thumb: peak rate × average duration (Little’s law). Each overlapping light run costs 40–50 MB; a 4 GB box in n8n’s own benchmark sustained ~15 req/s in single mode and 72 req/s in queue mode — same hardware. Past ~20 concurrent runs, switch to queue mode with workers instead of buying a bigger box.
→ Calculate your peak concurrencyPlan 20 GB for OS + Docker + n8n, then ~0.25 MB per stored execution. Defaults prune history after 14 days / 10k runs — the classic “disk full” incident is unrotated Docker logs plus prune disabled. On SQLite, reclaiming space also needs VACUUM on startup; our generated config sets all of this.
→ Get disk sizing with your retentionDepends what hurts. Webhook bursts and 20+ concurrency → queue mode (72 vs 15 req/s on identical 4 GB hardware). Big file uploads → bigger box: the same benchmark shows queue mode makes binary uploads worse on 4 GB (87% vs 74% failures) — only 32 GB hardware got them to 0%. Vertical upgrades barely help single mode (+8% from 4→32 GB).
→ Let the triggers decide for youFormula: RAM = (baseline + concurrency × per-run cost + AI + files) × 1.33 headroom. Concurrency from Little’s law (peak rate × duration) or n8n Cloud plan anchors. Confidence chips: how well-evidenced each constant is.
These are provisioning estimates with a 1.33× headroom multiplier (upgrade-at-75%-RAM rule), not guarantees. Your workflows are the final benchmark — watch docker stats for a week and adjust.