❤️ AZDIGI chính thức cập nhật hệ thống blog mới hoàn chỉnh. Tuy nhiên có thể một số bài viết bị sai lệch hình ảnh, hãy ấn nút Báo cáo bài viết ở cuối bài để AZDIGI cập nhật trong thời gian nhanh nhất. Chân thành cám ơn.
Nếu bạn đang dùng Zapier hay Make để tự động hóa công việc, chắc hẳn đã từng nghĩ: “Giá mà mình tự host được cái này trên server riêng”. Tin vui là có n8n, một nền tảng workflow automation mã nguồn mở, chạy được trên VPS của bạn. Kết hợp thêm Ollama để chạy AI model local, bạn có nguyên một hệ thống AI automation mà không phụ thuộc bất kỳ dịch vụ bên ngoài nào.
Trong bài này, mình sẽ hướng dẫn cài đặt n8n + Ollama bằng Docker Compose, rồi xây dựng một vài workflow thực tế để bạn thấy combo này mạnh cỡ nào.
n8n và Ollama là gì?
n8n (đọc là “n-eight-n”) là nền tảng workflow automation tương tự Zapier, nhưng self-hosted và mã nguồn mở. Bạn kéo thả các node để tạo workflow: nhận webhook, đọc email, gọi API, xử lý dữ liệu, gửi thông báo… Gần như mọi thứ Zapier làm được thì n8n cũng làm được, mà chạy trên server riêng nên không lo giới hạn số task hay phải trả phí theo lượt.
Ollama thì chắc nhiều bạn đã biết từ các bài trước trong series. Nó cho phép chạy các LLM (Llama, Mistral, Gemma, Qwen…) ngay trên máy local hoặc VPS, expose qua API tương thích OpenAI.
Ghép hai thứ này lại: n8n xử lý logic workflow, Ollama xử lý phần AI. Toàn bộ chạy trên VPS riêng, dữ liệu không đi đâu cả.
Cài đặt n8n + Ollama bằng Docker Compose
Cách đơn giản nhất là chạy cả hai trong Docker. Tạo file docker-compose.yml với nội dung sau:
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- N8N_SECURE_COOKIE=false
- GENERIC_TIMEZONE=Asia/Ho_Chi_Minh
volumes:
- n8n_data:/home/node/.n8n
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: unless-stopped
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
volumes:
n8n_data:
ollama_data:
Khởi chạy:
docker compose up -d
# Pull model cho Ollama
docker exec ollama ollama pull llama3.2
docker exec ollama ollama pull qwen2.5:7b
Sau khi chạy xong, truy cập http://IP-VPS:5678 để vào giao diện n8n. Lần đầu nó sẽ yêu cầu tạo tài khoản admin.
Nếu VPS có GPU, bạn thêm phần deploy với runtime: nvidia vào service ollama để tận dụng GPU acceleration. Xem lại bài về Ollama trong series để biết chi tiết.
Kết nối n8n với Ollama
Có hai cách để n8n giao tiếp với Ollama:
Cách 1: HTTP Request node – Gọi thẳng Ollama API. Linh hoạt, kiểm soát được mọi thứ. Phù hợp khi bạn muốn tùy chỉnh request body chi tiết.
Cách 2: AI nodes built-in – Từ phiên bản 1.x trở đi, n8n có sẵn các node AI như LLM Chain, AI Agent, Chat Model… Chỉ cần chọn Ollama làm model provider, nhập URL và chọn model. Cách này nhanh hơn và tích hợp sâu hơn với hệ sinh thái AI của n8n.
Vì cả hai container chạy cùng Docker network, n8n gọi Ollama qua URL http://ollama:11434 (tên container thay cho localhost). Đây là điểm hay khi dùng Docker Compose: các service tự tìm thấy nhau qua tên.
Để thiết lập credential cho Ollama trong n8n: vào Settings → Credentials → Add Credential → Ollama, nhập Base URL là http://ollama:11434. Sau đó các AI node có thể dùng credential này.
Workflow 1: Webhook tóm tắt văn bản
Workflow đầu tiên đơn giản nhất: nhận text qua webhook, gửi cho Ollama tóm tắt, trả kết quả về.
Các node cần dùng:
- Webhook – Nhận POST request với body chứa
text - HTTP Request – Gọi Ollama API
- Respond to Webhook – Trả kết quả
Cấu hình node HTTP Request gọi tới Ollama:
{
"method": "POST",
"url": "http://ollama:11434/api/generate",
"body": {
"model": "llama3.2",
"prompt": "Tóm tắt nội dung sau trong 3 câu ngắn gọn, trả lời bằng tiếng Việt:\n\n{{ $json.body.text }}",
"stream": false
}
}
Test thử bằng curl:
curl -X POST http://IP-VPS:5678/webhook/summarize \
-H "Content-Type: application/json" \
-d '{"text": "Nội dung dài cần tóm tắt ở đây..."}'
Vậy là bạn đã có một API tóm tắt văn bản riêng, chạy trên server của mình. Có thể tích hợp vào bất kỳ ứng dụng nào cần gọi API.
Workflow 2: Tự động tóm tắt RSS và gửi Telegram
Workflow này chạy tự động mỗi ngày: đọc RSS feed, lấy bài mới, nhờ AI tóm tắt rồi gửi qua Telegram.
Các node:
- Schedule Trigger – Chạy mỗi sáng lúc 8h
- RSS Feed Read – Đọc feed từ URL (ví dụ: blog công nghệ, tin tức)
- Limit – Giới hạn lấy 5 bài mới nhất (tránh quá tải)
- HTTP Request – Gửi tiêu đề + mô tả từng bài cho Ollama tóm tắt
- Telegram – Gửi bản tóm tắt vào group hoặc chat cá nhân
Prompt gửi cho Ollama kiểu như:
Tóm tắt bài viết sau trong 2-3 câu. Giữ nguyên các thuật ngữ kỹ thuật.
Tiêu đề: {{ $json.title }}
Nội dung: {{ $json.contentSnippet }}
Message gửi Telegram có thể format dạng:
📰 *{{ $json.title }}*
{{ $json.summary }}
🔗 {{ $json.link }}
Mỗi sáng thức dậy bạn đã có bản tóm tắt tin tức gọn gàng trong Telegram, không cần mở từng trang web đọc. Hoàn toàn tự động, hoàn toàn chạy trên server riêng.
Workflow 3: Phân loại form submission bằng AI
Giả sử bạn có form liên hệ trên website. Thay vì mọi submission đều chảy vào một inbox, dùng AI để phân loại và route tới đúng team.
Các node:
- Webhook – Nhận form data (tên, email, nội dung)
- HTTP Request – Gửi nội dung cho Ollama phân loại
- Switch – Route dựa trên kết quả phân loại
- Nhiều nhánh – Gửi email/Slack/Telegram tới team tương ứng
Prompt phân loại:
Phân loại yêu cầu khách hàng sau vào MỘT trong các category:
- sales (hỏi giá, mua hàng, báo giá)
- support (lỗi, hỗ trợ kỹ thuật, không hoạt động)
- partnership (hợp tác, đối tác, liên kết)
- other (không thuộc các loại trên)
Chỉ trả lời đúng 1 từ: sales, support, partnership, hoặc other.
Nội dung: {{ $json.body.message }}
Node Switch sẽ kiểm tra output của Ollama. Nếu là “sales” thì gửi Slack cho team sales, “support” thì tạo ticket trên hệ thống, “partnership” thì forward email cho sếp. Đơn giản mà hiệu quả.
Khi dùng AI để phân loại, prompt nên yêu cầu trả lời đúng format cố định (1 từ duy nhất). Tránh để model trả lời dài dòng vì sẽ khó parse trong các node tiếp theo.
AI Agent nodes trong n8n
Ngoài cách gọi API thủ công qua HTTP Request, n8n có hẳn một bộ node dành riêng cho AI, thiết kế theo kiến trúc LangChain:
- Chat Model (Ollama) – Kết nối tới Ollama server, chọn model. Đây là node nền tảng, các node khác sẽ dùng nó để gọi LLM.
- Basic LLM Chain – Gửi prompt, nhận response. Tương tự HTTP Request nhưng gọn hơn, có sẵn template variables và output parsing.
- AI Agent – Node mạnh nhất. Agent có thể sử dụng tools (gọi API, đọc database, search web…) để tự quyết định cách xử lý task. Bạn định nghĩa tools, agent tự chọn tool phù hợp.
- Window Buffer Memory – Lưu lịch sử hội thoại để agent nhớ context. Hữu ích khi xây chatbot hoặc workflow cần nhiều bước trao đổi.
Ví dụ thực tế: bạn có thể tạo một AI Agent nhận yêu cầu từ Telegram, agent tự quyết định cần search Google, đọc database hay gọi API nào đó, rồi trả kết quả. Tất cả cấu hình bằng kéo thả, không cần viết code.
Cách dùng: kéo node AI Agent vào canvas, gắn Chat Model (Ollama) vào slot model, thêm các Tool node (HTTP Request Tool, Code Tool…) vào slot tools. Agent sẽ tự biết khi nào cần gọi tool nào dựa trên prompt của bạn.
Tips khi chạy n8n + Ollama
Error handling
Ollama chạy local nên thỉnh thoảng model load chậm hoặc timeout, đặc biệt lần đầu gọi sau khi restart. Cách xử lý:
- Bật Retry On Fail trên node HTTP Request: set retry 2-3 lần, wait 5 giây giữa mỗi lần.
- Thêm Error Trigger workflow riêng để nhận thông báo khi có lỗi (gửi Telegram hoặc email).
- Set timeout cho HTTP Request node cao hơn mặc định (ít nhất 60 giây, model lớn có thể cần 120 giây).
Output parsing
LLM không phải lúc nào cũng trả output đúng format bạn muốn. Vài mẹo:
- Yêu cầu model trả JSON và dùng node JSON Parse để xử lý. Prompt rõ ràng kiểu: “Trả lời dưới dạng JSON với format: {\”category\”: \”…\”, \”confidence\”: 0.9}”
- Dùng node Code (JavaScript) để clean output: trim whitespace, lowercase, loại bỏ ký tự thừa.
- Với các model nhỏ (7B), prompt cần càng cụ thể càng tốt. Cho ví dụ trong prompt (few-shot) sẽ giúp model trả lời đúng format hơn.
Hiệu năng
- Nếu workflow xử lý nhiều item (như đọc RSS 20 bài), đừng gửi hết cùng lúc cho Ollama. Dùng node Loop Over Items hoặc SplitInBatches để xử lý từng batch.
- Model nhỏ (Qwen 2.5 7B, Llama 3.2 3B) đủ tốt cho các task phân loại và tóm tắt ngắn. Không cần kéo model 70B cho mọi thứ.
- Giữ Ollama chạy liên tục thay vì start/stop theo workflow. Lần gọi đầu tiên sau khi load model sẽ chậm, các lần sau nhanh hơn nhiều vì model đã nằm trong RAM.
Tổng kết
n8n + Ollama là combo khá lý tưởng cho ai muốn tự động hóa công việc với AI mà giữ mọi thứ trên server riêng. n8n lo phần orchestration (trigger, logic, kết nối các dịch vụ), Ollama lo phần AI (sinh text, phân loại, tóm tắt). Cả hai đều mã nguồn mở, chạy bằng Docker, không tốn phí subscription.
Ngoài 3 workflow ở trên, bạn còn có thể thử:
- Email triage – Đọc email mới, AI phân loại urgent/normal/spam, gửi thông báo cho email quan trọng.
- Content repurposing – Nhận bài blog dài, AI tạo bản tóm tắt cho Twitter, LinkedIn, newsletter.
- Database enrichment – Đọc danh sách khách hàng, AI phân tích và bổ sung tags/categories tự động.
- Chatbot nội bộ – Dùng AI Agent node tạo chatbot trả lời câu hỏi dựa trên tài liệu công ty.
Bạn có VPS, có Docker, có thời gian cuối tuần? Setup thử đi, mình nghĩ bạn sẽ ngạc nhiên với những gì combo này làm được.
Có thể bạn cần xem thêm
- n8n + AI: Xây dựng Workflow tự động với ChatGPT và LLMs
- Cài đặt Dify AI trên VPS - No-code AI platform miễn phí
- Cài đặt Ollama trên VPS Ubuntu - Chạy AI riêng trong 15 phút
- Reverse Proxy Ollama với Nginx - Truy cập AI qua domain riêng với HTTPS
- Ollama API - Tích hợp AI self-hosted vào ứng dụng web
- Top 10 ý tưởng workflow n8n cho doanh nghiệp Việt Nam
Về tác giả
Trần Thắng
Chuyên gia tại AZDIGI với nhiều năm kinh nghiệm trong lĩnh vực web hosting và quản trị hệ thống.