Hoppa till innehåll
Installation

Installera n8n

Automatisera det som annars görs för hand varje vecka: ett flöde ritas i webbläsaren och körs på schema.

Vad ni får ut av det här

Varje företag har ett par uppgifter som återkommer. Någon ska föra över beställningar från formuläret till kalkylarket. Någon ska skicka bekräftelsemejlet. Någon ska lägga upp veckans siffror i företagets chatt. Det tar fem minuter per gång och ingen minns att göra det.

n8n är verktyget som gör det åt er. Ni ritar ett flöde på en yta i webbläsaren: här börjar det, hit går informationen, det här händer sedan. Flödet körs när ni säger till, på ett schema eller när något inträffar. Ni skriver ingen kod, men ni tänker som en programmerare, och det är egentligen den delen ni får med er.

Det här behöver ni innan ni börjar

  • Docker installerat på Windows eller Linux Mint. Guiden Installera Docker går igenom det, och den här guiden fortsätter där.
  • 2 GB ledigt minne. n8n är snällare mot datorn än de flesta system i den här sektionen.
  • Ett konto hos de tjänster ni vill koppla ihop, till exempel Google, Discord eller ert mejlkonto. n8n kommer åt dem i ert namn, alltså behöver ni själva ha rätt att logga in.
  • En plats för lösenord och nycklar. Ni kommer att skapa en krypteringsnyckel och den får inte tappas bort. Installera Vaultwarden löser det om ni inte redan har en lösning.
  • En konkret uppgift som irriterar er. Börja aldrig med att installera n8n och sedan leta efter något att automatisera. Det blir ett flöde som ingen använder.

Tidsåtgång och svårighetsgrad

Installationen är den enklaste i hela den här serien: ett kommando, tio minuter. Räkna ändå med en timme innan ert första flöde gör något på riktigt, och en eftermiddag innan ni har byggt något ni litar på. Svårighetsgraden sitter inte i installationen utan i att tänka ut vad flödet ska göra när något går fel.

Licensen, läs det här innan ni bygger en affärsidé

n8n är inte öppen källkod i vanlig mening. Programmet ligger under något som kallas Sustainable Use License, och den säger ungefär så här: ni får använda n8n hur mycket ni vill internt i verksamheten, och ni får ändra i det, men ni får inte sälja n8n vidare som en tjänst till andra.

För ett företag som automatiserar sina egna rutiner är det oproblematiskt. Är affärsidén däremot att sälja automationer som en tjänst till andra företag ska ni läsa licensen ordentligt först, och hellre fråga en jurist en gång för mycket. Det är precis den sortens detalj som blir dyr att missa.

Filerna ni klistrar in

Skapa en mapp som heter n8n där ni brukar spara filer, och en textfil i den som heter compose.yaml:

services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - GENERIC_TIMEZONE=Europe/Stockholm
      - TZ=Europe/Stockholm
      - N8N_ENCRYPTION_KEY=BYT_UT_MIG
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  n8n_data:

Ersätt BYT_UT_MIG med en lång slumpsträng, minst tjugofyra tecken. På Mint får ni en med openssl rand -base64 32, på Windows fungerar lösenordsgeneratorn i er lösenordshanterare lika bra.

Den nyckeln är viktigare än den ser ut. n8n krypterar alla sparade inloggningar med den, alltså tokens till Google, Discord och allt annat ni kopplar in. Tappar ni nyckeln kan n8n inte läsa sina egna uppgifter, och ni får koppla om varje tjänst från början. Sätter ni ingen nyckel alls skapar n8n en själv och lägger den i volymen, vilket fungerar tills volymen försvinner. Skriv in en egen och spara den där företaget sparar lösenord.

Tidszonen är den andra raden som spelar roll. Utan GENERIC_TIMEZONE faller n8n tillbaka på America/New_York, inte UTC, och skillnaden mot svensk tid är sex timmar: det som skulle skickas klockan åtta går i stället klockan fjorton.

Windows: starta n8n

Kontrollera att Docker Desktop är igång. Öppna PowerShell och kör:

cd $HOME\Documents\n8n
docker compose up -d

Kontrollera med docker compose ps att tjänsten står som running och öppna sedan http://localhost:5678. Första gången får ni skapa ett ägarkonto med mejladress och lösenord. Använd företagets gemensamma mejladress, inte någons privata, annars hänger kontot på en enda person som slutar.

Vill ni hellre slippa Docker går n8n att köra direkt med Node.js, men bara inom det intervall n8n stöder (för närvarande ungefär 20.19 till 24.x, kolla aktuellt intervall i projektets package.json om npx-kommandot klagar): npx n8n startar det på samma port. Det är bekvämt för ett snabbt test och sämre i längden, för då ligger data i hemkatalogen på just den datorn och flyttar aldrig med.

Linux Mint: starta n8n

Öppna Terminal och kör:

cd ~/n8n
docker compose up -d
docker compose logs -f

Det sista kommandot visar loggen medan n8n startar. När det står att editorn är tillgänglig trycker ni Ctrl och C för att komma tillbaka till markören, utan att stänga av något. Öppna http://localhost:5678 och skapa ägarkontot.

