Tropic Host

n8n: mi ez, és hogyan telepíthető VPS-re Docker Compose használatával

9 perc olvasás
Tropic
n8n: mi ez, és hogyan telepíthető VPS-re Docker Compose használatával

Language: hu

n8n VPS-en: saját automatizálási platform felesleges kézi munka nélkül

Megérkezik egy kérés a webhelyről. Az n8n ellenőrzi az adatokat, megkeresi a duplikációkat, létrehoz egy üzletet, AI segítségével választervezetet készít, és értesíti a vezetőt a Telegramban. Az ember csak akkor avatkozik be, amikor döntésre van szükség, nem azért, hogy adatokat másoljon a böngészőlapok között.

Az alábbiakban áttekintjük, hogyan működik az n8n, és hogyan telepíthető VPS-re Docker Compose, PostgreSQL, HTTPS és elkülönített kódvégrehajtás használatával.

Az n8n hét lépésben

Minimális indítási terv:

  1. Hozzon létre egy VPS-t, és irányítson rá egy aldomaint, például n8n.example.com.
  2. Telepítse a Dockert és a Docker Compose-t.
  3. Indítsa el az n8n-t PostgreSQL-lel, külső feladatfuttatóval és Caddyvel.
  4. Nyissa meg a felületet HTTPS-en keresztül, és hozza létre a tulajdonosi fiókot.
  5. Csatlakoztassa a Telegramot, egy CRM-et, az e-mailt vagy bármely külső API-t.
  6. Állítsa be a hibakezelést és a végrehajtási adatok megőrzési idejét.
  7. Automatizálja az adatbázis, az adatok és a titkosítási kulcs biztonsági mentését.

Kis éles telepítéshez érdemes 2 vCPU-val és 4 GB RAM-mal kezdeni. Teszteléshez gyakran elég 2 GB, de a PostgreSQL, a Docker és az egyidejű folyamatok gyorsan felhasználják a fennmaradó erőforrást.

Mi az n8n, és hogyan működik?

Az n8n munkafolyamat-automatizálási platform. A munkafolyamat csomópontokból áll: az egyik elindítja a folyamatot, a következők lekérik és átalakítják az adatokat, az utolsó pedig végrehajt egy műveletet.

Egy egyszerű munkafolyamat így néz ki:

Webhook → data validation → CRM → Telegram → website response

A láncot webhook, ütemezés, e-mail, üzenet vagy egy külső szolgáltatás eseménye indíthatja el. A csomópontok között feltételek, ciklusok, szűrők, várakozások és hibakezelés használható.

Az n8n egyik erőssége, hogy az automatizálás nem korlátozódik a kész integrációkra. A HTTP Request segítségével bármely API-val rendelkező szolgáltatás meghívható, a Code csomópontban pedig JavaScript vagy Python használatával egyedi logika írható. Az n8n ezért valahol egy egyszerű no-code építő és az egyedi szerveroldali kód között helyezkedik el.

Miért több egyszerű adattovábbításnál?

Az n8n akkor hasznos, amikor egy folyamat több rendszeren ível át és döntést igényel:

form → validation → duplicate search → AI assessment → manager approval → CRM

Az embert csak az ellenőrzési pontnál lehet bevonni. Például az AI elkészíti a választ, de az üzenet csak a munkatárs jóváhagyása után jut el az ügyfélhez.

Tipikus felhasználási területek:

  • értékesítés és támogatás: kérések gyűjtése, leadek kiosztása és üzletek létrehozása;
  • tartalom és AI: tervezetek készítése, megkeresések osztályozása és közzététel jóváhagyás után;
  • DevOps: leállási értesítések, Git-webhookok és API-ellenőrzések;
  • belső műveletek: táblázatok, e-mail, naptárak és vállalati rendszerek szinkronizálása.

A self-hosted telepítés ellenőrzést ad a folyamat és az adatbázis felett, de a külső szolgáltatásokat nem teszi helyivé. A Telegramnak, CRM-nek vagy felhős AI-modellnek küldött adatok elhagyják a VPS-t.

n8n Cloud vagy saját szerver

