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

Có thể tự host Claude không? Câu trả lời thật

Không thể tự host Claude vì Anthropic không công khai model weights. Tìm hiểu lựa chọn thay thế: open model, gateway tự quản lý và Claude Code trên server của bạn.

Bạn có thể tự host Claude không? Không, và đây là lý do

Bạn không thể tự host Claude. Anthropic không công bố model weights, nên không có file để tải xuống, không có container để chạy và không có licence cho phép bạn serve model này từ phần cứng của mình. Mọi request đến Claude đều đi tới API của Anthropic hoặc một hosted partner như Amazon Bedrock, Google Vertex AI hay Microsoft Foundry. Chạy Claude trên máy do bạn sở hữu không phải là vấn đề cấu hình. Artefact này đơn giản là không tồn tại bên ngoài Anthropic.

Đó là câu trả lời ngắn. Câu trả lời đầy đủ hơn là hầu hết những người đặt câu hỏi này thực ra không cần model weights. Họ cần một trong ba thứ, và cả ba đều có thể triển khai trên server do bạn kiểm soát: một model đủ năng lực chạy local, một gateway giữ API key của họ và giới hạn chi phí, hoặc một coding agent chạy trên chính máy của họ thay vì laptop. Hướng dẫn này bao gồm cả ba, kèm các command.

“Self-hosted Claude” thường có nghĩa là gì

Lưu lượng tìm kiếm cho cụm từ “self-hosted Claude” thường phản ánh một vài nhu cầu khác nhau, và mỗi nhu cầu cần một cách giải quyết riêng.

Một số người muốn bảo mật quyền riêng tư. Họ không muốn prompt rời khỏi network của mình. Chỉ một model local có open weight mới giải quyết được việc này, vì mọi request đến Claude theo định nghĩa đều là request gửi đến Anthropic.

Một số người muốn kiểm soát chi phí. Họ lo một agent chạy mất kiểm soát và tiêu hết credit. Gateway giải quyết được việc này và hoạt động với Claude, nên bạn vẫn giữ được chất lượng model.

Một số người muốn không phụ thuộc vào laptop. Họ muốn agent tiếp tục chạy khi gập máy. VPS giải quyết được việc này, và Claude Code chạy ổn định trên đó.

Một số người muốn có mô hình “self-hosted OpenRouter”. Đây cũng là một gateway, và lựa chọn thường dùng là LiteLLM.

Hãy xác định bạn thuộc trường hợp nào, vì cách triển khai phù hợp sẽ khác nhau trong từng trường hợp.

Tự host model open weight bằng Ollama

Nếu yêu cầu là không có prompt nào rời khỏi server, hãy chạy một model open weight. Các họ model hiện thực sự dùng được trên server thuê gồm Llama, Qwen, Mistral, Gemma và DeepSeek. Tất cả đều công bố weights để bạn tải xuống và chạy.

Ollama là cách nhanh nhất để bắt đầu. Install script chỉ có một dòng và script này thiết lập một systemd service trên Ubuntu.

curl -fsSL https://ollama.com/install.sh | sh
systemctl status ollama

systemctl status ollama phải in ra active (running). Sau đó pull một model và tương tác với model đó.

ollama pull qwen3:8b
ollama run qwen3:8b "Summarise what a reverse proxy does in two sentences."

Lần pull đầu sẽ tải xuống vài GB, nên model phải vừa trong RAM hoặc GPU memory trước khi có thể trả lời. Quy tắc ước tính cho quantised model: model 8 billion parameter cần khoảng 6 GB trống, model 14 billion parameter cần khoảng 10 GB, còn model 70 billion parameter cần nhiều memory hơn hầu hết gói VPS đa dụng có sẵn. Nếu máy thiếu memory, kernel sẽ kill process và bạn sẽ thấy Error: llama runner process has terminated, cùng một dòng out of memory trong dmesg. Kiểm tra free -h trước khi cho rằng model bị lỗi. Cùng ngân sách memory đó cũng quyết định model thực sự đọc được bao nhiêu phần của prompt dài, vì Ollama âm thầm truncate mọi nội dung vượt quá context window mặc định khá nhỏ. Vì vậy, tăng num_ctx và phân bổ KV cache phù hợp là việc đầu tiên cần kiểm tra khi tài liệu dài chỉ được tóm tắt một nửa.

