SSD Nodes Learn 🎉 VPS từ $4.99/tháng
Hướng dẫn Matt ConnorBởi Matt Connor

Claude trên Linux: Desktop app và CLI

Biết phần nào của Claude chạy native trên Linux: desktop app beta cài qua apt, Claude Code CLI, plugin editor, cùng plan trả phí hỗ trợ từng phần.

Những phần nào của Claude chạy native trên Linux hiện nay

Claude trên Linux có 4 surface riêng biệt. Tính đến tháng 8 năm 2026, cả 4 đều chạy trên máy Ubuntu hoặc Debian thông thường. Desktop app cài đặt từ apt repository của Anthropic và đang ở trạng thái beta. Claude Code CLI (command line interface) là một binary đã biên dịch sẵn và chạy trên nhiều distribution hơn desktop app. Web app tại claude.ai chỉ cần browser. API là một HTTPS endpoint mà bạn gọi từ code của mình.

Linux desktop beta còn thiếu 2 tính năng có trên macOS và Windows: Computer Use, cho phép Claude điều khiển các app trên màn hình, và voice dictation. Anthropic ghi rõ cả 2 tính năng này chưa khả dụng trên Linux. CLI có voice dictation riêng. Vì vậy, điểm thiếu nằm ở desktop app chứ không phải ở Claude nói chung.

Tình trạng khả dụng có thể thay đổi. Hãy xem trang này là phần mô tả các surface và kiểm tra trạng thái hiện tại trước khi lập kế hoạch dựa trên chúng. Phần cuối liệt kê các trang cần kiểm tra.

Cài ứng dụng desktop Claude trên Ubuntu hoặc Debian

Yêu cầu được công bố là Ubuntu 22.04 trở lên hoặc Debian 12 trở lên, chạy trên x86_64 (mà dpkg gọi là amd64) hoặc arm64. Các distribution khác dựa trên Debian có thể hoạt động nhưng chưa được kiểm thử. Fedora và RHEL hiện chưa có package, nên trên các hệ thống đó bạn dùng CLI hoặc trình duyệt.

Hãy cài đặt từ apt repository thay vì từ file .deb đã tải xuống. Ứng dụng Linux không có updater riêng, nên phiên bản mới chỉ đến qua package manager. Việc đăng ký repository cho phép apt upgrade nhìn thấy các phiên bản đó.

sudo apt install curl gnupg
sudo curl -fsSLo /usr/share/keyrings/claude-desktop-archive-keyring.asc \
  https://downloads.claude.ai/claude-desktop/key.asc
gpg --show-keys /usr/share/keyrings/claude-desktop-archive-keyring.asc

gpg --show-keys phải in ra fingerprint 31DDDE24DDFAB679F42D7BD2BAA929FF1A7ECACE. Hãy so sánh fingerprint trước khi đăng ký repository, vì signing key chưa được kiểm tra là key mà bạn đang tin tưởng một cách mù quáng. Nếu gpg báo file không chứa dữ liệu OpenPGP hợp lệ, quá trình tải xuống đã thất bại và apt update sẽ lỗi sau đó với NO_PUBKEY BAA929FF1A7ECACE.

Đăng ký repository là một dòng deb được ghi vào /etc/apt/sources.list.d/claude-desktop.list. Hãy sao chép dòng đó từ trang cài đặt Linux của Anthropic, code.claude.com/docs/en/desktop-linux, đúng như nội dung được in trên trang. Địa chỉ repository là phần dễ thay đổi nhất trong quy trình này. Gõ một dòng theo trí nhớ có thể khiến bạn phải xử lý E: Unable to locate package claude-desktop sau đó. Đọc dòng này trước khi dán: arch=amd64,arm64 là lý do apt trên mọi architecture khác không tìm thấy gì, còn signed-by= trỏ đến file keyring bạn vừa kiểm tra. Nhờ đó, key này chỉ được tin cậy cho repository này thay vì cho mọi nguồn khác mà apt đọc.

sudo apt update && sudo apt install claude-desktop

Hãy khởi động ứng dụng từ application launcher hoặc chạy claude-desktop trong terminal. Đăng nhập bằng tài khoản claude.ai hoặc qua SSO (single sign-on) của tổ chức nếu công ty bạn đã cấu hình. Ứng dụng desktop không chấp nhận Claude Console API key. Xác thực bằng key là tính năng của CLI.

