N8n là gì? Hướng dẫn Mở rộng Workflow tự động hoá tiện lợi với n8n
Bạn có thường xuyên phải đối mặt với việc rảnh tay hóa các tác vụ lặp đi lặp lại như đồng bộ kiến thức e-commerce, nâng cấp tỷ giá USD, giá Bitcoin hàng ngày, hay giải quyết webhook giữa các API khác nhau?
Là developers, chúng ta thường phải viết hàng trăm dòng code để giải quyết các vấn đề tích hợp rắc rối. Đây chính là lúc n8n – một cơ bản workflow automation mã nguồn mở – trở thành “trợ thủ” đắc lực. Với triết lý “developer-first”, n8n vps hỗ trợ native JavaScript/TypeScript, cho phép phát triển qua custom nodes và triển khai self-hosted để bạn toàn quyền kiểm soát kiến thức.
Bài chia sẻ này sẽ hướng dẫn bạn cách triển khai n8n với Docker, tạo một workflow giám sát GitHub commits và phát triển custom nodes để cải thiện hóa trình tự.
1. n8n là gì?
n8n là một nền tảng automation mã nguồn mở, giúp developers liên hệ các ứng dụng, dịch vụ và API một cách trực quan mà không cần viết quá nhiều code.
Những đặc ưu điểm khiến n8n được giới developer ưa chuộng:
-
Mã nguồn mở: Công khai trên GitHub, đơn giản kiểm tra, tùy chỉnh và đóng góp.
-
Self-hosted: Cho phép deploy trực tiếp trên hạ tầng cá nhân/đơn vị, cam kết bảo mật thông tin tuyệt đối.
-
Khả năng phát triển: Tiện lợi tạo custom nodes để tích hợp các dịch vụ ngách chưa có sẵn.
-
Tốc độ xử lý của JavaScript/TypeScript: Viết node functions trực tiếp bằng JS/TS, vô cùng đơn giản cho coder.
-
Expression Support: Khắc phục thông tin dễ thay đổi ngay trong workflow bằng các biểu thức JavaScript.
-
Tích hợp Automation AI: Tư vấn nhúng chatbot và đối chiếu thông tin thông minh để tự động hóa việc ra quyết định.
2. Hướng dẫn cài đặt n8n với Docker
Sử dụng Docker là cách làm tốc độ và sạch sẽ nhất để chạy n8n.
2.1. Tạo file cấu hình
Tạo một file docker-compose.yml tại thư mục làm việc của bạn với nội dung sau:
YAML
version: '3'
services:
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
environment:
- N8N_PORT=5678
- N8N_PROTOCOL=http
- NODE_ENV=production
- WEBHOOK_URL=http://localhost:5678/
volumes:
- ~/.n8n:/home/node/.n8n
Coupon VPS giảm 12% Điều kiện: Tất cả VPS từ 6 tháng đến 12 tháng Đã xác thực hôm nay