Ollama cũng cung cấp HTTP API trên 127.0.0.1:11434. Nhờ đó, các phần mềm khác có thể sử dụng Ollama thay vì chỉ dùng nó như một chat toy.

curl http://127.0.0.1:11434/api/generate -d '{"model":"qwen3:8b","prompt":"ping","stream":false}'

Nếu request đầu tiên sau một khoảng thời gian không hoạt động mất 30 giây, còn request tiếp theo trả về ngay lập tức, thì không có gì bị hỏng: Ollama unload model sau 5 phút idle. Giữ model thường trú bằng keep_alive sẽ loại bỏ thời gian reload đó.

Hãy để port này chỉ bind vào localhost. Một Ollama port mở trên public IP chẳng khác nào cung cấp GPU miễn phí cho bất kỳ ai tìm thấy nó. Bản hướng dẫn đầy đủ, gồm systemd unit, GPU detection và cách đặt reverse proxy phía trước, có trong hướng dẫn chạy Ollama trên VPS. Nếu bạn phục vụ nhiều hơn một user cùng lúc, hãy đọc bài so sánh Ollama và vLLM trước, vì thiết kế single stream của Ollama sẽ trở thành bottleneck từ lâu trước khi hardware bị giới hạn.

Hãy đánh giá đúng khoảng cách. Một open model tốt trên VPS tầm trung thực sự hữu ích cho việc tóm tắt, phân loại, soạn thảo và trích xuất đơn giản. Với suy luận dài qua nhiều bước, codebase lớn và việc sử dụng tool theo kiểu agent, model này vẫn kém xa frontier hosted model; không có mức prompt tuning nào có thể xóa bỏ khoảng cách đó. Hãy chọn local model cho những công việc nó làm tốt, và trả phí cho hosted model khi độ khó thực sự cao.

Tự chạy gateway với LiteLLM

Đây là “OpenRouter tự host” mà nhiều người đang tìm. Gateway nằm giữa ứng dụng của bạn và mọi model provider. Ứng dụng chỉ giữ một key trỏ đến server của bạn. Các key thật của provider chỉ nằm trên server đó. Bạn có thể giới hạn chi phí theo từng key, route các ứng dụng khác nhau đến các model khác nhau và ghi log mọi request tại một nơi.

LiteLLM là lựa chọn phổ biến vì nó cung cấp OpenAI compatible API và proxy đến Anthropic, Ollama cùng hầu hết provider khác qua cùng một endpoint. Chạy LiteLLM trong Docker với một file config.

model_list:
  - model_name: claude
    litellm_params:
      model: anthropic/claude-sonnet-5
      api_key: os.environ/ANTHROPIC_API_KEY
  - model_name: local
    litellm_params:
      model: ollama/qwen3:8b
      api_base: http://127.0.0.1:11434

Lưu nội dung đó thành litellm_config.yaml rồi khởi động proxy. Proxy listen trên port 4000.

docker run -v $(pwd)/litellm_config.yaml:/app/config.yaml \
  -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
  -e LITELLM_MASTER_KEY=sk-1234 \
  -p 4000:4000 docker.litellm.ai/berriai/litellm:latest \
  --config /app/config.yaml

LITELLM_MASTER_KEY là thông tin xác thực quản trị, vì vậy hãy bảo vệ nó như root password và không dùng giá trị ví dụ trong môi trường thật. Gọi proxy giống hệt cách bạn gọi một hosted API.

curl http://localhost:4000/v1/chat/completions \
  -H 'Authorization: Bearer sk-1234' \
  -H 'Content-Type: application/json' \
  -d '{"model": "claude","messages": [{"role": "user","content": "Say hello in five words."}]}'