E: Unable to locate package claude-desktop nghĩa là apt chưa đọc repository. cat /etc/apt/sources.list.d/claude-desktop.list phải hiển thị dòng deb mà bạn đã ghi, còn dpkg --print-architecture phải in ra amd64 hoặc arm64, vì không có package cho các architecture khác. Sau đó, bản cập nhật sẽ đến cùng các bản cập nhật khác của hệ thống, từ sudo apt update && sudo apt upgrade.

Những gì chỉ có trong browser

claude.ai hoạt động trên mọi browser hiện đại của mọi distribution. Vì vậy, đây là lựa chọn phù hợp trên Fedora, RHEL, Arch, openSUSE và mọi hệ thống khác không có package. Browser cũng cung cấp Claude Code trên web. Session chạy trên cloud của Anthropic thay vì trên máy của bạn và luôn dùng thông tin xác thực subscription của bạn.

Điều quan trọng cần hiểu là giới hạn của browser. Một cloud session không thể đọc các file trên server của bạn hoặc chạy command trên đó. Mọi thao tác truy cập máy của bạn đều cần software được cài trên chính máy đó, tức là CLI hoặc desktop app.

CLI cung cấp gì mà web app không có

Chạy claude trong một thư mục thì nó làm việc trên thư mục đó. Đây là điểm khác biệt, và mọi thứ khác đều bắt nguồn từ đó.

  • Nó đọc và chỉnh sửa các file trong thư mục làm việc, đồng thời hiển thị từng thay đổi trước khi áp dụng.
  • Nó chạy các shell command bạn phê duyệt, nên có thể build project, chạy test suite, đọc log hoặc kiểm tra service ngay trên máy chủ.
  • Nó chạy mà không cần interactive session: claude -p "read the nginx error log and summarise it" in ra một câu trả lời rồi thoát. Đây là cách dùng từ cron job hoặc pipeline.
  • Nó kết nối các server MCP (model context protocol) bằng claude mcp add, nhờ đó model có thêm tool ngoài filesystem.
  • Nó chạy được ở nơi hoàn toàn không có graphical desktop. Đây là trường hợp của mọi VPS (virtual private server) bạn thuê.

Điểm cuối cùng là lý do guide dành cho server cần nói về CLI. Server thuê có SSH (secure shell) và không có gì khác, nên terminal là giao diện duy nhất có thể đồng hành với bạn trên máy đó. Cách chạy này có các quy tắc riêng. chạy Claude Code trên VPS bên trong tmux trình bày đầy đủ các quy tắc đó, còn dùng Claude cho công việc sysadmin hằng ngày trình bày những việc đáng giao cho nó.

Các tích hợp editor nằm ở giữa hai cách này. Extension cho VS Code cần VS Code 1.94.0 trở lên và cung cấp một panel đồ họa bên trong editor, kèm diff và phần review plan. Extension này đóng gói một bản CLI riêng cho panel đó nhưng không thêm claude vào PATH của bạn, nên khi gõ claude trong integrated terminal, bạn vẫn cần cài bản standalone. Các editor xây dựng trên VS Code cài cùng extension từ registry Open VSX, và cũng có plugin cho JetBrains.

Bạn có cần Node.js để chạy Claude Code trên Linux không?

Không, nếu dùng cách cài đặt được khuyến nghị. Native installer tải xuống một binary đã được compile, và binary đó không chạy trên Node.js.

curl -fsSL https://claude.ai/install.sh | bash
claude --version

claude --version sẽ in ra một số phiên bản như 2.1.211 (Claude Code). Nếu kết quả có vẻ không đúng, hãy chạy claude doctor. Lệnh này in thông tin chẩn đoán chỉ-đọc về bản cài đặt và các file settings mà không khởi động session.

Node.js chỉ cần thiết khi cài qua npm. Từ package version 2.1.198, npm package yêu cầu Node.js 22 trở lên. Với Node.js cũ hơn, npm in cảnh báo EBADENGINE thay vì fail, vì package này kéo cùng native binary dưới dạng dependency theo từng platform rồi link binary đó vào đúng vị trí.

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

Không chạy lệnh đó với sudo. Tài liệu cảnh báo không nên dùng sudo npm install -g vì cách này tạo các file do root sở hữu trong global npm prefix. Khi đó, lần cài đặt hoặc update tiếp theo bằng tài khoản không có quyền đặc quyền sẽ fail do lỗi permission. Khi global npm directory không cho phép ghi, background auto-update sẽ ngừng hoạt động và claude doctor liệt kê các cách khắc phục.

