Snapshot-spridning smyger sig på. Ena veckan har du ett ”trevligt skyddsnät”, och nästa betalar du för en hög gamla DigitalOcean-snapshots som ingen hinner granska.
Om du är DevOps-lead och försöker hålla kostnaderna rimliga så känner du redan av det. En cloud admin som städar upp efter stressade team gör det också. Till och med en liten byråägare som kör kunddroplets får samma huvudvärk. Den här automatiseringen för DigitalOcean snapshot-städning håller retentionen begränsad utan att du behöver vakta den.
Du sätter upp ett n8n-flöde som körs enligt schema, kontrollerar varje droplet, tar bort överflödiga snapshots (och behåller ett fast maxantal) och skapar sedan en ny snapshot. Valfria Slack-notiser gör att du håller dig uppdaterad utan att bo i dashboarden.
Så fungerar automatiseringen
Här är hela flödet du kommer att sätta upp:
n8n Workflow Template: DigitalOcean + Slack: rensa snapshots utan röra
flowchart LR
subgraph sg0["Flow 1"]
direction LR
n0@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>List Snapshots for a Droplet"]
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>List All Droplets"]
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Delete a Snapshot"]
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Droplet Actions snapshot (n8.."]
n5@{ icon: "mdi:cog", form: "rounded", label: "Runs every 48hrs", pos: "b", h: 48 }
n0 --> n3
n5 --> n2
n3 --> n4
n2 --> n1
n1 --> n0
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 decision
class n1,n2,n3,n4 api
classDef customIcon fill:none,stroke:none
class n1,n2,n3,n4 customIcon
Varför det här spelar roll: snapshot-spridning blir dyrt
DigitalOcean-snapshots är toppen – tills de inte är det. Team skapar dem vid lanseringar, uppgraderingar, kundändringar och ”för säkerhets skull”-lägen, och sedan… blir de liggande. Multiplicera det med ett gäng droplets så hamnar du på dussintals snapshots som i det tysta ökar lagringskostnaden. Det värsta är den mentala belastningen: du måste komma ihåg när du senast tog en bra backup, vilka snapshots som är säkra att radera och om du är ett enda misstag från att tappa en rollback-punkt. Manuell städning är ärligt talat en sån uppgift som skjuts upp tills det gör ont.
Det drar iväg snabbt. Så här faller det isär i verkligheten:
- Du upptäcker snapshot-bloat först när fakturan eller lagringslistan ser ”konstig” ut.
- Att radera snapshots för hand är repetitivt, och det är lätt att ta bort fel under press.
- Vissa droplets blir överbeskyddade medan andra går för länge utan en färsk snapshot.
- Utan en retentionregel blir gamla backuper kvar för alltid eftersom ingen vill ta ansvar.
Det du bygger: automatiserad snapshot-retention + färska backuper
Det här flödet kör automatiskt var 48:e timme och gör grovjobbet åt dig. Det börjar med att hämta en lista över alla droplets i ditt DigitalOcean-konto. För varje droplet hämtar det redan lagrade snapshots och kontrollerar sedan om du ligger över retentiongränsen (som standard mer än 4). Om det finns för många tar det bort de äldre snapshots som inte ska sparas. När dropleten är ”under taket” igen skapar det en helt ny snapshot så att du alltid har en aktuell återställningspunkt. Du kan också lägga till Slack-notiser så teamet ser att städning och backuper genomförts utan att öppna DigitalOcean.
Flödet är medvetet enkelt. Först schematrigger, sedan DigitalOcean API-kontroller, därefter villkorad städning och till sist skapande av snapshot. Vill du ha Slack-meddelanden lägger du dem runt radera/skapa-åtgärderna så uppdateringarna blir relevanta.
Det du bygger
| Det som automatiseras | Det du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du hanterar 10 droplets. Om du granskar snapshots manuellt kan en snabb kontroll-och-städning lätt ta cirka 10 minuter per droplet mellan klickande, sortering efter datum, radering och skapande av en ny snapshot – alltså ungefär 1,5 timme per körning. Med det här flödet lägger du kanske 20 minuter en gång för att sätta retentionregeln och API-nyckeln, och sedan kör det var 48:e timme av sig självt. Efter det är ”jobbet” i princip bara att invänta att det blir klart och kasta ett öga på Slack om du aktiverar notiser.
Innan du börjar
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- DigitalOcean för hantering av droplets och snapshots
- Slack för att skicka valfria statusnotiser
- DigitalOcean API-nyckel (skapa den i DigitalOceans API-inställningar)
Nivå: Nybörjare. Du klistrar in en API-nyckel, testar några anrop och justerar ett retentionvärde.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
En schemalagd trigger kör var 48:e timme. Den tajmingen är bara ett standardvärde. Är ni i en miljö med många förändringar, kör dagligen. Är era droplets stabila, glesa ut.
DigitalOcean frågas efter din droplet-lista. n8n använder HTTP Request-noder för att anropa DigitalOcean API, så flödet utgår alltid från det som finns i kontot just nu – inte en hårdkodad lista.
Snapshots hämtas och kontrolleras mot din retentionregel. För varje droplet hämtar flödet snapshots, räknar dem och använder en enkel grind: om antalet överskrider gränsen (4 som standard) fortsätter det med att radera äldre.
Städning sker och sedan skapas en ny snapshot. Överflödiga snapshots tas bort först, och därefter skapar flödet en färsk snapshot per droplet så att du är skyddad utan att samla på skräp.
Du kan enkelt ändra snapshot-gränsen så den matchar er policy och lägga till Slack-meddelanden när raderingar eller nya snapshots sker utifrån era behov. Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera den schemalagda triggern
Det här arbetsflödet körs automatiskt var 48:e timme för att hantera snapshots för DigitalOcean-droplets.
- Lägg till noden Scheduled 48h Trigger som trigger för ert arbetsflöde.
- Ställ in Trigger Times på
everyXmed Value48för att köra var 48:e timme. - Behåll valfritt Flowpast Branding som en dokumentationsnotis för ert team.
Steg 2: Anslut DigitalOcean och hämta droplets
I det här steget hämtas er droplet-lista från DigitalOcean med header-baserad autentisering.
- Lägg till noden Retrieve Droplet List och ställ in URL till
https://api.digitalocean.com/v2/droplets. - Ställ in Authentication till
headerAuth. - Credential Required: Anslut era
httpHeaderAuth-credentials för Retrieve Droplet List.
httpHeaderAuth innehåller en giltig DigitalOcean API-token i headern (till exempel Authorization: Bearer YOUR_TOKEN), annars kommer anropet att misslyckas.Steg 3: Sätt upp granskning och filtrering av snapshots
Dessa noder kontrollerar befintliga snapshots och avgör om en gammal snapshot ska tas bort innan en ny skapas.
- Lägg till Fetch Droplet Snapshots och ställ in URL till
=https://api.digitalocean.com/v2/droplets/{{ $json.droplets[0].id }}/snapshots. - Ställ in Authentication till
headerAuthi Fetch Droplet Snapshots. - Credential Required: Anslut era
httpHeaderAuth-credentials för Fetch Droplet Snapshots. - Lägg till Snapshot Count Gate och konfigurera talvillkoret med Value 1 satt till
={{ $json.meta.total }}, Operation satt tilllargerEqualoch Value 2 satt till4.
Steg 4: Konfigurera åtgärder för borttagning och skapande av snapshots
När tröskelvärdet för antal snapshots uppnås tar arbetsflödet bort den äldsta snapshoten och triggar en ny snapshot-åtgärd.
- Lägg till Remove Old Snapshot och ställ in URL till
=https://api.digitalocean.com/v2/snapshots/{{ $json.snapshots[0].id }}. - Ställ in Request Method till
DELETEoch Authentication tillheaderAuthi Remove Old Snapshot. - Credential Required: Anslut era
httpHeaderAuth-credentials för Remove Old Snapshot. - Lägg till Create New Snapshot Action och ställ in URL till
=https://api.digitalocean.com/v2/droplets/{{ $('Retrieve Droplet List').item.json.droplets[0].id }}/actions. - Ställ in Request Method till
POST, Authentication tillheaderAuthoch lägg till en body-parameter type med värdetsnapshot. - Credential Required: Anslut era
httpHeaderAuth-credentials för Create New Snapshot Action.
Steg 5: Testa och aktivera ert arbetsflöde
Verifiera hela sekvensen, från hämtning av droplets till snapshot-rotation, innan ni aktiverar körningar i produktion.
- Klicka på Execute Workflow och verifiera att Retrieve Droplet List returnerar era droplets, att Fetch Droplet Snapshots returnerar metadata för snapshots och att Snapshot Count Gate endast släpper igenom när
={{ $json.meta.total }}är4eller mer. - Om gate:n släpper igenom, bekräfta att Remove Old Snapshot skickar en
DELETE-begäran och att Create New Snapshot Action skickar enPOSTmedtype=snapshot. - När allt är validerat, slå på Active för att aktivera Scheduled 48h Trigger för löpande körning.
Felsökningstips
- DigitalOcean-credentials kan löpa ut eller sakna scopes. Om det skapar fel, börja med att kontrollera behörigheterna för din API-token i DigitalOceans API-inställningar.
- Om du lägger till Slack-notiser spelar Slack-appens behörigheter roll. När meddelanden inte postas, kontrollera Slack-nodens anslutna workspace och kanalåtkomst.
- Retentionlogiken är bara så bra som den namngivning eller sortering du förlitar dig på. Om dina snapshots inte tidsstämplas konsekvent, justera filtret så att ”äldst” verkligen betyder äldst.
Snabba svar
Cirka 30 minuter om din DigitalOcean API-nyckel är redo.
Nej. Du kopplar DigitalOcean i HTTP Request-noderna och sätter en snapshot-gräns. n8n hanterar logiken och schemat.
Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna med DigitalOceans lagringskostnader för snapshots, eftersom det är det du optimerar.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och kör n8n bra. Egen drift ger dig obegränsat antal körningar men kräver grundläggande serverhantering.
Ja, och det bör du. Ändra retentiongränsen i filtret Snapshot Count Gate och justera sedan Cron-timingen om du vill köra dagligen eller veckovis. Många team lägger också till Slack-noder efter ”Remove Old Snapshot” och efter ”Create New Snapshot Action” så att meddelandet inkluderar vad som ändrades. Om du hanterar olika miljöer kan du först filtrera droplets på tagg och köra olika retentionpolicys per tagg.
Oftast är det ett problem med API-token. Skapa om din DigitalOcean API-nyckel, säkerställ att den har rätt behörigheter och uppdatera den i varje HTTP Request-nod som anropar DigitalOcean API. Om du testar mycket på kort tid kan du också slå i rate limits, så sänk tempot eller testa med färre droplets först.
För de flesta små team är det inga problem med dussintals droplets per körning.
Ofta, ja – eftersom det här är API-tungt och gynnas av villkorslogik. n8n gör det enkelt att lista droplets, loopa igenom dem, förgrena på snapshot-antal och sedan radera och skapa snapshots utan att betala extra för varje litet steg. Du kan också köra med egen drift, vilket är viktigt när du vill schemalägga ofta utan att oroa dig för task-limiter. Zapier eller Make kan fortfarande fungera, men du kommer lägga mer tid på att få ordning på loopar och edge cases. Prata med en automationsexpert om du vill ha hjälp att välja enklaste väg för din setup.
När det här väl rullar slutar snapshot-retention vara ett återkommande måste och blir i stället ett tyst skyddsnät. Sätt upp det, håll röran under kontroll och lägg tiden på arbete som faktiskt tar er framåt.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.