VPS

VPS làm máy dev từ xa: VS Code Remote SSH

Thanh Nguyễn Đăng 10 phút đọc 3 khối lệnh

VPS làm máy dev từ xa: VS Code Remote SSH
Mục lục bài viết
  1. Mô hình này thật ra là gì
  2. Cài đặt trong mười phút
  3. Ba thói quen khiến trải nghiệm khác hẳn
  4. Chọn cấu hình theo loại dự án
  5. Khi nào mô hình này không hợp
  6. Bảng cấu hình theo từng loại dự án
  7. Ba thiết lập nhỏ đổi hẳn cảm giác dùng
  8. Hai tình huống nên bỏ hướng này
  9. Câu hỏi thường gặp
  10. Bài viết liên quan

Trả lời nhanh: VS Code Remote SSH cho phép bạn mở thư mục trên VPS ngay trong cửa sổ VS Code quen thuộc: gõ code ở máy mình, còn mọi thứ nặng nhọc như biên dịch, chạy test, chạy Docker và chạy agent AI đều diễn ra trên máy chủ. Laptop chỉ còn làm màn hình và bàn phím, nên máy yếu vẫn làm việc mượt, và công việc không biến mất khi bạn gập máy.

Có một nghịch lý quen thuộc với dân lập trình Việt Nam: máy đủ tiền mua thì thiếu RAM, máy đủ mạnh thì đắt và nóng. Trong khi đó phần lớn thời gian máy chỉ ngồi chờ trình biên dịch. Chuyển phần nặng lên một VPS và giữ nguyên trải nghiệm gõ code là cách rẻ hơn nhiều so với đổi máy, và còn được thêm vài thứ mà laptop không cho: môi trường giống production, chạy tiếp khi bạn đóng máy, và mở ở máy nào cũng thấy công việc y nguyên.

Mô hình này thật ra là gì

VS Code tách làm hai nửa. Nửa giao diện chạy trên máy bạn, nửa còn lại là một tiến trình nhỏ VS Code tự cài lên máy chủ qua SSH. Toàn bộ tệp dự án, tiện ích mở rộng ngôn ngữ, trình biên dịch, terminal đều nằm ở phía máy chủ. Bạn gõ ký tự, tín hiệu đi qua SSH, còn kết quả hiện lại trên màn hình.

Hệ quả rất dễ chịu. Laptop 8GB RAM vẫn mở được dự án nặng vì phần ngốn bộ nhớ nằm ở máy chủ. Môi trường giống hệt production nên hết cảnh chạy được ở máy mình mà lên server thì lỗi. Đổi từ laptop sang máy bàn cũng chỉ là mở lại cùng một kết nối, không phải cài lại gì. Và nếu bạn đang cho agent AI làm việc dài, nó chạy trên máy chủ nên bạn đóng máy đi ngủ vẫn không sao.

Cài đặt trong mười phút

Bước 1, tạo khóa SSH trên máy bạn nếu chưa có, rồi chép khóa công khai lên máy chủ:

TerminalCài đặt trong mười phútbash
ssh-keygen -t ed25519 -C "laptop"ssh-copy-id ten_user@dia_chi_ip

Bước 2, đặt bí danh cho gọn trong file ~/.ssh/config ở máy bạn:

TerminalCài đặt trong mười phútbash
Host devbox    HostName 103.x.x.x    User dev    IdentityFile ~/.ssh/id_ed25519    ServerAliveInterval 30

Dòng cuối giữ kết nối không bị rớt khi bạn để máy nghỉ vài phút. Từ giờ chỉ cần gõ ssh devbox.

Bước 3, trong VS Code, cài tiện ích Remote SSH, bấm mở bảng lệnh rồi chọn kết nối tới host devbox. Lần đầu nó cài phần máy chủ mất chừng một phút. Xong thì mở thư mục dự án như bình thường. Terminal tích hợp lúc này là terminal của máy chủ, chạy lệnh gì cũng chạy ở đó.

Bước 4, siết bảo mật: tắt đăng nhập bằng mật khẩu trên máy chủ khi khóa đã hoạt động, hoặc gọn hơn nữa là không mở cổng SSH ra internet mà đi qua mạng riêng theo bài Tailscale SSH.

Ba thói quen khiến trải nghiệm khác hẳn

Chạy việc dài trong tmux. Terminal của VS Code sẽ chết theo kết nối, nên lệnh chạy vài chục phút cần được đặt trong một phiên tmux. Rớt mạng thì gắn lại phiên là thấy việc vẫn chạy tiếp. Cách dùng nằm ở bài tmux, và đây cũng chính là nền để chạy agent AI qua đêm. Muốn agent làm đúng ý ngay từ lượt đầu thì đặt luật cho nó theo bài CLAUDE.md.

Chuyển tiếp cổng. Khi bạn chạy ứng dụng ở cổng 3000 trên máy chủ, VS Code thường tự chuyển tiếp và bạn mở được ngay ở trình duyệt máy mình. Nếu không tự nhận, thêm tay trong tab Ports. Nhờ vậy bạn xem thử giao diện mà không cần mở cổng đó ra internet.

Giữ cấu hình cá nhân ở một chỗ. Sau vài tuần bạn sẽ tinh chỉnh khá nhiều thứ trên máy chủ. Lưu các file cấu hình vào một repo riêng để khi dựng máy mới, chỉ cần chép về là môi trường trở lại như cũ. Đây là khác biệt giữa một máy dev dùng được và một máy dev bạn ngại đụng vào.

Chọn cấu hình theo loại dự án