Anthropic cũng phát hành các package repository có chữ ký cho Debian, Fedora, RHEL và Alpine. Vì vậy, sudo apt install claude-code hoạt động gần giống package dành cho desktop, với signing key riêng tại https://downloads.claude.ai/keys/claude-code.asc.

Cài theo user hay trên toàn hệ thống?

Installer native cài theo từng user. Nó đặt launcher tại ~/.local/bin/claude dưới dạng symlink trỏ đến ~/.local/share/claude/versions/, không cần root và tự cập nhật ở chế độ nền. Mỗi user trên máy có một bản riêng, với version riêng.

Cài bằng package manager là cài trên toàn hệ thống. Một binary phục vụ tất cả user, cần root và không tự cập nhật thông qua Claude Code. Bạn nâng cấp bằng sudo apt update && sudo apt upgrade claude-code, cũng là command bạn đã dùng cho mọi thứ khác trên máy.

Chọn cách cài theo user trên máy mà bạn đăng nhập bằng tài khoản của mình. Đây là lựa chọn phù hợp với phần lớn công việc trên VPS. Chọn cách cài bằng package trên shared server hoặc machine image, khi bạn muốn mọi người dùng chung một version và muốn tự quyết định thời điểm nâng cấp. Với bản cài native, hai setting trong ~/.claude/settings.json quyết định cách cập nhật:

{
  "autoUpdatesChannel": "stable",
  "env": {
    "DISABLE_AUTOUPDATER": "1"
  }
}

Channel stable dùng bản release cũ khoảng một tuần và bỏ qua các release có hồi quy nghiêm trọng. DISABLE_AUTOUPDATER chỉ dừng việc kiểm tra ở chế độ nền, nên claude update vẫn hoạt động và bạn vẫn kiểm soát được thời điểm version mới được cài. Điều này quan trọng trên server chạy một job dài ở chế độ unattended, khi bạn không muốn binary tự thay đổi trong lúc job đang chạy.

Đăng nhập qua SSH và giữ session không bị ngắt

Có 2 vấn đề riêng của Linux thường xuất hiện khi bạn chạy CLI lần đầu trên một server thuê. Quy trình đăng nhập yêu cầu browser, nhưng server không có browser. Khi kết nối SSH bị ngắt, công việc đang chạy cũng bị dừng theo.

tmux giải quyết vấn đề thứ hai. Một tmux session thuộc về tmux server trên máy remote, không thuộc về kết nối của bạn. Vì vậy, khi đường truyền bị ngắt, process vẫn tiếp tục chạy.

tmux new -s claude
claude

Nhấn Ctrl-b rồi d để detach, sau đó quay lại bằng tmux attach -t claude.

Đăng nhập là vấn đề đầu tiên. Chạy claude để in ra một URL xác thực. Mở URL đó bằng browser trên máy tính của bạn. Sau khi đăng nhập, browser hiển thị login code thay vì redirect về, vì browser trên laptop không thể truy cập callback server mà Claude Code đã khởi động trên địa chỉ loopback của máy remote. Dán code đó vào terminal tại prompt Paste code here if prompted. Terminal sẽ báo Login successful.

Nếu cần khởi động session khi không có ai theo dõi, claude setup-token sẽ mở quy trình xác thực bằng browser tương tự và in một OAuth token có thời hạn một năm vào terminal. Lệnh này không lưu token ở đâu, nên hãy sao chép token và đặt nó vào nơi bạn cần.

export CLAUDE_CODE_OAUTH_TOKEN=your-token

Token này yêu cầu paid plan và chỉ có thể gửi model request. Hãy coi nó như password có thời hạn một năm. Cách lưu token và ngăn agent đọc lại token là nội dung của giữ secret ngoài tầm với của AI agent.

Các server nhỏ còn gặp thêm một giới hạn. Quá trình cài đặt cần khoảng 512 MB memory trống. Tài liệu yêu cầu phần cứng để chạy là 4 GB RAM trở lên. Vì vậy, trên instance 1 GB, kernel out-of-memory killer sẽ dừng quá trình cài đặt:

Setting up Claude Code...
Installation was killed before it could finish (exit code 137). This usually means the system ran out of memory.

Thêm swap, rồi chạy lại installer. Swap là disk space mà kernel dùng làm memory dự phòng. Swap chậm hơn RAM nhiều, nhưng đủ để hoàn tất quá trình cài đặt.

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

swapon bật file này chỉ cho lần boot hiện tại. Thêm một dòng cho /swapfile vào /etc/fstab nếu muốn swap hoạt động lại sau reboot. Nội dung về những thứ cần khóa thêm trước khi cho agent chạy command trên server đang hoạt động là chạy Claude Code an toàn trên VPS.

