Trong thế giới lập trình hiện đại, các trình soạn thảo mã (code editors) như VS Code đã trở thành công cụ không thể thiếu đối với nhiều nhà phát triển. Dù không cung cấp đầy đủ chức năng như các IDEs (Integrated Development Environments) cồng kềnh, nhưng chúng lại vượt trội về tốc độ, sự gọn nhẹ khi bạn cần chỉnh sửa nhanh các tệp cấu hình, tập lệnh hoặc chương trình. Đặc biệt, VS Code nổi bật với trình gỡ lỗi mạnh mẽ và một kho tính năng phong phú mà bạn thường chỉ tìm thấy trong các môi trường phát triển đầy đủ. Khả năng tương thích rộng rãi với hầu hết các hệ điều hành máy tính để bàn, cùng với một hệ sinh thái extension đồ sộ, cho phép biến VS Code thành một “quái vật” lập trình thực thụ.
Tuy nhiên, liệu có cách nào để tận dụng sức mạnh của VS Code mà không cần “làm bừa bộn” máy tính cá nhân của bạn với các dự án mã hóa và tệp tin? Giải pháp truyền thống là xây dựng một môi trường phát triển đầy đủ bên trong máy ảo hoặc máy chủ từ xa, nhưng điều này đòi hỏi một PC có cấu hình khá mạnh để đảm bảo hiệu suất tốt, và có thể gặp phải vấn đề độ trễ qua phiên RDP. Cài đặt VS Code trên thiết bị client của bạn và sử dụng extension Remote – SSH cũng là một lựa chọn. Nhưng có một phương pháp dễ dàng và tiện lợi hơn để đạt được điều này: triển khai Code-Server bên trong một workstation hoặc máy chủ của bạn.
Giao diện một hệ điều hành dựa trên FreeBSD, minh họa khả năng tương thích rộng của các trình soạn thảo mã như VS Code
Code-Server là gì? Hơn cả VS Code chạy trên máy chủ
Về bản chất, Code-Server là một phiên bản tùy biến (patched fork) của VS Code quen thuộc, được thiết kế để chạy trên một hệ thống tập trung (centralized system) và có thể truy cập từ các thiết bị khác trong hệ thống máy tính của bạn. Điểm khác biệt lớn là thay vì yêu cầu bạn cài đặt trình soạn thảo mã trên cả máy client và máy chủ rồi ghép nối chúng bằng một extension, Code-Server có thể được triển khai trên workstation của bạn và truy cập dễ dàng thông qua các trình duyệt web. Điều này mở ra khả năng chỉnh sửa các dự án mã hóa của bạn từ hầu như bất kỳ thiết bị nào, bao gồm cả điện thoại thông minh và máy tính bảng.
Giao diện Code-Server hiển thị một tệp Docker Compose đang được chỉnh sửa, minh họa môi trường làm việc trên trình duyệt
Ngoài ra, việc mở Code-Server ra các mạng bên ngoài cũng trở nên đơn giản hơn rất nhiều. Với những ai ưu tiên bảo mật và hiệu suất, các giải pháp như Tailscale được ưa chuộng, mang lại độ trễ tối thiểu khi truy cập Code-Server từ một mạng khác so với máy chủ gốc. Bạn cũng có thể tinh chỉnh các dịch vụ reverse proxy khi muốn expose trình soạn thảo mã này ra Internet, nhưng trong trường hợp đó, việc thiết lập một tiện ích xác thực phù hợp như OAuth2 Proxy là cực kỳ khuyến nghị để đảm bảo an toàn.
Nhược điểm lớn của Code-Server: Vấn đề về Extension Marketplace
Mặc dù bản chất tối ưu của Code-Server giúp nó trở nên lý tưởng cho việc chỉnh sửa mã trên thiết bị di động (và cả các hệ thống thông thường) qua mạng, nhưng nó vẫn có một điểm yếu chí tử: ứng dụng này không tương thích với toàn bộ các extension có sẵn trong VS Code. Không giống như phần lớn các dịch vụ cốt lõi trong VS Code, kho tiện ích mở rộng – bao gồm cả một số plugin do Microsoft phát hành – không phải là mã nguồn mở. Trên thực tế, gã khổng lồ công nghệ Redmond còn cấm các dịch vụ bên thứ ba tận dụng marketplace của VS Code.
Vì vậy, Code-Server dựa vào Open VSX Registry, một nguồn extension mã nguồn mở thay thế. May mắn thay, hầu hết các extension phổ biến như Dendron, Prettier và Git Graph đều hoạt động tốt trên Code-Server. Về mặt kỹ thuật, bạn có thể áp dụng một số cách giải quyết để đồng bộ hóa các extension VS Code của mình với Code-Server, nhưng một số plugin nhất định như bộ Remote Development, Live Share và GitHub Copilot sẽ không thể truy cập được trên Code-Server – điều này có thể là một vấn đề lớn nếu bạn phụ thuộc vào chúng cho khối lượng công việc mã hóa của mình.
Danh sách các extension trong Code-Server, cho thấy sự phụ thuộc vào Open VSX Registry thay vì marketplace gốc của VS Code
Hướng dẫn triển khai Code-Server
Sau khi đã nắm vững phần lý thuyết, giờ là lúc đi sâu vào các bước cụ thể để tạo một instance Code-Server. Giống như các ứng dụng tự host khác, có nhiều cách để khởi chạy Code-Server trên workstation của bạn, nhưng phương pháp curl chính thức là đơn giản nhất.
Phương pháp chính thức với Curl: Dễ dàng nhất cho Linux
Nếu bạn đang sử dụng máy Linux, bạn có thể mở terminal và khởi tạo một instance Code-Server bằng cách chạy lệnh sau:
curl -fsSL https://code-server.dev/install.sh | sh
Sau khi quá trình cài đặt hoàn tất, bạn có thể chạy lệnh sudo systemctl enable --now code-server@$USER
để kích hoạt và khởi động dịch vụ. Để mở giao diện người dùng Code-Server, bạn chỉ cần nhập 127.0.0.1:8080
vào trình duyệt web. Nếu muốn các thiết bị khác trong mạng cục bộ của bạn có thể truy cập, hãy chạy lệnh code-server --bind-addr 0.0.0.0:8080
.
Đối với các bạn sử dụng Windows, bạn có thể cài đặt Code-Server thông qua một bản phân phối WSL (Windows Subsystem for Linux). Hoặc nếu bạn không muốn cấu hình WSL, bạn có thể cài đặt VirtualBox và triển khai Code-Server trong đó, mặc dù bạn sẽ cần một máy tính khá mạnh để chạy hypervisor loại 2 này.
Triển khai Code-Server dưới dạng Container với Docker
Nếu bạn là tín đồ của containerization, bạn có thể thử chạy Code-Server bằng Docker. Kho lưu trữ LinuxServer cung cấp phương pháp đáng tin cậy nhất để chạy Code-Server dưới dạng container. Sau khi tạo tệp compose bằng cách thực thi lệnh sudo nano docker-compose.yml
trong terminal, bạn sẽ phải sao chép mã cần thiết từ trang Docker Hub chính thức vào tệp. Hãy đảm bảo chỉnh sửa tham số /path/to/code-server/config
bằng thư mục thực tế nơi bạn muốn lưu trữ các tệp Code-Server. Sau đó, bạn có thể khởi tạo container bằng cách thực thi lệnh sudo docker compose up -d
.
Màn hình terminal hiển thị lệnh tạo tệp docker-compose.yml để triển khai Code-Server dưới dạng container
Ngoài ra, nhiều nền tảng containerization như CasaOS, UmbrelOS, Cosmos và Runtipi, cho phép bạn triển khai Code-Server dưới dạng một ứng dụng tích hợp sẵn – đây là một phương pháp tuyệt vời cho những ai tận dụng các môi trường dễ sử dụng này cho các dự án container của họ.
Triển khai Code-Server trên Proxmox LXC: Yêu cầu thêm bước
Không giống như hầu hết mọi dịch vụ tự host mà chúng tôi đã triển khai dưới dạng LXC trong Proxmox, những người dùng có máy chủ PVE sẽ phải thực hiện một quy trình dài hơn để chạy Code-Server. Điều này là do lệnh Proxmox VE Helper-Scripts cho Code-Server hoạt động như một tiện ích bổ sung cho một LXC hiện có, thay vì tự động tạo một container mới.
Do đó, bạn sẽ phải tự triển khai container cơ sở. Việc này không quá khó khăn, bạn có thể tải template TurnKey cho một Debian LXC trong tab CT Templates của ổ đĩa cục bộ (lvm) của mình. Sau đó, bạn có thể triển khai một LXC mới bằng template đó. Chúng tôi khuyến nghị cấp cho nó ít nhất 2GB bộ nhớ, 4 lõi CPU, 15GB bộ nhớ (hoặc hơn, nếu bạn làm việc trên các dự án phức tạp) và một địa chỉ IPv4 dựa trên DHCP. Sau khi LXC đã khởi động và chạy, bạn sẽ cần chạy các lệnh sau để triển khai instance Code-Server:
apt update && apt upgrade -y
apt install curl -y
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/coder-code-server.sh)"
Giao diện Proxmox VE hiển thị một container LXC đang chạy Code-Server, minh họa môi trường phát triển tập trung
Xây dựng môi trường phát triển tập trung cho nhu cầu mã hóa của bạn
Là một người thường xuyên luân chuyển giữa nhiều thiết bị mỗi ngày, việc lưu trữ tất cả các tệp chương trình, tập lệnh và dự án của tôi bên trong một máy chủ giúp tôi dễ dàng tiếp tục công việc trên bất kỳ hệ thống nào. Lợi thế lớn nhất của Code-Server trong thiết lập này là tôi có thể sử dụng nó trên iPad và máy tính bảng Android của mình, mặc dù tôi vẫn khá tiếc nuối khi không thể sử dụng bộ extension Remote Development. Nhưng nếu bỏ qua điều đó, Code-Server vẫn là một bổ sung tuyệt vời cho workstation lập trình của tôi.
Code-Server không chỉ là một công cụ tiện ích mà còn là một phương pháp tiếp cận mới trong việc quản lý môi trường phát triển, mang lại sự linh hoạt và khả năng truy cập mọi lúc mọi nơi. Nó đặc biệt phù hợp với những lập trình viên di chuyển nhiều, sử dụng đa dạng thiết bị hoặc muốn tách biệt môi trường làm việc khỏi máy tính cá nhân.
Bạn đã thử triển khai Code-Server chưa? Hãy chia sẻ kinh nghiệm và những mẹo nhỏ của bạn ở phần bình luận dưới đây! Đừng bỏ lỡ các bài viết công nghệ hữu ích khác trên congnghe360.net để tối ưu hóa quy trình làm việc và khám phá những giải pháp công nghệ mới nhất nhé!