Ollama là gì và giải quyết được nỗi đau nào
Ollama là công cụ mã nguồn mở cho phép bạn tải và chạy các mô hình ngôn ngữ lớn (LLM) — kiểu như Llama 3.2, Mistral, Phi-3, Gemma 2, DeepSeek — ngay trên phần cứng của mình. Không cần tài khoản, không cần gửi dữ liệu lên server của ai cả. Nói cách khác, nó là "ChatGPT chạy tại nhà", chỉ khác là bạn tự trả tiền điện thay vì trả phí theo token.
Cái đau mà Ollama giải quyết khá rõ: bạn muốn dùng AI để hỏi đáp, tóm tắt, viết code, nhưng không muốn dữ liệu công ty hay ghi chú cá nhân bay lên cloud của OpenAI. Hoặc đơn giản là ngán cảnh mỗi tháng nhìn hoá đơn API tăng dần theo số lượng câu hỏi.
Còn về tính năng, Ollama làm được mấy việc chính sau:
- Chạy inference (hỏi-đáp, tóm tắt, dịch, viết code...) hoàn toàn offline trên NAS, không cần Internet sau khi đã tải model
- Quản lý nhiều model cùng lúc, tải về chỉ bằng một lệnh
ollama pull <tên model> - Cung cấp REST API tương thích, để bạn cắm vào n8n, Home Assistant hay script tự viết thay vì gọi API trả phí của OpenAI
- Kết hợp với Open WebUI để có giao diện chat kiểu ChatGPT, dùng ngay trong trình duyệt qua LAN hoặc VPN
Vài case thực tế hay gặp: dân văn phòng, kế toán, luật sư cần tóm tắt tài liệu nội bộ nhạy cảm mà quy định công ty cấm đưa lên cloud. Dev muốn có "trợ lý code" riêng chạy 24/7 mà không tốn phí API hàng tháng. Hoặc anh em chơi homelab muốn nhét AI vào Home Assistant, n8n để tự động hoá nhà thông minh mà không lo dữ liệu camera, cảm biến rò rỉ ra ngoài.
So với ChatGPT hay API OpenAI, Ollama trên NAS chậm hơn nhiều lần và chất lượng model cũng không thể sánh với GPT-4o. Nhưng đổi lại miễn phí vĩnh viễn sau khi cài, riêng tư tuyệt đối, không cần Internet. Nếu bạn dùng với khối lượng lớn — ước tính trên 3.000 query/ngày — thì phần cứng bỏ ra thường hoà vốn sau 2-4 tháng so với trả phí API. Còn nếu dữ liệu bắt buộc phải ở lại nội bộ thì khỏi cần tính toán, cứ làm thôi.
Vì sao chọn Docker qua Container Manager, không phải VMM
Nói thẳng luôn: Synology không có package Ollama chính thức trong Package Center. Không có chuyện "cài native" một phát xong như Plex hay Photo Station đâu.
Vậy còn hai đường: dùng Virtual Machine Manager (VMM) dựng hẳn một VM Linux rồi cài Ollama bên trong, hoặc dùng Container Manager chạy image Docker chính thức. Chọn Container Manager, vì mấy lý do sau:
- VMM cấp phát nguyên một máy ảo — tốn RAM/CPU overhead nhiều hơn hẳn so với một container, chưa kể update phức tạp hơn
- Cái quan trọng nhất: NAS Synology phổ thông không hỗ trợ GPU passthrough cho cả VM lẫn container. Nghĩa là dù chạy VM hay Docker, Ollama vẫn chỉ chạy CPU-only như nhau. Vậy tội gì rước thêm cục overhead của VM vào mà chẳng đổi lại được tốc độ nào
- Container Manager là package chính thức của Synology, tách tài nguyên tốt, update image dễ, backup cũng nhẹ nhàng — chỉ cần mount volume ra ngoài là dữ liệu model an toàn dù container có bị xoá đi tạo lại
Đánh đổi duy nhất là bạn phải tự tay cấu hình qua giao diện Container Manager hoặc file docker-compose, không có nút "Install" click phát xong như package DSM thật. Nhưng đây là bước ai cũng làm xong trong chưa tới 15 phút, không có gì đáng ngại.
| Tiêu chí | Container Manager | Virtual Machine Manager |
|---|---|---|
| Tài nguyên tiêu tốn | Thấp, gọn nhẹ | Cao, overhead nhiều |
| Hỗ trợ GPU passthrough | ✗ | ✗ |
| Cập nhật, bảo trì | Đơn giản | Phức tạp hơn |
| Cài Ollama | Image chính thức | Tự cài trong VM |
Yêu cầu trước khi bắt tay vào
- DSM 7.2.1 trở lên (Container Manager yêu cầu bản này)
- CPU x86_64 — tức các dòng NAS có hậu tố "+" của Intel/AMD. Các dòng dùng chip ARM như DS223, DS223j, DS224+, DS124 (Realtek/Marvell) không chạy được, cứ bỏ qua bài này
- RAM tối thiểu 8GB, nên có 16GB nếu định chạy model cỡ 7B trở lên
- Đã cài Container Manager từ Package Center (chưa có thì cài trước, mất chưa tới 2 phút)
Set kỳ vọng luôn cho khỏi hụt hẫng: đây là giải pháp chạy CPU-only hoàn toàn, không có GPU passthrough. Tốc độ khoảng 3-8 token/giây là bình thường trên phần cứng NAS phổ thông. Đừng kỳ vọng nó nhanh như ChatGPT — nếu bạn cần tốc độ đó thì đây không phải bài toán Ollama giải quyết được.
Các bước cài đặt
Bước 1: Tạo cấu trúc thư mục
Mở File Station, tạo các thư mục sau (chỉ dùng chữ thường, Docker trên Linux phân biệt hoa thường khá khó chịu):
/volume1/docker/ollama/data
/volume1/docker/ollama/webuiBước 2: Tải image từ RegistryVào Container Manager → Registry, tìm và tải hai image:
ollama/ollama:latest— image chính, khoảng 8GB nên chuẩn bị đủ dung lượng và kiên nhẫn chờ tảighcr.io/open-webui/open-webui:0.8— nếu bạn muốn có giao diện chat kiểu ChatGPT thay vì gõ lệnh
Bước 3: Tạo project bằng docker-compose
Cách nhanh và ổn định nhất là tạo project trong Container Manager, dán vào file compose sau:
version: "3.8"
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
ports:
- "11434:11434"
volumes:
- /volume1/docker/ollama/data:/root/.ollama
environment:
- OLLAMA_HOST=0.0.0.0:11434
- OLLAMA_KEEP_ALIVE=24h
- OLLAMA_MAX_LOADED_MODELS=1
restart: unless-stopped
open-webui:
image: ghcr.io/open-webui/open-webui:0.8
container_name: open-webui
ports:
- "8271:8080"
volumes:
- /volume1/docker/ollama/webui:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://ollama:11434
- WEBUI_SECRET_KEY=doi-chuoi-nay-thanh-64-ky-tu-ngau-nhien
depends_on:
- ollama
restart: unless-stoppedChú ý biến OLLAMA_HOST=0.0.0.0:11434. Đây là chỗ dễ quên nhất — mặc định Ollama chỉ lắng nghe ở localhost, không set biến này thì máy khác trong LAN gõ IP vào cũng vô ích, cứ như gọi điện mà không bắt máy.
OLLAMA_BASE_URL=http://ollama:11434 dùng tên service ollama chứ không phải localhost, vì hai container này nói chuyện với nhau qua docker network nội bộ. Ghi localhost vào đây là Open WebUI tự nói chuyện với chính nó, không bao giờ thấy Ollama đâu.
Bước 4: Chạy và đợi khởi tạo
Bấm Apply/Run project. Đợi khoảng 5-10 phút để container khởi tạo xong hoàn toàn — đây cũng là bước hay bị hiểu lầm là "cài lỗi": nhiều người truy cập sớm quá, thấy trang trắng, tưởng cài hỏng rồi vội xoá đi làm lại. Cứ pha ly cà phê, đợi thêm chút.
Bước 5: Pull model để test
Mở SSH vào NAS hoặc dùng terminal trong Container Manager, chạy:
docker exec -it ollama ollama pull llama3.2Nên bắt đầu với model nhỏ như llama3.2 (3B) hoặc phi3. Đừng vội táy máy kéo mấy model 13B, 70B ngay từ đầu — máy RAM thấp mà đè vào là crash liền, để phần "lỗi thường gặp" bên dưới giải thích rõ hơn.
Bước 6: Vào Open WebUI và test chat
Truy cập http://<IP-NAS>:8271, tạo tài khoản admin đầu tiên (tài khoản này chỉ lưu local, không đăng ký gì với bên thứ ba), chọn model llama3.2 vừa pull và gõ thử vài câu.
Kiểm tra hoạt động
Nếu chat trả lời được, dù chậm rì rì 3-8 token/giây, vậy là chạy đúng bài rồi. Kiểm tra thêm API bằng lệnh:
curl http://<IP-NAS>:11434/api/generate -d '{
"model": "llama3.2",
"prompt": "Xin chào"
}'Có phản hồi JSON trả về là API đã sẵn sàng để bạn cắm vào n8n hay script khác.
Lỗi thường gặp và cách xử lý
- Container thoát ngay sau khi chạy: thường do thiếu RAM khả dụng. Vào Resource Monitor kiểm tra trước khi start, tắt bớt app khác hoặc đổi sang model nhỏ hơn.
- Máy khác trong LAN không truy cập được: 90% là quên set
OLLAMA_HOST=0.0.0.0:11434, mặc định Ollama chỉ bind localhost. - Open WebUI báo không kết nối được Ollama: kiểm tra lại
OLLAMA_BASE_URLcó đang trỏ nhầm vềlocalhost/127.0.0.1thay vì tên serviceollamatrong docker network hay không. - NAS phản hồi chậm rồi treo hẳn khi hỏi câu dài: RAM bị tràn sang swap vì chọn model quá lớn (13B trở lên). Hạ xuống model 3B-7B bản quantized (thường ký hiệu Q4 trong tên tag) là ổn.
- Pull model bị timeout hoặc đứt giữa chừng: thường do mạng/DNS của NAS chập chờn. Cứ chạy lại đúng lệnh pull, Ollama sẽ resume tiếp phần dở dang chứ không tải lại từ đầu — khỏi cần lo mất công.
Tối ưu để chạy mượt hơn
Trên NAS CPU-only, quản lý RAM là chuyện sống còn:
- Set
OLLAMA_MAX_LOADED_MODELS=1— chỉ load một model cùng lúc, tránh nhiều model tranh nhau RAM - Ưu tiên bản quantized Q4 thay vì bản gốc fp16 — dung lượng nhỏ hơn nhiều, tốc độ tốt hơn, chất lượng giảm không đáng kể với đa số tác vụ hỏi đáp thường ngày
OLLAMA_KEEP_ALIVE=24hgiữ model đã load trong RAM lâu hơn, tránh việc mỗi câu hỏi lại phải load lại từ đĩa — đỡ độ trễ đáng kể- Model nào không dùng nữa thì gỡ bằng
docker exec -it ollama ollama rm <tên model>để giải phóng dung lượng ổ
Bảo mật và bảo trì
Ollama mặc định không có authentication. Tuyệt đối không port-forward 11434 ra Internet — ai cũng có thể gọi API của bạn miễn phí, hoặc tệ hơn.
Cần truy cập từ xa thì dùng VPN — Tailscale hoặc VPN Server có sẵn của Synology, đừng expose thẳng ra ngoài. Nếu bắt buộc phải public Open WebUI (giao diện này có sẵn cơ chế login riêng), vẫn nên đặt sau reverse proxy có thêm lớp xác thực cho chắc ăn.
Về bảo trì, update image định kỳ qua Container Manager là đủ — vì model đã mount ra ngoài container, cập nhật image mới không làm mất model đã tải. Backup thì chỉ cần backup thư mục /volume1/docker/ollama, gọn nhẹ.
Nói thẳng: đừng kỳ vọng con Ollama này thay thế ChatGPT hoàn toàn. Nó hợp cho việc dùng riêng tư, dữ liệu nhạy cảm, hoặc muốn cắm vào automation nhà/công ty mà không phụ thuộc Internet. Còn nếu cần trả lời nhanh, chất lượng đỉnh cao thì cứ trả tiền cho OpenAI, đừng ép con NAS nhà mình gánh việc nó không sinh ra để làm.



No comments yet