JournalindeksDockup / feltnotat
Note / self-host-n8n

Slik drifter du n8n selv i 2026: Distribusjon, TLS, webhooks og sikkerhetskopier

Drift n8n selv med riktige porter, persistent lagring, HTTPS, secrets, sikkerhetskopier og kontroller før oppgraderinger. Lær hvordan du løser problemet når webhook-lenker fortsatt peker til localhost.

En n8n-container kan være grønn, selv om jobben brukerne faktisk bryr seg om, er ødelagt. For n8n er denne skjulte feilen vanligvis at webhook-lenker fortsatt peker til localhost, eller at proxy-headere rapporterer HTTP. Denne veiledningen bruker «aktiver en workflow med en production-webhook, kall webhooken utenfra serveren og bekreft at kjøringen når den siste noden» som akseptansetest, og bygger distribusjonen bakover fra dette resultatet.

n8n har en spesifikk rolle i stacken: workflow-automatisering med over 400 integrasjoner og et utvidbart nodesystem. Spørsmålet i produksjon er derfor ikke om port 5678 svarer én gang, men om state, avhengigheter og den offentlige adressen fortsatt stemmer overens etter en omstart, oppdatering og gjenoppretting.

Skill mellom containere som kan erstattes, og varige data

Definer recovery point og recovery time for n8n med utgangspunkt i databasen samt krypterings- og konfigurasjonsdataene i .n8n. Monter /home/node/.n8n før bootstrap, skriv ufarlige eksempeldata og erstatt containeren for å bevise at banen faktisk er persistent. Et navngitt volume løser persistence ved redeploy; det løser ikke kompromittering eller tap av serveren.

Bygg et rent restore-miljø, bruk den samme fastlåste applikasjonsversjonen og bevis at gjenopprettede credentials fortsatt kan dekrypteres, og at en gjenopprettet workflow mottar den samme offentlige webhook-URL-en. Dokumenter kommandoer, endringer av eierskap og medgått tid. Veiledningen for sikkerhetskopiering er en nyttig standard: En sikkerhetskopi er til å stole på etter gjenoppretting, ikke etter opplasting.

Gjør oppstart av n8n reproducerbar

En minimal kommando er nyttig når den synliggjør hva plattformen senere skal administrere.

docker run -d \
  --name n8n \
  --restart unless-stopped \
  -p 127.0.0.1:5678:5678 \
  -v n8n-data:/home/node/.n8n \
  -e N8N_ENCRYPTION_KEY=replace-with-a-long-random-value \
  docker.n8n.io/n8nio/n8n

Her forblir port 5678 privat på verten, og alle nødvendige baner er eksplisitte. Legg til de gjennomgåtte tilkoblingsinnstillingene for Postgres for et robust produksjonsoppsett med flere brukere; bruk private navn for private tjenester. Bekreft oppstart med både logger og et applikasjonsspesifikt bevis: aktiver en workflow med en production-webhook, kall webhooken utenfra serveren og bekreft at kjøringen når den siste noden. Når dette er bekreftet, låser du image-versjonen slik at en rutinemessig erstatning ikke endrer oppførselen uten at det merkes.

Porter, prosesser og private tjenester

Start med n8n sitt network namespace: web-lytteren bruker port 5678, ikke en host-port kopiert fra en laptop-veiledning. Nettverkskontrakten for n8n er Postgres for et robust produksjonsoppsett med flere brukere. Hold private endepunkter på intern DNS, tillat bare nødvendige utgående kall og gi n8n en avgrenset service credential.

Når kravet er oppfylt, kjører du hele scenariet – aktiver en workflow med en production-webhook, kall webhooken utenfra serveren og bekreft at kjøringen når den siste noden. Dokumenter logger og målinger for execution concurrency, queue depth, binary payload size og long-running nodes i stedet for visning av editor-sider. Disse bevisene blir den første kjente, fungerende arkitekturen og gjør senere flyttinger mellom Dockup compute og en tilkoblet server testbare.

Unngå at proxy-suksess skjuler feil i applikasjonen

Den offentlige grensen for n8n bør være ett kanonisk hostname, automatisk TLS og ett internt mål på 5678. Sett WEBHOOK_URL til den nøyaktige eksterne HTTPS-URL-en, slik at klienter returnerer til en adresse tjenesten kjenner igjen.

Hvis akseptansetransaksjonen mislykkes, klassifiser den første feilen. DNS-, sertifikat- og 502-problemer hører hjemme i sjekklisten for TLS-validering. Tilstanden «webhook-lenker fortsatt peker til localhost eller proxy-headere rapporterer HTTP» hører hjemme på applikasjonssiden etter at en forespørsel har nådd n8n.

Dette må være godkjent før reelle n8n-data kommer inn

Gjør n8n-smoketesten om til en repeterbar release-kommando eller en kort runbook. Resultatet må dokumentere dette utfallet: aktiver en workflow med en production-webhook, kall webhooken utenfra serveren og bekreft at kjøringen når den siste noden. Registrer applikasjonsversjon, container digest, route-hostname og identifikator for testdata sammen med resultatet.

