EUR
european

EUR

usa

USD

Ex. VAT Ex. VAT 0%

Instalacija n8n-a uz Docker i PostgreSQL

n8n je platforma za automatizaciju tijekova rada koju možete pokrenuti na vlastitom poslužitelju. Samostalno hostirana (self-hosted) instanca drži vaše tijekove rada, vjerodajnice i podatke o izvršenju pod vašom kontrolom i nema ograničenja u broju tijekova rada ili izvršenja, osim onoga što poslužitelj može podnijeti.

Ovaj vodič postavlja n8n na namjenski poslužitelj s PostgreSQL-om, HTTPS-om i sigurnosnim kopijama. Koristi tri kontejnera kojima upravlja Docker Compose:

  • n8n, sama platforma za automatizaciju;
  • PostgreSQL, baza podataka za tijekove rada, vjerodajnice i povijest izvršenja;
  • Caddy, obrnuti proxy koji automatski dobiva i obnavlja HTTPS certifikat.

Prema zadanim postavkama, n8n pohranjuje svoje podatke u SQLite. Ovaj vodič umjesto toga koristi PostgreSQL: može se sigurnosno kopirati dok n8n radi, i to je baza podataka koju n8n preporučuje za samostalno hostiranje.

Koraci su testirani na Ubuntu 24.04 LTS s n8n 2.46.7, PostgreSQL 17, Docker 29 i Docker Compose v5.

Prije početka

Trebat će vam:

  • poslužitelj s operacijskim sustavom Ubuntu 24.04 LTS s root pristupom putem SSH-a;
  • domena ili poddomena za n8n, na primjer n8n.example.com;
  • A zapis za to ime koji pokazuje na IPv4 adresu poslužitelja.

Ako domena ima i AAAA zapis, poslužitelj mora biti dostupan putem IPv6 na toj adresi. U suprotnom, Let's Encrypt može prvo pokušati s IPv6 i ne uspjeti izdati certifikat.

Provjerite razrješava li se zapis na vaš poslužitelj prije nego što nastavite:

dig +short n8n.example.com

Naredba bi trebala vratiti IP adresu poslužitelja. Izdavanje certifikata u Caddyju ovisi o tome, pa pričekajte da se DNS propagira.

Sve naredbe u nastavku izvršavaju se kao root. Ako radite kao običan korisnik s sudo pravima, dodajte sudo ispred svake naredbe.

Instalacija Dockera

Instalirajte Docker Engine i Compose dodatak iz službenog Docker repozitorija. Paket docker.io iz Ubuntu repozitorija je stariji i ne uključ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

Instalirajte pakete:

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

Provjerite jesu li oba alata dostupna:

docker --version docker compose version

Stvorite direktorij projekta i tajne

Sve n8n datoteke bit će u /opt/n8n:

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

Stvorite datoteku .env s vašom domenom, vremenskom zonom i generiranim tajnama. Zamijenite n8n.example.com i vremensku zonu svojim vrijednostima:

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 postavlja vremensku zonu koju koriste čvor Schedule Trigger i drugi čvorovi temeljeni na vremenu. Bez toga, n8n koristi America/New_York.

N8N_ENCRYPTION_KEY je ključ koji n8n koristi za šifriranje vjerodajnica koje u njemu spremate: API tokena, lozinki, OAuth tajni. Ako se ovaj ključ izgubi, vjerodajnice u obnovljenoj bazi podataka ne mogu se dešifrirati i svaka od njih mora se ponovno unijeti.

Warning

Odmah kopirajte datoteku .env na sigurno mjesto izvan poslužitelja, na primjer u upravitelj lozinki. Sigurnosna kopija baze podataka bez N8N_ENCRYPTION_KEY obnovit će vaše tijekove rada, ali ne i vaše vjerodajnice.

Stvorite Docker Compose datoteku

Stvorite /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:

Nekoliko detalja u ovoj datoteki važno je za sigurnost i stabilnost.

