Mở đầu — vì sao bài này quan trọng
Ở các bài trước, chúng ta đã đi qua Zapier — "ông vua" của citizen automation, và Make (Integromat) — công cụ visual workflow mạnh mẽ. Cả hai đều tuyệt vời, nhưng chúng có một điểm chung mà sớm muộn gì bạn cũng sẽ va phải khi làm automation nghiêm túc trong doanh nghiệp Việt Nam: dữ liệu của bạn chạy qua server của họ, và bạn trả tiền theo số lượng tác vụ (task/operation).
Hãy hình dung tình huống này. Bạn làm cho một công ty fintech ở Việt Nam. Mỗi ngày hệ thống xử lý hàng chục nghìn giao dịch, và bạn muốn tự động hóa luồng đối soát — đọc dữ liệu giao dịch, kiểm tra, gửi cảnh báo. Nếu dùng Zapier, mỗi bước xử lý đều tính phí, và quan trọng hơn: dữ liệu khách hàng nhạy cảm (số CMND, số tài khoản, lịch sử giao dịch) sẽ phải đi qua máy chủ của một công ty nước ngoài. Với quy định về bảo vệ dữ liệu cá nhân tại Việt Nam (Nghị định 13/2023/NĐ-CP) và yêu cầu của Ngân hàng Nhà nước, điều này gần như là không thể chấp nhận.
Đây chính là lúc n8n bước vào sân khấu. Bài 15 này dành riêng cho n8n — một nền tảng workflow automation mã nguồn mở mà bạn có thể tự cài đặt trên máy chủ của chính mình. Nó giúp bạn giữ toàn bộ dữ liệu "ở trong nhà", kiểm soát chi phí, và linh hoạt đến mức gần như vô hạn nhờ khả năng viết code khi cần. Đây là công cụ mà ngày càng nhiều đội kỹ thuật ở Việt Nam và Đông Nam Á chọn khi họ vượt qua giai đoạn "no-code đơn giản" và cần một giải pháp vừa mạnh, vừa an toàn, vừa tiết kiệm.
Khái niệm cốt lõi
n8n là gì?
n8n (đọc là "n-eight-n", viết tắt của "nodemation" — node + automation) là một nền tảng tự động hóa quy trình làm việc theo mô hình fair-code, có thể tự host (self-host). Bạn hãy hình dung nó giống như Zapier hoặc Make, nhưng thay vì là một dịch vụ đám mây của bên thứ ba, bạn có thể tải về và chạy nó trên máy chủ của riêng mình — dù là một server vật lý trong văn phòng, một VPS thuê ở Việt Nam, hay container trên Kubernetes.
Mỗi quy trình tự động trong n8n gọi là một workflow, được tạo thành từ các node (nút) nối với nhau. Mỗi node thực hiện một việc: một node lấy dữ liệu từ Google Sheets, một node gọi API, một node gửi email, một node chạy đoạn code JavaScript bạn tự viết. Bạn kéo thả các node lên một canvas trực quan và nối chúng lại bằng các đường dây — dữ liệu chảy từ node này sang node kia.
"Fair-code" — khác gì với open-source thuần túy?
Đây là điểm dễ gây nhầm lẫn nên tôi muốn giải thích kỹ. n8n không phải là phần mềm mã nguồn mở theo nghĩa "tự do tuyệt đối" như giấy phép MIT hay GPL. Nó dùng mô hình fair-code với giấy phép Sustainable Use License. Cụ thể:
- Mã nguồn công khai, bạn xem được, sửa được, đóng góp được.
- Bạn được tự host miễn phí cho mục đích nội bộ của công ty mình, dùng thoải mái không giới hạn số workflow hay số tác vụ.
- Điều bị hạn chế là: bạn không được lấy n8n đóng gói lại rồi bán như một dịch vụ SaaS cạnh tranh với chính n8n.
Self-host — trái tim của n8n
Điểm bán hàng lớn nhất của n8n là khả năng self-host. Khi bạn tự host:
- Dữ liệu nằm trên hạ tầng của bạn (on-premises hoặc VPS của bạn). Không có thông tin nào rời khỏi tầm kiểm soát. Với ngân hàng, bệnh viện, công ty bảo hiểm — những nơi xử lý dữ liệu nhạy cảm — đây là yếu tố quyết định.
- Không giới hạn số lần thực thi. Bạn có thể chạy một triệu workflow một tháng mà không phải trả thêm đồng nào ngoài chi phí server.
- Truy cập tài nguyên nội bộ. n8n chạy trong mạng nội bộ có thể kết nối thẳng tới database, hệ thống ERP, máy chủ file nội bộ — những thứ mà công cụ cloud bên ngoài khó hoặc không thể chạm tới.
Kiến trúc một workflow
Một workflow điển hình gồm:
- Trigger node — node khởi động. Có thể là webhook (khi có HTTP request đến), schedule (chạy theo lịch như cron), hoặc trigger từ app (email mới, dòng mới trong Sheets...).
- Action/Function node — các node xử lý: gọi HTTP, đọc/ghi database, biến đổi dữ liệu, gửi thông báo.
- Logic node — IF (rẽ nhánh điều kiện), Switch (nhiều nhánh), Merge (gộp dữ liệu), Loop (lặp).
- Code node — điểm mạnh đặc trưng. Bạn viết JavaScript (hoặc Python) ngay trong workflow để xử lý logic phức tạp mà node có sẵn không làm được.
So sánh nhanh với Zapier và Make
Để định vị rõ (mà không lấn sang bài của Zapier và Make):
- Zapier: dễ nhất cho người không kỹ thuật, nhiều integration nhất, nhưng đắt và dữ liệu chạy qua cloud của họ.
- Make: visual đẹp, mạnh hơn Zapier về xử lý dữ liệu, vẫn là cloud trả phí theo operation.
- n8n: linh hoạt nhất, self-host được, miễn phí khi tự host, có Code node — nhưng đòi hỏi bạn (hoặc đội của bạn) biết một chút về kỹ thuật để vận hành.
Tình huống thực tế
Tình huống 1: Công ty fintech "VietPay" giữ dữ liệu trong nước
Một startup fintech giả định ở TP.HCM tên VietPay xử lý thanh toán cho các cửa hàng nhỏ. Họ cần tự động hóa luồng đối soát giao dịch hằng đêm: lấy dữ liệu giao dịch từ database PostgreSQL nội bộ, so khớp với báo cáo từ ngân hàng đối tác, phát hiện chênh lệch, và gửi cảnh báo cho đội vận hành qua Telegram.
Ban đầu họ thử Zapier, nhưng vướng ngay hai vấn đề: (1) dữ liệu giao dịch chứa thông tin tài khoản của khách, không được phép đẩy ra cloud nước ngoài theo yêu cầu tuân thủ; (2) với khoảng 40.000 giao dịch/ngày, chi phí Zapier sẽ vọt lên hàng nghìn USD/tháng.
Họ chuyển sang n8n self-host trên một VPS đặt tại data center ở Việt Nam. Workflow gồm: một Schedule trigger chạy lúc 1 giờ sáng → node Postgres đọc giao dịch trong ngày → node HTTP Request lấy báo cáo từ API ngân hàng → một Code node viết bằng JavaScript so khớp hai tập dữ liệu và lọc ra các giao dịch lệch → node IF kiểm tra "có lệch hay không" → node Telegram gửi danh sách chênh lệch cho nhóm vận hành.
Bài học rút ra: Khi bạn vừa có ràng buộc tuân thủ dữ liệu, vừa có khối lượng xử lý lớn, self-host n8n giải quyết cả hai cùng lúc. Chi phí cố định (vài chục USD/tháng cho VPS) thay vì chi phí biến thiên tăng theo số giao dịch.
Tình huống 2: Agency marketing "Sao Việt" tự động hóa báo cáo khách hàng
Một agency marketing tại Hà Nội quản lý hơn 30 tài khoản quảng cáo Facebook và Google cho khách hàng. Mỗi sáng thứ Hai, các bạn account phải vào từng nền tảng, copy số liệu, dán vào Google Sheets, rồi soạn email báo cáo. Mất khoảng 6 tiếng nhân sự mỗi tuần.
Họ dựng một workflow n8n (dùng bản n8n Cloud vì đội không có người chuyên IT): Schedule trigger chạy sáng thứ Hai → nhiều node HTTP Request gọi API Facebook Marketing và Google Ads lấy số liệu tuần → Code node tính toán các chỉ số (CTR, CPC, ROAS) và định dạng → node Google Sheets ghi vào bảng → node Gmail gửi email tóm tắt kèm link bảng cho từng khách hàng. Một node Loop lặp qua danh sách 30 khách hàng.
Kết quả: việc 6 tiếng/tuần giảm còn vài phút kiểm tra. Quan trọng là họ làm được nhờ Code node tự xử lý số liệu — điều mà nếu dùng công cụ no-code thuần sẽ phải mua thêm tiện ích hoặc bó tay.
Bài học rút ra: n8n không bắt buộc phải self-host. Đội nhỏ không có IT vẫn dùng được bản Cloud, và sức mạnh thực sự đến từ khả năng viết code để xử lý logic riêng mà các tool no-code khác giới hạn.
Tình huống 3: Trường học EdTech tích hợp hệ thống "cây nhà lá vườn"
Một công ty EdTech ở Đà Nẵng có một LMS (hệ thống quản lý học tập) tự xây, một CRM dùng phần mềm trong nước, và Zalo OA để chăm sóc học viên. Vấn đề: ba hệ thống này không "nói chuyện" với nhau. Khi học viên đăng ký khóa học trên LMS, đội tư vấn không biết để theo dõi trên CRM, và học viên cũng không nhận được tin nhắn chào mừng qua Zalo.
Họ dùng n8n làm "chất keo" kết nối. Vì LMS và CRM tự xây không có sẵn trên Zapier, n8n là lựa chọn hợp lý: workflow bắt đầu bằng Webhook trigger (LMS gọi đến mỗi khi có đăng ký mới) → Code node chuẩn hóa dữ liệu học viên → node HTTP Request đẩy bản ghi vào CRM qua API → node HTTP Request thứ hai gọi Zalo OA API gửi tin nhắn chào mừng. Toàn bộ chạy trên server của họ, nơi đã có sẵn LMS và CRM nên kết nối nội bộ rất nhanh.
Bài học rút ra: Sức mạnh lớn nhất của n8n là tích hợp với các hệ thống "lạ" không có sẵn connector. Webhook + HTTP Request + Code node cho phép bạn nối gần như bất cứ thứ gì có API — kể cả phần mềm nội địa hay hệ thống tự phát triển.
Hướng dẫn từng bước
Hãy dựng một workflow đầu tiên: khi có form đăng ký mới gửi đến, lưu vào Google Sheets và gửi thông báo Telegram.
Bước 1 — Cài đặt n8n. Cách nhanh nhất để thử là dùng Docker. Trên một máy có Docker, chạy:
docker volume create n8n_data
docker run -it --rm --name n8n -p 5678:5678 \
-v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
Sau đó mở trình duyệt vào http://localhost:5678, tạo tài khoản chủ (owner) đầu tiên. Nếu không muốn tự cài, bạn có thể đăng ký bản n8n Cloud để làm quen trước.
Bước 2 — Tạo workflow mới. Bấm "Add workflow". Bạn sẽ thấy một canvas trống.
Bước 3 — Thêm Trigger node. Bấm "Add first step", chọn Webhook. n8n sẽ tạo cho bạn một URL test. Đây là điểm form của bạn sẽ gửi dữ liệu đến.
Bước 4 — Thêm node Google Sheets. Nối tiếp sau Webhook. Chọn thao tác "Append row". Bạn cần thiết lập credential (kết nối tài khoản Google qua OAuth) một lần. Map các trường: lấy name, email, phone từ dữ liệu webhook gửi vào (n8n cho bạn kéo thả biến từ node trước).
Bước 5 — Thêm node Telegram. Nối tiếp. Chọn "Send message". Thiết lập credential bằng Bot Token (tạo bot qua @BotFather trên Telegram). Soạn nội dung tin nhắn, chèn biến tên người đăng ký vào.
Bước 6 — Test thử. Bấm "Listen for test event" ở node Webhook, rồi gửi một request thử (dùng Postman hoặc curl) tới URL test với dữ liệu mẫu. Quan sát dữ liệu chảy qua từng node — n8n hiển thị output từng bước, rất tiện để gỡ lỗi.
Bước 7 — Kích hoạt (Activate). Khi đã chạy đúng, gạt nút "Active" ở góc trên. n8n sẽ chuyển webhook từ URL test sang URL production. Từ giờ workflow chạy tự động mỗi khi có request đến.
Lỗi thường gặp & mẹo
Lỗi 1 — Quên đổi từ webhook test sang production. Người mới hay test thành công rồi tưởng đã xong, nhưng URL test chỉ hoạt động khi bạn bấm "Listen". Phải Activate workflow thì URL production mới sống. Luôn dùng đúng URL production khi tích hợp thật.
Lỗi 2 — Không xử lý lỗi (error handling). Mặc định, nếu một node lỗi, workflow dừng và bạn có thể không biết. Hãy tạo một Error Workflow riêng (n8n có cài đặt này) để khi bất kỳ workflow nào lỗi, nó tự gửi cảnh báo cho bạn. Với automation chạy nền, không có cảnh báo lỗi là thảm họa âm thầm.
Lỗi 3 — Self-host mà không backup. Khi tự host, toàn bộ workflow và credential nằm trong database của n8n (mặc định là SQLite, nên đổi sang PostgreSQL cho production). Nếu server hỏng mà không backup, bạn mất sạch. Hãy backup database định kỳ và lưu credential cẩn thận.
Lỗi 4 — Để lộ credential trong Code node. Đừng hard-code API key, mật khẩu trực tiếp trong Code node. Dùng tính năng Credentials của n8n để lưu thông tin nhạy cảm — chúng được mã hóa, và bạn tham chiếu chứ không viết thẳng ra.
Mẹo 1 — Dùng "Pin data" khi phát triển. Khi xây workflow, bạn có thể ghim (pin) dữ liệu output của một node để khỏi phải gọi API thật mỗi lần test. Tiết kiệm thời gian và tránh tốn quota API.
Mẹo 2 — Tận dụng cộng đồng template. n8n có thư viện hàng nghìn workflow mẫu chia sẻ công khai. Trước khi tự dựng từ đầu, hãy tìm template gần giống rồi sửa lại — nhanh hơn rất nhiều.
Mẹo 3 — Với production, dùng queue mode. Khi khối lượng lớn, cấu hình n8n chạy ở chế độ queue với Redis và nhiều worker để xử lý song song, tránh nghẽn.
Bài tập thực hành
- Cài đặt và làm quen. Dùng Docker hoặc n8n Cloud dựng một instance n8n. Tạo một workflow đơn giản: Schedule trigger chạy mỗi giờ → node HTTP Request gọi một API thời tiết miễn phí → in kết quả ra. Mục tiêu: hiểu cách dữ liệu chảy giữa các node.
- Workflow tích hợp thực tế. Dựng workflow theo phần Hướng dẫn từng bước: nhận webhook đăng ký → ghi vào Google Sheets → gửi Telegram. Thử gửi 3 request mẫu và kiểm tra cả Sheets lẫn Telegram đều nhận đúng.
- Dùng Code node. Thêm một Code node vào giữa workflow ở bài 2, viết JavaScript để: chuẩn hóa số điện thoại về dạng +84, viết hoa chữ cái đầu của tên, và thêm trường
registered_atlà thời điểm hiện tại. Quan sát output thay đổi.
- Suy nghĩ chiến lược. Viết một đoạn ngắn (150–200 từ): trong công ty hoặc dự án của bạn, có một quy trình nào đang làm thủ công mà n8n self-host sẽ phù hợp hơn Zapier/Make? Nêu rõ lý do — vì dữ liệu nhạy cảm, vì chi phí, hay vì cần tích hợp hệ thống nội bộ?
Tóm tắt
n8n là nền tảng workflow automation mã nguồn mở, mô hình fair-code, có thể tự host, định vị như một lựa chọn thay thế Zapier và Make cho những ai cần kiểm soát dữ liệu và chi phí. Ba điểm cốt lõi cần nhớ:
- Self-host = dữ liệu ở trong nhà. Đây là lý do n8n đặc biệt phù hợp với ngân hàng, fintech, y tế, bảo hiểm tại Việt Nam — nơi tuân thủ dữ liệu là bắt buộc, và với các đội cần xử lý khối lượng lớn mà không muốn trả phí theo task.
- Code node = linh hoạt gần như vô hạn. Khi node có sẵn không đủ, bạn viết JavaScript hoặc Python ngay trong workflow. Đây là tính chất low-code phân biệt n8n với các tool no-code thuần.
- Webhook + HTTP Request = nối được mọi thứ có API, kể cả phần mềm nội địa và hệ thống tự xây không có sẵn connector.