Rychlá odpověď: jak na to nejjednodušeji
Nemáš čas číst celý článek? Tady je destilát: n8n se nejjednodušeji a nejspolehlivěji hostuje přes Docker na malém VPS, s reverse proxy (Caddy nebo Nginx), která řeší HTTPS přes Let's Encrypt. Pro hraní stačí SQLite, pro produkci si rovnou nasaď PostgreSQL.
A teď to celé pomalu, krok za krokem. Provedl jsem tímhle setupem už pár klientů, takže ti rovnou ukážu i místa, kde se obvykle člověk seknul (mě nevyjímaje).
Jako oficiální zdroj pravdy budu odkazovat na dokumentaci n8n k hostingu — ta se mění, takže pokud čteš tohle za půl roku, mrkni, jestli se něco neposunulo.
Krok 1: Vyber VPS a operační systém
n8n není žádný žrout. Pro osobní automatizace a pár desítek workflow ti bohatě stačí malý server. Contabo ve svém návodu na self-hosting n8n doporučuje pro produkci 2 vCPU, 4 GB RAM a 30 GB NVMe SSD — což je rozumný základ. Když budeš jen testovat, zvládneš to i na 1 vCPU / 2 GB RAM, ale jakmile přidáš PostgreSQL a začneš tahat větší payloady, ty dvě gigovky paměti ti dojdou rychleji, než řekneš „out of memory".
Jako OS jednoznačně doporučuji Ubuntu 24.04 LTS. Vyšlo v dubnu 2024 a má standardní bezpečnostní podporu do května 2029, takže máš roky klid podle Ubuntu release cycle. LTS = Long Term Support, čili přesně to, co chceš pod serverem, který má běžet a nepřemýšlet o něm.
Než půjdeš dál, potřebuješ dvě věci:
- doménu (nebo subdoménu, např.
n8n.tvojedomena.cz), protože bez ní nedostaneš pořádný HTTPS certifikát, - v DNS nastavený A záznam směřující na IP adresu tvého VPS.
Krok 2: Připrav server a nainstaluj Docker
Připoj se na server přes SSH a nejdřív všechno aktualizuj. Pak nainstaluj Docker oficiálním instalačním skriptem — postup odpovídá Contabo návodu:
Poslední řádek přidá tvého uživatele do skupiny docker, abys nemusel u každého příkazu psát sudo. Aby se to projevilo, musíš se odhlásit a znovu přihlásit (nebo dát newgrp docker). Tohle lidi pravidelně přehlížejí a pak nadávají, že „docker hází permission denied".
Ověř, že vše běží:
Krok 3: Instalace n8n přes Docker Compose
Já osobně nikdy nesázím na holý docker run — u čehokoli, co má přežít restart serveru, používám Docker Compose. Je to čitelnější a údržba je o level jinde.
Vytvoř si adresář a soubory:
Pro rychlý start (SQLite) vypadá minimální docker-compose.yml takhle. n8n ukládá data do volume n8n_data namountovaného na /home/node/.n8n a poslouchá na portu 5678:
Všimni si 127.0.0.1:5678:5678 — port nevystavuji přímo do internetu. n8n poslouchá jen na localhostu a navenek ho pustí až reverse proxy s HTTPS (k té se dostaneme za chvíli). Vystavit n8n holé na veřejný port bez TLS je klasický začátečnický faux pas.
Klíč N8N_ENCRYPTION_KEY si vygeneruj náhodně, třeba openssl rand -hex 32, a nikdy ho neztrať — n8n jím šifruje credentials. Bez něj po migraci nerozšifruješ uložená přihlašovací data.
Spusť to:
V tuhle chvíli n8n běží, ale jen na localhostu. Logy si projdi — jestli vidíš Editor is now accessible, máš vyhráno.
Krok 4: Reverse proxy a HTTPS (správný WEBHOOK_URL)
Tohle je část, kde to nejčastěji skřípe. n8n samo o sobě HTTPS neřeší — od toho je reverse proxy. Máš dvě dobré volby:
Varianta A: Caddy (líný způsob, doporučuju)
Caddy si HTTPS přes Let's Encrypt vyřídí sám, automaticky, bez certbotu. Caddyfile na tři řádky:
To je vážně všechno. Caddy si při startu vyžádá certifikát a bude ho obnovovat. (Když to vidím, vždycky mi přijde, že jsem za ta léta s ručním certbotem strávil zbytečně moc večerů.)
Varianta B: Nginx + certbot
Pokud už Nginx na serveru máš nebo ho prostě preferuješ, postup je podle Contabo návodu tento. Nainstaluj Nginx a v server bloku nasměruj provoz na localhost:5678, pak vyřeš certifikát:
Certbot ti upraví Nginx konfiguraci a nastaví automatické obnovování. U Nginxu nezapomeň v server bloku přidat hlavičky pro WebSocket — n8n editor je bez nich nervózní:
Klíčové: WEBHOOK_URL
Ať zvolíš cokoli, WEBHOOK_URL musí ukazovat na tvou veřejnou HTTPS adresu (https://n8n.tvojedomena.cz/). Tahle proměnná určuje URL, kterou n8n předává externím službám pro webhooky. Když ji necháš špatně, n8n bude generovat webhook adresy směřující na localhost nebo na port 5678 a tvoje integrace ti přestanou chodit. Devět z deseti „proč mi nefunguje webhook" případů je právě tohle.
Krok 5: PostgreSQL místo SQLite pro produkci
Pro produkci nech SQLite plavat. Podle dokumentace n8n k databázím je SQLite výchozí volba, ale n8n podporuje i PostgreSQL — a ten je pro vícero souběžných workflow a větší zátěž prostě robustnější. Tady je docker-compose.yml s Postgresem (proměnné DB_TYPE a DB_POSTGRESDB_* odpovídají Contabo návodu):
depends_on s condition: service_healthy zajistí, že n8n nastartuje až po tom, co je databáze připravená — jinak ti při startu klidně spadne na „connection refused".
Krok 6: První přihlášení a env proměnné
Otevři https://n8n.tvojedomena.cz v prohlížeči. Moderní verze n8n tě při prvním spuštění provedou založením vlastnického účtu (e-mail + heslo) přímo v UI — to je dnes výchozí způsob zabezpečení a stačí ti k tomu. Nastav si silné heslo, ne admin123 (ano, viděl jsem to v ostrém provozu).
K nejdůležitějším proměnným prostředí podle dokumentace n8n patří:
N8N_HOST— doména, na které n8n běží,N8N_PROTOCOL—https,WEBHOOK_URL— veřejná HTTPS adresa pro webhooky,GENERIC_TIMEZONE— časové pásmo pro plánované workflow (jinak ti Cron uzly poběží v UTC a budeš se divit),N8N_ENCRYPTION_KEY— klíč pro šifrování credentials.
Krok 7: Aktualizace a zálohy
S Compose je aktualizace n8n triviální. Stáhneš nový image a restartuješ:
Staré image pak ukliď přes docker image prune. Aktualizuj rozumně — ne každý den, ale ani ne jednou za rok. Před každou aktualizací zálohuj.
Zálohy stojí na dvou věcech: na volume s daty n8n a (u produkce) na databázi. Postgres si vyexportuješ takhle:
A k tomu si pravidelně zálohuj N8N_ENCRYPTION_KEY a obsah volume n8n_data. Bez šifrovacího klíče je ti záloha databáze k ničemu, protože credentials nerozšifruješ. Tohle si dej do automatu (cron) a odkládej zálohy mimo server — třeba do objektového úložiště.
Checklist před ostrým provozem
- VPS s Ubuntu 24.04 LTS, min. 2 vCPU / 4 GB RAM pro produkci
- DNS A záznam míří na IP serveru
- Docker a Docker Compose nainstalované a funkční
- n8n poslouchá jen na
127.0.0.1, ne veřejně - Reverse proxy (Caddy/Nginx) s platným HTTPS certifikátem
WEBHOOK_URLukazuje na veřejnou HTTPS adresu- PostgreSQL místo SQLite pro produkci
- Vygenerovaný a zazálohovaný
N8N_ENCRYPTION_KEY - Nastavené automatické zálohy databáze i volume
- Firewall pouští jen porty 22, 80 a 443
FAQ
Jaký VPS minimálně potřebuju pro n8n?
Pro testování zvládneš 1 vCPU / 2 GB RAM, pro produkci doporučuje Contabo 2 vCPU / 4 GB RAM / 30 GB NVMe. Náročnost roste s počtem souběžných workflow a velikostí dat.
Musím použít PostgreSQL, nebo stačí SQLite?
Podle dokumentace n8n je SQLite výchozí a na hraní bohatě stačí. Pro produkci a vyšší zátěž ale sáhni po PostgreSQL — je robustnější a lépe škáluje.
Proč mi nefungují webhooky?
V drtivé většině případů je špatně WEBHOOK_URL. Musí ukazovat na tvou veřejnou HTTPS adresu (https://n8n.tvojedomena.cz/), ne na localhost ani na port 5678.
Caddy, nebo Nginx?
Pokud nemáš silnou preferenci, vezmi Caddy — HTTPS přes Let's Encrypt vyřídí automaticky a konfigurace je na pár řádků. Nginx zvol, když ho už provozuješ nebo potřebuješ jemnější kontrolu.
Jak n8n aktualizuju, abych nepřišel o data?
S Docker Compose stačí docker compose pull a docker compose up -d. Data zůstávají ve volume n8n_data (a v Postgresu), takže o ně nepřijdeš — ale stejně před aktualizací zálohuj.
Co když ztratím N8N_ENCRYPTION_KEY?
Smůla — n8n jím šifruje uložené credentials, takže bez něj je po migraci nebo obnově ze zálohy nerozšifruješ. Vygeneruj ho jednou, zálohuj a hlídej jako oko v hlavě.
Kam dál
Pokud teprve vybíráš server, na kterém to celé poběží, mrkni na náš porovnávač služeb, projdi si recenze poskytovatelů a než objednáš, koukni na aktuální kupóny a slevy. Trochu času nad výběrem VPS se vyplatí — n8n na něm pojede klidně roky.