Vị trí lưu credential Claude trên Linux

Trên Linux, /login ghi credential vào ~/.claude/.credentials.json với file mode 0600. macOS lưu credential tương tự trong Keychain được mã hóa, vì vậy thói quen bạn hình thành trên Mac không áp dụng được ở đây: trên Linux, token là một file dạng plain text trong thư mục home của bạn và mọi process chạy dưới user của bạn đều có thể đọc file đó. Đặt CLAUDE_CONFIG_DIR sẽ chuyển file vào thư mục đó.

Điều này dẫn đến hai vấn đề. Bản backup của /home chứa thông tin đăng nhập còn hiệu lực, vì vậy sao chép backup đó sang máy dùng chung sẽ trao quyền truy cập account của bạn cho bất kỳ ai khác có thể đọc nó. Ngoài ra, machine image được tạo từ một máy đã đăng nhập sẽ đưa thông tin đăng nhập đó vào mọi instance được clone từ image. Hãy chạy /logout trước khi tạo snapshot.

Thứ tự ưu tiên credential thường gây nhầm lẫn cho người đồng thời có subscription và API key. Khi ANTHROPIC_API_KEY được đặt trong shell, Claude Code sẽ sử dụng credential đó sau khi bạn xác nhận, vì vậy subscription không được dùng trong khi API key tính phí theo token. /status hiển thị credential đang active, còn unset ANTHROPIC_API_KEY đưa bạn trở lại chế độ đăng nhập bằng subscription.

Các phiên đăng nhập sẽ hết hạn. Trong vòng ba ngày trước khi hết hạn, dòng khởi động sẽ hiển thị Your login expires in 3 days; cảnh báo này không chặn request. Sau khi hết hạn, mọi request đều fail với Login expired · Please run /login. Hãy biết điều này trước khi để một session không có người giám sát chạy suốt cuối tuần, vì session đó sẽ dừng xử lý và không thể tự khôi phục.

Một subscription Claude có bao phủ tất cả không?

Một gói trả phí bao phủ mọi giao diện với cùng một thông tin đăng nhập. Tài khoản Pro, Max, Team hoặc Enterprise cho phép bạn đăng nhập vào claude.ai trên trình duyệt, desktop app, CLI và VS Code extension. Đây vẫn là cùng một subscription trong mọi trường hợp. Gói claude.ai miễn phí không bao gồm quyền truy cập Claude Code. Vì vậy, CLI và các tính năng Claude Code trong desktop app cần gói trả phí hoặc tài khoản Claude Console.

API là một product khác với cơ chế tính phí khác. Tài khoản Console tính phí theo token dựa trên lượng dữ liệu bạn thực sự gửi. Cách này phù hợp với một service bạn đang xây dựng hơn là việc bạn nhập lệnh trực tiếp trong terminal. Thiết lập ANTHROPIC_API_KEY chuyển CLI sang cơ chế tính phí đó. Đây là lựa chọn của bạn, không phải phương án dự phòng.

Giá và giới hạn của các gói thay đổi quá thường xuyên nên không thể ghi lại chính xác ở đây. Hai trang sau theo dõi các số liệu hiện tại: chi phí thực tế của Claude Codebạn cần gói Claude nào. Nếu đang cân nhắc tính phí theo token so với gói hàng tháng, so sánh API với subscription sẽ giúp bạn xác định điểm hòa vốn.

Các lỗi cài đặt bạn thực sự sẽ gặp

bash: claude: command not found ngay sau khi cài đặt thành công. Binary nằm tại ~/.local/bin/claude nhưng thư mục đó không có trong search path của shell. Xác nhận bằng echo $PATH | tr ':' '\n' | grep -Fx "$HOME/.local/bin". Lệnh này không in gì nếu entry bị thiếu. Sửa cho bash bằng echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc, rồi chạy source ~/.bashrc. Chỉ cài extension của VS Code sẽ không tự tạo file đó, vì extension giữ bản CLI trong thư mục của extension.

Error loading shared library libstdc++.so.6. Installer đã chọn bản build musl cho hệ thống glibc. Điều này xảy ra khi hệ thống có các package cross-compilation cho musl và bước phát hiện nhận diện sai. Chạy ldd --version 2>&1 | head -1: tên output GNU libc hoặc GLIBC cho biết hệ thống đang dùng glibc và bạn đã nhận nhầm binary. Hãy gỡ bản cài đặt rồi chạy lại installer. Trên Alpine và các hệ thống musl khác, cách sửa là ngược lại: apk add libgcc libstdc++ ripgrep.

