Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

GitHub till Telegram: godkänn säkrare Docker-uppdateringar

Rickard Andersson Partner, Nodenordic.se

Att uppdatera Docker-containrar låter enkelt tills det inte är det. En ny tagg släpps, du missar den i en vecka, sedan uppdaterar du “snabbt” under en stressig dag och något skapar fel eftersom du inte verifierade vad som ändrades.

Den här automatiseringen för GitHub Telegram updates träffar DevOps-ingenjörer först, men sysadmins som kör små miljöer och founders som vaktar sin egen stack känner av den också. Vinsten är kontroll: du godkänner fortfarande uppdateringen, men du slipper göra kontrollerna, jämförelserna och loggjakten för hand.

Du sätter upp ett n8n-flöde som kontrollerar GitHub-releaser enligt schema, jämför dem med det som körs, och ber sedan om godkännande i Telegram innan den pullar och startar om din Docker-container.

Så fungerar automatiseringen

Här är hela arbetsflödet du kommer att sätta upp:

n8n Workflow Template: GitHub till Telegram: godkänn säkrare Docker-uppdateringar

Varför det här spelar roll: Docker-uppdateringar är “små” tills de slår ut prod

De flesta Docker-uppdateringsrutiner är en hög av små manuella steg som du upprepar för alltid: kolla senaste releasen, kolla vad du har driftsatt, jämför taggar och avgör sedan om det är ett säkert läge. Det är inte svårt arbete. Det är avbrottsstyrt arbete, vilket är värre. En missad notis blir en utdaterad tjänst, och en stressad uppdatering blir ett oväntat avbrott. Även när allt går bra har du sällan en tydlig logg över vem som godkände vad och när, så post-mortems blir… luddiga.

Det summerar snabbt. Här är var det oftast faller isär.

  • Du kollar GitHub-releaser “när du kommer ihåg det”, så uppdateringar kommer sent och i större, mer riskfyllda batchar.
  • Att jämföra versioner mellan taggar, containrar och compose-filer skapar lätt misstag som är enkla att missa.
  • Att köra pull- och restart-kommandon från minnet bjuder in mänskliga fel, särskilt vid åtgärder utanför kontorstid.
  • Godkännanden sitter i någons huvud (eller i Slack-historiken), vilket gör revisioner och överlämningar smärtsamma.

Det du bygger: godkända Docker-uppdateringar triggat av GitHub-releaser

Det här flödet gör “håll koll på releaser” till en tyst, schemalagd vana som kör av sig själv. n8n kontrollerar GitHub efter senaste release-taggen, loggar sedan in på din server via SSH för att läsa vilken version som faktiskt körs. Därefter normaliserar den versionsformatet (så du jämför äpplen med äpplen), slår ihop de två källorna och avgör om en uppdatering verkligen behövs. Om du redan är uppdaterad får Telegram ett enkelt “uppdaterad”–meddelande. Om det finns en ny release ber Telegram om godkännande, och först efter att du bekräftar pullar flödet den nya imagen och kör dina docker compose-uppdaterings- och omstartssteg. Till sist postar den ett klart-meddelande så att hela beslutsspåret finns kvar i chatten.

Flödet startar med en schematrigger (eller en manuell körning när du vill). Sedan gör det två kontroller parallellt: GitHub-release-data via HTTP och din servers installerade version via SSH. Sista steget är den kontrollerade uppdateringsvägen, som bara körs efter ett godkännande i Telegram.

Det du bygger

Förväntat resultat

Säg att du kör uppdateringskontroller var tredje dag (en vanlig rytm för något som en n8n-container) och du hanterar 2 miljöer. Manuellt kanske du lägger cirka 15 minuter på att kontrollera GitHub, 10 minuter på att SSH:a in och bekräfta körande tagg, och sedan ytterligare 20 minuter på att pulla, starta om och skriva en snabb notering någonstans, alltså ungefär 45 minuter per miljö. Med det här flödet sker kontrollen automatiskt, godkännandet tar cirka 1 minut i Telegram och uppdateringen körs utan att du behöver skriva kommandon. Det är ungefär 1 timme tillbaka per kontrollcykel, plus färre “oj, jag glömde”-tillfällen.

Innan du börjar

  • n8n-instans (prova n8n Cloud gratis)
  • Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
  • GitHub för att läsa senaste release-taggar.
  • Telegram för att skicka aviseringar och samla in godkännande.
  • SSH-åtkomst (skapa credentials i n8n) med sudo-rättigheter.

Svårighetsnivå: Medel. Du bör vara bekväm med Docker Compose, SSH-åtkomst och att lagra credentials säkert.

Vill du att någon bygger det här åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).

Steg för steg

Ett schema (eller manuell körning) sätter igång. Flödet kan köras via en manuell trigger när du testar, eller via en schematrigger i produktion (många team kör varannan till var tredje dag).

Två versionskontroller körs i bakgrunden. n8n hämtar senaste release-info från GitHub via ett HTTP-anrop, och ansluter också till din server via SSH för att läsa vilken version din container faktiskt kör.

