Thực hành AI Local · Bài 3

Cài AI Local trên Linux và máy chủ GPU: systemd, Docker có GPU

Bài thực hành cho người dựng một máy chủ Linux có card NVIDIA để cả nhóm dùng chung AI Local. Hai cách đi từng bước: cài Ollama thẳng vào máy và chạy bằng systemd, hoặc chạy Ollama trong Docker có GPU. Kèm mục kiểm tra, lỗi thường gặp, cập nhật, gỡ cài đặt và an toàn. Dữ kiện đối chiếu tài liệu chính thức của Ollama, NVIDIA và Docker ngày 20–21/10/2026.

Cập nhật 21/10/2026⏱ 10 phút đọcCài đặt & bắt đầuTrung cấp → Nâng cao

Máy chủ có card đồ hoạ nằm trong phòng, nhưng chưa ai dựng được

Công ty vừa có một máy chủ cài Linux, gắn card NVIDIA, định dùng chung cho cả nhóm: tóm tắt hợp đồng, viết nháp nội dung, làm bộ não cho chatbot nội bộ. Người phụ trách cài thử Ollama, model chạy được, nhưng chậm. Hoá ra máy đang dùng CPU vì driver card chưa đúng. Khởi động lại thì dịch vụ không tự lên. Có người đề nghị mở cổng cho cả công ty gọi vào cho nhanh. (Tình huống minh hoạ.)

Bài này đi theo thứ tự cần làm trên một máy chủ Linux: driver NVIDIA, cài Ollama chạy nền bằng systemd (hoặc trong Docker có GPU), cấu hình, kiểm tra đúng GPU, xử lý lỗi, cập nhật và an toàn. Phần cài cơ bản trên máy cá nhân đã có ở Cài AI Local trong 30 phút; chưa rõ nên mua máy cỡ nào, xem Cấu hình máy tính chạy AI Local.

Cài AI Local trên Linux và máy chủ GPU là làm gì?

Cài AI Local trên Linux và máy chủ GPU là cài driver NVIDIA, cài phần mềm chạy model (ở đây là Ollama) thành một dịch vụ tự khởi động cùng máy, để model mở chạy trên card đồ hoạ và phục vụ cả nhóm qua API nội bộ.

Các tầng khi cài AI Local trên máy chủ Linux có GPU NVIDIA: driver NVIDIA kiểm tra bằng nvidia-smi; Ollama chạy bằng dịch vụ systemd với tài khoản ollama riêng hoặc trong Docker có NVIDIA Container Toolkit; model mở nạp lên card, kiểm tra bằng ollama ps; API nghe ở 127.0.0.1 cổng 11434; nhân viên dùng qua Open WebUI, ở xa qua VPN
Hình: Các tầng của một máy chủ AI Local trên Linux (minh hoạ)
  1. Driver NVIDIACài theo hướng dẫn của NVIDIA, kiểm tra bằng nvidia-smi
  2. OllamaCài thẳng và chạy bằng systemd, hoặc chạy trong Docker có GPU
  3. Cấu hìnhNơi lưu model, độ dài context, bộ nhớ đệm, tắt tính năng đám mây
  4. Kiểm traollama ps phải báo chạy trên GPU
  5. Mở cho nhómQua giao diện có tài khoản và VPN, không mở thẳng cổng 11434
Năm bước dựng máy chủ AI Local trên Linux.

Chọn cách chạy: systemd, Docker hay vLLM

CáchPhù hợp vớiLưu ý
Cài thẳng + systemdMáy chủ chủ yếu để chạy AI Local; người mới làm quản trị LinuxÍt lớp, log xem bằng journalctl, mặc định chỉ nghe 127.0.0.1:11434
Docker có GPUMáy chủ đã chạy nhiều dịch vụ bằng containerCần NVIDIA Container Toolkit; GPU trong Docker chỉ có trên Linux hoặc Windows qua WSL2
vLLMNhiều người hoặc nhiều AI Agent gọi cùng lúc, có người vận hànhChạy trên Linux, cổng mặc định 8000, giấy phép Apache-2.0; --api-key không bảo vệ mọi endpoint

Bài này đi chi tiết hai cách đầu với Ollama (giấy phép MIT, miễn phí). Mặc định Ollama xử lý một yêu cầu mỗi lúc cho mỗi model (OLLAMA_NUM_PARALLEL bằng 1), đủ cho nhóm nhỏ dùng xen kẽ.

Nguồn: Ollama – Linux · Ollama FAQ · vLLM – cài đặt GPU · vLLM – bảo mật

Chuẩn bị trước khi cài

Nguồn: Ollama – GPU · NVIDIA – driver Ubuntu

Bước 1. Cài driver NVIDIA

Nếu nvidia-smi đã in ra tên card và phiên bản driver đạt yêu cầu ở trên, bỏ qua bước này. Nếu chưa, làm theo hướng dẫn chính thức của NVIDIA cho Ubuntu (dùng kho mạng của NVIDIA, bản driver open kernel modules):

Lệnh trên máy tính của bạnDán từng dòng vào Terminal máy chủ; thay bằng tên thư mục kho NVIDIA theo bản Ubuntu, ví dụ ubuntu2404 cho Ubuntu 24.04
sudo apt install linux-headers-$(uname -r)
wget https://developer.download.nvidia.com/compute/cuda/repos/<distribution>/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
sudo apt install nvidia-open                                  # bản đầy đủ (màn hình và tính toán)
# hoặc, máy chủ chỉ tính toán, không màn hình:
# sudo apt -V install libnvidia-compute nvidia-dkms-open
sudo reboot

Trang NVIDIA ghi các lệnh này với quyền root; ở đây thêm sudo phía trước. Máy ARM64 thay x86_64 bằng sbsa trong đường dẫn. Sau khi máy khởi động lại, chạy nvidia-smi: phải in ra thông tin card. Nâng cấp driver về sau dùng sudo apt dist-upgrade.

Nguồn: NVIDIA – driver Ubuntu · Ollama – Linux (nvidia-smi)

Bước 2. Cài Ollama và chạy bằng systemd

Cách nhanh: script cài chính thức

Script curl -fsSL https://ollama.com/install.sh | sh cài Ollama và dịch vụ chạy nền, như ở bài cài đặt. Bật dịch vụ bằng sudo systemctl enable ollama và sudo systemctl start ollama. Chỉ chạy script từ đúng địa chỉ ollama.com.

Cách cài tay, tự tạo dịch vụ

Hợp với máy chủ cần biết rõ từng tệp được đặt ở đâu. Tải bản amd64, tạo tài khoản hệ thống ollama riêng (không đăng nhập được) để dịch vụ không chạy bằng tài khoản của bạn:

Lệnh trên máy tính của bạnDán vào Terminal máy chủ; máy ARM64 dùng tệp ollama-linux-arm64.tar.zst
curl -fsSL https://ollama.com/download/ollama-linux-amd64.tar.zst \
    | sudo tar x -C /usr
sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama
sudo usermod -a -G ollama $(whoami)

Tạo tệp /etc/systemd/system/ollama.service với nội dung theo tài liệu Ollama:

