close

Backup và restore n8n: workflow, credential và khóa mã hóa

Tác giả: Đông Tùng Ngày đăng: 02/07/2025 Chuyên mục: n8n
Disclosure
Website Tino blog được cung cấp bởi Tino Group. Truy cập và sử dụng website đồng nghĩa với việc bạn đồng ý với các điều khoản và điều kiện trong chính sách bảo mật - điều khoản sử dụng nội dung. Tino Group có thể thay đổi điều khoản sử dụng bất cứ lúc nào. Việc bạn tiếp tục sử dụng Tino blog sau khi thay đổi có nghĩa là bạn chấp nhận những thay đổi đó.
Why Trust Us
Các bài viết với hàm lượng tri thức cao tại Tino blog được tạo ra bởi các chuyên viên Marketing vững chuyên môn và được kiểm duyệt nghiêm túc theo chính sách biên tập bởi đội ngũ biên tập viên dày dặn kinh nghiệm. Mọi nỗ lực của chúng tôi đều hướng đến mong muốn mang đến cho cộng đồng nguồn thông tin chất lượng, chính xác, khách quan, đồng thời tuân thủ các tiêu chuẩn cao nhất trong báo cáo và xuất bản.

Backup n8n đầy đủ gồm 3 phần: workflow, credential và khóa mã hóa N8N_ENCRYPTION_KEY trong thư mục .n8n. Trên bản tự host, cách gọn nhất là chạy n8n export:workflow --backup và n8n export:credentials --backup, rồi chép kết quả cùng khóa ra ngoài máy chủ. Không vào được máy chủ thì dùng workflow gọi n8n API để đẩy workflow lên Google Drive.

Bài dành cho n8n tự host trên VPS hoặc máy tính, có cả cách khôi phục. Chưa cài n8n thì xem cách cài đặt n8n trên VPS trước. Lệnh trong bài kiểm theo n8n 2.44.6 (bản stable ngày 22/10/2026).

Bản backup n8n cần gồm những gì?

Một bản backup n8n khôi phục được phải có thư mục .n8n (chứa file cấu hình có khóa mã hóa và, với SQLite, cả database), database PostgreSQL nếu bạn dùng, và cấu hình triển khai như .env, compose.yaml. Credential trong database được mã hóa bằng khóa đó, nên thiếu khóa thì bản backup credential không dùng được (Back up and restore).

Ba phần của bản backup n8n tự host: thư mục .n8n trong volume n8n_data, khóa mã hóa trong file config hoặc biến N8N_ENCRYPTION_KEY, PostgreSQL cùng .env và compose.yaml; lệnh export --backup chỉ lấy workflow và credential, không có user, lịch sử chạy và variables
PhầnNằm ở đâuSao lưu bằng
WorkflowDatabase (SQLite trong .n8n hoặc PostgreSQL)n8n export:workflow --backup hoặc workflow gọi n8n API
CredentialDatabase, đã mã hóan8n export:credentials --backup (giữ nguyên mã hóa)
Khóa mã hóaFile ~/.n8n/config hoặc biến N8N_ENCRYPTION_KEYChép riêng, cất ngoài máy chủ
User, lịch sử chạy, variables, cài đặtDatabaseChép thư mục .n8n (SQLite) hoặc pg_dump (PostgreSQL)
Bản export CLI không gồm user, execution và variables (docs.n8n.io, 23/10/2026)

Vì sao cần backup n8n định kỳ?

Backup n8n định kỳ giúp bạn dựng lại workflow và kết nối khi máy chủ hỏng ổ đĩa, khi xóa nhầm, khi bản cập nhật lỗi hoặc khi chuyển sang VPS khác. n8n tự host không có thùng rác cho workflow đã xóa, và người vận hành tự chịu trách nhiệm lưu trữ dữ liệu.

  • Máy chủ hỏng hoặc bị xóa: mất volume là mất cả workflow, credential và lịch sử chạy.
  • Xóa nhầm hoặc ghi đè: dễ xảy ra khi nhiều người cùng sửa một workflow.
  • Cập nhật lỗi: bản mới chạy migration database; muốn quay về bản cũ phải có bản sao trước lúc nâng (cách cập nhật n8n).
  • Mất credential: workflow vẫn còn nhưng không gọi được dịch vụ nào cho đến khi bạn nhập lại từng API key, OAuth. Credential là thông tin xác thực (API key, Client ID/Secret, token) mà node dùng để kết nối dịch vụ bên ngoài.
  • Chuyển máy chủ: bản backup đầy đủ là đầu vào của việc chuyển n8n sang VPS mới.

Nên chọn cách backup n8n nào?

Nếu bạn SSH được vào máy chạy n8n, hãy dùng lệnh CLI chạy theo lịch: lệnh lấy được cả workflow lẫn credential mà không cần bật node nguy hiểm. Nếu chỉ có giao diện web, ví dụ n8n Cloud gói trả phí, dùng workflow gọi n8n API để lưu workflow lên Google Drive; cách này không lấy được credential.

Chọn cách backup n8n theo quyền truy cập: vào được terminal máy chạy n8n thì dùng lệnh CLI chạy bằng cron, lấy cả workflow và credential vẫn mã hóa, kèm volume và khóa; không vào được thì dùng workflow gọi n8n API lưu lên Google Drive, chỉ lấy được workflow, bản dùng thử n8n Cloud không có API
CáchLấy đượcCần gìHợp với
Lệnh CLI export --backupWorkflow, credential (mã hóa)SSH vào máy chủVPS tự host
Chép volume .n8n + pg_dumpToàn bộ hệ thống, kể cả user và lịch sử chạySSH, dừng n8n khi dùng SQLiteTrước khi cập nhật, chuyển máy chủ
Workflow gọi n8n API → Google DriveChỉ workflowAPI key n8n, credential GoogleKhông có SSH, n8n Cloud gói trả phí
Export tay trên giao diệnTừng workflowKhôngLưu nhanh 1–2 workflow (import và export workflow)
So sánh các cách backup n8n

Cách backup n8n bằng lệnh CLI

Backup n8n bằng CLI là chạy lệnh n8n export bên trong container: cờ --backup tương đương --all --pretty --separate, mỗi workflow và mỗi credential thành một file JSON riêng (Use the command line). Credential xuất ra vẫn ở dạng mã hóa, nên đi kèm khóa mới khôi phục được.

Chạy trong thư mục chứa compose.yaml, với service tên n8n. Dùng hai thư mục khác nhau cho workflow và credential: theo docs, import:credentials --separate hiện lỗi khi thư mục có lẫn file workflow.

cd ~/n8n-compose
docker compose exec -u node n8n n8n export:workflow --backup --output=/home/node/.n8n/backups/workflows/
docker compose exec -u node n8n n8n export:credentials --backup --output=/home/node/.n8n/backups/credentials/

# Chép ra máy chủ, ngoài container
docker compose cp n8n:/home/node/.n8n/backups ./n8n-backup-$(date +%F)

Thư mục /home/node/.n8n nằm trong volume nên file không mất khi tạo lại container. Bản sao vẫn nằm trên cùng máy chủ, vì vậy bước tiếp theo là đưa nó ra nơi khác.

Sao lưu khóa mã hóa N8N_ENCRYPTION_KEY

n8n tạo khóa mã hóa ngẫu nhiên ở lần chạy đầu và lưu trong file config của thư mục .n8n, trừ khi bạn đặt biến N8N_ENCRYPTION_KEY (Set a custom encryption key). Xem khóa đang dùng bằng lệnh dưới và cất vào trình quản lý mật khẩu, tách khỏi nơi để file credential.

docker compose exec n8n cat /home/node/.n8n/config
# hoặc, nếu đặt bằng biến môi trường
grep N8N_ENCRYPTION_KEY .env

Sao lưu toàn bộ volume và database

Để khôi phục được cả user, lịch sử chạy và cài đặt, chép nguyên volume .n8n và database. Với SQLite, dừng n8n trước khi chép để file database không bị ghi dở.

docker volume ls                        # tìm tên volume, ví dụ n8n-compose_n8n_data
docker compose stop n8n
docker run --rm -v n8n-compose_n8n_data:/data -v "$PWD":/backup alpine \
  tar czf /backup/n8n_data-$(date +%F).tar.gz -C /data .
docker compose start n8n

# Nếu dùng PostgreSQL (service tên postgres, user và database n8n)
docker compose exec -T postgres pg_dump -U n8n -d n8n > n8n-db-$(date +%F).sql

Chạy backup tự động bằng cron

Gom các lệnh trên vào một script rồi đặt lịch bằng cron. Ví dụ dưới chạy 2 giờ sáng mỗi ngày và xóa bản cũ hơn 14 ngày; tần suất tùy mức thay đổi workflow của bạn.

#!/bin/bash
# /root/n8n-backup.sh
set -e
cd /root/n8n-compose
D=/root/n8n-backups/$(date +%F)
mkdir -p "$D"
docker compose exec -T -u node n8n rm -rf /home/node/.n8n/backups
docker compose exec -T -u node n8n n8n export:workflow --backup --output=/home/node/.n8n/backups/workflows/
docker compose exec -T -u node n8n n8n export:credentials --backup --output=/home/node/.n8n/backups/credentials/
docker compose cp n8n:/home/node/.n8n/backups "$D/"
find /root/n8n-backups -mindepth 1 -maxdepth 1 -type d -mtime +14 -exec rm -rf {} +
chmod +x /root/n8n-backup.sh
crontab -e
# thêm dòng:
0 2 * * * /root/n8n-backup.sh >> /var/log/n8n-backup.log 2>&1

Đẩy thư mục /root/n8n-backups lên Google Drive bằng rclone theo hướng dẫn tự động backup n8n và OpenClaw lên Google Drive. Khóa mã hóa không đi cùng thư mục này.

Vì sao không backup credential bằng node Execute Command?

Cách cũ dùng node Execute Command chạy n8n export:credentials --all --decrypted ra /tmp, đọc bằng Read/Write Files rồi tải lên Google Drive. Từ n8n 2.0, Execute Command bị tắt mặc định (nằm trong NODES_EXCLUDE) và Read/Write Files chỉ đọc ghi trong ~/.n8n-files, nên workflow đó báo lỗi (v2.0 breaking changes, Nodes environment variables).

Cờ --decrypted còn ghi mọi API key, token, mật khẩu ở dạng chữ thường. Đẩy file đó lên Google Drive là đặt toàn bộ quyền truy cập dịch vụ của bạn vào một tài khoản Google. Chỉ dùng --decrypted khi chuyển sang máy có khóa khác, và xóa file ngay sau khi khôi phục.

Cách backup workflow n8n lên Google Drive bằng workflow

Workflow backup lên Google Drive dùng node n8n (gọi n8n API) để lấy danh sách workflow, node Convert to File để đổi sang JSON, rồi node Google Drive để tải lên theo lịch. Cách này chạy được cả khi không có SSH, nhưng chỉ lấy workflow. n8n API không có ở bản dùng thử n8n Cloud (n8n API Authentication).

Ảnh chụp ở n8n 1.x. Ở n8n 2.x, nút Test workflow đổi thành Execute workflow, công tắc Active/Inactive thay bằng nút Publish; các node và trường cấu hình giữ nguyên.

Cách 1: Backup toàn bộ workflow vào một file

Bước 1: Cấu hình Schedule Trigger. Thêm node Schedule Trigger và đặt lịch chạy. Ví dụ 3 ngày một lần lúc nửa đêm: Trigger Interval là Days, Days Between Triggers là 3, Trigger at Hour là Midnight, Trigger at Minute là 0.

Node Schedule Trigger đặt Trigger Interval Days, Days Between Triggers 3, Trigger at Hour Midnight, Trigger at Minute 0

Bước 2: Tạo API key n8n. Nhấp biểu tượng Settings ở góc dưới thanh bên trái, chọn mục n8n API.

Menu Settings ở góc dưới bên trái giao diện n8n
Trang Settings của n8n, mục n8n API và nút Create an API Key

Nhấp Create an API Key, nhập Label (ví dụ Backup), chọn thời hạn Expiration rồi bấm Save. Ở gói Enterprise, chỉ cấp scope đọc workflow cho key này.

Hộp thoại Create API Key với Label Backup, Expiration 30 days và nút Save

n8n chỉ hiện API key một lần. Sao chép key ngay rồi bấm Done; mất key thì xóa và tạo key mới.

Hộp thoại API Key Created của n8n, phần chuỗi API key đã được che, nút Done

Bước 3: Cấu hình node n8n để lấy workflow. Thêm node n8n sau Schedule Trigger.

Chọn node n8n trong bảng node, phần Workflow actions

Ảnh chụp ở n8n 1.x: thanh trên còn công tắc Inactive, ở n8n 2.x là nút Publish.

Ở Credential to connect with, tạo credential n8n account: dán API key ở bước 2 và Base URL của bạn, dạng https://n8n.example.com/api/v1.

Credential n8n account trong n8n: ô API Key đã ẩn và Base URL https://n8n.example.com/api/v1

Lưu credential, rồi đặt Resource là Workflow, Operation là Get Many và bật Return All để lấy mọi workflow.

Node n8n đặt Resource Workflow, Operation Get Many, bật Return All

Bước 4: Chuyển dữ liệu sang JSON. Thêm node Convert to File sau node n8n, đặt Operation là Convert to JSON, Mode là All Items to One File, Put Output File in Field giữ là data.

Thêm node Convert to File sau node n8n
Node Convert to File đặt Convert to JSON, All Items to One File, trường data

Bước 5: Cấu hình node Google Drive. Thêm node Google Drive, chọn credential Google (xem cách xác thực credential cho Google trên n8n). Đặt Resource là File, Operation là Upload, Input Data Field Name là data, File Name là Data, Parent Drive là My Drive, Parent Folder là thư mục Backup (chọn từ danh sách hoặc dán URL).

Node Google Drive đặt File, Upload, trường data, tên file Data, My Drive và thư mục theo URL; ID file ở phần Output đã được làm mờ

Bước 6: Lưu và chạy thử. Đặt tên workflow, bấm Save, rồi chạy thử một lần và mở thư mục Backup trên Google Drive để xem file Data.

Workflow Backup all workflow gồm Schedule Trigger, n8n, Convert to File và Google Drive, nút Save và Test workflow
Thư mục Backup trên Google Drive có file Data vừa tải lên

Chạy ổn thì bấm Publish để workflow tự chạy theo lịch. Với n8n 1.x, bật công tắc Active.

Cách 2: Backup từng workflow thành file riêng

Cách 2 tạo một thư mục mới trên Google Drive cho mỗi lần chạy và lưu mỗi workflow một file mang tên workflow. Khôi phục một workflow lẻ sẽ nhanh hơn, và dễ so các bản theo thời gian.

Bước 1: Thêm Schedule Trigger như Cách 1.

Bước 2: Tạo thư mục theo thời gian. Thêm node Google Drive (đổi tên thành Create Folder), đặt Resource là Folder, Operation là Create, Folder Name là {{ $json.timestamp }}, Parent Folder là thư mục gốc chứa các bản backup.

Node Google Drive Create Folder đặt Resource Folder, Operation Create, Folder Name là biểu thức $json.timestamp

Bước 3: Lấy mọi workflow. Thêm node n8n (đổi tên thành Get All WF), dùng credential n8n account, Resource là Workflow, Operation là Get Many, bật Return All.

Node n8n tên Get All WF đặt Workflow, Get Many, bật Return All

Bước 4: Mỗi workflow một file JSON. Thêm Convert to File, đặt Operation là Convert to JSON, Mode là Each Item to Separate File.

Node Convert to File đặt Convert to JSON, Each Item to Separate File

Bước 5: Đặt tên file. Thêm node Code (ví dụ tên Dat_Ten), Mode là Run Once for All Items, ngôn ngữ JavaScript. Đoạn mã gán tên tạm Backup-1.json, Backup-2.json cho từng file; ở bước 6, ô File Name sẽ đổi thành tên workflow.

return items.map((item, index) => {
  item.binary.data.fileName = `Backup-${index + 1}.json`;
  return item;
});
Node Code tên Dat_Ten chạy Run Once for All Items, đoạn JavaScript đặt tên file backup

Bước 6: Tải lên Google Drive. Thêm node Google Drive, Resource là File, Operation là Upload, Input Data Field Name là data. File Name là {{ $('Get All WF').item.json.name }}, Parent Folder chọn By ID với {{ $('Create Folder').item.json.id }} để file vào đúng thư mục vừa tạo.

Node Google Drive tải file lên thư mục theo ID của node Create Folder, tên file theo tên workflow

Bước 7: Lưu và chạy thử. Mỗi lần chạy, Google Drive có thêm một thư mục mang dấu thời gian, bên trong là từng workflow.

Workflow backup từng workflow gồm Schedule Trigger, Create Folder, Get All WF, Convert to File, Dat_Ten và Google Drive
Thư mục Backup trên Google Drive có thư mục con đặt tên theo thời gian chạy
Thư mục backup theo thời gian chứa từng file workflow như Backup all workflow, Chatbot FB, HTTP

Chạy ổn thì bấm Publish. Hai file workflow mẫu từng chia sẻ trên Google Drive không còn truy cập được, nên hãy dựng theo các bước trên.

Cách restore workflow và credential n8n

Restore n8n có ba mức: nhập workflow và credential từ file CLI, nhập một file JSON trên giao diện, hoặc khôi phục cả hệ thống từ volume và database. Dù chọn mức nào, credential chỉ dùng được khi máy đích có cùng khóa mã hóa với máy đã xuất.

Restore bằng lệnh import của n8n

Trên máy mới, hoàn tất tạo tài khoản owner trước, vì lệnh import cần một user có sẵn. Đặt cùng N8N_ENCRYPTION_KEY hoặc chép file config cũ vào .n8n, rồi chép thư mục backup vào volume và chạy lệnh (Back up and restore):

docker compose cp ./n8n-backup-2026-10-23/backups n8n:/home/node/.n8n/
docker compose exec -u node n8n n8n import:credentials --separate --input=/home/node/.n8n/backups/credentials/
docker compose exec -u node n8n n8n import:workflow --separate --input=/home/node/.n8n/backups/workflows/
docker compose restart n8n
  • Workflow nhập vào bị tắt sẵn. Mở từng workflow cần chạy và bấm Publish.
  • File export giữ nguyên ID. Máy đích có workflow hoặc credential cùng ID sẽ bị ghi đè.
  • Có nhiều user hoặc project thì thêm --userId hoặc --projectId để gán chủ sở hữu.

Sau khi import, mở mục Credentials để kiểm tra đủ danh sách và thử một node dùng từng credential.

Tab Credentials của n8n sau khi khôi phục, danh sách credential Google Drive, n8n account, Zalo API, Google Sheets

Restore workflow từ file JSON trên Google Drive

Tải file backup về máy (chuột phải vào file trên Google Drive, chọn Tải xuống). File của Cách 2 chứa một workflow, nhập bằng Import from File trên giao diện theo hướng dẫn import và export workflow trên n8n.

Menu chuột phải trên Google Drive với lựa chọn Tải xuống file backup Data

File Data của Cách 1 là một mảng nhiều workflow. Chép file lên máy chủ rồi chạy n8n import:workflow --input=Data.json; nếu lệnh báo lỗi định dạng, tách từng phần tử của mảng ra file riêng rồi import theo thư mục.

Danh sách workflow trong n8n sau khi khôi phục, gồm Khôi phục, backup credential, Backup từng wf riêng, Backup all workflow

Ảnh chụp ở n8n 1.x nên mỗi workflow có công tắc Inactive; ở n8n 2.x, workflow chưa Publish hiện trạng thái tương ứng.

Restore toàn bộ hệ thống n8n

Khôi phục toàn bộ hệ thống đưa lại cả user, lịch sử chạy và cài đặt. Làm theo thứ tự:

  1. Dừng n8n: docker compose stop n8n.
  2. Giải nén bản sao volume vào volume n8n_data (và các thư mục custom node nếu có).
  3. Khôi phục PostgreSQL từ file pg_dump nếu dùng.
  4. Đặt lại .env: biến kết nối database, N8N_ENCRYPTION_KEY nếu tự đặt.
  5. Khởi động: docker compose up -d, rồi đăng nhập kiểm tra.

Làm sao biết bản backup n8n dùng được?

Bản backup n8n chỉ đáng tin khi bạn đã khôi phục thử nó ít nhất một lần. Dựng một n8n trống trên máy thử, nhập bản backup, rồi kiểm tra các điểm dưới. Nếu đang định đổi database, đọc thêm đổi database n8n từ SQLite sang PostgreSQL.

  • Số workflow và credential khớp với máy gốc.
  • Mở một credential không báo lỗi giải mã (nghĩa là khóa đúng).
  • Chạy thử một workflow có webhook và một workflow theo lịch.
  • Khóa mã hóa và API key được cất riêng, không nằm chung thư mục backup (bảo mật credentials và API key trong n8n).

Muốn chạy n8n 24/7 mà không tự cài? VPS n8n của Tino cài sẵn n8n trên VPS NVMe đặt tại Việt Nam; bạn vẫn có quyền root để cấu hình. Xem cấu hình và giá trên trang sản phẩm.

Câu hỏi thường gặp

Nên backup n8n bao lâu một lần?

Tùy tần suất bạn sửa workflow. Hệ thống thay đổi hằng ngày nên backup hằng ngày bằng cron; ngoài ra luôn sao lưu đầy đủ trước mỗi lần cập nhật n8n. Lịch chạy chỉnh ở cron hoặc ở node Schedule Trigger.

API key n8n dùng để làm gì trong workflow backup?

API key cho node n8n đọc danh sách workflow qua n8n API. n8n chỉ hiện key một lần lúc tạo; mất key thì xóa key cũ ở Settings > n8n API và tạo key mới.

Base URL của n8n là gì?

Base URL là địa chỉ API của bản n8n bạn đang dùng, dạng https://n8n.example.com/api/v1 với bản tự host, hoặc https://ten.app.n8n.cloud/api/v1 với n8n Cloud.

Có backup lên Dropbox, OneDrive hay Amazon S3 được không?

Được. Trong workflow, thay node Google Drive bằng node Dropbox, Microsoft OneDrive hoặc AWS S3. Với cách CLI, rclone hỗ trợ cả ba dịch vụ này.

Có nên xuất credential dạng giải mã để dễ đọc không?

Không nên. Cờ –decrypted ghi mọi khóa và token ở dạng chữ thường. Chỉ dùng khi chuyển sang máy có khóa mã hóa khác, và xóa file ngay sau khi khôi phục.

n8n Cloud có cần tự backup không?

n8n Cloud không có CLI hay volume để chép. Bạn có thể export từng workflow trên giao diện hoặc dùng workflow gọi n8n API ở gói trả phí; credential phải ghi lại theo cách riêng.

Đông Tùng

Senior Technology Writer

Là cử nhân Quản trị kinh doanh của Trường Đại học Tài chính - Marketing, Tùng bắt đầu làm việc tại Tino Group từ năm 2021 ở vị trí Content Marketing để thỏa mãn niềm đam mê viết lách của bản thân. Sở hữu khả năng sáng tạo đặc biệt, anh cùng đội ngũ của mình đã tạo nên những chiến dịch quảng cáo độc đáo cùng vô số bài viết hữu ích về nhiều chủ đề khác nhau. Sự tỉ mỉ, kiên trì và tinh thần sáng tạo của Tùng đã góp phần lớn vào thành công của Tino Group trong lĩnh vực marketing trực tuyến.

Xem thêm bài viết

Bài viết liên quan