Có hai bản claude trên cùng một máy. which -a claude liệt kê mọi kết quả khớp trong PATH. Bản cài đặt native là symlink từ ~/.local/bin/claude đến ~/.local/share/claude/versions/, bản cài đặt npm local kiểu cũ nằm dưới ~/.claude/local/, còn npm -g ls @anthropic-ai/claude-code cho biết có bản cài đặt npm global. Xóa những bản bạn không muốn dùng, vì một bản cũ nằm trước trong PATH sẽ khiến lỗi đã sửa vẫn có vẻ chưa được sửa.

Nơi kiểm tra trạng thái hiện tại

Mọi số phiên bản và ngày tháng trong hướng dẫn này là snapshot của tháng 8 năm 2026. Điều có tính ổn định là mô hình tổng thể: bốn giao diện, một lần đăng nhập dùng chung cho các giao diện có tính phí, và một quyết định về việc CLI thuộc về user của bạn hay toàn bộ máy.

FAQ

Có ứng dụng Claude desktop cho Linux không?

Có. Tính đến tháng 8 năm 2026, ứng dụng này đang ở giai đoạn beta và hỗ trợ Ubuntu 22.04 trở lên cùng Debian 12 trở lên trên amd64 hoặc arm64. Cài đặt bằng sudo apt install claude-desktop sau khi thêm apt repository và signing key của Anthropic, để phiên bản mới được cài cùng các lần nâng cấp hệ thống thông thường. Bản Linux có các tab giống ứng dụng macOS, bao gồm cả tab Claude Code. Computer Use và voice dictation chưa có trên bản Linux. Fedora và RHEL chưa có package, nên trên các distribution này hãy dùng CLI hoặc claude.ai trong browser.

Tôi có cần Node.js để chạy Claude Code trên Linux không?

Không, nếu dùng cách cài đặt được khuyến nghị. curl -fsSL https://claude.ai/install.sh | bash tải xuống một compiled binary không dùng Node.js khi runtime. Node.js chỉ cần thiết nếu bạn cài npm package. Tính đến version 2.1.198, package này yêu cầu Node.js 22 trở lên. Với Node.js cũ hơn, npm in cảnh báo EBADENGINE nhưng quá trình cài đặt vẫn hoàn tất, vì cùng một native binary được tải vào dưới dạng dependency theo từng platform. Không bao giờ cài bằng sudo npm install -g, vì lệnh này tạo các file do root sở hữu trong npm prefix và làm hỏng các lần update sau.

Làm thế nào để đăng nhập Claude Code qua SSH?

Chạy claude. Lệnh này in ra một authorisation URL. Mở URL đó trong browser trên máy tính của bạn, không mở trên server. Sau khi đăng nhập, browser hiển thị login code thay vì redirect, vì browser không thể truy cập callback listener mà Claude Code đã khởi động trên địa chỉ loopback của máy từ xa. Dán code đó vào prompt Paste code here if prompted. Với các session khởi động khi không có người thao tác, chạy claude setup-token và đặt token được in ra làm CLAUDE_CODE_OAUTH_TOKEN ở mọi nơi cần dùng.

Claude Code lưu thông tin đăng nhập ở đâu trên Linux?

Trong ~/.claude/.credentials.json với file mode 0600, hoặc trong CLAUDE_CONFIG_DIR khi bạn đặt biến đó. Linux không dùng keychain như macOS, vì vậy mọi process chạy dưới user của bạn đều có thể đọc file này. Do đó, bản backup /home hoặc machine image có thể chứa thông tin đăng nhập đang hoạt động. Hãy chạy /logout trước khi tạo snapshot hoặc sao chép system. Nếu ANTHROPIC_API_KEY cũng được đặt trong environment, biến này được ưu tiên hơn thông tin đăng nhập subscription đã lưu sau khi bạn phê duyệt nó. /status cho biết thông tin đăng nhập nào đang active.

Gói Claude Pro có bao gồm CLI cùng với web app không?

Có. Gói Pro, Max, Team hoặc Enterprise cho phép bạn đăng nhập vào claude.ai, desktop app, CLI và VS Code extension bằng một account. Gói claude.ai miễn phí không bao gồm Claude Code, nên terminal CLI cần một gói trả phí hoặc account Claude Console. API được tính phí riêng theo từng token từ Console account. Đây là một product khác với subscription.