Din n8n-instans spårar ur och plötsligt letar du igenom daterade mappar, tvekar på vilken backup som är den senaste och hoppas att du inte skriver över det enda workflowet du fortfarande behöver köra. Det är exakt här FTP-återställningsautomatisering visar sitt värde.
Ops-ansvariga känner pressen först, men byråägare och inhouse-marknadsförare som kör kampanjer ovanpå n8n dras in i röran de också. Målet här är enkelt: återställ workflows och credentials från den senaste FTP/SFTP-backupen på ett tillförlitligt sätt och skicka en tydlig e-postsammanfattning så att du vet vad som faktiskt hände.
Den här guiden går igenom vad workflowet gör, varför det är säkrare än manuell återställning och hur du kör det på ett sätt som undviker de vanliga katastroferna på “återställningsdagen”.
Så fungerar den här automatiseringen
Här är hela workflowet du kommer att sätta upp:
n8n Workflow Template: FTP + e-post: återställ backuper med mindre driftstopp
flowchart LR
subgraph sg0["Start Restore Flow"]
direction LR
n0@{ icon: "mdi:message-outline", form: "rounded", label: "SUCCESS email Credentials", pos: "b", h: 48 }
n1@{ icon: "mdi:cog", form: "rounded", label: "List Credentials Folders", pos: "b", h: 48 }
n2@{ icon: "mdi:play-circle", form: "rounded", label: "Start Restore", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "List Most Recent Workflows F..", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Write Workflow Files To Disk", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Write Credential Files To Disk", pos: "b", h: 48 }
n6@{ icon: "mdi:message-outline", form: "rounded", label: "SUCCESS email Workflows", pos: "b", h: 48 }
n7@{ icon: "mdi:location-exit", form: "rounded", label: "ERROR: Find Most Recent Cred..", pos: "b", h: 48 }
n8@{ icon: "mdi:cog", form: "rounded", label: "Download Workflow Files", pos: "b", h: 48 }
n9@{ icon: "mdi:cog", form: "rounded", label: "Download Credential Files", pos: "b", h: 48 }
n10@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter out Credentials sub-f..", pos: "b", h: 48 }
n11@{ icon: "mdi:cog", form: "rounded", label: "Exclude Current Workflow Fro..", pos: "b", h: 48 }
n12@{ icon: "mdi:cog", form: "rounded", label: "Restore Workflows", pos: "b", h: 48 }
n13@{ icon: "mdi:cog", form: "rounded", label: "Restore Credentials", pos: "b", h: 48 }
n14@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Restore Credentials?", pos: "b", h: 48 }
n15@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Restore Workflows?", pos: "b", h: 48 }
n16["<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/code.svg' width='40' height='40' /></div><br/>Init"]
n17@{ icon: "mdi:cog", form: "rounded", label: "Create Temp Folder", pos: "b", h: 48 }
n18@{ icon: "mdi:cog", form: "rounded", label: "List Credentials Files", pos: "b", h: 48 }
n19["<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/code.svg' width='40' height='40' /></div><br/>Find Last Backup"]
n16 --> n1
n2 --> n16
n19 --> n17
n19 --> n7
n12 --> n6
n17 --> n14
n17 --> n15
n15 --> n3
n13 --> n0
n14 --> n18
n18 --> n9
n8 --> n10
n1 --> n19
n9 --> n5
n4 --> n11
n5 --> n13
n10 --> n4
n3 --> n8
n11 --> n12
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 n2 trigger
class n10,n14,n15 decision
class n16,n19 code
class n0 disabled
class n6 disabled
classDef customIcon fill:none,stroke:none
class n16,n19 customIcon
Varför det här är viktigt: återställ från backuper utan att slå ut produktion
Att återställa n8n är inte svårt i teorin. I praktiken är det en uppgift man gör sällan, under press, och med precis lagom mycket osäkerhet för att det ska bli fel. Du kanske har fem “senaste”-mappar på din FTP-server, en credentials-undermapp som ligger bland workflow-exporter och ett återställnings-workflow som du absolut inte vill skriva över medan det kör. Lägg till Docker-volymers egenheter och filrättigheter, så kan du tappa en eftermiddag snabbt. Ärligt talat är det värsta inte jobbet. Det är tvivlet.
Friktionen byggs på. Här är det som brukar fallera.
- Du lägger ungefär en timme på att bekräfta vilken backupmapp som faktiskt är den senaste.
- Återställning av credentials “slutförs”, men de går inte att dekryptera senare eftersom krypteringsnyckeln ändrades mellan miljöer.
- En återställningskörning importerar credentials-undermappen som om den vore ett workflow, och sedan måste du städa upp en märklig röra.
- Återställnings-workflowet skriver över sig självt, och nu kan du inte köra om det rent för att fixa det som gick fel.
Det du bygger: ett säkrare FTP-återställningsworkflow med e-postsammanfattningar
Det här workflowet ger dig en kontrollerad “återställningsknapp” för en self-hostad n8n-instans. Du triggar det manuellt, väljer vad du vill återställa (credentials, workflows eller båda), och det skannar automatiskt din FTP/SFTP-server efter datumformaterade backupmappar (YYYY-MM-DD). När det har identifierat den senaste mappen skapar det temporära återställningskataloger på din server, laddar ner rätt filer och skriver dem till disk så att n8n kan importera dem med sina inbyggda CLI-kommandon. Det undviker också ett klassiskt fel genom att ta bort det nuvarande återställnings-workflowet från importmängden, så workflowet inte skriver över sig självt mitt i körningen. När det är klart får du ett mejl som innehåller återställningsutdata, vilket gör verifieringen mycket enklare.
Workflowet börjar med en manuell restore-trigger och initiering (sökvägar, tidszon och inställningar). Sedan hittar det den senaste backupen på FTP, hämtar workflows och/eller credentials till temporära mappar och importerar dem via n8n import:workflow och n8n import:credentials. Till sist mejlar det en läsbar sammanfattning så att du har spårbarhet.
Det du bygger
| Vad som automatiseras | Vad du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du återställer 40 workflows och 30 credential-filer från dina FTP-backuper. Manuellt kanske du lägger cirka 2 timmar på att hitta den senaste mappen, ladda ner filer, exkludera fel filer och köra om importer när något missas. Med det här workflowet triggar du återställningen, väntar på nedladdnings-/importcykeln (ofta runt 15–20 minuter beroende på din server och FTP-hastighet) och läser sedan e-postsammanfattningen. Det betyder vanligtvis att du får tillbaka en till två timmar, plus färre “återställde vi rätt saker?”-diskussioner.
Innan du börjar
- n8n-instans (prova n8n Cloud gratis)
- Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
- FTP- eller SFTP-server för att lagra datumorganiserade backuper.
- E-postkonto (SMTP) för att skicka återställningssammanfattningar (valfritt).
- N8N_ENCRYPTION_KEY (hämta den från din n8n-källmiljö).
Svårighetsgrad: Medel. Du kopierar ett workflow, sätter några miljövariabler och bekräftar att dina Docker-volymer och filrättigheter är korrekta.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Du triggar en återställningskörning manuellt. Triggern innehåller ett enkelt på/av-val för att återställa credentials, workflows eller båda, så att du kan hålla påverkan så liten som möjligt.
Workflowet beräknar sökvägar och hittar den senaste backupen. Det läser dina miljöinställningar (som projektmappar och tidszon), ansluter till din FTP/SFTP-server, skannar efter YYYY-MM-DD-mappar och väljer den senaste.
Filer laddas ner och förbereds för import. Credentials och workflows hämtas via FTP, skrivs till disk i temporära återställningsmappar och filtreras så att credentials-mappen inte behandlas som en workflow-export. Det finns också ett säkerhetssteg som tar bort det aktuella återställnings-workflowets fil innan andra workflows importeras.
n8n importerar och mejlar resultaten. Workflowet kör n8n:s inbyggda importkommandon på din server och skickar ett mejl med utdata, så att du kan bekräfta att allt lyckades utan att gräva i loggar.
Du kan enkelt ändra återställningsomfattningen till att köra “endast credentials” under en migrering, eller “endast workflows” när du återhämtar dig från en trasig deploy. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera den manuella triggern
Det här arbetsflödet startar manuellt så att ni kan välja om ni vill återställa autentiseringsuppgifter, arbetsflöden eller båda.
- Lägg till och öppna Manual Restore Trigger som arbetsflödets trigger.
- Vid testning, inkludera indatafälten som arbetsflödet förväntar sig: credentials och worflows.
- Använd booleska värden (t.ex.
true) för att styra vilka återställningsgrenar som körs.
worflows i Check Workflows Restore och Create Temp Directories. Behåll stavningen konsekvent, annars körs inte grenen för återställning av arbetsflöden.Steg 2: anslut FTP för att hämta backup
Arbetsflödet använder flera FTP-noder för att lista och hämta backupmappar och filer.
- Öppna Retrieve Credential Directories och ställ in Path till
={{ $('Initialize Settings').item.json.customConfig.FTP_BACKUP_FOLDER }}och Operation tilllist. - Öppna List Recent Workflow Folder och ställ in Path till
={{ $('Locate Latest Backup').item.json.ftpWorkflowsPath }}med Operation inställt pålist. - Öppna List Credential Files och ställ in Path till
={{ $('Locate Latest Backup').item.json.ftpCredentialsPath }}med Operation inställt pålist. - Öppna Fetch Workflow Files och ställ in Path till
={{ $json.path }}. - Öppna Fetch Credential Files och ställ in Path till
={{ $json.path }}. - Autentiseringsuppgift krävs: Koppla era ftp-autentiseringsuppgifter till alla FTP-noder (5 noder hanterar kataloglistning och filnedladdningar).
YYYY-MM-DD) under backuppathen; Locate Latest Backup känner endast igen det formatet.Steg 3: konfigurera initiering och val av backup
Dessa noder genererar sökvägar, tidsstämplar och fastställer den senaste backupen som ska återställas.
- Öppna Initialize Settings och bekräfta standardvärden för miljön och mappnamn, särskilt
N8N_PROJECTS_DIR,PROJECT_FOLDER_NAMEochFTP_BACKUP_FOLDER. - I Retrieve Credential Directories, säkerställ att den körs efter Initialize Settings för att använda
customConfig.FTP_BACKUP_FOLDER. - Öppna Locate Latest Backup och behåll On Error inställt på continue med felutdata så att den kan routa till Error: Latest Credential Folder.
- Öppna Create Temp Directories och behåll kommandot intakt; den använder
={{ $('Manual Restore Trigger').first().json.credentials }}och={{ $('Manual Restore Trigger').first().json.worflows }}för att bara skapa de mappar ni behöver.
credentials eller worflows är satt till true avslutas Create Temp Directories med ett fel.Steg 4: konfigurera återställningsgrenar (parallell körning)
Arbetsflödet delas upp i grenar för återställning av autentiseringsuppgifter och arbetsflöden efter att temporära kataloger har skapats.
- Create Temp Directories skickar utdata parallellt till både Check Credentials Restore och Check Workflows Restore.
- I Check Credentials Restore, behåll villkoret
={{ $('Manual Restore Trigger').first().json.credentials }}satt till booleskt true. - I Check Workflows Restore, behåll villkoret
={{ $('Manual Restore Trigger').first().json.worflows }}satt till booleskt true. - I grenen för autentiseringsuppgifter, behåll kedjan: List Credential Files → Fetch Credential Files → Save Credential Files → Import Credentials.
- Ställ in Save Credential Files File Name till
={{ $('Initialize Settings').first().json.workflowConfig.PROJECT_ROOT_PATH }}/{{ $('Locate Latest Backup').item.json.latestBackupDate }}{{ $('Initialize Settings').first().json.customConfig.credentials_temp_folder}}/{{ $json.name }}. - I grenen för arbetsflöden, behåll kedjan: List Recent Workflow Folder → Fetch Workflow Files → Exclude Credential Subfolder → Save Workflow Files → Remove Current Workflow File → Import Workflows.
- Ställ in Save Workflow Files File Name till
={{ $('Initialize Settings').first().json.workflowConfig.PROJECT_ROOT_PATH }}/{{ $('Locate Latest Backup').item.json.latestBackupDate }}{{ $('Initialize Settings').first().json.customConfig.workflows_temp_folder}}/{{ $json.name }}.
={{ $binary.data }}, vilket förhindrar att autentiseringsfiler behandlas i grenen för återställning av arbetsflöden.Steg 5: konfigurera notifieringar och importer
Importresultat skickas via e-post till administratörsadressen som konfigureras i initieringssteget.
- I Import Credentials, behåll Command inställt på
=n8n import:credentials --separate --input={{ $('Initialize Settings').first().json.workflowConfig.PROJECT_ROOT_PATH }}/{{ $('Locate Latest Backup').item.json.latestBackupDate }}{{ $('Initialize Settings').first().json.customConfig.credentials_temp_folder}}. - I Import Workflows, behåll Command inställt på
=n8n import:workflow --separate --input={{ $('Initialize Settings').first().json.workflowConfig.PROJECT_ROOT_PATH }}/{{ $('Locate Latest Backup').item.json.latestBackupDate }}{{ $('Initialize Settings').first().json.customConfig.workflows_temp_folder }}. - Öppna Workflow Success Email och behåll To Email som
={{ $env.N8N_ADMIN_EMAIL }}och Subject som=n8n SUCCESS: {{ $workflow.name }}. - Öppna Credential Success Email och behåll To Email som
={{ $env.N8N_ADMIN_EMAIL }}och Subject som=n8n SUCCESS: {{ $workflow.name }}. - Autentiseringsuppgift krävs: Koppla era smtp-autentiseringsuppgifter till Workflow Success Email och Credential Success Email.
Steg 6: lägg till felhantering
Arbetsflödet stoppar på ett kontrollerat sätt när det inte kan hitta en giltig backupkatalog.
- Behåll Locate Latest Backup konfigurerad med On Error inställt på continue så att felutdata kan routas.
- Säkerställ att felkopplingen från Locate Latest Backup går till Error: Latest Credential Folder.
- I Error: Latest Credential Folder, behåll Error Message inställt på
={{ $json.error }}för tydlig felsökning.
Steg 7: testa och aktivera ert arbetsflöde
Validera båda grenarna och bekräfta att filer återställs och importeras korrekt.
- Klicka på Execute Workflow och ange testindata för Manual Restore Trigger, till exempel
{"credentials": true, "worflows": true}. - Bekräfta att Create Temp Directories rapporterar skapade mappar och att FTP-noderna hämtar filer.
- Verifiera att Import Credentials och/eller Import Workflows slutförs med exit code
0och genererar utdata i deras stdout. - Om aktiverat, kontrollera att Workflow Success Email och Credential Success Email skickas till
={{ $env.N8N_ADMIN_EMAIL }}. - När allt fungerar, växla arbetsflödet till Active för användning i produktion.
Felsökningstips
- FTP/SFTP-uppgifter kan gå ut eller sakna behörigheter. Om det strular, kontrollera först FTP-credentials i n8n och testa sedan genom att köra noden “Retrieve Credential Directories”.
- Om din server är långsam eller backupmappen är stor kan nedladdningar ta längre tid än väntat. Om efterföljande steg fallerar på grund av saknade filer, kör om efter att du bekräftat att de temporära återställningsmapparna skapades och fylldes.
- Noderna Execute Command är beroende av din Docker-volymsetup och filsystembehörigheter. Om importer misslyckas, verifiera att n8n kan skriva till N8N_PROJECTS_DIR och att n8n CLI finns tillgängligt i containern du kör.
Snabba svar
Cirka 30 minuter om dina FTP- och n8n-mappar redan finns på plats.
Nej. Du kopplar mestadels in credentials och justerar några miljöbaserade inställningar i Init-steget.
Ja. n8n har ett gratis self-hosted-alternativ 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 in kostnader för FTP/SFTP-hosting (ofta inkluderat med en VPS eller NAS) samt valfria kostnader för SMTP/e-posttjänst.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsat antal körningar men kräver grundläggande serveradministration.
Ja, men behåll skyddsrälsarna. De flesta börjar med att ändra manual-triggerns pinnade data så att den kör “endast credentials” eller “endast workflows”. Du kan också justera logiken i “Locate Latest Backup” om din mappnamngivning skiljer sig, och byta ut e-postnoderna mot ett annat notifieringsverktyg om e-post inte är din grej.
Oftast handlar det om FTP/SFTP-credentials i n8n (fel host/port, utgånget lösenord/nyckel eller saknad åtkomst till backup-sökvägen). Om credentials är korrekta kan det vara nätverksåtkomst från n8n-servern till FTP-servern, eller att sökvägen FTP_BACKUP_FOLDER inte matchar det som finns på servern.
Gott och väl för de flesta små team: dussintals workflows och credentials i en körning är normalt, och self-hostad n8n har ingen gräns för antal körningar (dina serverresurser är den verkliga begränsningen).
För återställningar, ja. Zapier och Make är inte byggda för att köra server-side CLI-kommandon som n8n import:workflow eller skriva batchar av JSON-filer till Docker-monterade kataloger, vilket är hela poängen här. n8n gör det också enklare att lägga in skydd: filtrera bort mappar, exkludera den aktuella workflow-filen och bygga grenlogik utan att betala extra för varje väg. Om du kör detta under en riktig incident betyder e-postsammanfattningarna och “selektiv återställning”-valen mer än ett snyggare UI. Nackdelen är att du behöver grundläggande kontroll över din hostingmiljö (sökvägar, behörigheter och volymer). Prata med en automationsexpert om du vill ha den säkraste setupen för din stack.
När återställningar är förutsägbara slutar driftstopp vara en gissningslek. Sätt upp detta en gång, så blir nästa återhämtning en rutinuppgift istället för en brandövning.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.