SSD Nodes Learn Hosting plans →
Hướng dẫn Matt ConnorBởi Matt Connor

Tự host Agent Zero an toàn trên VPS

Agent Zero chạy code, browser và shell từ Web UI. Làm theo cách triển khai trên VPS, bind đúng port và khóa Web UI để tránh lộ quyền điều khiển hệ thống.

Agent Zero là gì và mối nguy nằm ở đâu

Agent Zero là một agent framework mã nguồn mở, ưu tiên Docker. Agent chính có thể tạo các agent phụ để chia một công việc thành những phần chuyên biệt. Các agent có thể thực thi code, điều khiển trình duyệt và chạy shell command, tất cả bên trong Docker container của Agent Zero. Bạn điều khiển toàn bộ hệ thống từ Web UI. Công cụ này mạnh và thực sự thú vị khi sử dụng. Nó có thể chạy trên phần cứng nhỏ như một VPS giá sáu đô la. Nếu bạn muốn mô hình multi-agent chứ không nhất thiết muốn framework này, hai phiên Claude Code trên cùng một máy có thể nhắn tin trực tiếp cho nhau, và cách đó nhỏ hơn nhiều về cả triển khai lẫn bảo mật.

Mối nguy nằm ở Web UI. Đây là control panel của một hệ thống có thể chạy command và ghi file. Vì vậy, Web UI bị public nhưng không yêu cầu xác thực sẽ trở thành foothold từ xa vào chính hệ thống đó. Đây là bẫy mà hầu hết hướng dẫn cài đặt đều dẫn bạn vào: các ví dụ docker run publish interface mà không chỉ định address. Tính đến 2026-10-12, command trực tiếp trong README ánh xạ host port 80 (-p 80:80), trình khởi chạy A0 Install dùng port 5080, còn hướng dẫn triển khai trên VPS khuyến nghị port 50080. Các hướng dẫn viết cho những release đến dòng v0.9.x dùng port 50001. Dù bạn chọn port nào, mapping không chỉ định address sẽ listen trên mọi network interface. Trên một VPS public, điều đó có nghĩa là interface có thể truy cập từ toàn bộ Internet ngay khi container khởi động. Bạn phải sửa điểm này đầu tiên, không phải để đến cuối mới sửa.

Những gì bạn cần

Bạn cần một VPS đã cài Docker, API key cho một language model hoặc một local model để trỏ Agent Zero đến đó, cùng vài gigabyte RAM để bắt đầu. Agent Zero chạy được ở bất cứ nơi nào Docker chạy, từ VPS nhỏ đến server có GPU. Nếu Docker còn mới với bạn, hướng dẫn cơ bản về Docker giải thích các giả định của những lệnh bên dưới.

Cài đặt bằng Docker, bind vào loopback

Quick start được ghi trong tài liệu chỉ gồm một docker run. Điểm khác biệt quan trọng so với phiên bản copy-paste bạn có thể tìm thấy ở nơi khác là địa chỉ được publish. Không publish trên mọi interface như cách -p 80:80 thực hiện. Hãy publish trên loopback:

docker run -d --name agent-zero \
  -p 127.0.0.1:5080:80 \
  -v a0_usr:/a0/usr \
  agent0ai/agent-zero

-p 127.0.0.1:5080:80 chỉ bind Web UI vào địa chỉ loopback của server, nên UI không thể truy cập từ Internet. Truy cập UI từ máy của bạn qua SSH tunnel:

ssh -L 5080:127.0.0.1:5080 you@your-vps

Sau đó mở http://127.0.0.1:5080 trên máy cục bộ, cấu hình model provider trong UI, rồi đặt thông tin đăng nhập và password cho UI tại Settings, Authentication. Tài liệu chính thức yêu cầu thực hiện bước này trước khi cho người khác truy cập instance. Với thiết lập multi-user lâu dài, hãy đặt UI sau VPN hoặc reverse proxy có xác thực. Tuyệt đối không publish UI thô lên Internet công cộng. Thói quen này cũng nên áp dụng cho mọi tool khác trên máy có interface điều khiển chức năng nhạy cảm. open-kritt scanner tự host cũng nên được truy cập theo cách này, qua tunnel đến UI thay vì publish một port.

Các hướng dẫn khác dừng ở đâu, và vì sao bạn không nên dừng ở đó

Tìm cách cài đặt Agent Zero, bạn sẽ thấy nhiều hướng dẫn, trong đó có cả hướng dẫn từ các công ty hosting. Các hướng dẫn này giúp bạn chạy Web UI trên một cổng được publish (50001 trong các hướng dẫn cũ, 80, 5080 hoặc 50080 trong các hướng dẫn mới hơn), rồi dừng lại ở đó. Đây chính xác là lúc rủi ro bắt đầu, không phải lúc rủi ro kết thúc. Bạn cần làm thêm 2 việc. Thứ nhất, giữ UI ở chế độ private như phần trên. Thứ hai, đặt một firewall với chính sách default-deny phía trước máy chủ để một service mà bạn quên không thể trả lời Internet:

sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enable