Paramétern8n Cloudn8n VPS-en
IndításNincs szükség szerverbeállításraDomain, Docker és HTTPS szükséges
FrissítésekAz n8n kezeliA tulajdonos kezeli
Adatbázis és fájlokA szolgáltatás infrastruktúrájábanA kiválasztott szerveren
SkálázásA felhőcsomag szerintFüggetlenül konfigurálható
FelelősségKevesebb adminisztrációA biztonsági mentés, a biztonság és a monitorozás a tulajdonos felelőssége
Kinek ajánlottGyors kezdés DevOps nélkülEllenőrzéshez, testreszabáshoz és folyamatosan futó folyamatokhoz

A Community Edition ingyenesen self-hosted üzemeltethető saját szerveren személyes és belső üzleti folyamatokhoz. Az n8n azonban nem hagyományos nyílt forráskódú licenc alatt, hanem a fair-code Sustainable Use License alapján terjesztett szoftver. Ez engedélyezi a belső használatot és a módosítást, de nem teszi lehetővé, hogy egyszerűen telepítse az n8n-t, hozzáadja saját logóját, és önálló SaaS-ként értékesítse a hozzáférést. Ilyen termékhez a licencfeltételeket külön meg kell vizsgálni.

Az n8n szerverkövetelményei

A terhelés az adatmennyiségtől, a párhuzamosságtól és a műveletek típusától függ. A fájlok, a hosszú listák, a Code csomópontok és az AI-munkafolyamatok több memóriát igényelnek, mint kis JSON-adatok továbbítása az API-k között.

ForgatókönyvKezdő konfiguráció
Tesztek és személyes, szövegalapú munkafolyamatok1 vCPU, 2 GB RAM, 20 GB NVMe
Kis éles telepítés2 vCPU, 4 GB RAM, 25–40 GB NVMe
Egyidejű folyamatok, AI vagy fájlok4 vCPU, 8 GB RAM vagy több
Több worker folyamat queue mode-banA végrehajtási mennyiséghez igazítva

Az SQLite tanuláshoz és kis, egyetlen példányból álló telepítéshez megfelelő. Éles környezetben a PostgreSQL kényelmesebb: egyszerűbbek a biztonsági mentések, és később könnyebb áttérni queue mode-ra.

Az n8n telepítése VPS-re

Ez a példa Ubuntu 24.04-et, PostgreSQL-t, Caddyt és külső feladatfuttatót használ. A n8n.example.com értékét és az időzónát cserélje a saját értékeire.

1. DNS beállítása és a szerver előkészítése

Hozzon létre a VPS IPv4-címére mutató A DNS-rekordot, majd csatlakozzon SSH-n keresztül:

ssh root@SERVER_IP
apt update && apt upgrade -y
apt install -y ca-certificates curl ufw openssl

Telepítse a Docker Engine-t és a Compose-bővítményt a hivatalos tárolóból:

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 version

Csak az SSH, a HTTP és a HTTPS számára engedélyezzen hozzáférést:

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Ne zárja be a jelenlegi SSH-munkamenetet, amíg nem igazolta, hogy az új kapcsolat működik.

2. Környezeti változók létrehozása

Készítse elő a könyvtárat:

mkdir -p /opt/n8n
cd /opt/n8n

Hozza létre a .env fájlt. Az alábbi parancsok azonnal különálló véletlenszerű titkokat generálnak a PostgreSQL, az n8n titkosítása és a feladatfuttató számára:

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 .env

A stable tag kényelmes az első indításhoz. A telepítés ellenőrzése után jobb egy konkrét n8n-verziót rögzíteni, így a következő image-frissítés nem történik meg váratlanul.

Ne veszítse el az N8N_ENCRYPTION_KEY értékét. Az n8n ezt a kulcsot használja a tárolt jelszavak, tokenek és egyéb hitelesítő adatok titkosítására. Ha csak a PostgreSQL-t állítja vissza a kulcs nélkül, a rekordok az adatbázisban maradnak, de az n8n nem tudja elolvasni őket.

3. Docker Compose-fájl létrehozása

Hozza létre a compose.yaml fájlt:

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_config

A külső feladatfuttató a fő n8n-folyamattól elkülönítve hajtja végre a kódot. Ez biztonságosabb a belső módnál, és csökkenti annak esélyét, hogy egy Code csomópontban fellépő hiba hatással legyen a szerkesztőre és a webhook-feldolgozásra.

4. HTTPS engedélyezése

Hozza létre a Caddyfile fájlt:

{$N8N_HOST} {
    reverse_proxy n8n:5678
}