PostgreSQL nema odjeljak ports. Bazi podataka mogu pristupiti samo drugi kontejneri u projektu, nikada s interneta.

n8n port objavljen je kao 127.0.0.1:5678. Korisnici do n8n-a dolaze samo putem Caddyja preko HTTPS-a, dok vi i dalje možete provjeravati n8n lokalno na poslužitelju.

Warning

Nemojte skratiti redak n8n porta na 5678:5678. Docker dodaje vlastita pravila vatrozida za objavljene portove, a ona zaobilaze UFW. Bez prefiksa 127.0.0.1, n8n postaje dostupan putem običnog HTTP-a s bilo kojeg mjesta, čak i ako UFW blokira port 5678.

Uvjet depends_on s healthcheckom tjera n8n da čeka dok PostgreSQL ne bude spreman prihvatiti veze. Bez toga, n8n se može prvi pokrenuti pri hladnom pokretanju i ne uspjeti se povezati s bazom podataka.

N8N_PROXY_HOPS govori n8n-u da radi iza jednog obrnutog proxyja, pa čita pravu adresu klijenta iz zaglavlja proxyja. N8N_WEBHOOK_URL postavlja javnu adresu koju n8n prikazuje za URL-ove webhooka. U verzijama n8n prije 2.30, ova se varijabla zove WEBHOOK_URL.

Konfiguracija HTTPS-a s Caddyjem

Stvorite /opt/n8n/Caddyfile sa svojom domenom:

n8n.example.com { reverse_proxy n8n:5678 }

To je cijela konfiguracija. Pri prvom pokretanju, Caddy traži Let's Encrypt certifikat za domenu, preusmjerava HTTP na HTTPS i obnavlja certifikat prije isteka. Da bi to funkcioniralo, portovi 80 i 443 moraju biti otvoreni.

Konfiguracija vatrozida

Najprije dopustite SSH, zatim HTTP i HTTPS, te omogućite UFW:

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

Info

Ako je UFW već bio omogućen s vašim vlastitim pravilima, prije izmjena pokrenite ufw status i zadržite pravila koja su vam potrebna. Dopuštanje OpenSSH prije omogućavanja UFW-a sprječava prekid vaše trenutne SSH sesije.

Pokretanje n8n-a

Pokrenite kontejnere u pozadini:

cd /opt/n8n docker compose up -d

Prvo pokretanje preuzima slike i traje minutu ili dvije. Provjerite rade li sva tri kontejnera i je li PostgreSQL zdrav (healthy):

docker compose ps

Pogledajte n8n zapisnik:

docker compose logs n8n --tail 50

Zapisnik bi trebao završiti retkom poput:

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

Provjerite odgovara li n8n lokalno i putem Caddyja:

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

Obje naredbe trebale bi vratiti {"status":"ok"}.

Ako druga naredba ne uspije, provjerite Caddy zapisnik s docker compose logs caddy. Najčešći uzrok je DNS zapis koji još ne pokazuje na ovaj poslužitelj ili su portovi 80 i 443 zatvoreni.

Stvaranje vlasničkog računa

Otvorite https://n8n.example.com u svom pregledniku. Pri prvom posjetu, n8n traži da stvorite vlasnički račun. Ovaj račun ima puna prava nad instancom i upravlja svim ostalim korisnicima.

Unesite svoju e-poštu, ime i prezime te lozinku, a zatim kliknite Dalje (Next). Lozinka mora biti duga najmanje 8 znakova i sadržavati najmanje jedan broj i jedno veliko slovo. Koristite snažnu lozinku: n8n uređivač otvoren je za internet, a svatko tko u njega uđe može pokretati naredbe na poslužitelju putem vaših tijekova rada.

Nakon prve prijave, n8n prikazuje kratku anketu: Customize n8n to you. Pitanja su opcionalna. Kliknite Započni (Get started) da je zatvorite, s odgovorom ili bez njega.

