EUR
european

EUR

usa

USD

Ex. VAT Ex. VAT 0%

Namestitev n8n z Dockerjem in PostgreSQL

n8n je platforma za avtomatizacijo potekov dela, ki jo lahko zaženete na lastnem strežniku. Samostojno gostovana (self-hosted) instanca ohranja vaše poteke dela, poverilnice in podatke o izvajanju pod vašim nadzorom in nima omejitev glede števila potekov dela ali izvedb, razen tistih, ki jih strežnik zmore.

Ta vodnik nastavi n8n na namenskem strežniku s PostgreSQL, HTTPS in varnostnimi kopijami. Uporablja tri zabojnike (containerje), ki jih upravlja Docker Compose:

  • n8n, sama platforma za avtomatizacijo;
  • PostgreSQL, baza podatkov za poteke dela, poverilnice in zgodovino izvajanja;
  • Caddy, obratni posredniški strežnik (reverse proxy), ki samodejno pridobi in obnovi potrdilo HTTPS.

Privzeto n8n shranjuje svoje podatke v SQLite. Ta vodnik namesto tega uporablja PostgreSQL: varnostno kopijo lahko ustvarite, medtem ko n8n deluje, in to je baza podatkov, ki jo n8n priporoča za samostojno gostovanje.

Koraki so bili preizkušeni na Ubuntu 24.04 LTS z n8n 2.46.7, PostgreSQL 17, Docker 29 in Docker Compose v5.

Preden začnete

Potrebovali boste:

  • strežnik z operacijskim sistemom Ubuntu 24.04 LTS z root dostopom prek SSH;
  • domeno ali poddomeno za n8n, na primer n8n.example.com;
  • zapis A za to ime, ki kaže na naslov IPv4 strežnika.

Če ima domena tudi zapis AAAA, mora biti strežnik na tem naslovu dosegljiv prek IPv6. V nasprotnem primeru lahko Let's Encrypt najprej poskusi IPv6 in ne uspe izdati potrdila.

Preden nadaljujete, preverite, ali se zapis razreši na vaš strežnik:

dig +short n8n.example.com

P ukaz bi moral vrniti naslov IP strežnika. Izdaja potrdila v Caddyju je odvisna od tega, zato počakajte, da se DNS razširi.

Vsi spodnji ukazi se izvajajo kot root. Če delate kot navaden uporabnik s pravicami sudo, pred vsak ukaz dodajte sudo.

Namestitev Dockerja

Namestite Docker Engine in vtičnik Compose iz uradnega repozitorija Docker. Paket docker.io iz repozitorija Ubuntu je starejši in ne vključuje Compose v2.

apt update && apt install -y ca-certificates curl 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

Dodajte repozitorij:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" > /etc/apt/sources.list.d/docker.list

Namestite pakete:

apt update apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Preverite, ali sta obe orodji na voljo:

docker --version docker compose version

Ustvarite imenik projekta in skrivnosti

Vse datoteke n8n bodo v /opt/n8n:

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

Ustvarite datoteko .env z vašo domeno, časovnim pasom in ustvarjenimi skrivnostmi. Zamenjajte n8n.example.com in časovni pas z lastnimi vrednostmi:

cat > .env <<EOF DOMAIN=n8n.example.com GENERIC_TIMEZONE=Europe/Amsterdam POSTGRES_USER=n8n POSTGRES_DB=n8n POSTGRES_PASSWORD=$(openssl rand -hex 24) N8N_ENCRYPTION_KEY=$(openssl rand -hex 32) EOF chmod 600 .env

GENERIC_TIMEZONE nastavi časovni pas, ki ga uporabljata vozlišče Schedule Trigger in druga vozlišča, ki temeljijo na času. Brez tega n8n uporablja America/New_York.

N8N_ENCRYPTION_KEY je ključ, ki ga n8n uporablja za šifriranje poverilnic, ki jih shranite vanj: žetoni API, gesla, skrivnosti OAuth. Če se ta ključ izgubi, poverilnic v obnovljeni bazi podatkov ni mogoče dešifrirati in vsako od njih je treba znova vnesti.

Warning

Datoteko .env takoj kopirajte na varno mesto zunaj strežnika, na primer v upravitelja gesel. Varnostna kopija baze podatkov brez N8N_ENCRYPTION_KEY bo obnovila vaše poteke dela, ne pa tudi poverilnic.

Ustvarite datoteko Docker Compose

Ustvarite /opt/n8n/compose.yaml:

services: postgres: image: postgres:17 restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] interval: 10s timeout: 5s retries: 5 n8n: image: docker.n8n.io/n8nio/n8n restart: unless-stopped depends_on: postgres: condition: service_healthy 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_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY} N8N_HOST: ${DOMAIN} N8N_PROTOCOL: https N8N_PROXY_HOPS: 1 N8N_WEBHOOK_URL: https://${DOMAIN}/ GENERIC_TIMEZONE: ${GENERIC_TIMEZONE} TZ: ${GENERIC_TIMEZONE} ports: - "127.0.0.1:5678:5678" volumes: - n8n_data:/home/node/.n8n caddy: image: caddy:2 restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - caddy_data:/data - caddy_config:/config volumes: postgres_data: n8n_data: caddy_data: caddy_config:

Nekaj podrobnosti v tej datoteki je pomembnih za varnost in stabilnost.

PostgreSQL nima razdelka ports. Do baze podatkov lahko dostopajo samo drugi zabojniki v projektu, nikoli iz interneta.

Vrata n8n so objavljena kot 127.0.0.1:5678. Do n8n uporabniki dostopajo samo prek Caddyja prek HTTPS, medtem ko lahko n8n še vedno preverjate lokalno na strežniku.

Warning

Vrstice vrat n8n ne skrajšajte na 5678:5678. Docker doda lastna pravila požarnega zidu za objavljena vrata, ki obidejo UFW. Brez predpone 127.0.0.1 postane n8n dosegljiv prek navadnega HTTP od koder koli, tudi če UFW blokira vrata 5678.

Pogoj depends_on s preverjanjem stanja (healthcheck) poskrbi, da n8n počaka, dokler PostgreSQL ni pripravljen sprejemati povezav. Brez tega se lahko n8n ob hladnem zagonu zažene prvi in ne uspe vzpostaviti povezave z bazo podatkov.

N8N_PROXY_HOPS pove n8n, da deluje za enim obratnim posredniškim strežnikom, zato bere pravi naslov odjemalca iz glav posredniškega strežnika. N8N_WEBHOOK_URL nastavi javni naslov, ki ga n8n prikaže za URL-je webhookov. V različicah n8n pred 2.30 se ta spremenljivka imenuje WEBHOOK_URL.

Konfiguracija HTTPS s Caddyjem

Ustvarite /opt/n8n/Caddyfile z vašo domeno:

n8n.example.com { reverse_proxy n8n:5678 }

To je celotna konfiguracija. Ob prvem zagonu Caddy zahteva potrdilo Let's Encrypt za domeno, preusmeri HTTP na HTTPS in obnovi potrdilo, preden poteče. Da bi to delovalo, morata biti odprti vrat 80 in 443.

Konfiguracija požarnega zidu

Najprej dovolite SSH, nato HTTP in HTTPS, ter omogočite UFW:

ufw allow OpenSSH ufw allow 80/tcp ufw allow 443/tcp ufw --force enable ufw status

Info

Če je bil UFW že omogočen z vašimi lastnimi pravili, pred spremembami zaženite ufw status in obdržite pravila, ki jih potrebujete. Dovoljevanje OpenSSH pred omogočanjem UFW prepreči prekinitev vaše trenutne seje SSH.

Zagon n8n

Zaženite zabojnike v ozadju:

cd /opt/n8n docker compose up -d

Prvi zagon prenese slike in traja minuto ali dve. Preverite, ali vsi trije zabojniki delujejo in ali je PostgreSQL zdrav (healthy):

docker compose ps

Oglejte si dnevnik n8n:

docker compose logs n8n --tail 50

Dnevnik bi se moral končati z vrstico, kot je:

Editor is now accessible via: https://n8n.example.com

Preverite, ali n8n odgovarja lokalno in prek Caddyja:

curl -s http://127.0.0.1:5678/healthz curl -s https://n8n.example.com/healthz

Oba ukaza bi morala vrniti {"status":"ok"}.

Če drugi ukaz ne uspe, preverite dnevnik Caddyja z docker compose logs caddy. Najpogostejši vzrok je zapis DNS, ki še ne kaže na ta strežnik, ali zaprti vrat 80 in 443.

Ustvarite račun lastnika

V brskalniku odprite https://n8n.example.com. Ob prvem obisku vas n8n pozove, da ustvarite račun lastnika. Ta račun ima polne pravice do instance in upravlja vse druge uporabnike.

Vnesite svoj e-poštni naslov, ime in priimek ter geslo, nato kliknite Naprej (Next). Geslo mora biti dolgo vsaj 8 znakov in vsebovati vsaj eno številko in eno veliko črko. Uporabite močno geslo: urejevalnik n8n je odprt za internet in vsak, ki se vanj spravi, lahko prek vaših potekov dela izvaja ukaze na strežniku.

Po prvi prijavi n8n prikaže kratko anketo: Customize n8n to you. Vprašanja so izbirna. Kliknite Začni (Get started), da jo zaprete, z odgovorom ali brez njega.