Loại dự ánCấu hình đủ dùngChỗ nghẽn thường gặp
Web PHP, WordPress2 vCPU, 4GBTruy vấn cơ sở dữ liệu
Node, Next.js, React4 vCPU, 8GBCài gói và bước build
Nhiều container Docker4 vCPU, 8 tới 16GBRAM và dung lượng ổ
Android hoặc Flutter4 vCPU, 8 tới 16GBGradle, đọc ghi file nhỏ
Chạy agent AI qua đêm4 vCPU, 8GBPhiên phải bền, mạng ổn định

Điểm hay bị đánh giá thấp là ổ đĩa. Công việc lập trình sinh ra hàng vạn thao tác trên file nhỏ, từ cài gói tới biên dịch tới chạy test, nên ổ nhanh cắt thời gian chờ rõ hơn là thêm một nhân CPU. Số đo cụ thể nằm trong bài đo compile và build.

Về vị trí đặt máy, với người dùng ở Việt Nam thì máy trong nước cho độ trễ gõ phím thấp, và đây là thứ bạn cảm nhận từng giây khi làm việc.

Khi nào mô hình này không hợp

Nói thẳng để bạn khỏi thất vọng. Mạng của bạn phải ổn định: độ trễ cao hoặc rớt liên tục làm việc gõ code khó chịu, dù tmux giúp không mất việc. Công việc cần giao diện đồ họa nặng như thiết kế, dựng video, hoặc chạy emulator có màn hình thì không hợp, đó vẫn là sân của máy cá nhân. Build iOS thì như bài build APK Android đã nói, cần macOS chứ VPS Linux không thay được.

Ngược lại, nếu công việc của bạn là web, backend, dữ liệu, hoặc chạy agent AI làm việc dài, thì mô hình này gần như luôn thắng về chi phí. Một VPS tầm trung chạy cả năm vẫn rẻ hơn nhiều so với chênh lệch giá khi nâng cấu hình laptop, mà lại phục vụ được cả đội chứ không riêng một người.

Bảng cấu hình theo từng loại dự án

Loại dự ánBộ nhớỔ đĩaGhi chú
Trang tĩnh, dự án nhỏ2 GB40 GBĐủ thoải mái
Ứng dụng web có cơ sở dữ liệu4 GB80 GBMức phổ biến nhất
Dự án lớn, nhiều thư viện, chạy kiểm thử8 GB160 GBBộ nhớ là thứ chạm trần trước
Nhiều người dùng chung máy16 GB320 GBMỗi người một tài khoản và thư mục riêng

Ba thiết lập nhỏ đổi hẳn cảm giác dùng

  • Loại thư mục thư viện và lịch sử phiên bản khỏi phạm vi quét của trình soạn thảo. Đây là thay đổi cho hiệu quả lớn nhất và không tốn gì.
  • Giữ kết nối không rớt bằng cấu hình gửi tín hiệu sống định kỳ. Không có nó, phiên rớt mỗi khi bạn rời máy vài phút.
  • Chạy việc dài trong bộ ghép màn hình, để nó không chết theo kết nối.
TerminalBa thiết lập nhỏ đổi hẳn cảm giác dùngbash
# Trong ~/.ssh/config tren may cua ban# Host may-dev#   HostName 1.2.3.4#   User lap-trinh#   ServerAliveInterval 30#   ServerAliveCountMax 6#   IdentityFile ~/.ssh/id_ed25519 # Tren may chu: chi cho dang nhap bang khoased -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_configsystemctl restart sshd # Bo ghep man hinhapt install -y tmuxtmux new -s lam-viec # Dat vung nho tam, chong bi dung tien trinh khi build nangfallocate -l 4G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfileecho '/swapfile none swap sw 0 0' >> /etc/fstab

Hai tình huống nên bỏ hướng này

  • Mạng chập chờn hoặc độ trễ cao. Gõ phím qua kết nối trễ trên 50 ms là khó chịu. Máy chủ trong nước giữ độ trễ dưới 20 ms.
  • Hay làm việc ở nơi không có mạng.
  • Công việc cần giao diện đồ họa nặng, ví dụ thiết kế hoặc dựng phim.
  • Dự án rất nhỏ, chạy trên máy cá nhân đã đủ nhanh.

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

Máy cấu hình yếu có dùng được không?

Được, vì máy bạn chỉ chạy giao diện VS Code và kết nối SSH. Laptop cũ với 8GB RAM vẫn làm việc thoải mái trên dự án nặng, miễn là đường truyền ổn định. Đây chính là lý do nhiều người chọn cách này thay vì mua máy mới.

Mất mạng giữa chừng thì code đang viết có mất không?

File đã lưu thì nằm an toàn trên máy chủ. Phần chưa lưu trong cửa sổ soạn thảo có thể mất, nên giữ thói quen lưu thường xuyên hoặc bật tự động lưu. Lệnh đang chạy thì không mất nếu bạn đặt trong tmux.

Có thể dùng chung một VPS cho nhiều người trong đội không?

Có, tạo tài khoản riêng cho từng người và phân quyền thư mục rõ ràng. Cần lưu ý tài nguyên dùng chung, một người chạy build nặng sẽ làm chậm người khác. Với đội từ ba người trở lên, nên tách máy hoặc chọn cấu hình dư dả.

Dùng JetBrains hoặc Neovim thay VS Code được không?

Được. JetBrains có chế độ phát triển từ xa tương tự, còn Neovim thì chỉ cần SSH vào rồi mở, thậm chí nhẹ hơn nhiều. Nguyên tắc chung không đổi: phần nặng chạy trên máy chủ, máy cá nhân chỉ là màn hình.

Chia sẻ:Facebook

Thanh Nguyễn

TND

Tư vấn bản quyền, VPS và máy chủ kèm hóa đơn VAT, hợp đồng đầy đủ cho doanh nghiệp.