Flödet normaliserar och jämför taggar. Ett litet steg för att “normalisera version” undviker fåniga mismatchar (som “v1.2.3” vs “1.2.3”), sedan slår en merge ihop datan och en If-kontroll avgör vad som händer härnäst.

Telegram blir kontrollpanelen. Om du redan är uppdaterad skickar det en “uppdaterad”-avisering. Om det finns en nyare tagg skickar det en godkännandeförfrågan till din Telegram-chatt; när du godkänner kör n8n docker compose pull och docker compose up via SSH och postar en klar-notis.

Du kan enkelt justera godkännandemeddelandet och Docker-kommandona så att de matchar dina containernamn och din driftsättningsstil. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementation

Steg 1: konfigurera de manuella och schemalagda triggerna

Konfigurera både manuella och schemalagda starter så att ni kan köra uppdateringar vid behov eller automatiskt var några dagar.

  1. Öppna Manual Execution Start och lämna triggern som den är för körningar på begäran.
  2. Öppna Scheduled Automation Trigger och ställ in Rule till Every 3 days at 13:00 med hjälp av intervallkonfigurationen.
  3. Koppla både Manual Execution Start och Scheduled Automation Trigger till Assign Default Settings.

Flödesnotering: Assign Default Settings skickar utdata parallellt till både Check Installed Release och GitHub Release Request.

Steg 2: anslut SSH-åtkomst för uppdateringsstegen

Dessa SSH-noder kör Docker-kommandon på er server för att kontrollera aktuell version och genomföra uppdateringar.

  1. Öppna Check Installed Release och ställ in CWD till ={{ $json['working-directory'] }}.
  2. I Check Installed Release, ställ in Command till =sudo docker inspect "{{ $json['n8n-container-name'] }}" | jq -r '.[0].Config.Labels["org.opencontainers.image.version"]'.
  3. Öppna Fetch n8n Image och ställ in CWD till ={{ $('Assign Default Settings').item.json['working-directory'] }} och Command till sudo docker pull docker.n8n.io/n8nio/n8n.
  4. Öppna Compose Pull Step och ställ in CWD till ={{ $('Assign Default Settings').item.json['working-directory'] }} och Command till sudo docker compose pull.
  5. Öppna Compose Up Step och ställ in CWD till ={{ $('Assign Default Settings').item.json['working-directory'] }} och Command till sudo docker compose up -d.
  6. Inloggningsuppgift krävs: anslut era sshPassword-inloggningsuppgifter i Check Installed Release, Fetch n8n Image, Compose Pull Step och Compose Up Step.

⚠️ Vanlig fallgrop: om working-directory eller n8n-container-name är tomt i Assign Default Settings kommer SSH-kommandona att misslyckas. Fyll i dessa värden innan ni testar.

Steg 3: sätt upp versionsdata och jämförelselogik

Det här avsnittet hämtar den senaste n8n-releasen, normaliserar versionstaggen och jämför den med det som är installerat.

  1. I Assign Default Settings ställer ni in working-directory, n8n-container-name och telegram-id till era miljövärden (ersätt [YOUR_ID]).
  2. Öppna GitHub Release Request och ställ in URL till https://api.github.com/repos/n8n-io/n8n/releases/latest.
  3. Öppna Normalize Version Tag och ställ in tag_name till ={{ $json["tag_name"].replace("n8n@", "") }}.
  4. Öppna Combine Version Data och ställ in Mode till combineBySql med Query satt till SELECT input1.stdout, input2.tag_name FROM input1 LEFT JOIN input2 ON true;.
  5. Öppna Compare Version Inputs och lägg till ett strängvillkor där Left Value är ={{ $json.stdout }} och Right Value är ={{ $json.tag_name }}, med Operation equals.

Flödesnotering: Combine Version Data skickar utdata till Compare Version Inputs, som sedan routar antingen till uppdateringsgodkännande eller en notifiering om att allt är uppdaterat.

Steg 4: konfigurera Telegram-notifieringar och uppdateringsgodkännande

Telegram-noder meddelar er om uppdateringsstatus och ber om godkännande innan uppdateringskommandon körs.

  1. Öppna Telegram Up-to-date Alert och ställ in Text till n8n is up to date. och Chat ID till ={{ $('Assign Default Settings').item.json['telegram-id'] }}.
  2. Öppna Telegram Update Approval och ställ in Operation till sendAndWait, Message till Hi, a new n8n version is available. I'm ready to update. Can I start now?, och Chat ID till ={{ $('Assign Default Settings').item.json['telegram-id'] }}.
  3. Öppna Telegram Update Notice och ställ in Text till We are updating n8n to the latest version. och Chat ID till ={{ $('Assign Default Settings').item.json['telegram-id'] }}.
  4. Inloggningsuppgift krävs: anslut era telegramApi-inloggningsuppgifter i Telegram Up-to-date Alert, Telegram Update Approval och Telegram Update Notice.

Tips: godkännandeflödet styrs av Compare Version Inputs. Om versionerna matchar körs bara Telegram Up-to-date Alert.

