Chia sẻ bởi Little Excel
N8N là một công cụ tự động hóa mạnh mẽ, giúp bạn kết nối các ứng dụng và dịch vụ khác nhau để tạo ra các luồng công việc (workflow) hiệu quả. Tuy nhiên, việc đảm bảo an toàn cho dữ liệu N8N, bao gồm các workflow và credential (thông tin xác thực), là vô cùng quan重要. Bài viết này sẽ hướng dẫn bạn chi tiết cách backup N8N, từ việc export thủ công đến thiết lập luồng tự động hóa backup, đảm bảo bạn không bao giờ mất đi công sức đã xây dựng.
Tại sao cần backup dữ liệu N8N?
Trước khi đi vào chi tiết cách thực hiện, hãy cùng tìm hiểu lý do tại sao việc backup N8N lại quan trọng:
- Phòng ngừa rủi ro mất dữ liệu: Máy chủ có thể gặp sự cố, lỗi phần mềm, hoặc thậm chí là lỗi do con người. Việc có bản backup giúp bạn khôi phục lại toàn bộ hệ thống N8N một cách nhanh chóng.
- Di chuyển N8N sang máy chủ khác: Khi bạn muốn nâng cấp máy chủ, chuyển nhà cung cấp VPS, hoặc đơn giản là cài đặt N8N trên một máy tính mới, việc backup và restore sẽ giúp quá trình diễn ra suôn sẻ.
- Thử nghiệm và phát triển: Bạn có thể muốn thử nghiệm các thay đổi lớn trên workflow hiện tại. Backup cho phép bạn quay lại phiên bản ổn định nếu có sự cố.
- Lỗi cài đặt Puppeteer và nhu cầu cài lại: Một vấn đề thường gặp, như được đề cập trong video, là lỗi khi cài đặt Puppeteer trên N8N (đặc biệt với Docker). Lỗi này thường xảy ra do Puppeteer không tìm thấy đường dẫn thực thi trình duyệt. Trong trường hợp này, một giải pháp là cài đặt lại N8N qua NPM (Node Package Manager) - vốn đơn giản hơn nhiều (
npm install n8n
vàn8n start
sau khi cài Node.js). Khi cài lại, bạn sẽ cần khôi phục workflow và credential từ bản backup.
Hiểu được tầm quan trọng này, chúng ta sẽ cùng khám phá các phương pháp để backup N8N một cách hiệu quả.
Hướng dẫn backup N8N thủ công bằng Command Line (CLI)
N8N cung cấp các công cụ dòng lệnh (CLI) mạnh mẽ cho phép bạn export và import dữ liệu một cách dễ dàng. Đây là phương pháp cơ bản và hiệu quả để tạo các bản backup nhanh chóng.
1. Export Workflows N8N
Để export tất cả các workflow hiện có trên N8N của bạn ra một file JSON duy nhất, hãy sử dụng lệnh sau trong terminal hoặc command prompt trên máy chủ đang chạy N8N:
n8n export:workflow --all --output=/đường/dẫn/tới/thư/mục/workflow-backup.json
Giải thích lệnh:
n8n export:workflow
: Lệnh chính để export workflow.--all
: Tùy chọn này chỉ định rằng bạn muốn export tất cả các workflow.--output=/đường/dẫn/tới/thư/mục/workflow-backup.json
: Chỉ định đường dẫn và tên file mà bạn muốn lưu trữ dữ liệu workflow. Hãy thay/đường/dẫn/tới/thư/mục/
bằng đường dẫn thực tế trên máy chủ của bạn (ví dụ:/home/user/n8n_backups/workflow-backup.json
trên Linux hoặcC:\Users\YourUser\Documents\n8n_backups\workflow-backup.json
trên Windows).
Sau khi thực thi lệnh này, một file JSON chứa toàn bộ thông tin của các workflow sẽ được tạo ra tại vị trí bạn đã chỉ định.
2. Export Credentials N8N (Lưu ý quan trọng về mã hóa)
Việc export credential cần được thực hiện cẩn thận vì chúng chứa thông tin nhạy cảm. N8N có cơ chế mã hóa credential.
a. Export Credential với mã hóa (Mặc định và An toàn hơn):
Khi bạn export credential, N8N sẽ mặc định mã hóa chúng bằng một N8N_ENCRYPTION_KEY
. Key này thường được N8N tự động tạo và lưu trữ trong thư mục cấu hình N8N (thường là ~/.n8n
). Để decrypt (giải mã) các credential này trên một máy N8N mới, máy đó phải có cùng N8N_ENCRYPTION_KEY
.
Lệnh export credential (đã mã hóa):
n8n export:credential --all --output=/đường/dẫn/tới/thư/mục/credential-backup-encrypted.json
Quan trọng:
- Nếu bạn chưa từng tự đặt
N8N_ENCRYPTION_KEY
trong file cấu hình hoặc biến môi trường, N8N sẽ sử dụng một key ngẫu nhiên. - Khi chuyển sang máy mới, bạn cần đảm bảo
N8N_ENCRYPTION_KEY
trên máy mới giống hệt với máy cũ. Bạn có thể tìm key này trong fileconfig
trong thư mục~/.n8n
(hoặc sao chép toàn bộ thư mục~/.n8n
sang máy mới, nhưng cách này có thể không lý tưởng nếu bạn chỉ muốn di chuyển credential).
b. Export Credential không mã hóa (Tiện lợi hơn nhưng kém an toàn):
Nếu bạn quên mất N8N_ENCRYPTION_KEY
hoặc muốn quá trình đơn giản hơn (và chấp nhận rủi ro bảo mật cao hơn), bạn có thể export credential ở dạng không mã hóa (decrypted).
Lệnh export credential (không mã hóa):
n8n export:credential --all --decrypted --output=/đường/dẫn/tới/thư/mục/credential-backup-decrypted.json
--decrypted
: Tùy chọn này yêu cầu N8N export credential ở dạng văn bản thuần, không mã hóa.
CẢNH BÁO: File credential không mã hóa cực kỳ nhạy cảm. Nếu file này bị lộ, toàn bộ thông tin xác thực của bạn sẽ bị đánh cắp. Hãy bảo vệ file này hết sức cẩn thận và chỉ sử dụng tùy chọn này nếu bạn hiểu rõ rủi ro.
3. Chuyển file backup sang máy mới hoặc lưu trữ an toàn
Sau khi đã có file workflow-backup.json
và credential-backup.json
, bạn cần chuyển chúng sang máy tính mới nơi bạn muốn cài đặt N8N, hoặc lưu trữ chúng ở một nơi an toàn (ví dụ: USB, ổ cứng ngoài, cloud storage được mã hóa).
Một số cách để chuyển file giữa các máy chủ/máy tính:
- Syncthing: Nếu cả hai máy đều cài Syncthing và trong cùng mạng (có thể tạo mạng riêng ảo bằng Tailscale), bạn có thể đồng bộ hóa thư mục chứa file backup.
- Tailscale: Tạo một mạng VPN riêng giữa các thiết bị của bạn, giúp việc truyền file an toàn và dễ dàng như trong mạng LAN.
- SCP (Secure Copy Protocol): Nếu bạn dùng Linux/macOS,
scp
là một công cụ dòng lệnh phổ biến để sao chép file qua SSH.
Ví dụ:scp /đường/dẫn/source/file.json user@remote_host:/đường/dẫn/destination/
- Cloud Storage: Tải file lên Google Drive, Dropbox, OneDrive, v.v. Hãy đảm bảo bạn có biện pháp bảo mật cho tài khoản cloud của mình.
4. Import Workflows N8N trên máy mới
Trên máy N8N mới (hoặc sau khi cài đặt lại N8N), mở terminal và sử dụng lệnh sau để import các workflow từ file backup:
n8n import:workflow --input=/đường/dẫn/tới/file/workflow-backup.json
--input
: Chỉ định đường dẫn đến file JSON chứa dữ liệu workflow đã export.
N8N sẽ đọc file và tạo lại tất cả các workflow.
5. Import Credentials N8N trên máy mới
Tương tự, để import credential:
n8n import:credential --input=/đường/dẫn/tới/file/credential-backup.json
--input
: Chỉ định đường dẫn đến file JSON chứa dữ liệu credential đã export.
Lưu ý khi import credential:
- Nếu bạn đã export credential có mã hóa, N8N trên máy mới phải có
N8N_ENCRYPTION_KEY
giống hệt với máy cũ để giải mã thành công. Nếu key không khớp, quá trình import sẽ thất bại hoặc credential sẽ không hoạt động. - Nếu bạn export credential không mã hóa (
--decrypted
), quá trình import sẽ diễn ra trực tiếp mà không cần key.
Sau khi import thành công, hãy mở giao diện N8N của bạn, bạn sẽ thấy tất cả workflow và credential đã được khôi phục. Có thể bạn cần phải chạy lại một số workflow hoặc kiểm tra lại các kết nối API để đảm bảo mọi thứ hoạt động bình thường và re-authenticate nếu cần.
Tự động hóa backup N8N bằng chính N8N Workflow
Việc backup thủ công rất hữu ích, nhưng để đảm bảo an toàn dữ liệu liên tục, việc tự động hóa quá trình này là một giải pháp tối ưu. Thật tuyệt vời là bạn có thể sử dụng chính N8N để tạo một workflow tự động backup dữ liệu của nó!
Dưới đây là các bước để xây dựng một workflow backup N8N tự động:
1. Thiết lập Trigger (Bộ kích hoạt)
Workflow cần một điểm khởi đầu. Bạn có thể sử dụng:
- Schedule Trigger: Cài đặt lịch chạy tự động (ví dụ: mỗi ngày vào lúc 2 giờ sáng). Đây là lựa chọn phổ biến nhất cho việc backup định kỳ.
- Manual Trigger: Cho phép bạn kích hoạt workflow thủ công khi cần.
2. Thực thi lệnh Export (Execute Command Node)
Sử dụng node Execute Command
để chạy các lệnh CLI export workflow và credential mà chúng ta đã tìm hiểu ở phần trước.
-
Node 1: Export Workflows
- Command:
n8n export:workflow --all --output=/đường/dẫn/lưu/tạm/workflow-auto-backup.json
- Hãy đảm bảo đường dẫn output là một nơi mà N8N có quyền ghi.
- Command:
-
Node 2: Export Credentials
- Command:
n8n export:credential --all --decrypted --output=/đường/dẫn/lưu/tạm/credential-auto-backup-decrypted.json
- (Hoặc lệnh export có mã hóa nếu bạn đã quản lý tốt
N8N_ENCRYPTION_KEY
và muốn an toàn hơn. Tuy nhiên, với mục đích tự động hóa và lưu trữ lên cloud, việc dùng--decrypted
rồi mã hóa file trước khi upload có thể là một lựa chọn, hoặc đảm bảo dịch vụ cloud của bạn có mã hóa mạnh mẽ.)
- Command:
Lưu ý: Kết nối hai node Execute Command này nối tiếp nhau hoặc chạy song song nếu bạn muốn.
3. Đọc file đã export (Read Binary File Node)
Sau khi các lệnh export hoàn tất và tạo ra các file JSON, bạn cần đọc nội dung của những file này để có thể gửi chúng đi nơi khác.
-
Node 3: Read Workflow Backup File
- Sử dụng node
Read Binary File
. - File Path: Trỏ đến đường dẫn file
workflow-auto-backup.json
đã tạo ở bước trên. - Property Name: Đặt tên cho thuộc tính chứa dữ liệu file, ví dụ:
workflowData
.
- Sử dụng node
-
Node 4: Read Credential Backup File
- Sử dụng node
Read Binary File
. - File Path: Trỏ đến đường dẫn file
credential-auto-backup-decrypted.json
. - Property Name: Đặt tên cho thuộc tính, ví dụ:
credentialData
.
- Sử dụng node
4. Lưu trữ file backup (Ví dụ: Google Drive Node)
Giờ đây, bạn đã có dữ liệu của workflow và credential trong workflow N8N. Bước tiếp theo là gửi chúng đến một nơi lưu trữ an toàn. Google Drive là một lựa chọn phổ biến.
-
Node 5: Upload Workflow Backup to Google Drive
- Sử dụng node
Google Drive
. - Operation:
Upload
. - File Name: Đặt tên cho file backup, ví dụ:
n8n_workflow_backup_{{$now.toFormat("yyyy-MM-dd_HH-mm-ss")}}.json
(để có timestamp duy nhất). - Binary Data: Chọn
true
. - Input Data Field Name: Điền
workflowData
(tên thuộc tính bạn đã đặt ở node Read Binary File). - Thiết lập thư mục lưu trữ trên Google Drive.
- Sử dụng node
-
Node 6: Upload Credential Backup to Google Drive
- Tương tự node trên, nhưng với:
- File Name:
n8n_credential_backup_{{$now.toFormat("yyyy-MM-dd_HH-mm-ss")}}.json
. - Input Data Field Name: Điền
credentialData
.
Sau khi thiết lập xong các node này và kết nối chúng theo thứ tự logic (Trigger -> Execute Export Workflow -> Execute Export Credential -> Read Workflow File -> Upload Workflow to Drive -> Read Credential File -> Upload Credential to Drive), bạn đã có một hệ thống backup N8N tự động!
Mở rộng:
- Bạn có thể thêm các node thông báo (Email, Slack, Telegram) để nhận được tin nhắn khi quá trình backup hoàn tất hoặc gặp lỗi.
- Cân nhắc việc xóa các file backup tạm thời trên máy chủ N8N sau khi đã upload thành công lên cloud storage để tiết kiệm dung lượng.
Một số lưu ý quan trọng khi backup N8N
-
Vấn đề với Puppeteer và lựa chọn cài đặt N8N:
Như đã đề cập, lỗi "cannot find path" với Puppeteer khi cài N8N qua Docker là một vấn đề phổ biến. Cài đặt N8N qua NPM (npm install -g n8n
sau khi đã cài Node.js) thường đơn giản và ít gặp lỗi hơn. Nếu bạn quyết định chuyển từ Docker sang NPM, việc backup N8N và restore là cực kỳ cần thiết. -
Tầm quan trọng của
N8N_ENCRYPTION_KEY
:
Nếu bạn chọn export credential có mã hóa, hãy đảm bảo bạn hiểu rõ vềN8N_ENCRYPTION_KEY
. Mất key này đồng nghĩa với việc bạn không thể giải mã các credential đã backup. Ghi lại key này ở một nơi an toàn hoặc sử dụng một key tùy chỉnh mà bạn có thể nhớ (và đủ mạnh). -
Bảo mật file backup:
Dù bạn export có mã hóa hay không, file backup (đặc biệt là file credential) rất nhạy cảm. Hãy lưu trữ chúng ở nơi an toàn, hạn chế quyền truy cập và cân nhắc mã hóa thêm một lớp nữa nếu lưu trữ trên cloud công cộng. -
Kiểm tra bản backup định kỳ:
Đừng chỉ thiết lập và quên đi. Thỉnh thoảng, hãy thử khôi phục từ bản backup mới nhất vào một môi trường thử nghiệm để đảm bảo quá trình backup và restore của bạn hoạt động chính xác.
Kết luận
Backup dữ liệu N8N là một bước không thể thiếu để đảm bảo an toàn và tính liên tục cho các quy trình tự động hóa của bạn. Bằng cách sử dụng các lệnh CLI để export thủ công hoặc thiết lập một workflow N8N tự động hóa việc backup, bạn có thể yên tâm rằng dữ liệu quý giá của mình luôn được bảo vệ.
Hãy nhớ rằng, việc chủ động backup N8N thường xuyên sẽ giúp bạn tiết kiệm rất nhiều thời gian và công sức khi có sự cố xảy ra. Chúc bạn thành công trong việc bảo vệ hệ thống N8N của mình!