Ska någon annan i företaget nå n8n från sin dator på samma nät, ta reda på adressen med hostname -I och surfa till http://ADRESSEN:5678. Då dyker ett irriterande fel upp: n8n kräver som standard en säker anslutning för sin inloggningskaka, och över vanlig http mot en IP-adress vägrar den. Lägg till raden - N8N_SECURE_COOKIE=false under environment och kör docker compose up -d igen.

Använd den inställningen på företagets eget nät och ingen annanstans. Ska n8n nås utifrån ska det ske över HTTPS med ett riktigt domännamn, och då hör det hemma på en server och inte på en dator på kontoret.

Ert första flöde

Bygg något litet som ni ser resultatet av direkt. Ett bra första flöde: varje måndag morgon skickas en sammanställning av veckans beställningar till företagets chatt.

  1. Klicka på Create Workflow uppe till höger.
  2. Lägg till en nod, alltså ett steg, genom att klicka på plustecknet. Välj Schedule Trigger och ställ in måndag klockan 08:00. Triggern är det som startar flödet.
  3. Lägg till nästa nod och välj källan där beställningarna ligger, till exempel Google Sheets. n8n frågar efter inloggning och öppnar Googles egen inloggningsruta. Godkänn, och uppgifterna sparas krypterade med nyckeln ni satte tidigare.
  4. Lägg till en Code-nod eller en Edit Fields-nod som plockar ut det ni vill ha med: antal rader, summa, kanske de tre senaste kunderna.
  5. Lägg till sista noden, till exempel Discord, Gmail eller Telegram, och skriv meddelandet.
  6. Klicka på Execute workflow och se att det gör vad ni tänkt. Klicka sedan på Publish uppe till höger (hette tidigare reglaget Active). Ett flöde som inte publicerats körs aldrig på schemat, och det är det vanligaste misstaget i n8n.

Under fliken Executions ser ni varje körning, vad som kom in och vad som gick ut. Gick något fel står det där, och ni kan köra om samma data när ni rättat felet.

Webhooks, och varför de inte fungerar hemifrån

Den andra typen av trigger heter Webhook. Den ger er en adress som någon annan tjänst anropar när något händer, till exempel när kontaktformuläret på hemsidan får ett svar.

Problemet är att adressen pekar på localhost, alltså på er egen dator, och dit kommer ingen utifrån. n8n hade tidigare en inbyggd tunnel för att testa detta, men den är borttagen i n8n 2.x av säkerhetsskäl. Behöver ni testa webhooks mot en extern tjänst i dag, använd i stället en fristående tunnel som Cloudflare Tunnel eller ngrok.

Ska webhooks fungera på riktigt behöver n8n ligga på en server med ett eget domännamn. Det är samma sorts server som i Installera Odoo, och en och samma server räcker till båda.

Säkerhetskopiera

Allt n8n äger ligger i volymen: flödena, inloggningarna och historiken. Exportera flödena till filer regelbundet, för en fil går att läsa och lägga tillbaka även om volymen är borta:

docker compose exec n8n n8n export:workflow --all --output=/home/node/.n8n/workflows.json
docker compose cp n8n:/home/node/.n8n/workflows.json ./workflows.json

Spara filen tillsammans med krypteringsnyckeln, men inte i samma dokument. Flödena utan nyckeln går att läsa och bygga om. Nyckeln utan flödena är värdelös för en utomstående. Båda i samma fil är precis det ni vill undvika.

Så här vet ni att det funkade

  • docker compose ps visar n8n som running.
  • Ni loggar in på http://localhost:5678 med ägarkontot.
  • Ett flöde går att köra manuellt och ger rätt resultat.
  • Flödet är aktivt och har en rad under Executions efter nästa schemalagda körning.
  • Flödena finns exporterade som en fil utanför datorn.
  • Krypteringsnyckeln är sparad där företaget sparar lösenord.

Om det går fel

Flödet körs aldrig fast schemat har passerat. Flödet är inte publicerat, eller så har datorn varit avstängd vid tidpunkten. n8n hämtar inte igen missade körningar.

Tiden stämmer inte. Kontrollera GENERIC_TIMEZONE i compose-filen. Ett fel på sex timmar betyder att raden saknas och att n8n kör på sitt eget standardvärde America/New_York i stället för Europe/Stockholm.

Inloggning mot en tjänst slutar fungera. Tokens går ut. Öppna Credentials, koppla om den tjänsten och kör flödet igen.

Ni kommer inte in efter byte av dator eller volym. Krypteringsnyckeln matchar inte den som uppgifterna sparades med. Har ni nyckeln kvar, lägg in den i compose-filen. Har ni den inte, radera inloggningarna och koppla om tjänsterna.

Inloggningssidan laddar men accepterar inte lösenordet över nätverket. Det är kakinställningen. Se avsnittet om Linux Mint ovan.

Vad ni gör härnäst

Bygg ett flöde till, men bara ett. Två flöden som fungerar är bättre än sju halvfärdiga, och om ett halvår ska någon annan kunna förstå vad de gör. Skriv en rad i beskrivningsfältet på varje flöde om vad det gör och varför.

Ligger beställningarna i ett affärssystem i stället för i ett kalkylark blir flödena genast vassare. Installera Odoo visar hur ni sätter upp det, och Installera Nextcloud ger flödena en filyta att lägga rapporterna på.