Namestitev n8n AI Starter Kit z Ollama
Predloga Docker Compose Self-hosted AI Starter Kit ekipe n8n služi za izdelavo potekov dela AI, ki se izvajajo izključno na vašem lastnem strežniku. Pozivi (prompts) in dokumenti se obdelujejo z lokalnim jezikovnim modelom in se ne pošiljajo zunanjim storitvam AI.
Komplet vključuje štiri komponente:
- n8n, platformo za avtomatizacijo potekov dela z vozlišči AI;
- Ollama, ki lokalno izvaja odprte jezikovne modele;
- Qdrant, vektorsko bazo podatkov za shranjevanje in iskanje vdelav (embeddings) dokumentov;
- PostgreSQL, bazo podatkov za n8n.
Uradni komplet so njegovi avtorji označili kot namenjenega testiranju. V času pisanja tega besedila ima ob zagonu, kot je opisano v datoteki README, na strežniku z javnim naslovom IP več težav: n8n, Ollama in Qdrant so odprti v internet, Ollama in Qdrant nimata preverjanja pristnosti, skrivnosti v konfiguraciji so enake za vsako namestitev, demonstracijski potek dela pa se ne uvozi. Ta vodnik namesti komplet nespremenjen in vse to popravi z ločeno datoteko za preglasitev (override), tako da lahko komplet še vedno posodabljate iz njegovega repozitorija.
Ta vodnik je napisan za Ubuntu 24.04 LTS, n8n 2.47.3, Ollama 0.40.16, Qdrant 1.20.0, Docker 29 in Docker Compose v5.
Preden začnete
Potrebovali boste:
- strežnik z operacijskim sistemom Ubuntu 24.04 LTS s korenskim (root) dostopom prek SSH;
- vsaj 15 GB prostega prostora na disku: slike Docker zavzamejo približno 11 GB, privzeti model Llama 3.2 pa približno 2 GB;
- domeno ali poddomeno za n8n, na primer
n8n.example.com, z zapisom A, ki kaže na naslov IPv4 strežnika.
Brez GPU-ja se model izvaja na procesorju (CPU) in odgovarja počasi. Za redno uporabo izberite strežnik z grafično kartico NVIDIA.
Vsi spodnji ukazi se izvajajo kot root. Če delate kot navaden uporabnik s pravicami sudo, pred vsak ukaz dodajte sudo.
Namestite Docker
Namestite Docker Engine in vtičnik Compose iz uradnega repozitorija Docker:
apt update && apt install -y ca-certificates curl git 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 in preverite različice:
apt update apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker --version docker compose version
Prenesite komplet
Klonirajte repozitorij v /opt in ustvarite konfiguracijsko datoteko iz primera:
cd /opt git clone https://github.com/n8n-io/self-hosted-ai-starter-kit.git cd self-hosted-ai-starter-kit cp .env.example .env
Zamenjajte privzete skrivnosti
Primer datoteke vsebuje fiksne vrednosti, kot sta password za PostgreSQL in super-secret-key za šifrirni ključ n8n. Enake so v vsaki kopiji kompleta, zato jih zamenjajte z naključnimi:
sed -i "s/^POSTGRES_PASSWORD=.*/POSTGRES_PASSWORD=$(openssl rand -hex 24)/" .env sed -i "s/^N8N_ENCRYPTION_KEY=.*/N8N_ENCRYPTION_KEY=$(openssl rand -hex 32)/" .env sed -i "s/^N8N_USER_MANAGEMENT_JWT_SECRET=.*/N8N_USER_MANAGEMENT_JWT_SECRET=$(openssl rand -hex 32)/" .env chmod 600 .env
N8N_ENCRYPTION_KEY šifrira poverilnice, ki jih shranite v n8n. N8N_USER_MANAGEMENT_JWT_SECRET podpisuje uporabniške seje.
Datoteko .env kopirajte na varno mesto zunaj strežnika, na primer v upravitelja gesel. Brez N8N_ENCRYPTION_KEY poverilnic, shranjenih v n8n, po obnovitvi ni mogoče dešifrirati.
Zaprite vrata in dodajte HTTPS
V datoteki docker-compose.yml kompleta so n8n (vrata 5678), Ollama (11434) in Qdrant (6333) objavljeni na vseh omrežnih vmesnikih. Docker doda lastna pravila požarnega zidu za objavljena vrata, ki obidejo UFW. Na strežniku z javnim naslovom IP to pomeni, da lahko kdor koli odpre urejevalnik n8n prek navadnega HTTP in uporablja API-je Ollama in Qdrant, ki nimajo preverjanja pristnosti.
Namesto urejanja docker-compose.yml ustvarite datoteko docker-compose.override.yml poleg nje. Docker Compose to datoteko prebere samodejno in jo uporabi povrhu glavne. Lastne datoteke kompleta ostanejo nespremenjene, zato njihova posodobitev iz repozitorija ne bo prepisala vaših nastavitev.
Ustvarite /opt/self-hosted-ai-starter-kit/docker-compose.override.yml in zamenjajte n8n.example.com z vašo domeno:
services: n8n: ports: !override - "127.0.0.1:5678:5678" environment: - N8N_HOST=n8n.example.com - N8N_PROTOCOL=https - N8N_PROXY_HOPS=1 - N8N_WEBHOOK_URL=https://n8n.example.com/ ollama-cpu: ports: !reset [] ollama-gpu: ports: !reset [] qdrant: ports: !reset [] caddy: image: caddy:2 restart: unless-stopped networks: ['demo'] ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - caddy_data:/data - caddy_config:/config volumes: caddy_data: caddy_config:
Tukaj je, kaj ta datoteka spremeni:
- n8n posluša samo na
127.0.0.1, uporabniki pa do njega dostopajo prek Caddyja prek HTTPS; - Ollama in Qdrant sploh nista objavljena, n8n do njiju dostopa prek notranjega omrežja Docker z imenoma
ollamainqdrant; - Caddy je dodan kot obratni proxy (reverse proxy), ki pridobi in obnovi certifikat Let's Encrypt, vse dokler domena kaže na strežnik in sta vrata 80 in 443 odprti;
- volumeni podatkov za n8n, PostgreSQL, Qdrant in Ollama ostanejo takšni, kot so opredeljeni v datoteki
docker-compose.ymlkompleta, preglasitev jih ne spremeni.
Vrstica networks: ['demo'] je obvezna. Vse storitve kompleta se izvajajo v omrežju z imenom demo, in brez te vrstice Caddy ne more doseči n8n in vrne napako 502.
N8N_WEBHOOK_URL nastavi naslov, ki ga n8n uporablja za webhooke, vključno z oknom za klepet v urejevalniku. Domena se mora razrešiti na vaš strežnik iz računalnika, na katerem odprete n8n. Če se ne, klepet prikaže samo sporočilo "Failed to receive response", ne da bi kot vzrok navedel DNS.
Ustvarite /opt/self-hosted-ai-starter-kit/Caddyfile z vašo domeno:
n8n.example.com { reverse_proxy n8n:5678 }
Preverite združeno konfiguracijo:
docker compose --profile cpu config | grep -A4 "ports:"
Navedeni bi morali biti samo n8n na 127.0.0.1:5678 in Caddy na vratih 80 in 443.
Konfigurirajte požarni zid
Datoteka override že ohranja notranje storitve kompleta stran od omrežja. UFW blokira ves drug dohodni promet na strežnik, razen SSH, HTTP in HTTPS. Dovolite jih in omogočite UFW:
ufw allow OpenSSH ufw allow 80/tcp ufw allow 443/tcp ufw --force enable
Zaženite komplet
Zaženite sklad v načinu CPU:
docker compose --profile cpu up -d
Ob prvem zagonu Docker prenese približno 11 GB slik, ločen zabojnik (container) pa prenese model Llama 3.2. To traja nekaj časa, odvisno od hitrosti povezave. Preverite, ali je model na mestu:
docker exec ollama ollama list
Seznam bi moral vključevati llama3.2:latest.
Preverite, ali so na strežniku odprta samo pričakovana vrata:
ss -tlnp
Vrata 80 in 443 bi morala biti odprta na vseh vmesnikih, vrata 5678 samo na 127.0.0.1. Vrat 11434 in 6333 ne bi smelo biti na seznamu.
Komplet uporablja PostgreSQL 16. Dnevnik n8n lahko prikaže opozorilo, da je ta različica zunaj podprtega območja. To opozorilo ne vpliva na delovanje n8n.
Uvozite demonstracijski potek dela
Komplet vključuje demonstracijski potek dela in dve demonstracijski poverilnici. Uvoziti bi ju morali ob prvem zagonu, vendar v času pisanja tega besedila preverjanje uvoza v datoteki docker-compose.yml kompleta nikoli ne uspe, zato se nič ne uvozi. Zaženite uvoz ročno:
docker compose --profile cpu run --rm n8n-import -c "n8n import:credentials --separate --input=/demo-data/credentials" docker compose --profile cpu run --rm n8n-import -c "n8n import:workflow --separate --input=/demo-data/workflows"
Možnost -c je obvezna: storitev n8n-import zažene lupino in brez -c ukaz spodleti z napako "can't open 'n8n'".
Ustvarite račun lastnika
V brskalniku odprite https://n8n.example.com in ustvarite račun lastnika: vnesite svoj e-poštni naslov, ime in priimek ter geslo z vsaj 8 znaki, vključno z vsaj eno številko in eno veliko črko. Po prvi prijavi lahko n8n prikaže kratko anketo in ponudbo brezplačnega licenčnega ključa za nekatere funkcije Community Edition. Oboje je izbirno.
Pregledna stran navaja uvožen Demo workflow.

