«Jeg hoster det selv, da slipper jeg abonnementet.» Det er en setning som har brakt mange inn i sysadmin-yrket uten at de søkte på stillingen. Egenhosting kan være et godt valg. Men regnestykket har to kolonner, og de fleste fyller bare ut den ene.
La oss gjøre det konkret med én liten workflow, og se hva den koster å drifte på tre måter.
Workflowen: hver virkedag klokken 07 henter vi en RSS-feed, plukker ut oppføringer med et bestemt nøkkelord og sender en e-post med lenkene. Ingenting dramatisk. Akkurat den typen jobb folk bygger i en automasjonsplattform fordi plattformen finnes.
Alternativ 1: n8n på egen server #
n8n-dokumentasjonen beskriver selvhosting som en løsning for tilpassede behov og full kontroll, og er like tydelig på prisen: du leverer og drifter infrastrukturen selv, oppsett krever teknisk kompetanse, og vedlikeholdet er ditt ansvar. Det er ikke en advarsel gjemt i en fotnote. Det er hovedforskjellen.
Her er hva «vedlikeholdet ditt» betyr i praksis, ut fra dokumentasjonen:
- Oppgraderinger. Dokumentasjonen anbefaler å oppdatere ofte, minst én gang i måneden, for å unngå å hoppe over flere versjoner, og å lese release notes for brytende endringer først. Den foreslår å teste oppdateringen på en egen testinstans. Funksjonen den peker på, Environments, står på listen over betalte funksjoner, så på gratisutgaven lager du i praksis testinstansen selv.
- Backup. Backup-siden sier at du må sikre
.n8n-mappen, fordi krypteringsnøkkelen for credentials ligger der. Uten nøkkelen kan ikke gjenopprettede credentials dekrypteres. Bruker du SQLite, må du stoppe n8n før du kopierer mappen, ellers kan du få en inkonsistent kopi. En CLI-eksport av workflows og credentials tar ikke med brukere, kjørehistorikk, variabler eller instansinnstillinger, så den kan flytte arbeid, men ikke gjenopprette en hel instans. Ta full backup før hver oppdatering. - Sikkerhet. Sikkerhetsdokumentasjonen nevner blant annet SSL, mulighet for å slå av det offentlige API-et, SSRF-beskyttelse, sikkerhetsrevisjon og jevnlig rotasjon av krypteringsnøkkelen. Noe av dette krever at du setter det opp. Ingenting av det skjer av seg selv.
- Installasjonsmåte. Hosting-siden varsler at installasjon via npm er utfaset fra n8n 3.0, og peker på Docker Compose eller ett-linjes oppsett.
Til slutt lisensen. n8n bruker Sustainable Use License. Å kjøre n8n for egen virksomhet eller egne prosjekter er greit, og du kan bygge automasjoner for kunder på din egen instans så lenge kundene ikke selv kan lage eller endre workflows. Å tilby n8n som en tjeneste til kunder som bygger workflows, er ikke dekket, og enkelte funksjoner (blant annet SSO, Projects og Git-versjonskontroll) krever en betalt lisensnøkkel. Les FAQ-en selv hvis du skal selge noe med n8n i kjernen.
Alternativ 2: en driftet tjeneste #
Her betaler du for at noen andre gjør alt over. n8n Cloud er et eksempel, og det finnes andre automasjonstjenester. Dokumentasjonen beskriver Cloud som fullt administrert, uten installasjon og uten teknisk kompetanse, med planer fra Starter til Enterprise.
Prisen? Se prissiden. Dokumentasjonen peker selv dit som fasit for funksjoner, grenser og priser, og det er grunn til det: planer, kvoter og tellemåter endrer seg. Jeg setter ikke opp et tall her som har utløpt før du har lest det ferdig.
Det du bytter bort er kontroll, ikke bare penger: du er avhengig av leverandørens planstruktur, grenser og tilgjengelighet. Til gjengjeld har du ingen server å glemme.
Alternativ 3: et skript #
Den samme workflowen som skript:
#!/usr/bin/env python3
import os, smtplib, ssl
from email.message import EmailMessage
import feedparser
FEED = "https://example.com/feed.xml" # bytt ut
KEYWORD = "automatisering"
def main():
d = feedparser.parse(FEED)
hits = [e for e in d.entries
if KEYWORD in (e.get("title", "") + e.get("summary", "")).lower()]
if not hits:
return
msg = EmailMessage()
msg["Subject"] = f"{len(hits)} treff på {KEYWORD}"
msg["From"] = os.environ["MAIL_FROM"]
msg["To"] = os.environ["MAIL_TO"]
msg.set_content("\n".join(
f"- {e.get('title', '')}\n {e.get('link', '')}" for e in hits))
ctx = ssl.create_default_context()
with smtplib.SMTP_SSL(os.environ["SMTP_HOST"], 465, context=ctx) as s:
s.login(os.environ["SMTP_USER"], os.environ["SMTP_PASS"])
s.send_message(msg)
if __name__ == "__main__":
main() Skriptet er et eksempel og er ikke kjørt mot din feed eller din e-postleverandør. Det krever pip install feedparser, og passordene ligger i miljøvariabler, ikke i filen. Planlegg det med cron eller en systemd-timer på en maskin som uansett står på.
Hva du får: ingen plattform å oppdatere, filen ligger i Git med full historikk, og alt du må forstå står på én skjerm. Hva du ikke får: grafisk oversikt, ferdige koblinger til hundre tjenester og noen å spørre når e-postleverandøren endrer autentiseringen. Feilhåndtering, logging og varsling er dine.
Regnestykket du faktisk bør gjøre #
Skriv det på et ark, ikke i hodet:
Egenhosting lønner seg hvis:
(abonnement per år) > (serverleie per år) + (timer per år x din timepris)
Timer per år = oppsett / levetid
+ oppdateringer (minst månedlig, ifølge n8n-dokumentasjonen)
+ backup og restore-test
+ sikkerhetsoppfølging
+ det som går i stykker, og det gjør noe av og til Hvis du ikke vil sette timepris på tiden din, har du allerede svart: du vurderer ikke egenhosting som en kostnadsbesparelse, men som en hobby. Det er en fullt ut legitim grunn, men da skal du kalle den det.
Min anbefaling #
- Du har én eller to enkle jobber, og du kan skrive litt kode: skript. Det er billigst å forstå og billigst å drifte.
- Du har mange flyter, vil ha visuell oversikt, eller andre enn deg skal vedlikeholde dem: en automasjonsplattform er verdt det. Velg driftet tjeneste hvis du ikke vil være sysadmin.
- Du velger egenhosting fordi du vil ha kontroll, eller har data som ikke skal ut: gjør det, men sett opp backup og en restore-test, oppdateringsrutine og tilgangskontroll før du bygger den første workflowen. Ikke etterpå.
Verktøyet er sjelden problemet. Problemet er når «gratis» bare betyr at regningen kommer i en annen valuta, nemlig helgene dine.