2.2. Khởi động hệ thống
Mở terminal và chạy lệnh khởi tạo container ở chế độ background:
Bash
docker-compose up -d
Sau khi tiến trình hoàn tất, bạn có thể truy cập giao diện n8n tại: http://localhost:5678
2.3. Cấu hình cho môi trường Production
Khi đưa lên production, tính an toàn và ổn định cần được ưu tiên. Bạn hãy bổ sung các biến môi trường sau vào file docker-compose.yml:
YAML
environment:
- N8N_ENCRYPTION_KEY=your-secure-encryption-key
- WEBHOOK_URL=https://your-domain.com/
- N8N_EMAIL_MODE=smtp
- N8N_SMTP_HOST=smtp.example.com
- N8N_SMTP_PORT=587
- N8N_SMTP_USER=your-smtp-user
- N8N_SMTP_PASS=your-smtp-password
3. Hướng dẫn xây dựng Workflow đơn giản
Hãy cùng áp dụng với một workflow thực tế: Rảnh tay kiểm tra GitHub repository và gửi thông báo qua Slack khi có commit mới.
3.1. Thiết lập Trigger (GitHub)
-
Truy cập giao diện n8n, chọn Workflows -> New và đặt tên là “GitHub Commit Monitor”.
-
Thêm node GitHub, cấu hình Personal Access Token.
-
Cài đặt Operation là Watch Repository, nhập tên Repo (ví dụ:
n8n-io/n8n). -
Chọn Properties là Commits và đặt Polling Interval (ví dụ: 15 phút).
3.2. Lọc thông tin (Filter)
Thêm node Filter ngay sau GitHub node để chỉ lấy các commit mới trong 24h qua. Chọn Mode Filter by Formula và nhập:
JavaScript
{{$json["commit"]["author"]["date"] > $now.minus({days: 1}).toISOString()}}
3.3. Định dạng thông tin (Function)
Thêm node Function để trích xuất các kiến thức thiết yếu cần gửi đi:
JavaScript
return items.map(item => {
const commit = item.commit;
const repo = item.repository;
return {
json: {
commitInfo: {
message: commit.message,
author: commit.author.name,
date: commit.author.date,
url: item.html_url,
repo: `${repo.owner.login}/${repo.name}`
}
}
};
});
3.4. Gửi thông báo (Slack)
Thêm node Slack, trao đổi tài khoản và thiết lập gửi tin nhắn. Thực hành Expression sau để định dạng nội dung hiển thị trên Slack:
Plaintext
New commit in {{$json["commitInfo"]["repo"]}} by {{$json["commitInfo"]["author"]}}:
*{{$json["commitInfo"]["message"]}}*
🔗 <{{$json["commitInfo"]["url"]}}|View on GitHub>
4. Mở rộng với Custom Node dành cho Developer
Nếu API bạn cần chưa có sẵn trên n8n, bạn hoàn toàn có thể tự build node riêng.
4.1. Chuẩn bị môi trường
Bash
git clone https://github.com/n8n-io/n8n.git
cd n8n
npm install
npm run bootstrap
npm run build
4.2. Khởi tạo Node logic
Tạo file cấu trúc node tại packages/nodes-base/nodes/YourNodeName/YourNodeName.node.ts:
JavaScript
import { IExecuteFunctions } from 'n8n-core';
import { INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
export class YourNodeName implements INodeType {
description: INodeTypeDescription = {
displayName: 'Your Node Name',
name: 'yourNodeName',
group: ['transform'],
version: 1,
description: 'Basic description of your node',
defaults: { name: 'Your Node Name' },
inputs: ['main'],
outputs: ['main'],
properties: [
{
displayName: 'Operation',
name: 'operation',
type: 'options',
options: [{ name: 'Example Operation', value: 'example' }],
default: 'example',
},
],
};
async execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
const items = this.getInputData();
const returnData: INodeExecutionData[] = [];
for (let i = 0; i < items.length; i++) {
returnData.push({
json: { ...items[i].json, processedByCustomNode: true }
});
}
return [returnData];
}
}
5. Best Practices khi làm việc với n8n
Để đảm bảo workflow hoạt động trơn tru và đẳng cấp, hãy áp dụng các tiêu chuẩn sau:
| Hạng mục cải thiện | Tiện nghi đề xuất |
| Khắc phục lỗi (Error Handling) | Dùng node Error Trigger kết nối với Slack/Email. Thực hành Try/Catch bên trong các Function nodes. |
| Bảo mật (Credentials) | Dùng biến môi trường (ví dụ: ${MY_API_KEY}) thay vì hardcode. Gọi trong workflow bằng {{$env.MY_API_KEY}}. |
| Hiệu năng (Performance) | Dùng node Split In Batches khi giải quyết lượng lớn dữ liệu. Đổi sang database PostgreSQL khi chạy Production. |
| Quản lý phiên bản (Backup) | Bảo quản workflow dưới dạng JSON vào Git. Cấu hình backup định kỳ cho database n8n. |
6. Kết luận
n8n là một tiện ích cực kỳ vượt trội, giúp giải phóng developer khỏi những đoạn code tích hợp nhàm chán để tập trung vào logic nghiệp vụ cốt lõi. Sự kết hợp xuất sắc giữa tính dễ dùng của thiết kế kéo-thả và sức mạnh linh hoạt sâu bằng code JS/TS biến n8n thành nền tảng automation hàng đầu hiện nay. Bắt đầu với một vài workflow nhỏ, bạn sẽ nhanh chóng nhận ra lượng thời gian khổng lồ mà tính năng này tối ưu chi phí được cho dự án của mình.






