Trả lời nhanh: code-server là bản VS Code chạy trên máy chủ và hiện ra trong trình duyệt. Bạn mở một địa chỉ web là có ngay trình soạn thảo quen thuộc cùng terminal của máy chủ đó, không cần cài gì trên máy đang ngồi. Điểm mạnh: dùng được từ máy tính bảng, máy mượn, máy công ty bị khóa cài đặt. Điểm phải cẩn thận: nó mở một cánh cửa vào máy chủ qua web, nên bắt buộc có HTTPS và mật khẩu mạnh, nên không phơi ra internet.
Có những lúc bạn cần sửa nhanh một dòng code mà máy bên cạnh không phải máy của mình: đang ở nhà khách hàng, đang dùng máy công ty không cho cài phần mềm, hoặc chỉ có cái máy tính bảng trong tay. code-server giải quyết đúng tình huống đó bằng cách đưa cả môi trường làm việc lên máy chủ và trả về cho bạn qua trình duyệt.
Khi nào code-server hợp lý hơn Remote SSH
Nếu máy của bạn cài được VS Code thì Remote SSH gần như luôn tốt hơn: mượt hơn vì giao diện chạy tại chỗ, dùng được tiện ích mở rộng bản gốc, và không phải mở thêm dịch vụ nào trên máy chủ.
code-server thắng ở đúng những tình huống Remote SSH bó tay: máy công ty khóa quyền cài đặt, máy tính bảng hoặc máy mượn, hoặc bạn muốn mọi thành viên mở một đường link là vào thẳng môi trường giống hệt nhau mà không phải hướng dẫn từng người cài đặt. Nhiều đội dựng cả hai và để lập trình viên tự chọn.
Cài bằng Docker trong năm phút
Cách gọn nhất, cùng khuôn với các dịch vụ khác theo bài Docker Compose:
services: code-server: image: codercom/code-server:latest environment: - PASSWORD=dat-mat-khau-that-dai-o-day volumes: - ./config:/home/coder/.config # giữ cấu hình và tiện ích - ./du-an:/home/coder/project # thư mục làm việc ports: ["127.0.0.1:8080:8080"] user: "1000:1000" restart: unless-stoppedChú ý dòng cổng: 127.0.0.1:8080 nghĩa là dịch vụ chỉ nghe trong máy, không ai từ ngoài chạm tới được. Đây là mặc định an toàn, phần mở ra ngoài sẽ do reverse proxy đảm nhiệm ở bước sau. Hai ổ dữ liệu gắn vào cũng quan trọng: thiếu chúng thì mọi tiện ích và cấu hình bay sạch mỗi lần tạo lại container.
Đưa ra ngoài an toàn
Có hai đường, chọn theo nhu cầu:
Đường một, chỉ dùng trong mạng riêng. An toàn nhất và cũng đơn giản nhất: cài mạng riêng theo bài Tailscale SSH rồi truy cập bằng địa chỉ nội bộ. Dịch vụ không hề tồn tại với internet công cộng, nên không có gì để bị dò quét.
Đường hai, mở qua tên miền có HTTPS. Dùng Nginx hoặc Caddy làm reverse proxy, cấp chứng chỉ miễn phí, và bật hỗ trợ WebSocket vì giao diện phụ thuộc vào nó. Kèm theo là mật khẩu thật dài và nếu có thể thì thêm một lớp xác thực nữa ở tầng proxy.
Tuyệt đối không mở cổng 8080 thẳng ra internet chỉ với một mật khẩu ngắn. Máy chủ có code-server bị chiếm nghĩa là kẻ tấn công có luôn terminal với quyền của người dùng đó, tức là toàn bộ máy.
Tài nguyên cần và những giới hạn thật
Bản thân code-server nhẹ, khoảng vài trăm MB bộ nhớ cho một người dùng. Thứ ăn tài nguyên là những gì bạn chạy bên trong nó: máy chủ phát triển, trình biên dịch, container. Một VPS 2 vCPU và 4GB RAM đủ cho công việc web thông thường, còn dự án nặng thì tính theo chính dự án chứ không phải theo trình soạn thảo.
Vài giới hạn nên biết trước để khỏi thất vọng. Một số tiện ích mở rộng thương mại chỉ phát hành cho bản VS Code chính thức nên không cài được ở đây. Vài phím tắt bị trình duyệt giành mất, phải đổi phím hoặc cài ở dạng ứng dụng web. Và trải nghiệm gõ phụ thuộc đường truyền, đường mạng chập chờn thì cảm giác rõ hơn hẳn so với Remote SSH.
Vận hành lâu dài
Ba việc giữ cho môi trường này bền: sao lưu thư mục cấu hình và thư mục dự án theo lịch, vì đó là toàn bộ công sức cài đặt của bạn; cập nhật ảnh Docker định kỳ vì đây là dịch vụ có giao diện web nên vá lỗi bảo mật quan trọng hơn bình thường; và đặt giới hạn tài nguyên cho container nếu máy chủ còn chạy dịch vụ khác, tránh cảnh một lần build ngốn hết RAM làm sập cả những thứ đang phục vụ khách.
Nếu nhiều người cùng dùng, hãy tạo cho mỗi người một container và một thư mục riêng thay vì dùng chung một phiên. Dùng chung nghĩa là hai người sửa cùng một file trong cùng một trình soạn thảo, và đó là công thức của những buổi chiều mất việc.
Khi nào hợp lý hơn cách nối từ trình soạn thảo trên máy
| Tình huống | Nên dùng cái nào |
|---|---|
| Bạn có máy cá nhân đủ mạnh và cài được phần mềm | Nối từ trình soạn thảo trên máy, mượt hơn |
| Làm việc trên máy bảng hoặc máy mượn, không cài được gì | Chạy trong trình duyệt |
| Cần vào từ nhiều máy khác nhau, ở nhiều nơi | Chạy trong trình duyệt |
| Công ty cấm cài phần mềm trên máy | Chạy trong trình duyệt |
| Cần trải nghiệm gõ phím mượt nhất | Nối từ trình soạn thảo trên máy |
Định vị đúng: đây là phương án cho tình huống bạn không cài được phần mềm trên máy đang ngồi. Nếu cài được thì cách nối từ trình soạn thảo trên máy cho trải nghiệm tốt hơn.
Đưa ra ngoài an toàn, phần bắt buộc
# 1. KHONG BAO GIO mo truc tiep ra internet khong co lop bao ve# Ai vao duoc la chay duoc lenh tuy y tren may chu cua ban # 2. Dat sau lop phan luong co chung chi bao mat VA mot lop xac thuc nuass -ltnp | grep -v 127.0.0.1curl -sI https://code.tenmien.vn | head -3 # nen tra ve 401 # 3. Nen: chi cho vao qua mang rieng, khong mo ra internet # 4. Dat mat khau dai va ngau nhien, doi mat khau mac dinh ngay # 5. Kiem ai da thu dang nhapgrep "Failed password" /var/log/auth.log | tail -20Điểm phải hiểu rõ: công cụ này cho phép chạy lệnh trên máy chủ với quyền của người dùng nó chạy. Mở nó ra internet mà không có lớp xác thực là giao máy chủ cho bất kỳ ai tìm ra địa chỉ.
Tài nguyên và giới hạn thật
- Bản thân công cụ nhẹ, khoảng 500 MB bộ nhớ. Phần nặng là chính công việc bạn chạy: dựng phần mềm, chạy kiểm thử.
- Một số phần mở rộng không chạy được vì chúng phụ thuộc vào môi trường máy tính để bàn.
- Phím tắt bị trình duyệt chiếm mất một số tổ hợp, gây khó chịu lúc đầu.
- Phụ thuộc hoàn toàn vào mạng, mất mạng là mất chỗ làm việc.
Câu hỏi thường gặp
code-server có phải bản VS Code chính thức không?
Đây là bản mã nguồn mở đóng gói lại để chạy trên máy chủ, giao diện và thao tác gần như giống hệt. Khác biệt đáng kể nhất là kho tiện ích: một số tiện ích thương mại của Microsoft chỉ dùng được trên bản chính thức.
Nhiều người dùng chung một cài đặt được không?
Về kỹ thuật thì được nhưng không nên, vì mọi người sẽ chia sẻ cùng một phiên và cùng một bộ file đang mở. Cách đúng là mỗi người một container riêng với thư mục riêng, tách bằng cổng nội bộ hoặc tên miền phụ.
Dùng trên máy tính bảng có ổn không?
Ổn cho việc sửa nhanh, xem log, chạy vài lệnh. Không hợp để ngồi viết code cả ngày vì bàn phím ảo và thiếu phím tắt. Nhiều người dùng nó như công cụ cấp cứu khi không mang laptop chứ không phải môi trường chính.
So với dịch vụ môi trường dev trên đám mây thì sao?
Bạn tự chủ hoàn toàn và chi phí cố định theo tháng thay vì tính theo giờ, đổi lại phải tự cài đặt và tự bảo trì. Dịch vụ sẵn có tiện lúc bắt đầu nhưng đắt dần khi dùng đều, và dữ liệu nằm trên hạ tầng của người khác.