/etc/systemd/system/ollama.serviceDán vào tệp, ví dụ mở bằng sudo nano
[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=$PATH"

[Install]
WantedBy=multi-user.target
Lệnh trên máy tính của bạnDán vào Terminal máy chủ
sudo systemctl daemon-reload
sudo systemctl enable ollama        # tự chạy khi máy khởi động
sudo systemctl start ollama
sudo systemctl status ollama        # phải thấy active (running)

Nguồn: Ollama – Linux: cài tay, systemd

Bước 3. Cấu hình bằng tệp override, không sửa tệp gốc

Đặt biến môi trường cho dịch vụ bằng sudo systemctl edit ollama (tạo tệp /etc/systemd/system/ollama.service.d/override.conf). Cách này giữ nguyên tệp dịch vụ gốc khi cập nhật. Ví dụ cho máy chủ dùng chung:

override.conf (ví dụ minh hoạ)Dán vào cửa sổ systemctl edit; ghép từ cú pháp chính thức, hãy thử trên máy thử trước
[Service]
Environment="OLLAMA_MODELS=/data/ollama-models"
Environment="OLLAMA_CONTEXT_LENGTH=32768"
Environment="OLLAMA_KV_CACHE_TYPE=q8_0"
Environment="OLLAMA_NO_CLOUD=1"
BiếnÝ nghĩa theo tài liệu Ollama
OLLAMA_MODELSĐổi nơi lưu model (mặc định /usr/share/ollama/.ollama/models). Tài khoản ollama phải có quyền: sudo chown -R ollama:ollama /data/ollama-models
OLLAMA_CONTEXT_LENGTHĐộ dài context mặc định; context lớn tốn thêm VRAM. Việc AI Agent nên từ 64000
OLLAMA_KV_CACHE_TYPEf16 mặc định; q8_0 dùng khoảng một nửa bộ nhớ, giảm chính xác rất ít; q4_0 khoảng một phần tư. Áp cho mọi model
OLLAMA_FLASH_ATTENTIONTự bật khi phần cứng hỗ trợ; đặt 1 để ép bật
OLLAMA_NO_CLOUDĐặt 1 để tắt hẳn model đám mây và tìm web của Ollama
CUDA_VISIBLE_DEVICESMáy nhiều card: chỉ định card, nên dùng UUID xem bằng nvidia-smi -L

Lưu xong chạy sudo systemctl daemon-reload rồi sudo systemctl restart ollama. Không thêm OLLAMA_HOST ở đây nếu chưa đọc mục An toàn bên dưới.

Nguồn: Ollama – Linux: override · Ollama FAQ – biến môi trường, bộ nhớ · Ollama – Context length · Ollama – nhiều GPU

Cách khác: chạy Ollama trong Docker có GPU

Máy đã cài Docker và driver NVIDIA. Cài NVIDIA Container Toolkit để container dùng được card (lệnh theo tài liệu Ollama, bản apt):

Lệnh trên máy tính của bạnDán vào Terminal máy chủ
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
    | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
    | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
    | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

Thử container có thấy card không bằng lệnh mẫu của NVIDIA: sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi. Sau đó chạy Ollama:

Lệnh trên máy tính của bạnGhép từ cú pháp chính thức, hãy thử trên máy thử trước
docker run -d --gpus=all -v ollama:/root/.ollama -p 127.0.0.1:11434:11434 --name ollama ollama/ollama
docker exec -it ollama ollama run qwen3.5:4b      # tải và chat thử một model nhỏ
Lệnh mẫu của Ollama ghi -p 11434:11434. Theo tài liệu Docker, cổng mở kiểu này nghe trên mọi địa chỉ của máy, và với ufw thì gói tin đi vòng qua luật tường lửa. Vì vậy lệnh trên ghép thêm 127.0.0.1: (cú pháp chính thức của Docker) để chỉ chính máy gọi được. Model qwen3.5:4b giấy phép Apache-2.0; đọc điều khoản trên trang model trước khi dùng cho kinh doanh.

Volume ollama giữ model qua các lần tạo lại container. Xem log bằng docker logs ollama.

Nguồn: Ollama – Docker · NVIDIA Container Toolkit · NVIDIA – lệnh kiểm tra mẫu · Docker – mở cổng · Docker – Docker và ufw · Ollama – qwen3.5

Kiểm tra đã chạy đúng

Nguồn: Ollama FAQ – ollama ps · Ollama – log · Ollama – API tương thích OpenAI · Ollama releases

Lỗi thường gặp và cách xử lý

Hiện tượngCách xử lý theo tài liệu
Sau khi máy ngủ rồi thức dậy, Ollama mất GPU, chạy bằng CPUNạp lại module: sudo rmmod nvidia_uvm && sudo modprobe nvidia_uvm
Không khởi tạo được GPU (mã lỗi 3, 46, 100, 999…)Thử sudo nvidia-modprobe -u, nạp lại nvidia_uvm, khởi động lại máy, cập nhật driver. Xem thêm: sudo dmesg | grep -i nvrm
Container lúc đầu dùng GPU rồi tụt về CPUThêm "exec-opts": ["native.cgroupdriver=cgroupfs"] vào /etc/docker/daemon.json. NVIDIA cũng ghi lỗi đã biết khi chạy systemctl daemon-reload trên hệ dùng systemd cgroup
Lỗi do /tmp gắn chế độ noexecĐặt OLLAMA_TMPDIR, ví dụ /usr/share/ollama/
Đổi thư mục model rồi Ollama không chạyThiếu quyền: sudo chown -R ollama:ollama thư mục mới
Cần log chi tiếtThêm Environment="OLLAMA_DEBUG=1" trong override.conf, khởi động lại dịch vụ

Nguồn: Ollama – GPU · Ollama – Troubleshooting · Ollama FAQ · NVIDIA – lỗi đã biết

Cập nhật và gỡ cài đặt

Gỡ hẳn bản cài trên Linux (nguyên văn tài liệu Ollama):

Lệnh trên máy tính của bạnDán vào Terminal máy chủ; dòng cuối xoá luôn các model đã tải
sudo systemctl stop ollama
sudo systemctl disable ollama
sudo rm /etc/systemd/system/ollama.service
sudo rm -r $(which ollama | tr 'bin' 'lib')
sudo rm $(which ollama)
sudo userdel ollama
sudo groupdel ollama
sudo rm -r /usr/share/ollama        # xoá cả model đã tải

Bản Docker gỡ bằng lệnh Docker chung: docker rm -f ollama, rồi docker volume rm ollama nếu muốn xoá cả model (ghép từ cú pháp chính thức, hãy thử trên máy thử trước).

Nguồn: Ollama – Linux: cập nhật, gỡ · Ollama v0.40.2

An toàn cho máy chủ AI Local

So sánh an toàn hai cách chạy Ollama trên máy chủ Linux: systemd mặc định nghe 127.0.0.1:11434 với tài khoản ollama riêng; Docker với -p 11434:11434 mở ra mọi địa chỉ và đi vòng qua ufw, nên ghi -p 127.0.0.1:11434:11434; nhân viên dùng qua Open WebUI có tài khoản, ở xa qua VPN Tailscale; không mở cổng 11434 ra Internet
Hình: Giữ cổng Ollama trong máy chủ, mở cho nhóm qua lớp có đăng nhập (minh hoạ)

Nguồn: Ollama FAQ – mạng, proxy · Ollama – khoá bị bỏ qua · CVE-2026-7482 · Cisco – máy chủ Ollama lộ ra Internet

Bắt đầu từ đâu?

  1. Hôm nay: kiểm tra nvidia-smi, cài Ollama bằng systemd, chạy một model nhỏ và xác nhận ollama ps báo chạy trên GPU.
  2. Tuần này: chuyển model sang ổ riêng, chỉnh context theo việc, khởi động lại máy để chắc dịch vụ tự lên, ghi lại các bước vào sổ vận hành.
  3. Khi mở cho nhóm: dựng Open WebUI có tài khoản và phân quyền, đặt người phụ trách cập nhật bản vá, cân nhắc router lai AI Local và cloud cho việc khó.

Muốn được tư vấn hoặc cài đặt AI Local theo nhu cầu riêng, bạn có thể đăng ký Tư vấn 1-1 hoặc Coaching 1-1 cho doanh nghiệp; chi phí báo sau buổi tư vấn.

Đọc tiếp: Open WebUI cho cả nhóm →

Câu hỏi thường gặp

Nên cài Ollama thẳng vào máy hay chạy trong Docker?

Cài thẳng và chạy bằng systemd ít lớp hơn, dễ xem log bằng journalctl và mặc định chỉ nghe trên chính máy. Docker hợp khi máy chủ đã chạy nhiều dịch vụ bằng container và bạn muốn gói gọn từng phần. Cách Docker cần thêm NVIDIA Container Toolkit và phải để ý cổng: lệnh mẫu mở cổng 11434 ra mọi địa chỉ của máy.

Máy chủ không gắn màn hình thì cài driver NVIDIA nào?

Hướng dẫn chính thức của NVIDIA cho Ubuntu có lựa chọn riêng cho máy chỉ dùng để tính toán, không có màn hình: cài gói libnvidia-compute và nvidia-dkms-open. Gói nvidia-open là bản đầy đủ, dùng cho máy có màn hình. Cài xong khởi động lại và chạy nvidia-smi để kiểm tra.

Làm sao biết Ollama đang chạy bằng GPU chứ không phải CPU?

Chạy một model rồi gõ ollama ps. Cột PROCESSOR chỉ ghi GPU là model nằm gọn trong card; chỉ ghi CPU là đang chạy bằng RAM hệ thống; có tỷ lệ chia giữa CPU và GPU là model tràn bộ nhớ card, sẽ chậm.

Có nên đặt OLLAMA_HOST=0.0.0.0 để cả công ty gọi vào không?

Chỉ khi thật cần và có tường lửa chặn từ bên ngoài. Ollama không có xác thực, nên 0.0.0.0 nghĩa là mọi máy trong mạng đều gọi được. Cách gọn hơn cho nhóm là để Ollama nghe trên chính máy, cho nhân viên dùng qua Open WebUI có tài khoản, và làm việc từ xa qua VPN như Tailscale.

Nhiều người cùng hỏi một lúc thì Ollama có chịu được không?

Mặc định Ollama xử lý từng yêu cầu một cho mỗi model (OLLAMA_NUM_PARALLEL bằng 1). Khi nhiều người hoặc nhiều AI Agent gọi đồng thời trên máy chủ GPU, có thể cân nhắc vLLM, phần mềm phục vụ nhiều người dùng chạy trên Linux; cách này dành cho người có kinh nghiệm vận hành.

Tài liệu liên quan

Xem tất cả tài liệu hướng dẫn →

Đăng ký Tư vấn 1-1 về AI Local – Nguyễn Đức, Aduca
Bước tiếp theo

Đăng ký Tư vấn 1-1 về AI Local

Chuyên gia Aduca cùng bạn xem nhu cầu, máy đang có và dữ liệu cần bảo vệ, rồi đề xuất nên chạy AI Local, dùng đám mây hay kết hợp. Dịch vụ cài AI Local nằm trong gói Tư vấn 1-1 hoặc Coaching 1-1; chi phí báo sau buổi tư vấn.

Về AducaChuỗi bài do đội ngũ Aduca biên soạn từ kinh nghiệm đào tạo và triển khai AI Agent cho Marketing – Sales. Aduca Academy do Nguyễn Đức – Chủ tịch Aduca Group sáng lập; ông kinh doanh thương mại điện tử từ 2012, chạy quảng cáo Facebook từ 2014 và đào tạo từ 2016. Phần thực hành từng bước nằm trong các thư mục OpenClaw, Hermes Agent, Claude, ChatGPT và n8n, Second Brain.

Nguồn tham khảo

Lịch sử cập nhật

Miễn trừ trách nhiệm

Bài viết thuộc chuỗi kiến thức của Công ty Cổ phần Giáo dục Aduca, chia sẻ miễn phí cho mục đích học tập. Thông tin kỹ thuật đối chiếu với tài liệu chính thức của các dự án và nền tảng tại ngày cập nhật (có ghi nguồn); phần nhận định là quan điểm của Aduca. OpenClaw, Hermes Agent, Claude (thương hiệu của Anthropic), ChatGPT (thương hiệu của OpenAI), n8n (thương hiệu của n8n GmbH), các phần mềm chạy model và các model AI mở (Ollama, LM Studio, Qwen, Gemma, gpt-oss…), Obsidian, Notion, phương pháp Building a Second Brain (Tiago Forte) cùng các phần mềm, dịch vụ nêu trong bài thuộc về chủ sở hữu tương ứng, không thuộc Aduca; Aduca không phải đối tác chính thức của các công ty này. Tính năng, gói và giá có thể thay đổi bất cứ lúc nào – hãy kiểm tra trang chính thức trước khi mua. Kết quả áp dụng phụ thuộc quy trình, dữ liệu và con người của từng doanh nghiệp; bài viết không cam kết doanh thu hay hiệu quả cụ thể. © 2026 Aduca — được trích dẫn khi ghi rõ nguồn aduca.vn.