Guide: Sådan sætter du n8n op på din egen server

Indhold

Indholdsfortegnelse

Måske har du læst nogle af vores andre artikler om n8n, og har indset det: hvis du vil have fuld kontrol over dine data, undgå dyre abonnementer, der skalerer aggressivt med antallet af “executions”, og bygge automatiseringer uden begrænsninger, så er n8n vejen frem. Men modsat Zapier eller Make, som blot kræver et login, skal du selv gøre arbejdet her.

Dog en lille advarsel: Det her er en ret teknisk guide, så hvis du bliver helt sat af, så grib fat i din lokale nørd, eller ræk ud til os.

Vi gennemgår præcis, hvordan du kan sætte n8n op på en sikker og skalerbar måde. Vi går udenom de simpleste “npm install”-løsninger, som sjældent holder i længden, og fokuserer i stedet på en robust Docker-installation, der sikrer, at dine workflows kører stabilt – også når du sover.

Vi tager udgangspunkt i en opsætning på en cloud-VPS (som Hetzner), da det giver den bedste balance mellem pris og ydeevne.

Hvorfor vælge self-hosted frem for n8n Cloud?

Inden vi åbner terminalen, er det værd lige at ridse op, hvorfor vi gør det her. n8n tilbyder en ganske udmærket cloud-version, men for mange virksomheder og seriøse “automators” er self-hosting det eneste rigtige.

Det handler primært om tre ting:

  1. Omkostninger: Du kan køre tusindvis af tunge workflows på en server til 40-50 kroner om måneden. Hos konkurrenterne ville samme volumen koste tusinder.
  2. Data-suverænitet: Dine data forlader aldrig din egen server. Det er en kæmpe fordel i forhold til GDPR og virksomhedshemmeligheder.
  3. Ingen kunstige grænser: Du løber ikke tør for “zaps” eller “operations” midt i måneden.

Er du klar til at få jord under neglene? Lad os komme i gang.

Det skal du bruge før vi starter

For at følge denne guide skal du have tre ting klar:

  1. Et domæne: Du skal have adgang til DNS-indstillingerne for et domæne (f.eks. automatisering.ditfirma.dk).
  2. En VPS (Virtual Private Server): Vi anbefaler en lille server hos Hetzner eller Linode. En server med 2GB RAM og 1 vCPU er rigeligt til at starte med. Ubuntu 20.04 eller 22.04 er det foretrukne styresystem.
  3. Terminal-adgang: Du skal kunne logge på din server via SSH.

Har du ikke en server endnu? Så hop ind og opret en en “Cloud Server” hos eks. Hetzner. Det tager 2 minutter.

Trin 1: Klargøring af server og installation af Docker

Det første, vi skal gøre, er at sikre, at din server er opdateret, og at vi har de nødvendige værktøjer. Vi bruger Docker, fordi det pakker n8n og alle dets afhængigheder ind i en pæn container. Det gør det nemt at opdatere, flytte og sikre.

Log ind på din server via din terminal:

ssh root@din-server-ip

Når du er inde, kører du følgende kommandoer for at opdatere systemet:

apt update && apt upgrade -y

Installer Docker og Docker Compose

Docker er motoren, der skal køre n8n. Docker Compose er værktøjet, der lader os konfigurere det hele i én fil, så vi slipper for lange, uoverskuelige kommandoer.

Kør dette script for at installere Docker (det er den officielle installationsmetode):

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

Tjek at det virker ved at skrive docker --version. Hvis den spytter et versionsnummer ud, er du good to go.

Trin 2: DNS-opsætning

Før vi installerer selve n8n, skal vi fortælle internettet, hvor din server bor.

Gå ind der, hvor du har købt dit domæne (Simply, One.com, DanDomain osv.). Opret en A-record.

  • Host/Navn: n8n (eller hvad du vil have dit subdomæne til at hedde, f.eks. n8n.ditfirma.dk).
  • Værdi/IP: Indsæt IP-adressen på din VPS.
  • TTL: Sæt den til det lavest mulige (ofte 1 time eller 3600 sekunder), så ændringen slår hurtigt igennem.

Det kan tage lidt tid før DNS opdateres, men ofte sker det inden for få minutter.

Trin 3: Opsætning af n8n med Docker Compose

Nu kommer vi til selve kernen. Vi skal oprette en mappe til n8n og lave konfigurationsfilen.

Opret en mappe og gå ind i den:

mkdir n8n-docker
cd n8n-docker

Nu skal vi oprette en docker-compose.yml fil. Det er opskriften på din server. Vi bruger teksteditoren nano:

nano docker-compose.yml

Kopier nedenstående konfiguration ind. Dette er en robust opsætning, der inkluderer Traefik. Traefik er en såkaldt “reverse proxy”, der automatisk håndterer SSL-certifikater (den grønne hængelås) for dig. Det er en af de ting, mange guides glemmer, men det er kritisk for sikkerheden – især hvis du skal forbinde til webhooks fra eksterne systemer.

version: "3"