Zatim, n8n nudi besplatni licencni ključ za nekoliko značajki Community Edition izdanja: napredno otklanjanje pogrešaka, pretraživanje i označavanje izvršenja te mape za tijekove rada. Ključ se šalje na e-poštu koju unesete. Kliknite Send me a free license key da ga dobijete, ili Preskoči (Skip) ako vam te značajke nisu potrebne.

Otvara se stranica pregleda. Instalacija je dovršena i možete stvoriti svoj prvi tijek rada.

Sigurnosno kopiranje n8n-a

n8n sigurnosna kopija sastoji se od dva dijela: PostgreSQL ispisa (dump) s vašim tijekovima rada, vjerodajnicama, korisnicima i poviješću izvršenja, te datoteke .env s N8N_ENCRYPTION_KEY. Nijedan dio nije koristan bez drugoga.

U ovoj postavci, n8n čita sve svoje stanje u PostgreSQL-u. Volumen n8n_data ne treba sigurnosno kopirati: potpuni oporavak funkcionira samo iz ispisa baze podataka i datoteke .env.

Stvorite direktorij sigurnosne kopije i ispišite bazu podataka:

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/

Ispis se radi dok n8n radi, pa nije potrebno vrijeme nedostupnosti.

Sigurnosna kopija koja ostaje na istom poslužitelju neće pomoći ako disk poslužitelja zakaže. Redovito kopirajte /opt/n8n-backup u vanjsku pohranu. Za to možete koristiti INTROSERV Cloud Storage, kako je opisano u vodiču Povezivanje INTROSERV Cloud Storagea sa poslužiteljem.

Obnova iz sigurnosne kopije

Da biste obnovili n8n na novom poslužitelju, instalirajte Docker kako je gore opisano i kopirajte direktorij sigurnosne kopije u /opt/n8n-backup na tom poslužitelju. Zatim postavite konfiguracijske datoteke na mjesto:

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

Ako novi poslužitelj ima drugačiju IP adresu, najprije ažurirajte A zapis domene.

Pokrenite samo bazu podataka:

cd /opt/n8n docker compose up -d postgres

Pričekajte dok docker compose ps ne pokaže PostgreSQL kao zdrav (healthy), a zatim obnovite ispis:

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

Pokrenite ostatak stacka:

docker compose up -d

Prijavite se istim vlasničkim računom i provjerite jesu li vaši tijekovi rada i vjerodajnice na mjestu. Spremljene vjerodajnice dešifriraju se s N8N_ENCRYPTION_KEY iz obnovljene datoteke .env, pa rade bez ponovnog unošenja.

Ažuriranje n8n-a

n8n često izdaje ažuriranja. Da biste ažurirali na najnoviju verziju, povucite nove slike i ponovno stvorite kontejnere:

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

Zadnja naredba uklanja stare slike koje se više ne koriste.

Provjerite novu verziju:

docker compose exec n8n n8n --version

Tip

Napravite sigurnosnu kopiju prije svakog ažuriranja. Pri pokretanju, nova verzija n8n-a može migrirati shemu baze podataka, pa je pouzdan način povratka na prethodnu verziju obnova ispisa napravljenog prije ažuriranja.

Slika PostgreSQL-a zaključana je na glavnu verziju 17, pa docker compose pull instalira samo manja ažuriranja PostgreSQL-a. Prelazak na novu glavnu verziju zahtijeva ispis i obnovu i ne radi se automatski.

Što dalje

Vaša n8n instanca spremna je za rad. Odavde možete:

  1. pozvati druge korisnike u instancu;
  2. postaviti SMTP kako bi n8n mogao slati pozivnice i e-poruke za resetiranje lozinke;
  3. povezati svoje usluge i izgraditi svoje prve tijekove rada.

Ako planirate pokretati AI tijekove rada s lokalnim jezičnim modelima, pogledajte vodič Instalacija n8n AI Starter Kita s Ollamom .

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