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:
- 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.
- Data-suverænitet: Dine data forlader aldrig din egen server. Det er en kæmpe fordel i forhold til GDPR og virksomhedshemmeligheder.
- 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:
- Et domæne: Du skal have adgang til DNS-indstillingerne for et domæne (f.eks.
automatisering.ditfirma.dk). - 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.
- 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.ymlKopier 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:
- Email: Udskift
DIN@EMAIL.HERmed din rigtige email (bruges til SSL-certifikat notifikationer). - Domæne: Udskift
n8n.DITDOMÆNE.DKalle tre steder, det optræder. - Kodeord: Skift
DIT_STARKE_KODEORDtil 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.
Brug for rådgivning?
Det her kan være svært at finde rundt i, så vores team står klar til at hjæpe.
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:
- Log ind på serveren.
- Gå til mappen:
cd n8n-docker - Hent den nye version:
docker compose pull - 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 -ffor 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_URLidocker-compose.yml. Den skal matche dit domæne præcist og starte medhttps://. 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.
Gratis konsultation
Brug for nogen at sparre med? Send en email til Valdemar og få en gratis konsultation



