Language: cs
n8n na VPS: vlastní automatizační platforma bez ruční rutiny
Z webu přijde požadavek. n8n ověří data, zkontroluje duplicity, vytvoří obchodní příležitost, připraví návrh odpovědi pomocí AI a upozorní manažera v Telegramu. Člověk zasáhne jen tehdy, když je potřeba rozhodnutí — ne kvůli přesouvání dat mezi kartami prohlížeče.
Níže se podíváme, jak n8n funguje a jak jej nainstalovat na VPS s Docker Compose, PostgreSQL, HTTPS a izolovaným spouštěním kódu.
n8n v sedmi krocích
Minimální plán spuštění:
- Vytvořte VPS a nasměrujte na něj subdoménu, například
n8n.example.com. - Nainstalujte Docker a Docker Compose.
- Spusťte n8n s PostgreSQL, externím task runnerem a Caddy.
- Otevřete rozhraní přes HTTPS a vytvořte účet vlastníka.
- Připojte Telegram, CRM, e-mail nebo libovolné externí API.
- Nastavte zpracování chyb a dobu uchovávání dat o spuštěních.
- Automatizujte zálohy databáze, dat a šifrovacího klíče.
Pro malé produkční nasazení je rozumné začít se 2 vCPU a 4 GB RAM. 2 GB často stačí na testování, ale PostgreSQL, Docker a souběžné procesy rychle spotřebují zbývající rezervu.
Co je n8n a jak funguje
n8n je platforma pro automatizaci pracovních postupů. Workflow se skládá z uzlů: jeden proces spustí, další uzly načtou a upraví data a poslední uzel provede akci.
Jednoduchý workflow může vypadat takto:
Webhook → data validation → CRM → Telegram → website response
Řetězec může spustit webhook, plán, e-mail, zpráva nebo událost v externí službě. Mezi uzly jsou k dispozici podmínky, smyčky, filtry, čekání a zpracování chyb.
Jednou ze silných stránek n8n je, že automatizace není omezena na hotové integrace. Pomocí HTTP Request můžete volat jakoukoli službu s API, zatímco vlastní logiku lze napsat v uzlu Code pomocí JavaScriptu nebo Pythonu. n8n se tak nachází mezi jednoduchým no-code nástrojem a vlastním kódem na serveru.
Proč nejde jen o předávání dat
n8n se hodí, když proces prochází několika systémy a vyžaduje rozhodnutí:
form → validation → duplicate search → AI assessment → manager approval → CRM
Člověka lze ponechat pouze v kontrolním bodě. AI například připraví odpověď, ale zpráva se zákazníkovi odešle až po schválení zaměstnancem.
Typické případy použití:
- prodej a podpora: sběr požadavků, přiřazování leadů a vytváření obchodních příležitostí;
- obsah a AI: příprava návrhů, klasifikace dotazů a publikování po schválení;
- DevOps: upozornění na výpadky, Git webhooky a kontroly API;
- interní provoz: synchronizace tabulek, e-mailů, kalendářů a firemních systémů.
Vlastní instalace vám dává kontrolu nad procesem a databází, ale externí služby tím nepřestanou být externí. Data odeslaná do Telegramu, CRM nebo cloudového AI modelu opouštějí VPS.
n8n Cloud nebo vlastní server
| Parametr | n8n Cloud | n8n na VPS |
|---|---|---|
| Spuštění | Bez nastavování serveru | Je vyžadována doména, Docker a HTTPS |
| Aktualizace | Zajišťuje n8n | Zajišťuje vlastník |
| Databáze a soubory | V infrastruktuře služby | Na zvoleném serveru |
| Škálování | Podle cloudového tarifu | Konfiguruje se samostatně |
| Odpovědnost | Méně administrace | Zálohy, bezpečnost a monitoring jsou odpovědností vlastníka |
| Vhodné pro | Rychlý start bez DevOps | Kontrolu, přizpůsobení a trvale běžící procesy |
Community Edition lze provozovat na vlastním serveru zdarma a používat pro osobní i interní firemní procesy. n8n však není distribuováno pod tradiční open-source licencí, ale pod licencí fair-code Sustainable Use License. Ta dovoluje interní použití a úpravy, neumožňuje ale jednoduše nasadit n8n, přidat vlastní logo a prodávat přístup jako samostatné SaaS. U takového produktu je třeba podmínky licence posoudit zvlášť.
Požadavky na server n8n
Zátěž závisí na objemu dat, souběžnosti a druhu operací. Soubory, dlouhé seznamy, uzly Code a AI workflow potřebují více paměti než předávání malých JSON payloadů mezi API.
| Scénář | Výchozí konfigurace |
|---|---|
| Testy a osobní textové workflow | 1 vCPU, 2 GB RAM, 20 GB NVMe |
| Malá produkční instalace | 2 vCPU, 4 GB RAM, 25–40 GB NVMe |
| Souběžné procesy, AI nebo soubory | 4 vCPU, 8 GB RAM nebo více |
| Více worker procesů v queue režimu | Velikost podle objemu spuštění |
SQLite se hodí pro učení a malé nastavení s jedinou instancí. PostgreSQL je pro produkci praktičtější: zálohy se snadněji spravují a pozdější přechod do queue režimu je jednodušší.
Jak nainstalovat n8n na VPS
Tento příklad používá Ubuntu 24.04, PostgreSQL, Caddy a externí task runner. Nahraďte n8n.example.com a časové pásmo vlastními hodnotami.
1. Nastavení DNS a příprava serveru
Vytvořte DNS záznam A směřující na IPv4 adresu VPS a poté se připojte přes SSH:
ssh root@SERVER_IP
apt update && apt upgrade -y
apt install -y ca-certificates curl ufw opensslNainstalujte Docker Engine a plugin Compose z oficiálního repozitáře:
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
cat > /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
docker compose versionPovolte pouze SSH, HTTP a HTTPS:
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enableNeukončujte aktuální relaci SSH, dokud nepotvrdíte, že nové připojení funguje.
2. Vytvoření proměnných prostředí
Připravte adresář:
mkdir -p /opt/n8n
cd /opt/n8nVytvořte .env. Níže uvedené příkazy okamžitě vygenerují samostatná náhodná tajemství pro PostgreSQL, šifrování n8n a task runner:
cat > .env <<EOF
N8N_VERSION=stable
N8N_HOST=n8n.example.com
GENERIC_TIMEZONE=Europe/Berlin
POSTGRES_DB=n8n
POSTGRES_USER=n8n
POSTGRES_PASSWORD=$(openssl rand -hex 32)
N8N_ENCRYPTION_KEY=$(openssl rand -hex 32)
RUNNERS_AUTH_TOKEN=$(openssl rand -hex 32)
EOF
chmod 600 .envTag stable je vhodný pro první spuštění. Po ověření instalace je lepší připnout konkrétní verzi n8n, aby se při další aktualizaci obraz neočekávaně nezměnil.
Nesmíte ztratit N8N_ENCRYPTION_KEY. n8n tento klíč používá k šifrování uložených hesel, tokenů a dalších přihlašovacích údajů. Pokud obnovíte pouze PostgreSQL bez klíče, záznamy v databázi zůstanou, ale n8n je nebude umět přečíst.
3. Vytvoření souboru Docker Compose
Vytvořte compose.yaml:
services:
postgres:
image: postgres:18-alpine
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
PGDATA: /var/lib/postgresql/data
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 10
n8n:
image: docker.n8n.io/n8nio/n8n:${N8N_VERSION}
restart: unless-stopped
environment:
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_PORT: "5432"
DB_POSTGRESDB_DATABASE: ${POSTGRES_DB}
DB_POSTGRESDB_USER: ${POSTGRES_USER}
DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD}
N8N_HOST: ${N8N_HOST}
N8N_PORT: "5678"
N8N_PROTOCOL: https
N8N_EDITOR_BASE_URL: https://${N8N_HOST}
N8N_WEBHOOK_URL: https://${N8N_HOST}/
N8N_PROXY_HOPS: "1"
GENERIC_TIMEZONE: ${GENERIC_TIMEZONE}
TZ: ${GENERIC_TIMEZONE}
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS: "true"
N8N_BLOCK_ENV_ACCESS_IN_NODE: "true"
N8N_RUNNERS_MODE: external
N8N_RUNNERS_AUTH_TOKEN: ${RUNNERS_AUTH_TOKEN}
N8N_RUNNERS_BROKER_LISTEN_ADDRESS: 0.0.0.0
EXECUTIONS_DATA_PRUNE: "true"
EXECUTIONS_DATA_MAX_AGE: "168"
EXECUTIONS_DATA_PRUNE_MAX_COUNT: "10000"
volumes:
- n8n_data:/home/node/.n8n
expose:
- "5678"
depends_on:
postgres:
condition: service_healthy
n8n-runner:
image: n8nio/runners:${N8N_VERSION}
restart: unless-stopped
environment:
N8N_RUNNERS_AUTH_TOKEN: ${RUNNERS_AUTH_TOKEN}
N8N_RUNNERS_TASK_BROKER_URI: http://n8n:5679
depends_on:
- n8n
caddy:
image: caddy:2-alpine
restart: unless-stopped
environment:
N8N_HOST: ${N8N_HOST}
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
- caddy_config:/config
depends_on:
- n8n
volumes:
postgres_data:
name: n8n_postgres_data
n8n_data:
name: n8n_data
caddy_data:
name: n8n_caddy_data
caddy_config:
name: n8n_caddy_configExterní task runner spouští kód odděleně od hlavního procesu n8n. Je to bezpečnější než interní režim a snižuje pravděpodobnost, že chyba v uzlu Code ovlivní editor a zpracování webhooků.
4. Zapnutí HTTPS
Vytvořte Caddyfile:
{$N8N_HOST} {
reverse_proxy n8n:5678
}Caddy automaticky získá certifikát TLS, pokud DNS už směřuje na VPS a porty 80 a 443 jsou dostupné. Interní port 5678 není vystaven do internetu: zvenčí jsou dostupné pouze porty 80 a 443, zatímco Caddy přistupuje k n8n přes síť Dockeru.
Proměnné N8N_WEBHOOK_URL a N8N_PROXY_HOPS jsou nutné, aby editor vytvářel správné veřejné adresy webhooků a důvěřoval hlavičkám z jednoho reverse proxy.
5. Spuštění n8n
Ověřte výslednou konfiguraci a spusťte kontejnery:
docker compose config
docker compose up -d
docker compose ps
docker compose logs --tail=100 n8n caddyOtevřete:
https://n8n.example.comVytvořte účet vlastníka. Jeho heslo nesdílejte s kolegy: pro tým používejte samostatné účty a každému přidělte jen potřebný přístup.
První užitečný workflow
Dobrým testem je zpracování požadavku z webu:
- Přidejte uzel
Webhooks metodouPOST. - Pomocí uzlu
Edit Fieldsponechte pouze jméno, e-mailovou adresu a zdroj. - Pomocí uzlu
Ifodmítněte požadavek bez povinných údajů. - Vytvořte obchodní příležitost v CRM nebo odešlete požadavek přes
HTTP Request. - Přidejte oznámení v Telegramu.
- Řetězec zakončete uzlem
Respond to Webhook. - Po otestování workflow aktivujte a testovací webhook nahraďte produkční URL.
Tento příklad okamžitě ověří doménu, HTTPS, příchozí požadavky, přihlašovací údaje a externí integraci. Poté přidejte samostatný Error Workflow, který vás upozorní při selhání hlavního řetězce.
Zabezpečení n8n po instalaci
Nainstalovaná instance n8n není automaticky spolehlivá. Po spuštění se ujistěte, že:
- editor je dostupný pouze přes HTTPS;
.envmá oprávnění600a není uložen v Gitu;- externí API klíče mají minimální potřebná oprávnění;
- každý webhook ověřuje podpis nebo tajemství zdroje;
- historie spuštění se automaticky maže;
- chyby v kritických workflow se odesílají administrátorovi.
Komunitní uzly se instalují jako balíčky a mohou získat přístup k datům workflow i serveru. Nepřidávejte neznámé uzly bez kontroly. Pokud je nepotřebujete, zakažte je pomocí N8N_COMMUNITY_PACKAGES_ENABLED=false.
Spusťte vestavěný audit:
docker compose exec n8n n8n auditAudit pomáhá najít nechráněné webhooky, rizikové uzly a problémy s přihlašovacími údaji, ale nenahrazuje ruční kontrolu.
Historie spuštění a osobní údaje
n8n ukládá vstupní a výstupní data pro ladění. Spolu s nimi mohou v databázi zůstat e-mailové zprávy, telefonní čísla, dokumenty a odpovědi API.
V uvedené konfiguraci se spuštění mažou po sedmi dnech a jejich počet je omezen na 10 000. U citlivých procesů nastavte dobu uchovávání podle své politiky a před dokončením workflow odstraňte nepotřebná pole.
Zálohy a aktualizace
Obnova vyžaduje dump PostgreSQL, svazek n8n_data, konfigurační soubory a .env obsahující N8N_ENCRYPTION_KEY. Před kopírováním zastavte procesory a PostgreSQL nechte běžet. Tím vznikne krátké přerušení spouštění workflow:
cd /opt/n8n
mkdir -p backup
docker compose stop n8n n8n-runner
docker compose exec -T postgres sh -c \
'pg_dump -U "$POSTGRES_USER" "$POSTGRES_DB"' \
| gzip > "backup/n8n-db-$(date +%F).sql.gz"
docker run --rm \
-v n8n_data:/source:ro \
-v "$PWD/backup":/backup \
alpine sh -c \
'tar -czf /backup/n8n-data-$(date +%F).tar.gz -C /source .'
tar -czf "backup/n8n-config-$(date +%F).tar.gz" \
.env compose.yaml Caddyfile
docker compose start n8n n8n-runnerArchiv obsahující .env zahrnuje tajemství: zašifrujte jej a uložte mimo VPS. Zálohu pravidelně ověřujte zkušební obnovou.
Před aktualizací vytvořte zálohu a projděte poznámky k vydání:
cd /opt/n8n
docker compose pull
docker compose up -d
docker compose psTask runner a hlavní kontejner musí používat stejný tag verze.
Kdy je potřeba škálování
Nezačínejte s Redisem a několika workery, dokud neexistuje skutečná zátěž. Jedna instance s PostgreSQL se snáze udržuje a obvykle pokryje malé interní procesy.
Queue režim je nutný, když dlouhé úlohy zpožďují webhooky, mnoho workflow se spouští současně nebo zpracování souborů pravidelně spotřebuje všechnu dostupnou paměť. V takovém nastavení hlavní instance přijímá události, Redis rozděluje úlohy a workeři je provádějí paralelně. Všechny komponenty se musí připojit ke stejné databázi PostgreSQL a používat stejný N8N_ENCRYPTION_KEY.
Jaké VPS zvolit pro n8n
Pro n8n, PostgreSQL, Caddy a task runner dohromady je rozumné začít se 2 vCPU, 4 GB RAM a diskem NVMe. Na tropic.host tomu odpovídá tarif Light: 2 vCPU, 4 GB RAM a 25 GB NVMe. To stačí pro první produkční workflow bez náročného zpracování souborů.
Pro dokumenty, velké datové sady a mnoho souběžných AI workflow je lepší 8 GB RAM. Důležitá je také stabilní síť: webhooky, OAuth callbacky a plánované úlohy musí zůstat nepřetržitě dostupné.
Závěr
n8n mění opakující se operace na přehledné vizuální toky: hotové uzly urychlují spuštění, HTTP Request připojí téměř jakékoli API a uzel Code umožní přidat vlastní logiku.
Verze s vlastním hostingem vám dává kontrolu nad serverem a databází, ale vyžaduje HTTPS, omezené klíče, čištění historie a ověřené zálohy. Uložte N8N_ENCRYPTION_KEY společně s PostgreSQL: bez něj nelze obnovené přihlašovací údaje dešifrovat.
FAQ
Lze n8n používat zdarma?
Ano. Community Edition lze bezplatně provozovat na vlastním serveru pro osobní a interní procesy. Prodej hostovaného n8n jako samostatného SaaS omezuje licence fair-code.
Lze n8n nainstalovat bez domény?
Pro lokální testování ano. Pro veřejné webhooky a OAuth je lepší použít doménu a HTTPS.
Kolik RAM n8n potřebuje?
Jednoduchá osobní workflow často běží se 2 GB RAM. Pro n8n s PostgreSQL, Caddy a task runnerem je rozumnějších 4 GB; soubory a souběžná spuštění mohou vyžadovat 8 GB nebo více.
Zůstávají všechna data uvnitř VPS?
Pouze data, která workflow neodešle jinam. Databáze a historie spuštění se ukládají na VPS, ale uzly pro Telegram, CRM nebo externí AI model odesílají vybraná data příslušné službě.
Co má obsahovat záloha n8n?
Dump PostgreSQL, svazek n8n_data, compose.yaml, Caddyfile a .env obsahující N8N_ENCRYPTION_KEY. Zálohu ukládejte mimo VPS v zašifrované podobě a ověřte ji obnovou.