Ha a DNS már a VPS-re mutat, és a 80-as és 443-as port elérhető, a Caddy automatikusan TLS-tanúsítványt szerez. A belső 5678-as port nincs kitéve az internetnek: kívülről csak a 80-as és a 443-as port érhető el, a Caddy pedig a Docker-hálózaton keresztül éri el az n8n-t.

Az N8N_WEBHOOK_URL és az N8N_PROXY_HOPS változókra azért van szükség, hogy a szerkesztő helyes nyilvános webhook-címeket generáljon, és megbízzon egy reverse proxy fejléceiben.

5. Az n8n indítása

Ellenőrizze a végleges konfigurációt, és indítsa el a konténereket:

docker compose config
docker compose up -d
docker compose ps
docker compose logs --tail=100 n8n caddy

Nyissa meg:

https://n8n.example.com

Hozza létre a tulajdonosi fiókot. Ne ossza meg a jelszavát a kollégákkal: csapatmunka esetén használjon külön fiókokat, és mindenkinek csak a szükséges hozzáférést adja meg.

Az első hasznos munkafolyamat

Jó teszt egy webhelyről érkező kérés feldolgozása:

  1. Adjon hozzá egy Webhook csomópontot POST metódussal.
  2. Az Edit Fields használatával csak a nevet, az e-mail-címet és a forrást tartsa meg.
  3. Egy kötelező adatokat nélkülöző kérés elutasításához használjon If csomópontot.
  4. Hozzon létre üzletet a CRM-ben, vagy küldjön kérést a HTTP Request segítségével.
  5. Adjon hozzá Telegram-értesítést.
  6. Fejezze be a láncot egy Respond to Webhook csomóponttal.
  7. A tesztelés után aktiválja a munkafolyamatot, és a teszt-webhookot cserélje le az éles URL-re.

Ez a példa azonnal ellenőrzi a domaint, a HTTPS-t, a bejövő kéréseket, a hitelesítő adatokat és a külső integrációt. Ezután adjon hozzá külön Error Workflow-t, amely értesíti, ha a fő lánc hibázik.

Az n8n védelme telepítés után

Egy telepített n8n-példány nem lesz automatikusan megbízható. Indítás után győződjön meg arról, hogy:

  • a szerkesztő csak HTTPS-en keresztül érhető el;
  • a .env jogosultsága 600, és nem kerül Gitbe;
  • a külső API-kulcsok csak a minimálisan szükséges jogosultságokkal rendelkeznek;
  • minden webhook ellenőrzi a forrás aláírását vagy titkát;
  • a végrehajtási előzmények automatikusan törlődnek;
  • a kritikus munkafolyamatok hibái eljutnak az adminisztrátorhoz.

A Community csomópontok csomagként települnek, és hozzáférhetnek a munkafolyamat adataihoz és a szerverhez. Ismeretlen csomópontokat ne adjon hozzá ellenőrzés nélkül. Ha nincs rájuk szüksége, tiltsa le őket az N8N_COMMUNITY_PACKAGES_ENABLED=false beállítással.

Futtassa a beépített auditot:

docker compose exec n8n n8n audit

Segít azonosítani a védelem nélküli webhookokat, a kockázatos csomópontokat és a hitelesítő adatok problémáit, de nem helyettesíti a kézi ellenőrzést.

Végrehajtási előzmények és személyes adatok

Az n8n hibakereséshez tárolja a bemeneti és kimeneti adatokat. Velük együtt e-mail-üzenetek, telefonszámok, dokumentumok és API-válaszok is az adatbázisban maradhatnak.

A fenti konfigurációban a végrehajtások hét nap után törlődnek, számuk pedig 10 000-re van korlátozva. Érzékeny folyamatoknál az adatmegőrzési szabályzatnak megfelelően válassza ki a megőrzési időt, és a munkafolyamat vége előtt távolítsa el a felesleges mezőket.

Biztonsági mentések és frissítések

A helyreállításhoz szükséges egy PostgreSQL dump, az n8n_data volume, a konfigurációs fájlok, az .env és a benne tárolt N8N_ENCRYPTION_KEY. Másolás előtt állítsa le a feldolgozókat, miközben a PostgreSQL maradjon futó állapotban. Ez rövid megszakítást okoz a munkafolyamatok végrehajtásában:

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-runner