Nato n8n ponuja brezplačen licenčni ključ za več funkcij izdaje Community Edition: napredno odpravljanje napak, iskanje in označevanje izvedb ter mape za poteke dela. Ključ je poslan na e-poštni naslov, ki ga vnesete. Kliknite Send me a free license key, da ga dobite, ali Preskoči (Skip), če teh funkcij ne potrebujete.

Odpre se pregledna stran. Namestitev je končana in lahko ustvarite svoj prvi potek dela.

Varnostno kopiranje n8n

Varnostna kopija n8n je sestavljena iz dveh delov: izpisa (dump) PostgreSQL z vašimi poteki dela, poverilnicami, uporabniki in zgodovino izvajanja ter datoteke .env z N8N_ENCRYPTION_KEY. Noben del ni uporaben brez drugega.

V tej nastavitvi n8n hrani vse svoje stanje v PostgreSQL. Volumna n8n_data ni treba varnostno kopirati: popolna obnovitev deluje samo z izpisom baze podatkov in datoteko .env.

Ustvarite imenik za varnostno kopijo in izpišite bazo podatkov:

mkdir -p /opt/n8n-backup cd /opt/n8n docker compose exec -T postgres pg_dump -U n8n -d n8n -Fc > /opt/n8n-backup/n8n-db.dump cp .env compose.yaml Caddyfile /opt/n8n-backup/

Izpis se izvede, medtem ko n8n deluje, zato čas nedelovanja ni potreben.

Varnostna kopija, ki ostane na istem strežniku, ne bo pomagala, če pride do okvare diska strežnika. Redno kopirajte /opt/n8n-backup v zunanjo shrambo. Za to lahko uporabite INTROSERV Cloud Storage, kot je opisano v vodniku Povezovanje shrambe INTROSERV Cloud Storage s strežnikom .

Obnovitev iz varnostne kopije

Če želite obnoviti n8n na novem strežniku, namestite Docker, kot je opisano zgoraj, in kopirajte imenik varnostne kopije v /opt/n8n-backup na tem strežniku. Nato postavite konfiguracijske datoteke na svoje mesto:

mkdir -p /opt/n8n cp /opt/n8n-backup/.env /opt/n8n-backup/compose.yaml /opt/n8n-backup/Caddyfile /opt/n8n/ chmod 600 /opt/n8n/.env

Če ima novi strežnik drugačen naslov IP, najprej posodobite zapis A domene.

Zaženite samo bazo podatkov:

cd /opt/n8n docker compose up -d postgres

Počakajte, da docker compose ps prikaže PostgreSQL kot zdrav (healthy), nato obnovite izpis:

docker compose exec -T postgres pg_restore -U n8n -d n8n --clean --if-exists < /opt/n8n-backup/n8n-db.dump

Zaženite preostanek sklada:

docker compose up -d

Prijavite se z istim računom lastnika in preverite, ali so vaši poteki dela in poverilnice na mestu. Shranjene poverilnice so dešifrirane z N8N_ENCRYPTION_KEY iz obnovljene datoteke .env, zato delujejo brez ponovnega vnašanja.

Posodobitev n8n

n8n pogosto izdaja posodobitve. Če želite posodobiti na najnovejšo različico, povlecite nove slike in znova ustvarite zabojnike:

cd /opt/n8n docker compose pull docker compose up -d docker image prune -f

Zadnji ukaz odstrani stare slike, ki se ne uporabljajo več.

Preverite novo različico:

docker compose exec n8n n8n --version

Tip

Pred vsako posodobitvijo ustvarite varnostno kopijo. Ob zagonu lahko nova različica n8n preseli shemo baze podatkov, zato je zanesljiv način za vrnitev na prejšnjo različico obnovitev izpisa, ustvarjenega pred posodobitvijo.

Slika PostgreSQL je pripeta na glavno različico 17, zato docker compose pull namesti samo manjše posodobitve PostgreSQL. Prehod na novo glavno različico zahteva izpis in obnovitev ter se ne izvede samodejno.

Kaj sledi

Vaša instanca n8n je pripravljena za delo. Od tu lahko:

  1. povabite druge uporabnike v instanco;
  2. nastavite SMTP, da lahko n8n pošilja povabila in e-poštna sporočila za ponastavitev gesla;
  3. povežete svoje storitve in zgradite svoje prve poteke dela.

Če nameravate zaganjati poteke dela AI z lokalnimi jezikovnimi modeli, si oglejte vodnik Namestitev n8n AI Starter Kit z Ollama.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • kingdom
  • germany
  • Español
  • French
  • Hrvatska
  • Italiano
  • Poland
  • Slovenski
  • ukraine
  • Türkçe
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA