Giới thiệu

n8n (phát âm "n-eight-n" hoặc đơn giản là "nodemation") là một công cụ tự động hóa quy trình làm việc nguồn mở cho phép kết nối các dịch vụ và API khác nhau với nhau bằng một trình chỉnh sửa trực quan dựa trên nút. Thay vì viết mã gắn cứng, bạn kéo các nút lên canvas, cấu hình chúng và vẽ kết nối để xác định luồng dữ liệu từ bước này sang bước tiếp theo.

n8n khác biệt với các công cụ như Zapier hay Make ở một điểm lớn: nó có sẵn nguồn và có thể tự lưu trữ. Bạn có thể chạy nó trên máy chủ của riêng bạn, có nghĩa là dữ liệu của bạn sẽ không rời khỏi cơ sở hạ tầng của bạn và không có mức giá theo tác vụ. Giao dịch là bạn chịu trách nhiệm tự lưu trữ và quản trị nó, mặc dù n8n cũng cung cấp một tùy chọn đám mây được lưu trữ nếu bạn thích không quản lý hạ tầng.

sơ đồ luồng so sánh n8n tự-host, n8n Cloud và Zapier/Make cho thấy nơi dữ liệu được lưu trữ và ai quản lý máy chủ

Bên trong, mọi luồng công việc của n8n về cơ bản chỉ là JSON. Trình chỉnh sửa trực quan là một lớp thân thiện ở trên JSON đó, và đó là lý do tại sao n8n rất thân thiện với các nhà phát triển muốn xem bên dưới.

Điều hướng Trình chỉnh sửa trực quan

Khi bạn mở n8n, các khu vực chính bạn sẽ tương tác là:

- Canvas ở giữa, nơi bạn xây dựng luồng công việc bằng cách thêm và kết nối các nút. - Thanh bên trái với bảng công cụ nút, được tổ chức thành các danh mục như nút kích hoạt (trigger), nút ứng dụng hành động thông thường, và các nút trợ giúp (như Code, IF, Set, Merge). - Thanh công cụ trên cùng với các tùy chọn để lưu, chạy, kích hoạt và chia sẻ luồng công việc. - Bảng nút ở phía bên phải mở ra khi bạn nhấp vào một nút, nơi bạn cấu hình các tham số và thông tin xác thực của nó.

Một luồng công việc luôn bắt đầu với một nút kích hoạt — thứ kích hoạt quá trình thực thi khi một sự kiện xảy ra (ví dụ một webhook nhận một yêu cầu HTTP, một lịch trình kích hoạt vào một thời điểm cron, hoặc một hàng mới xuất hiện trong một cơ sở dữ liệu).

bash
# Quick install via npm (requires Node.js 18+)
npx n8n
# Or with Docker
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n

Sau bất kỳ lệnh nào, mở http://localhost:5678 trong trình duyệt của bạn và bạn sẽ thấy trình chỉnh sửa.

Cấu trúc của một Node

Mỗi node đại diện cho một hành động duy nhất: lấy dữ liệu, biến đổi dữ liệu, gọi một API, phân nhánh theo điều kiện, và còn nhiều thứ nữa. Hầu hết các node có ba tab:

- Parameters: các inputs bạn cấu hình (URL, chuỗi truy vấn, ánh xạ trường). - Settings: các tùy chọn ở cấp node như hành vi retry, xử lý lỗi và liệu có tiếp tục khi gặp lỗi hay không. - Documentation: một tham chiếu ngắn trích từ tài liệu của node để bạn không cần rời khỏi canvas.

Dữ liệu luân chuyển giữa các node thông qua sợi dây bạn vẽ. Theo mặc định, đây là output chính và hình dạng dữ liệu được tạo ra là cùng một đối tượng JSON bạn sẽ nhận được nếu bạn gọi trực tiếp API underlying. Bạn có thể đổi tên một node, thêm chú thích cho nó và vô hiệu hóa nó mà không xóa nó, điều này rất hữu ích khi gỡ lỗi một workflow.

json
{
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "my-webhook"
},
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [240, 300]
}
],
"connections": {}
}

Đoạn mã ở trên là JSON cho một node Webhook trigger duy nhất được xuất từ n8n. Hãy lưu ý mức độ dễ đọc của nó — phương thức HTTP, đường dẫn, và vị trí của node trên canvas đều là các thuộc tính JSON thuần túy. Điều này cho phép các workflow được kiểm soát phiên bản và được tạo ra bằng chương trình.

Executions Panel and Debugging

Một khi workflow của bạn được lưu, nhấp vào "Execute workflow" (hoặc "Execute node" trên một node đơn) để chạy nó. n8n ghi lại mỗi lần chạy trong panel Executions. Nhấp vào một lần chạy đã có để xem xét dữ liệu đầu vào và đầu ra ở từng bước của mỗi node, đây là cách nhanh nhất để gỡ lỗi một workflow bị lỗi.

sơ đồ luồng dữ liệu qua 4 node từ trigger đến output, mỗi node hiển thị input/output JSON

Nếu một node gặp lỗi, quá trình thực thi được đánh dấu là "error" và panel cho bạn biết node nào đã ném lỗi, thông điệp lỗi là gì và dữ liệu mà node đó đã nhận được. Một sai lầm sớm phổ biến là cho rằng dữ liệu tồn tại ở một node khi nó không — hãy luôn mở mục thực thi và xem JSON thực tế ở từng bước trước khi cho rằng.

Hai panel khác cần biết: tab Credentials (nơi bạn lưu API keys một lần và tham chiếu chúng trong nhiều node) và tab Variables (để lưu trữ các giá trị có thể tái sử dụng như URL hoặc tên môi trường mà không cần gán cứng vào từng node).

Tóm tắt

n8n cung cấp cho bạn một trình chỉnh sửa trực quan để xây dựng luồng dữ liệu kết nối các API, cơ sở dữ liệu và logic tùy chỉnh, mà không từ bỏ khả năng nhúng vào mã, quản lý phiên bản JSON, hoặc tự-host. Các khu vực chính để làm quen là khung vẽ (canvas), bảng chọn node, bảng cấu hình per-node, và bảng Thực thi được dùng để gỡ lỗi. Mọi workflow bắt đầu với một node kích hoạt, và dữ liệu của mỗi node là JSON thuần túy mà bạn có thể inspect tại bất kỳ thời điểm nào trong quá trình chạy.

Bài kiểm tra cuối bài

1. What is the main architectural difference between n8n and tools like Zapier or Make?

2. Which port does n8n use by default when started with the npx or Docker command shown in the lesson?

3. What type of node must every n8n workflow start with?

4. Khi bạn nhấp một nút trong trình chỉnh sửa, ba tab nào mà hầu hết các nút hiển thị?

5. Ở đâu trong n8n bạn kiểm tra dữ liệu JSON đầu vào và đầu ra của mỗi nút từ một lần chạy trước để gỡ lỗi workflow?

6. Đúng hay sai: một workflow trong n8n cơ bản chỉ là JSON ở bên dưới, đó là lý do nó có thể được xuất, nhập và kiểm soát phiên bản.

7. Làm thế nào tab nào trong n8n cho phép bạn lưu một khóa API một lần và tái sử dụng nó cho nhiều nút thay vì dán vào mỗi nút?

8. Một sai lầm phổ biến đầu tiên khi gỡ lỗi workflow theo bài học là gì?