services:
  traefik:
    image: "traefik"
    restart: always
    command:
      - "--api=true"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.myresolver.acme.httpchallenge=true"
      - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
      - "--certificatesresolvers.myresolver.acme.email=DIN@EMAIL.HER" # HUSK AT ÆNDRE DENNE
      - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "./letsencrypt:/letsencrypt"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

  n8n:
    image: n8n-io/n8n
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.n8n.rule=Host(`n8n.DITDOMÆNE.DK`)" # HUSK AT ÆNDRE DENNE
      - "traefik.http.routers.n8n.entrypoints=websecure"
      - "traefik.http.routers.n8n.tls.certresolver=myresolver"
      - "traefik.http.middlewares.n8n.headers.SSLRedirect=true"
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=DIT_STARKE_KODEORD # HUSK AT ÆNDRE DENNE
      - N8N_HOST=n8n.DITDOMÆNE.DK # HUSK AT ÆNDRE DENNE
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://n8n.DITDOMÆNE.DK/
      - GENERIC_TIMEZONE=Europe/Copenhagen
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  n8n_data:
  letsencrypt:

Vigtige ændringer du skal lave i filen:

  1. Email: Udskift DIN@EMAIL.HER med din rigtige email (bruges til SSL-certifikat notifikationer).
  2. Domæne: Udskift n8n.DITDOMÆNE.DK alle tre steder, det optræder.
  3. Kodeord: Skift DIT_STARKE_KODEORD til noget sikkert.

Tryk CTRL + S og så CTRL + X for at gemme.

Trin 4: Start motoren

Nu er alt konfigureret. Det eneste der mangler, er at trykke på startknappen.

Kør følgende kommando:

docker compose up -d

Docker vil nu hente n8n og Traefik ned fra nettet og starte dem op i baggrunden. Det tager typisk 1-2 minutter første gang.

Når den er færdig, kan du åbne din browser og gå til https://n8n.ditdomæne.dk.

Du vil blive mødt af en login-skærm. Indtast brugernavnet admin og det kodeord, du valgte i konfigurationsfilen. Tillykke! Du har nu din egen, fuldt funktionsdygtige automatiseringsplatform.

Sikkerhed og data-persistens: Det de andre guides glemmer

Mange guides stopper ved “hello world”. Men hvis du skal bruge det her i en virksomhed, er der to ting, du ikke må ignorere: Data-persistens og sikkerhed.

Hvorfor volumes er vigtige

I vores docker-compose.yml fil har vi inkluderet sektionen volumes.

volumes:
  - n8n_data:/home/node/.n8n

Uden denne linje ville alle dine workflows, dine credentials til API’er og din historik forsvinde, hver gang du genstarter serveren eller opdaterer n8n. Med volumes gemmes dataene på serverens harddisk, selvom Docker-containeren slettes og genskabes. Det er en lille detalje, der redder liv.

Sikring af webhooks

Når du sætter n8n op på denne måde, er dine webhooks offentligt tilgængelige (hvilket de skal være for at virke). Men du vil ikke have, at hvem som helst kan køre dine workflows.
Indbyg altid autentificering i dine workflows, eller brug n8n’s indbyggede funktion til at validere headers, hvis du modtager data fra tjenester som Stripe eller Shopify.

Opgradering og vedligeholdelse

En af ulemperne ved self-hosting er, at du selv skal stå for opdateringerne. n8n udgiver nye funktioner i et rasende tempo.

Heldigvis er det nemt med Docker. Når en ny version er ude, gør du følgende:

  1. Log ind på serveren.
  2. Gå til mappen: cd n8n-docker
  3. Hent den nye version: docker compose pull
  4. Genstart med den nye version: docker compose up -d

Dine data bevares (tak, volumes!), og du kører nu på nyeste version.

Fejlsøgning: Når teknikken driller

Selv for de bedste kan tingene gå galt. Her er de to hyppigste fejl, vi ser, når folk forsøger at sætte n8n op.

1. 502 Bad Gateway
Hvis du ser denne fejl, når du besøger dit domæne, betyder det ofte, at n8n ikke er startet helt op endnu, eller at Traefik ikke kan få fat i n8n-containeren.

  • Løsning: Vent et minut. Kør docker compose logs -f for at se, om n8n melder fejl under opstarten.

2. Webhooks virker ikke
Du prøver at sende data til n8n, men intet sker.

  • Løsning: Tjek din WEBHOOK_URL i docker-compose.yml. Den skal matche dit domæne præcist og starte med https://. Hvis denne variabel er forkert, genererer n8n forkerte URL’er i brugerfladen.

Er det besværet værd?

At sætte sin egen infrastruktur op kan virke som en stor mundfuld for at spare nogle penge på abonnementer. Men gevinsten er ikke kun økonomisk.

Når du ejer din egen instans af n8n, ejer du din infrastruktur. Du er ikke afhængig af, at en amerikansk cloud-udbyder ændrer deres prismodel eller vilkår over natten. Du lærer desuden at forstå, hvordan data flyder ind og ud af din virksomhed på et meget dybere niveau.

Start med at lege med det. Sæt en simpel automatisering op – måske noget, der bare sender en besked til Slack, når du får en ny email. Når først du ser magien ved at have ubegrænsede execution-muligheder, ser du dig ikke tilbage.

Har du brug for hjælp til at designe arkitekturen for dine workflows, eller driller server-opsætningen stadig, selvom du har fulgt guiden? Vi nørder det her hver dag.

Brug for at snakke med en ekspert?

Efterlad dit navn og telefonnummer, så ringer vi dig op!