Kjør den samme kontrollen etter et rutinemessig containerskifte og etter at databasen samt krypterings- og konfigurasjonsdataene i .n8n er gjenopprettet et annet sted. Gjenopprettingen er vellykket når gjenopprettede credentials fortsatt kan dekrypteres, og en gjenopprettet workflow mottar den samme offentlige webhook-URL-en. Sammenlign tidsbruk og forbruk knyttet til execution concurrency, queue depth, binary payload size og long-running nodes i stedet for visning av editor-sider; en stor endring er verdt å undersøke selv om den endelige handlingen fortsatt lykkes.

Test deretter en trygg feil: nekt testidentiteten midlertidig tilgang til Postgres for et robust produksjonsoppsett med flere brukere. Bekreft at n8n viser feilen og går tilbake til normal drift uten destruktive manuelle endringer. Ta vare på bare det nødvendige, redigerte utdraget fra loggen. Denne fire delers kontrollen dekker oppstart, persistence, gjenoppretting og feilhåndtering.

Kapasitet og kontroller før oppgradering

Bygg dashboards rundt execution concurrency, queue depth, binary payload size og long-running nodes i stedet for visning av editor-sider. En CPU-graf uten kontekst om arbeidsbelastningen kan ikke forklare hvorfor n8n er treg. Legg til en syntetisk eller planlagt kontroll som forsøker å aktivere en workflow med en production-webhook, kaller webhooken utenfra serveren og bekrefter at kjøringen når den siste noden ved hjelp av ufarlige testdata.

Før du oppgraderer, må du ta høyde for denne applikasjonsspesifikke risikoen: databasemigreringer, credential-kryptering og installerte community nodes må være kompatible med den nye n8n-versjonen. Gjenopprett en nylig sikkerhetskopi i en isolert distribusjon, kjør migreringene der og sammenlign oppførselen. Hvis webhook-lenker fortsatt peker til localhost eller proxy-headere rapporterer HTTP, må du undersøke den aktuelle grensen – public origin, storage eller dependency – før du endrer irrelevante innstillinger.

Sikre n8n etter bootstrap

Ikke overfør sikkerhetsforutsetninger fra en lokal veiledning. Den spesifikke utfordringen i n8n er å rotere N8N_ENCRYPTION_KEY etter at credentials er lagret. Produksjon bør derfor holde editoren autentisert, samtidig som bare webhook-stiene integrasjonene faktisk trenger, eksponeres.

Generer N8N_ENCRYPTION_KEY én gang, hold den utenfor Git og ta vare på den sammen med recovery-manifestet, fordi en endring kan ugyldiggjøre kryptert eller signert applikasjonsstate. Avgrens tilgang til filsystem og nettverk, beskytt setup-endepunkter og definer grenser for opplasting, requests eller kjøringer rundt execution concurrency, queue depth, binary payload size og long-running nodes i stedet for visning av editor-sider.

Hold n8n eksplisitt mens Dockup håndterer routing

Dockups n8n-distribusjon med ett klikk bør gjøre erstatning trygg: ruten fortsetter å peke til 5678, secrets bygges ikke inn i imaget, og persistente baner kommer tilbake i den nye containeren. Den samme distribusjonen kan kjøre på Dockup compute eller på en tilkoblet maskin.

Fullfør det applikasjonsspesifikke arbeidet ved å koble til og teste Postgres for et robust produksjonsoppsett med flere brukere, angi den kanoniske offentlige adressen og kjøre denne akseptansesjekken: aktiver en workflow med en production-webhook, kall webhooken utenfra serveren og bekreft at kjøringen når den siste noden. Legg resultatet av gjenopprettingen til i runbooken før reelle brukere kommer til.

Ofte stilte spørsmål

Hva trenger n8n for en produksjonsdistribusjon?

Rout n8n-containeren på port 5678 gjennom én HTTPS-origin. Det støttende nettverkskravet er Postgres for et robust produksjonsoppsett med flere brukere. Ikke regn n8n som klart før du kan aktivere en workflow med en production-webhook, kalle webhooken utenfra serveren og bekrefte at kjøringen når den siste noden.

Hvilke n8n-data skal inngå i en sikkerhetskopi?

Gjør /home/node/.n8n persistent, og inkluder databasen samt krypterings- og konfigurasjonsdataene i .n8n i det samme recovery-manifestet. En ren n8n-gjenoppretting er bare vellykket når gjenopprettede credentials fortsatt kan dekrypteres, og en gjenopprettet workflow mottar den samme offentlige webhook-URL-en.

Krever n8n HTTPS bak en reverse proxy?

Bruk HTTPS for den offentlige n8n-origin-en, og behold port 5678 på den interne ruten. Bruk n8n-innstillingen riktig: Sett WEBHOOK_URL til den nøyaktige eksterne HTTPS-URL-en. For n8n beskytter HTTPS credentials eller brukerinnhold under overføring og sørger for konsistent klientoppførsel som er avhengig av origin.

Hvordan bør en n8n-oppgradering testes?

Gjenopprett gjeldende n8n-state i en isolert distribusjon, ta i bruk kandidatversjonen og gjenta akseptansetransaksjonen. Vær spesielt oppmerksom på at databasemigreringer, credential-kryptering og installerte community nodes må være kompatible med den nye n8n-versjonen. Behold det forrige n8n-imaget til grensene for datamigrering og rollback er forstått.