Steg 5: verifiera kedjan för uppdateringskörning

Bekräfta att uppdateringssekvensen efter godkännande körs i rätt ordning på er server.

  1. Säkerställ att Telegram Update Approval är kopplad till Fetch n8n Image.
  2. Verifiera att Fetch n8n Image är kopplad till Compose Pull Step och därefter till Compose Up Step.
  3. Bekräfta att Compose Up Step är kopplad till Telegram Update Notice.
  4. Observera att Telegram Update Notice kopplas tillbaka till Compare Version Inputs för att slutföra körvägen enligt konfigurationen.

Steg 6: testa och aktivera ert arbetsflöde

Kör ett fullständigt test för att bekräfta att uppdateringsövervakningen fungerar korrekt innan ni förlitar er på schemat.

  1. Klicka på Execute Workflow i Manual Execution Start för att köra ett live-test.
  2. En lyckad körning ska antingen skicka Telegram Up-to-date Alert eller trigga Telegram Update Approval och, efter godkännande, SSH-uppdateringskedjan.
  3. Kontrollera körloggen för att verifiera att både Check Installed Release och GitHub Release Request kördes parallellt från Assign Default Settings.
  4. När ni är redo för produktion, växla arbetsflödet till Active för att aktivera Scheduled Automation Trigger.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Felsökningstips

  • Telegram-botens credentials kan löpa ut eller så kan chat-ID:t vara fel. Om meddelanden inte kommer fram, verifiera bot-token och bekräfta chat-ID med ett verktyg som @get_id_bot.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder misslyckas på tomma svar.
  • SSH-kommandon misslyckas ofta eftersom användaren saknar sudo-rättigheter eller för att arbetskatalogen är fel. Bekräfta att SSH-användaren kan köra docker compose utan interaktiva prompts och dubbelkolla sökvägen till docker-compose.yml.

Snabba svar

Hur lång är uppsättningstiden för den här automatiseringen för GitHub Telegram updates?

Cirka 30 minuter om du redan har SSH och en Telegram-bot klar.

Krävs det kodning för det här godkännandeflödet för GitHub Telegram updates?

Nej. Du klistrar mest in credentials, sätter några variabler och testar godkännandemeddelandet en gång.

Är n8n gratis att använda för det här flödet för GitHub Telegram updates?

Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver även räkna in Telegram-botanvändning (oftast gratis) och dina serverkostnader för att köra Docker.

Var kan jag hosta n8n för att köra den här automatiseringen?

Två alternativ: n8n Cloud (hanterat, enklast uppsättning) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och klarar n8n bra. Self-hosting ger dig obegränsat antal körningar men kräver grundläggande serverdrift.

Kan jag modifiera det här flödet för GitHub Telegram updates för andra use cases?

Ja, ganska enkelt. Du kan byta steget GitHub Release Request så att det pekar på ett annat repo, och sedan justera SSH-stegen (Check Installed Release, Compose Pull Step, Compose Up Step) så att de matchar ditt containernamn och din compose-mapp. Vanliga anpassningar är att lägga till ett andra godkännande för produktion, kontrollera en changelog efter brytande ändringar, eller ersätta Telegram med e-post eller Slack och ändå behålla samma logik “godkänn innan deploy”.

Varför misslyckas min Telegram-anslutning i det här flödet?

Oftast är det bot-token eller chat-ID. Generera en ny bot-token i BotFather vid behov, bekräfta chat-ID genom att skriva till @get_id_bot och uppdatera sedan Telegram-credential i n8n. Kontrollera också att boten får skicka meddelanden till chatten (grupprättigheter kan blockera det). Om du kör kontroller för ofta kan du också slå i rate limits.

Vilken volym kan det här flödet för GitHub Telegram updates hantera?

Mycket, eftersom varje körning är lättviktig. På n8n Cloud Starter kan du hantera tusentals körningar per månad, och högre planer hanterar mer; om du self-hostar beror volymen mest på din server. I praktiken kör de flesta team detta några gånger i veckan per tjänst, inte varje minut.

Är den här automatiseringen för GitHub Telegram updates bättre än att använda Zapier eller Make?

För Docker-uppdateringar, ja, men det beror på vad du menar med “bättre”. Zapier och Make är starka för SaaS-till-SaaS-flöden, men SSH-drivna driftsättningar och villkorsstyrda grenar blir snabbt klumpiga (eller dyra). n8n är bekvämt med att köra SSH-kommandon, slå ihop inputs och göra en godkännandespärr utan att du behöver kämpa med verktyget. Self-hosting är också viktigt här, eftersom du kan köra så många kontroller du vill. Om allt du behöver är “notify me a release exists” klarar Zapier det fint. Om du vill ha “godkänn, kör sedan compose-kommandon säkert” är n8n oftast det lugnare valet. Prata med en automationsexpert om du vill ha hjälp att välja.

Du automatiserar inte bort ansvar. Du automatiserar bort rutinarbetet runt det, så att uppdateringar sker i tid och med ett tydligt, enkelt godkännandespår.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal