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

Truy cập AI Local từ xa an toàn qua Tailscale

Hướng dẫn từng bước để gọi máy chạy Ollama ở văn phòng từ laptop ở nhà, điện thoại hay VPS chạy AI Agent, đi qua mạng riêng mã hoá Tailscale thay vì mở cổng trên modem. Kèm cách giới hạn ai được gọi, mục kiểm tra, lỗi thường gặp và các điểm cần tự thử trên máy thử. Dữ kiện đối chiếu tài liệu chính thức ngày 20–21/10/2026.

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

Máy AI ở văn phòng, người dùng ở khắp nơi

Công ty bạn đặt một máy có card đồ hoạ ở văn phòng, chạy Ollama cho cả nhóm. Rồi nhu cầu đến: trưởng phòng muốn dùng từ laptop ở nhà, bot trên VPS cần gọi model này 24/7. Cách nhanh nhất mà nhiều người nghĩ tới là mở cổng 11434 trên modem. (Tình huống minh hoạ.)

Đó là cách nguy hiểm: API Ollama không có xác thực, ai tìm ra địa chỉ là dùng được model và máy của bạn. Cisco từng tìm thấy 1.139 máy chủ Ollama lộ ra Internet. Bài này hướng dẫn cách đi qua mạng riêng Tailscale. Máy chưa cài Ollama thì làm trước theobài Windows, bài Mac hoặc bài Linux.

Nguồn: Ollama – khoá API "required but ignored" · Cisco – máy chủ Ollama lộ ra Internet

Truy cập AI Local từ xa qua Tailscale là gì?

Truy cập AI Local từ xa qua Tailscale là nối máy chạy model và các thiết bị cần dùng vào cùng một mạng riêng mã hoá (gọi là tailnet), để thiết bị ở xa gọi model bằng địa chỉ 100.x mà không mở cổng nào ra Internet.

Tailscale dựa trên WireGuard. Mỗi máy trong tailnet nhận một địa chỉ IPv4 thuộc dải 100.64.0.0/10, không lộ ra Internet công cộng và giữ nguyên khi máy đổi mạng. Bạn còn có thể gọi máy bằng tên ngắn nhờ MagicDNS (mặc định bật với tailnet tạo từ 20/10/2022).

Truy cập AI Local từ xa qua Tailscale: laptop ở nhà, điện thoại và VPS chạy AI Agent nối vào cùng tailnet mã hoá WireGuard với máy văn phòng chạy Ollama; Ollama nghe ở IP Tailscale 100.x cổng 11434; thiết bị gọi http://100.x.y.z:11434/v1 hoặc tên MagicDNS; không mở cổng 11434 trên modem, không dùng Funnel cho model
Hình: Thiết bị ở xa gọi model qua tailnet (minh hoạ)
  1. Cài TailscaleTrên máy AI và mọi thiết bị cần dùng, cùng một tailnet
  2. Đổi địa chỉ ngheOllama nghe ở IP 100.x thay vì chỉ 127.0.0.1
  3. Giới hạn quyềnQuy tắc grants: ai được gọi cổng 11434
  4. Gọi từ xaBase URL http://100.x.y.z:11434/v1 hoặc tên MagicDNS
Bốn bước trong bài.

Nguồn: Tailscale – IP 100.x · Tailscale – IP và DNS · Tailscale – MagicDNS

Chọn cách mở Ollama: nên và không nên

CáchAi tới được cổng 11434Dùng khi
Ollama nghe ở IP 100.x (cách chính của bài)Chỉ máy trong tailnet, được quy tắc cho phépTruy cập từ xa cho vài thiết bị, VPS chạy Agent
Tailscale Serve trước OllamaMáy trong tailnet, qua HTTPSCần thử trước, xem mục Serve bên dưới
OLLAMA_HOST=0.0.0.0Mọi máy trong mạng nội bộKhông cần cho mục đích truy cập từ xa
Tailscale FunnelCả InternetKhông dùng cho model: Ollama không có xác thực
Mở cổng trên modemCả InternetKhông làm

Tài liệu Ollama chỉ có ví dụ 0.0.0.0:11434; đặt theo IP 100.x là cách ghép từ cú pháp chính thức, hãy thử trên máy thử trước.

Nguồn: Ollama FAQ – OLLAMA_HOST · Ollama – mô tả biến OLLAMA_HOST · Tailscale – Funnel