Response thành công là JSON thông thường có một array choices. 401 nghĩa là xác thực thất bại. Với cấu hình này, nguyên nhân thường gặp là header Authorization không khớp với master key. LiteLLM cũng trả về lỗi này khi virtual key không hợp lệ, và provider key bị provider từ chối cũng làm xác thực thất bại (chẳng hạn ANTHROPIC_API_KEY không đúng), với tên provider trong lỗi theo dạng <Provider>Exception. 400 chứa tên model thường có nghĩa là model trong request không khớp với model_name nào trong file config. LiteLLM cũng trả về 400 khi request quá dài so với context window của model, vì vậy hãy đọc message lỗi trước khi sửa config.

Lý do xây dựng gateway này thay vì gọi trực tiếp Anthropic là để giới hạn chi phí. Tạo một virtual key riêng cho mỗi ứng dụng và đặt budget riêng cho từng key.

curl 'http://0.0.0.0:4000/key/generate' \
--header 'Authorization: Bearer sk-1234' \
--header 'Content-Type: application/json' \
--data-raw '{"models": ["claude"], "max_budget": 100}'

Virtual key và budget cần một database Postgres phía sau proxy. docker run ở trên chưa có database, vì vậy trước tiên hãy thêm -e DATABASE_URL=postgresql://user:password@host:5432/litellm vào đó. Không có database, call này sẽ fail với No connected db.

Key đó có thể chi tối đa một trăm dollar và chỉ truy cập một model, không làm được việc gì khác. Khi một agent hoạt động sai vào lúc ba giờ sáng, phạm vi ảnh hưởng chỉ là một key thay vì toàn bộ account của bạn. Pattern này cùng với cơ chế monitoring đi kèm được trình bày trong kiểm soát chi phí agent trên VPS. Nếu bạn vẫn đang cân nhắc có nên trả phí theo token hay không, so sánh chi phí API và subscription sẽ giúp bạn tính toán cụ thể.

Hãy lưu ý gateway không làm được gì. Nó không biến Claude thành local và không che giấu prompt của bạn khỏi Anthropic. Request vẫn rời server của bạn để đến provider. Thứ bạn có được là quyền kiểm soát key, chi phí, routing và log.

Chạy Claude Code trên VPS của bạn

Điều ước thứ ba là điều dễ thực hiện nhất. Claude Code là một client. Nó được cài dưới dạng một binary native duy nhất và gọi API qua HTTPS. Cài nó trên server do bạn sở hữu giúp agent tiếp tục hoạt động sau khi bạn tắt laptop. Phạm vi ảnh hưởng của agent cũng chỉ nằm trong một máy mà bạn có thể dựng lại, thay vì nằm trên máy chính.

npm install -g @anthropic-ai/claude-code
claude --version

Gói npm yêu cầu Node.js 22 trở lên. Tuy nhiên, trên Node.js cũ hơn, quá trình cài đặt chỉ in ra cảnh báo EBADENGINE rồi vẫn hoàn tất. Bộ cài native được Anthropic khuyến nghị là curl -fsSL https://claude.ai/install.sh | bash và hoàn toàn không cần Node.js. Dù dùng cách nào, binary claude sau khi cài cũng không chạy trên Node. Anthropic liệt kê 4 GB RAM là mức tối thiểu, vì vậy hãy chọn VPS có đủ tài nguyên.

Hãy chạy nó trong tmux để kết nối SSH bị ngắt không làm dừng job đang chạy lâu. Phần thiết lập này, bao gồm cả việc quản lý session, được trình bày trong chạy Claude Code trên VPS với tmux. Cấp cho agent một user không có quyền đặc biệt riêng. Trước khi cấp quyền ghi vào bất kỳ dữ liệu nào quan trọng, hãy đọc các quy tắc an toàn khi chạy Claude Code trên server.

Đây là tự host agent, không phải model. Cần phân biệt rõ điểm này vì nhiều người thường đánh đồng hai khái niệm. Bạn sở hữu process, filesystem, network egress và log. Anthropic vẫn sở hữu phần inference.

Chi phí thực tế của từng lựa chọn