A .env fájlt tartalmazó archívum titkokat foglal magában: titkosítsa, és a VPS-en kívül tárolja. Rendszeresen ellenőrizze a biztonsági mentést egy próba-visszaállítással.

Frissítés előtt készítsen biztonsági mentést, és tekintse át a kiadási megjegyzéseket:

cd /opt/n8n
docker compose pull
docker compose up -d
docker compose ps

A feladatfuttatónak és a fő konténernek ugyanazt a verziótagot kell használnia.

Mikor válik szükségessé a skálázás?

Ne kezdjen Redis-szel és több workerrel, mielőtt valódi terhelés lenne. Egy PostgreSQL-t használó példány könnyebben karbantartható, és általában elegendő kisebb belső folyamatokhoz.

A queue mode akkor válik szükségessé, amikor a hosszú feladatok késleltetik a webhookokat, sok munkafolyamat indul egyszerre, vagy a fájlfeldolgozás rendszeresen felhasználja az összes memóriát. Ilyenkor a fő példány fogadja az eseményeket, a Redis elosztja a feladatokat, a workerek pedig párhuzamosan hajtják végre őket. Minden komponensnek ugyanahhoz a PostgreSQL-adatbázishoz kell csatlakoznia, és ugyanazt az N8N_ENCRYPTION_KEY értéket kell használnia.

Melyik VPS-t válassza az n8n-hez?

Az n8n, a PostgreSQL, a Caddy és a feladatfuttató együttes használatához érdemes 2 vCPU-val, 4 GB RAM-mal és NVMe-meghajtóval kezdeni. A tropic.host Light csomagja megfelel ennek a konfigurációnak: 2 vCPU, 4 GB RAM és 25 GB NVMe. Ez elegendő az első éles munkafolyamatokhoz nehéz fájlfeldolgozás nélkül.

Dokumentumokhoz, nagy adathalmazokhoz és sok egyidejű AI-munkafolyamathoz a 8 GB RAM jobb választás. A stabil hálózat szintén fontos: a webhookoknak, az OAuth callbackeknek és az ütemezett feladatoknak folyamatosan elérhetőnek kell maradniuk.

Összegzés

Az n8n az ismétlődő műveleteket világos vizuális folyamatokká alakítja: a kész csomópontok felgyorsítják az indítást, a HTTP Request szinte bármely API-t összeköt, a Code csomópont pedig lehetővé teszi saját logika hozzáadását.

A self-hosted verzió ellenőrzést ad a szerver és az adatbázis felett, de HTTPS-t, korlátozott kulcsokat, előzménytisztítást és ellenőrzött biztonsági mentéseket igényel. Az N8N_ENCRYPTION_KEY értékét a PostgreSQL-lel együtt tárolja: nélküle a visszaállított hitelesítő adatok nem fejthetők vissza.

FAQ

Használható az n8n ingyenesen?

Igen. A Community Edition saját szerveren ingyenesen üzemeltethető személyes és belső folyamatokhoz. A hosted n8n önálló SaaS-ként történő továbbértékesítését a fair-code licenc korlátozza.

Telepíthető az n8n domain nélkül?

Helyi teszteléshez igen. Nyilvános webhookokhoz és OAuth-hoz jobb domaint és HTTPS-t használni.

Mennyi RAM-ra van szüksége az n8n-nek?

Az egyszerű személyes munkafolyamatok gyakran 2 GB RAM-mal is működnek. PostgreSQL-lel, Caddyvel és feladatfuttatóval az n8n számára a 4 GB ésszerűbb; a fájlok és az egyidejű végrehajtások 8 GB-ot vagy többet igényelhetnek.

Minden adat a VPS-en marad?

Csak az az adat marad ott, amelyet a munkafolyamat nem küld tovább. Az adatbázis és a végrehajtási előzmények a VPS-en tárolódnak, de a Telegram-, CRM- vagy külső AI-modellcsomópontok a kiválasztott adatokat elküldik a megfelelő szolgáltatásnak.

Mit kell tartalmaznia egy n8n-biztonsági mentésnek?

Egy PostgreSQL dumpot, az n8n_data volume-ot, a compose.yaml-t, a Caddyfile-t, az .env fájlt és a benne tárolt N8N_ENCRYPTION_KEY értéket. A biztonsági mentést titkosítva, a VPS-en kívül tárolja, és visszaállítással ellenőrizze.