Popravite demonstracijske poverilnice
Demonstracijske poverilnice so bile šifrirane s privzetim ključem iz .env.example. Ko zamenjate N8N_ENCRYPTION_KEY, jih n8n ne more dešifrirati, zato je treba oba znova izpolniti. Nastavitve so shranjene šifrirane z vašim lastnim ključem.
Odprite Overview, pojdite na zavihek Credentials in odprite Local Ollama service. Povezava ne uspe, polje Base URL pa prikaže http://localhost:11434. Znotraj zabojnika n8n je localhost sam n8n, ne Ollama.

Nastavite Base URL na http://ollama:11434, pustite API Key prazno in kliknite Save. n8n preizkusi povezavo in prikaže Connection tested successfully.

Odprite Local QdrantApi database. Nastavite Qdrant URL na http://qdrant:6333, pustite API Key prazno in kliknite Save.

Preizkusite demonstracijski potek dela
Odprite Demo workflow. Vsebuje tri vozlišča: Chat Trigger prejme sporočilo, Basic LLM Chain ga posreduje modelu, Ollama Chat Model pa ga pošlje Llama 3.2 v Ollami.

Kliknite Open chat na dnu platna in pošljite kratko vprašanje. Vozlišča se med izvajanjem poteka dela obarvajo zeleno, odgovor modela pa se prikaže v klepetu. Prvi odgovor traja dlje, ker Ollama naloži model v pomnilnik.