Giá có thể thay đổi, vì vậy hãy xem các con số này là mức tham khảo chứ không phải báo giá. Tính đến ngày 17 October 2026, Claude Sonnet 5.5 có giá $2 cho mỗi triệu input token và $10 cho mỗi triệu output token. Claude Opus 5.5 có giá lần lượt là $4 và $20. Sonnet 5, model trong gateway config ở trên, đã được thay thế bởi Sonnet 5.5 nhưng chưa bị deprecated: trang model deprecations của Anthropic liệt kê model này ở trạng thái Active và thời điểm ngừng hỗ trợ không sớm hơn 30 June 2027. Giá của nó vẫn là $2 và $10. Opus 5 vẫn có giá $5 và $25. Local model không tính phí theo token. Thay vào đó, bạn trả chi phí server hằng tháng, bất kể có sử dụng hay không.

Điểm hòa vốn thấp hơn nhiều người nghĩ. VPS có đủ memory để chạy một open model hữu ích sẽ tốn tiền mỗi tháng và phần lớn thời gian sẽ ở trạng thái idle. Nếu nhu cầu sử dụng không đều, hosted API thường rẻ hơn. Nếu nhu cầu sử dụng liên tục hoặc dữ liệu không được phép rời khỏi network của bạn, local model có lợi ở cả hai mặt.

Cách kết hợp thực tế là lựa chọn mà phần lớn team sử dụng. Chạy open model local cho các tác vụ có volume cao và độ khó thấp. Chuyển các request khó sang hosted frontier model. Đặt một gateway phía trước cả hai để application không cần biết request được xử lý bởi model nào. Bạn cũng có thể thay đổi ranh giới phân loại mà không phải sửa application code. Đây là phiên bản thực tế của “self hosted Claude”. Khác với phiên bản theo nghĩa đen, nó thực sự tồn tại. Nếu bạn cũng muốn tự chạy toàn bộ agent stack, bài tổng hợp về các AI agent tự host trình bày những lựa chọn hiện có.

FAQ

Tôi có thể tải model weights của Claude và chạy cục bộ không?

Không. Anthropic chưa từng phát hành weights cho bất kỳ model Claude nào và không có license nào cho phép self-hosting. Bất kỳ thứ gì được quảng cáo trên mạng là “Claude model” có thể là một model khác nhưng dùng tên gây hiểu nhầm, hoặc là một wrapper gọi API. Nếu nó cần API key thì đó không phải là chạy cục bộ.

Model mở nào gần với Claude nhất?

Không có model nào giống hoàn toàn, và các model dẫn đầu thay đổi sau vài tháng. Những họ open-weight đáng để thử gồm Llama, Qwen, Mistral, Gemma và DeepSeek. Với việc tóm tắt, phân loại và chỉnh sửa code đơn giản, một model mở tốt có 8 đến 14 billion parameters thực sự hữu ích. Với suy luận nhiều bước trên ngữ cảnh dài và việc dùng tool theo kiểu agent, khoảng cách với frontier model được host vẫn còn lớn. Hãy kiểm thử bằng prompt của bạn thay vì chỉ tin vào leaderboard.

LiteLLM có phải là OpenRouter self-hosted không?

Về chức năng thì đúng, nếu xét phần routing và quản lý key. LiteLLM chạy trên server của bạn, cung cấp một endpoint tương thích với OpenAI và proxy request đến Anthropic, Ollama cùng hầu hết provider khác. Sau khi gắn Postgres database, bạn có giới hạn chi tiêu theo từng key, cùng với model routing và một nơi duy nhất để đọc log. LiteLLM không cung cấp local inference: request đến Claude vẫn đi qua Anthropic.

Chạy Claude Code trên server riêng có giữ code của tôi ở chế độ riêng tư không?

Không. Claude Code gửi nội dung các file mà nó đọc đến Anthropic API, bất kể process đang chạy ở đâu. VPS chỉ giúp cô lập agent, không giữ nội dung ở chế độ riêng tư. Hãy cấp cho nó một user chuyên dụng không có quyền đặc biệt, không cho nó truy cập credential và repository không liên quan, đồng thời xem mọi thứ nó có thể đọc là nội dung sẽ rời khỏi server.

Bài viết này có hữu ích không?