Tuy nhiên, cần biết giới hạn của cách này: Docker định tuyến traffic đến các container port đã publish trước khi các rule của UFW được áp dụng. Vì vậy, firewall không bảo vệ được một container port được publish trên mọi interface. Đây là lý do loopback bind ở phần trên rất quan trọng. Cách Docker bypass UFW giải thích chi tiết vấn đề này. Xem các kiến thức cơ bản về firewall để hiểu đầy đủ, đồng thời lưu ý khoảng trống IPv6, vì một service trên :: vẫn có thể truy cập qua IPv6 ngay cả khi các rule IPv4 của bạn có vẻ rất chặt.

Container isolation bảo vệ agent, không bảo vệ server của bạn

Thiết kế của Agent Zero thực sự làm tốt một loại isolation: framework và mọi agent mà nó tạo ra đều chạy bên trong Docker container thay vì chạy trực tiếp trên host, vì vậy code mà chúng viết và chạy sẽ nằm trong container, không nằm trong thư mục home của bạn. Đây là một cơ chế đáng có. Các agent phụ dùng chung container đó với agent chính, nên ranh giới nằm giữa các agent và host của bạn, không phải giữa chính các agent với nhau. Bạn rất dễ đọc tất cả những điều này rồi kết luận rằng “nó chạy trong sandbox nên tôi an toàn” và dừng lại ở đó. Container isolation giữ công việc của các agent bên ngoài host. Nó không bảo vệ server của bạn khỏi Internet và cũng không ngăn một Web UI bị expose trao quyền điều khiển cho người lạ. Đây là phần việc của bạn trên host. Hãy quyết định trước agent được phép làm đến đâu khi không có ai giám sát, tương tự quyết định được áp dụng cho các permission mode của Claude Code, trong đó một server chạy unattended cần setting chặt chẽ hơn laptop đang ở trước mặt bạn.

Secrets, user và host

Lưu model API key và mọi credential khác trong config của Agent Zero hoặc một environment file mà chỉ đúng account mới đọc được. Không để chúng xuất hiện trong shell history hoặc trong bất kỳ repository nào. Cách làm tương tự áp dụng cho mọi thành phần khác trên máy chủ có nhiệm vụ bảo vệ secret. Ví dụ, hardening Vaultwarden tập trung vào admin token và backup file của nó, không phải cơ chế encryption mà app đã xử lý tốt. Quản trị máy chủ bằng một user không có đặc quyền thay vì root, theo nguyên tắc least privilege cho user, và chuyển SSH sang chỉ xác thực bằng key như trong hướng dẫn hardening SSH. Sau đó, kiểm tra checklist bên dưới để không bỏ sót mục nào.

ToolVPS hardening checklist

Nếu bạn đang so sánh các agent, đây cũng là security posture của hướng dẫn hardening OpenClaw và hướng dẫn OpenHands: giữ control surface ở chế độ private, chạy bằng user không có đặc quyền, mặc định bật firewall và xem host là máy chạy code mà bạn không viết. Để xem so sánh song song cả 5 agent, hãy xem các AI agent self-host tốt nhất năm 2026.

Các khái niệm nền tảng cho mọi lựa chọn trên được trình bày trong hướng dẫn tự xây dựng AI agent trên VPS, còn Dify là một nền tảng self-host khác đáng để so sánh.

FAQ

Agent Zero có an toàn khi tự host không?

Có, nếu bạn giữ Web UI ở chế độ private và tăng cường bảo mật cho host. Agent Zero chạy code, trình duyệt và shell, đồng thời được điều khiển từ Web UI trên cổng của host mà bạn publish. Vì vậy, rủi ro nằm ở interface bị expose, không phải ở framework. Bind UI vào loopback và truy cập qua SSH hoặc VPN, đặt login và password cho UI, cấu hình firewall theo chính sách mặc định từ chối, rồi chạy bằng user không có quyền đặc biệt.

Theo mặc định, Agent Zero có expose Web UI ra Internet không?

Các lệnh docker run được tài liệu hóa sẽ publish interface mà không chỉ định địa chỉ (README dùng -p 80:80). Kiểu mapping này lắng nghe trên mọi network interface. Trên VPS public, UI có thể được truy cập từ Internet ngay khi container khởi động. UFW không chặn được vì Docker định tuyến các port đã publish vòng qua UFW. Thêm 127.0.0.1 vào địa chỉ được publish để UI chỉ lắng nghe trên loopback. Sau đó, truy cập UI qua SSH tunnel hoặc VPN.

Agent Zero có chạy được trên VPS nhỏ không?

Có. Agent Zero chạy ở bất kỳ nơi nào Docker chạy, kể cả VPS nhỏ, chi phí thấp. Tuy nhiên, tác vụ nặng và local model lớn cần nhiều memory hơn. Nếu trỏ Agent Zero đến model tự host thay vì hosted API, hãy chọn cấu hình máy dựa trên model, không chỉ dựa trên Agent Zero.

Agent Zero khác OpenClaw hoặc Hermes như thế nào?

Các công cụ này có phần chức năng trùng nhau nhưng hướng đến mục tiêu khác nhau. Agent Zero là framework ưu tiên Docker, xoay quanh một agent chính có thể tạo các agent phụ bên trong container, và được điều khiển từ Web UI. OpenClaw và Hermes là các personal assistant mà bạn truy cập qua ứng dụng chat. Security posture của cả ba giống nhau: giữ control surface ở chế độ private và tăng cường bảo mật cho host.