Če klepet prikaže "Failed to receive response" in se potek dela ne zažene, preverite, ali se domena v N8N_WEBHOOK_URL razreši na vaš strežnik iz vašega računalnika.
Uporabite grafično kartico NVIDIA GPU
Če ima strežnik grafično kartico NVIDIA GPU, lahko komplet na njej zažene Ollamo. Docker za to potrebuje NVIDIA Container Toolkit. Če GPU-ja s Dockerjem na tem strežniku še niste uporabljali, ga najprej namestite po navodilih Docker za Ollamo.
Nato zaženite komplet s profilom gpu-nvidia namesto cpu:
docker compose --profile gpu-nvidia up -d
Zgornja datoteka override za ta profil že zapre vrata Ollame. Uporabite isti profil v vseh drugih ukazih. Na primer, uvoz demo različice s profilom GPU:
docker compose --profile gpu-nvidia run --rm n8n-import -c "n8n import:credentials --separate --input=/demo-data/credentials" docker compose --profile gpu-nvidia run --rm n8n-import -c "n8n import:workflow --separate --input=/demo-data/workflows"
In posodobitev:
cd /opt/self-hosted-ai-starter-kit git pull docker compose --profile gpu-nvidia pull docker compose --profile gpu-nvidia up -d
Posodobite komplet
Če želite posodobiti datoteke in slike kompleta, zaženite ukaze z uporabljenim profilom:
cd /opt/self-hosted-ai-starter-kit git pull docker compose --profile cpu pull docker compose --profile cpu up -d
Vaša docker-compose.override.yml, Caddyfile in .env niso del repozitorija, zato jih git pull ne spremeni.
Kaj sledi
Komplet je pripravljen za vaše lastne poteke dela AI. Od tu lahko:
- Prenesete druge modele z
docker exec ollama ollama pull, ki mu sledi ime modela, in jih izberete v vozlišču Ollama Chat Model; - Uporabite Qdrant za iskanje po lastnih dokumentih z vozlišči vektorske baze podatkov v n8n;
- Povežete svoje storitve in zgradite poteke dela, ki jih kombinirajo z lokalnim modelom.
Za splošno namestitev n8n brez komponent AI glejte vodnik Namestitev n8n z Dockerjem in PostgreSQL. Razlaga tudi, kako varnostno kopirati in obnoviti bazo podatkov n8n.