Chọn gói Tailscale đúng mục đích

Nguồn: Tailscale – Bảng giá · Tailscale – Quickstart

Bước 1. Cài Tailscale trên máy AI và thiết bị ở xa

Máy Linux (máy chủ, VPS)

Lệnh trên máy tính của bạnDán vào Terminal trên máy Linux
curl -fsSL https://tailscale.com/install.sh | sh   # cài Tailscale (chỉ dùng địa chỉ chính thức)
sudo tailscale up                                    # in ra đường link, mở link để đăng nhập
tailscale ip -4                                      # in địa chỉ IPv4 dạng 100.x.y.z của máy này
tailscale status                                     # danh sách máy trong tailnet và trạng thái

macOS và Windows

Ghi lại địa chỉ 100.x và tên của máy AI (lệnh tailscale ip -4, hoặc xem trang Machines trong trang quản trị). Muốn lấy IP của máy khác: tailscale ip <tên máy>.

Nguồn: Tailscale – Linux · Tailscale – macOS · Tailscale – Windows · Tailscale CLI

Bước 2. Cho Ollama nghe ở địa chỉ Tailscale

Các lệnh trong bước này ghép từ cú pháp chính thức, hãy thử trên máy thử trước. Thay <IP 100.x của máy AI> bằng địa chỉ ở Bước 1.

Linux (Ollama chạy bằng systemd)

Lệnh trên máy tính của bạnDán vào Terminal trên máy AI
sudo systemctl edit ollama.service
# thêm 2 dòng dưới đây vào tệp vừa mở, lưu lại:
# [Service]
# Environment="OLLAMA_HOST=<<IP 100.x của máy AI>>:11434"
sudo systemctl daemon-reload
sudo systemctl restart ollama

macOS

Lệnh trên máy tính của bạnDán vào Terminal trên máy AI
launchctl setenv OLLAMA_HOST "<IP 100.x của máy AI>:11434"   # rồi thoát và mở lại app Ollama

Windows

  1. Thoát Ollama: bấm biểu tượng trên thanh tác vụ → Quit.
  2. Mở Settings (Windows 11) hoặc Control Panel (Windows 10), tìm environment variables.
  3. Chọn Edit environment variables for your account.
  4. Tạo biến OLLAMA_HOST với giá trị <IP 100.x>:11434, bấm OK.
  5. Mở lại Ollama từ Start menu.

Sau bước này Ollama không còn nghe ở 127.0.0.1: phần mềm trên chính máy AI (Open WebUI, n8n…) cũng phải trỏ sang địa chỉ 100.x.

Lưu ý cần thử (tài liệu chưa nói rõ): Ollama khởi động trước Tailscale, khi địa chỉ 100.x chưa có, thì có lỗi không; trên Mac, launchctl setenv còn giữ sau khi khởi động lại không. Hãy khởi động lại máy AI một lần rồi làm lại mục "Kiểm tra". IP 100.x đổi khi máy bị gỡ khỏi tailnet hoặc cài lại Tailscale: khi đó sửa lại OLLAMA_HOST.

Nguồn: Ollama FAQ – đặt biến môi trường · Ollama – Windows · Tailscale – khi nào IP đổi

Bước 3. Gọi model từ thiết bị ở xa

Trên laptop hoặc VPS đã vào tailnet, thử gọi API. Ollama có endpoint tương thích OpenAI, khoá API là bắt buộc về cú pháp nhưng bị bỏ qua, nên điền chuỗi bất kỳ:

Lệnh trên máy tính của bạnDán vào Terminal trên thiết bị ở xa (ghép từ cú pháp chính thức, hãy thử trên máy thử trước)
curl http://<IP 100.x hoặc tên MagicDNS>:11434/v1/models     # liệt kê model, có JSON là thông

curl http://<IP 100.x hoặc tên MagicDNS>:11434/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "<tên model đã tải>", "messages": [{"role": "user", "content": "Chào bạn"}]}'
Phần mềm gọiĐiền ở ô địa chỉ
Ứng dụng dùng chuẩn OpenAI, Hermeshttp://<IP 100.x hoặc tên MagicDNS>:11434/v1
OpenClaw, node Ollama của n8n, kết nối Ollama của Open WebUIhttp://<IP 100.x hoặc tên MagicDNS>:11434 (không thêm /v1)

Tên MagicDNS có dạng may-ai.ten-tailnet.ts.net hoặc gõ ngắn may-ai; dùng tên này để đỡ sửa khi IP đổi. Trên macOS, nslookup không phân giải tên MagicDNS nhưng ping thì được. Cấu hình từng công cụ:Dùng AI Local làm bộ não cho OpenClaw, Hermes, n8n, Ghép n8n với Ollama, Router lai bằng LiteLLM.

Nguồn: Ollama – OpenAI compatibility · Tailscale – MagicDNS

Bước 4. Giới hạn ai được gọi model

Tailnet mới dùng chính sách mặc định cho mọi thiết bị nói chuyện với nhau. Vì Ollama không có xác thực, nên khoanh lại: chỉ nhóm người cần dùng mới tới được cổng 11434 của máy AI. Tài liệu Tailscale khuyên dùng cú pháp grants. Mẫu dưới đây ghép từ cú pháp chính thức, hãy thử trên máy thử trước:

Mẫu tệp chính sách (Access controls)Dán vào trang Access controls trong trang quản trị Tailscale; thay phần trong <…>
{
  "groups":    { "group:ai-users": ["<email người được dùng>"] },
  "tagOwners": { "tag:ai-box": ["autogroup:admin"] },
  "grants": [
    { "src": ["group:ai-users"], "dst": ["tag:ai-box"], "ip": ["tcp:11434"] }
  ]
}

Gắn tag cho máy AI (máy chủ không gắn với một người cụ thể):

Lệnh trên máy tính của bạnChạy trực tiếp trên máy AI Linux
sudo tailscale up --advertise-tags=tag:ai-box --force-reauth
Thay chính sách "cho phép tất cả" bằng tệp trên thì SSH, chia sẻ tệp và mọi kết nối khác bị chặn nếu không thêm grant riêng. Không chạy --force-reauth qua SSH hay Remote Desktop khi không có đường vào dự phòng, vì có thể mất kết nối tới máy.

Hết hạn khóa: mặc định 180 ngày, hết hạn thì máy mất kết nối. Máy gắn tag tự tắt hết hạn khóa; cách khác là Machines → Disable Key Expiry, nhưng tài liệu ghi việc này làm giảm an toàn.

Giới hạn quyền gọi model AI Local trong tailnet bằng grants: nhóm group:ai-users được gọi tcp:11434 tới máy gắn tag:ai-box, thiết bị khác trong tailnet bị chặn; Funnel ra Internet công cộng bị tắt; hết hạn khóa mặc định 180 ngày, máy gắn tag tự tắt hết hạn
Hình: Khoanh quyền gọi cổng 11434 bằng grants (minh hoạ)

Nguồn: Tailscale – mặc định cho phép tất cả · Tailscale – grants · Tailscale – ví dụ grants · Tailscale – tags · Tailscale – hết hạn khóa

Tailscale Serve và Funnel: dùng cái nào?

Serve chuyển kết nối từ máy khác trong tailnet tới một dịch vụ trên máy, có HTTPS, quy tắc truy cập vẫn áp dụng. Tài liệu có ví dụ cổng 3000; áp cho Ollama thì thay bằng 11434 (ghép từ cú pháp chính thức, hãy thử trên máy thử trước):

Lệnh trên máy tính của bạnChạy trên máy AI, Ollama để nguyên mặc định 127.0.0.1
tailscale serve --bg 11434     # chỉ máy trong tailnet thấy, qua https://<máy>.<tailnet>.ts.net
tailscale serve status         # xem đang chia sẻ gì
tailscale serve reset          # tắt toàn bộ cấu hình Serve
Lưu ý cần thử: Ollama từ chối (lỗi 403) yêu cầu có tên miền lạ khi đang nghe ở 127.0.0.1, và tài liệu Tailscale không nói Serve có giữ tên *.ts.net khi chuyển tiếp hay không. Nếu gặp 403, quay về cách IP 100.x ở Bước 2. Bật HTTPS sẽ ghi tên máy và tên tailnet lên sổ công khai Certificate Transparency, nên đừng đặt tên máy chứa thông tin nhạy cảm.

Funnel đưa dịch vụ ra Internet công cộng, người không dùng Tailscale cũng vào được. Với model chạy bằng Ollama, không bật Funnel.

Nguồn: Tailscale – Serve · Tailscale – lệnh serve · Tailscale – chứng chỉ HTTPS · Tailscale – Funnel · Ollama – kiểm tra Host

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

Nguồn: Tailscale CLI – status, ip, serve

Lỗi thường gặp

Hiện tượngNguyên nhân thường gặpCách xử lý
Thiết bị ở xa báo không kết nối đượcOllama chưa khởi động lại sau khi đặt biến; biến đặt sai IPKhởi động lại Ollama; so IP trong biến với tailscale ip -4
Open WebUI, n8n trên chính máy AI mất modelOllama không còn nghe ở 127.0.0.1Đổi địa chỉ trong phần mềm sang 100.x
Hôm qua chạy, hôm nay khôngIP 100.x đổi sau khi cài lại; khóa hết hạn sau 180 ngàySửa OLLAMA_HOST; đăng nhập lại máy hoặc gắn tag
SSH vào máy AI bị chặn sau khi sửa chính sáchTệp grants chỉ cho cổng 11434Thêm grant cho cổng SSH tới đúng nhóm
Mac: nslookup may-ai không ramacOS không phân giải MagicDNS bằng lệnh nàyThử ping, hoặc dùng IP
Gọi qua Serve báo 403Chưa xác định; có thể do Ollama kiểm tra tên miềnDùng cách IP 100.x

Nguồn: Tailscale – MagicDNS · Tailscale – hết hạn khóa

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

Nguồn: Tailscale – cập nhật · Tailscale – gỡ cài đặt · CVE-2026-7482 · Ollama – các bản phát hành

An toàn

Nguồn: Tailscale – tags · Tailscale – Bảng giá

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

  1. Hôm nay: cài Tailscale trên máy AI và một laptop, làm Bước 2–3 trên máy thử.
  2. Tuần này: khởi động lại máy AI, chạy lại mục Kiểm tra; áp grants cho đúng nhóm.
  3. Khi cả đội dùng: chọn gói trả phí, gắn tag máy AI, giao người phụ trách cập nhật.

Sau khi nối xong, hãy chọn model bằng bộ đề của chính doanh nghiệp:Bộ đề tự chấm model AI tiếng Việt.

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: Bộ đề chấm model tiếng Việt →

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

Tailscale có miễn phí cho doanh nghiệp không?

Gói Personal 0 USD dành cho mục đích phi thương mại: tối đa 6 người dùng, thiết bị không giới hạn. Doanh nghiệp dùng cho việc kinh doanh nên chọn gói trả phí phù hợp; bảng giá tháng 10/2026 ghi Standard 8 USD và Premium 18 USD mỗi người mỗi tháng. Xem lại trang giá trước khi đăng ký vì điều kiện có thể đổi.

Đặt OLLAMA_HOST=0.0.0.0 cho nhanh có được không?

Không nên nếu mục đích chỉ là truy cập từ xa. 0.0.0.0 mở cổng 11434 cho mọi máy trong mạng nội bộ, trong khi API Ollama không có xác thực. Cho Ollama nghe theo IP Tailscale 100.x thì chỉ máy trong tailnet, và được quy tắc cho phép, mới tới được.

Có dùng Tailscale Funnel để gọi Ollama từ bất kỳ đâu được không?

Không. Funnel đưa dịch vụ ra Internet công cộng cho cả người không dùng Tailscale. Ollama không có xác thực nên ai biết địa chỉ cũng gọi được model của bạn. Hãy cài Tailscale trên thiết bị cần dùng thay vì bật Funnel.

Máy AI cài lại Tailscale thì có phải sửa gì không?

Có. Địa chỉ 100.x đổi khi máy bị gỡ khỏi tailnet, cài lại hoặc reset Tailscale. Khi đó đặt lại OLLAMA_HOST theo IP mới, khởi động lại Ollama, rồi kiểm tra lại từ thiết bị ở xa. Phía thiết bị gọi nên dùng tên MagicDNS cho ổn định.

Điện thoại có dùng được AI Local qua Tailscale không?

Được nếu điện thoại cài ứng dụng Tailscale, đăng nhập cùng tailnet và quy tắc truy cập cho phép. Cách tiện nhất là mở giao diện chat như Open WebUI trên trình duyệt điện thoại qua địa chỉ trong tailnet, không gọi API trực tiếp.

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.