- code-server (Coder) cho phép chạy VS Code đầy đủ trên VPS, truy cập qua browser từ bất kỳ thiết bị nào.
- Workflow remote dev tuyệt vời cho freelancer: code trên iPad ở quán cà phê, môi trường y hệt như laptop ở nhà.
- Cài 5 phút bằng script chính thức. Cần VPS 2-4GB RAM, 30GB SSD. Cloud VPS 50 dư cho việc dev đa dự án.
- Extension marketplace dùng được hầu hết (Prettier, ESLint, GitLens), trừ một số đòi hỏi MS Marketplace (Pylance, C++ tools).
- Bài này hướng dẫn full: install, HTTPS, login, sync settings, multiple workspace, integrate Git, tunnel SSH, mẹo bảo mật.
Freelancer Việt Nam thường làm việc đa địa điểm: sáng quán cà phê, chiều co-working, tối làm thêm ở nhà. Mỗi máy có version Node khác, version Python khác, repo clone không đầy đủ. Lý tưởng là có một môi trường dev duy nhất ở đâu đó, mọi máy chỉ là client kết nối tới. code-server (project chính của Coder) cho phép chạy VS Code đầy đủ trên VPS, mọi browser modern đều mở được.
Bài này hướng dẫn deploy code-server trên Cloud VPS 50: cài bằng script chính thức, đặt sau Caddy HTTPS, cấu hình authentication, import VS Code settings, mở multi-project, tích hợp Git/GitHub, dùng từ iPad/Chromebook, mẹo bảo mật bảo vệ session.
code-server là gì và khác Cursor Web, GitHub Codespaces ra sao?
code-server là dự án open-source của Coder.com, port VS Code core (open VSCode) chạy được trên Linux/Mac server và serve qua web. UI và keymap giống y hệt VS Code desktop. Cộng đồng GitHub 70k+ star, ổn định nhiều năm.
| Tiêu chí | code-server | GitHub Codespaces | Cursor Web (chưa GA) |
|---|---|---|---|
| License | MIT | Proprietary | Proprietary |
| Chi phí | VPS bạn thuê | 0.18 USD/giờ trở lên | Pay per credit |
| Customize VPS | Full root | Limited container | N/A |
| Data persistence | Trên VPS | Auto save | Cloud |
| Extension MS proprietary | Không (cần workaround) | Có | Có |
| Phù hợp | Dev solo/freelancer | Team có ngân sách | AI-first workflow |
Bước 1: Chuẩn bị VPS
- 2 vCPU, 4 GB RAM, 30 GB SSD tối thiểu.
- 4 vCPU, 8 GB RAM khi làm project Next.js/Java/Rust nặng build.
- Domain subdomain code.your-domain.com.
- User non-root để chạy code-server.
Bước 2: Cài code-server
curl -fsSL https://code-server.dev/install.sh | sh
sudo systemctl enable --now code-server@$USER
sudo systemctl status code-server@$USER
Script tự install code-server vào /usr/lib/code-server, tạo systemd unit code-server@user, start luôn. Mặc định bind 127.0.0.1:8080.
Lấy password mặc định:
cat ~/.config/code-server/config.yaml
Đổi password mạnh và bind interface:
bind-addr: 127.0.0.1:8080
auth: password
password: $YOUR_STRONG_PASSWORD_24CHAR
cert: false
sudo systemctl restart code-server@$USER
Bước 3: Đặt sau Caddy HTTPS
code.your-domain.com {
reverse_proxy localhost:8080
encode gzip
header {
Strict-Transport-Security "max-age=31536000;"
}
}
Reload Caddy. Truy cập https://code.your-domain.com nhập password. Sau khi login, UI VS Code đầy đủ hiện trên browser.
Bước 4: Tăng cường bảo mật
- Đặt Cloudflare Access (Zero Trust free 50 user) bọc subdomain, yêu cầu OAuth Google trước khi tới code-server.
- Hoặc dùng Authelia/Authentik self-host làm IdP, force MFA.
- Đổi auth=none + dùng IP whitelist nếu chỉ truy cập từ home/office IP cố định.
- Backup ~/.config/code-server/ và ~/.local/share/code-server/ vào git private (không commit password).
Bước 5: Cài extension
UI có Extensions tab giống VS Code. Marketplace dùng OpenVSX (cộng đồng), khác MS Marketplace. Có sẵn 99 phần trăm extension phổ biến: Prettier, ESLint, GitLens, Tailwind CSS, Python (Anthropic), Docker, vim mode, indent-rainbow.
Extension MS proprietary (Pylance, C++ tools, Live Share, Remote-SSH) không có. Workaround:
- Download .vsix từ marketplace VS Code (file public), upload qua "Install from VSIX".
- Dùng alternative open-source: BasedPyright thay Pylance, clangd thay C++ extension.
Bước 6: Sync settings và keybindings
code-server hỗ trợ Settings Sync qua GitHub gist. Vào Settings (Cmd+Shift+P > "Settings Sync: Turn On"), authenticate GitHub. Settings, keybindings, snippets, extension list sync giữa code-server và VS Code desktop.
Workflow: dùng VS Code desktop làm primary, code-server làm backup khi đi ra ngoài. Sync giữ tất cả đồng nhất.
Bước 7: Multi-project workspace
mkdir -p ~/workspace
cd ~/workspace
git clone [email protected]:user/repo1.git
git clone [email protected]:user/repo2.git
git clone [email protected]:user/repo3.git
Trong code-server, File > Add Folder to Workspace > chọn từng repo. Save as multi-root workspace .code-workspace. Mỗi lần mở project chỉ click 1 lần.
Hoặc chạy nhiều instance code-server:
code-server --bind-addr 127.0.0.1:8081 --user-data-dir ~/.config/code-server-client-a /workspace/client-a
code-server --bind-addr 127.0.0.1:8082 --user-data-dir ~/.config/code-server-client-b /workspace/client-b
Subdomain riêng cho mỗi client/project: code-a.your-domain.com -> 8081, code-b.your-domain.com -> 8082.
Bước 8: Setup terminal và Node/Python toolchain
# Trong terminal code-server
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
sudo apt install -y python3 python3-pip python3-venv
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
Reload terminal. Bây giờ code-server có sẵn Node, Python, Docker đầy đủ. Dev iPad cũng có thể chạy npm install, docker compose, git push.
Bước 9: Tunnel SSH agent
Khi cần SSH ra server khác từ code-server (deploy, db query), forward SSH agent từ laptop:
ssh -A -L 8080:127.0.0.1:8080 user@code-vps
-A forward agent, code-server có thể dùng SSH key local của bạn. Lưu ý chỉ làm với VPS bạn tin tưởng tuyệt đối.
Bước 10: Use case workflow freelancer
- Sáng: ở quán cà phê, mở iPad Pro, browser Safari, vào code.your-domain.com.
- Code Next.js của client A trong workspace đã save.
- Commit, push lên GitLab self-host.
- Chiều: về nhà, mở MacBook, dùng VS Code desktop tiếp tục.
- Tối: ở co-working, dùng Chromebook, lại code qua browser.
- Tất cả trên cùng 1 môi trường: cùng Node version, cùng .env, cùng extension.
Khi gặp client muốn pair programming, gửi link code.your-domain.com (sau Cloudflare Access invite tạm 1 ngày). Hai bên thấy cùng màn hình.
Performance trên thiết bị yếu
| Thiết bị | Trải nghiệm |
|---|---|
| MacBook Air M2 | Mượt như VS Code desktop |
| iPad Pro M2 + Magic Keyboard | Rất mượt, ngang MacBook |
| Chromebook giá rẻ | Mượt, đôi khi lag khi mở 20+ tab |
| iPhone 15 Pro | Code được nhưng UI nhỏ, không thực tế |
| Android tablet 10 inch | OK với external keyboard |
Performance phụ thuộc network. WiFi 50Mbps+ cho trải nghiệm mượt. 4G 10Mbps có thể lag khi save file lớn.
Backup workspace data
- Code: push lên Git repo thường xuyên.
- Config code-server: ~/.config/code-server/ + ~/.local/share/code-server/extensions/.
- Workspace folder: rsync sang VPS thứ 2 hoặc S3 bucket nếu chứa file không nằm trong git.
- Snapshot VPS hằng tuần qua control panel TND.
Update code-server
curl -fsSL https://code-server.dev/install.sh | sh
sudo systemctl restart code-server@$USER
Script tự detect version cũ, upgrade. Restart service. Không mất data, không mất extension.
Lỗi thường gặp
- 502 Bad Gateway: service chưa start.
sudo systemctl status code-server@user. - Quên password: sửa lại config.yaml và restart.
- Extension không install: network có thể bị block. Đổi marketplace sang official với cờ EXTENSIONS_GALLERY.
- Terminal không chạy: shell mặc định là /bin/bash, cài bash nếu thiếu (ít gặp).
- Performance chậm: file >1MB load chậm qua network. Đóng file lớn, mở qua VS Code desktop.
FAQ
code-server có phải VS Code thật không?
Là VS Code core open-source (code.visualstudio.com link tải là build từ source này), tách phần MS proprietary (telemetry, marketplace). UI, keymap, command palette, snippets hoàn toàn giống.
Có thể dùng GitHub Copilot trên code-server không?
Được nếu cài extension .vsix Copilot từ marketplace VS Code, login GitHub. Tabby, Continue.dev, Codeium cũng work tốt. Cài Tabby self-host thì tránh phụ thuộc MS.
code-server có hỗ trợ Live Share của VS Code không?
Live Share của MS không cài được. Alternative: dùng tmux + share SSH session, hoặc tổ chức pair-programming qua màn hình share Zoom/Discord trong khi cả 2 cùng login code-server (chỉ 1 cursor).
code-server có lưu file vào laptop khi đóng browser không?
Không. File lưu trên VPS. Đóng browser, file vẫn nguyên trên server. Mở browser khác hoặc thiết bị khác đều thấy state y hệt. Đó là điểm mạnh chính của remote dev.
Khi nhiều người cùng dùng 1 code-server, có conflict không?
Có. code-server thiết kế single-user. Multiple user phải chạy multiple instance với port và user-data-dir khác. Hoặc dùng Coder OSS (sản phẩm enterprise của cùng team) cho multi-user dev environment.
Cloud VPS làm dev machine remote: code mọi nơi từ một môi trường
Cloud VPS TND sẵn AlmaLinux 9, Ubuntu 22/24, Debian 12/13. SSD CEPH, snapshot 1-click, backup hằng ngày, network 200Mbps trong nước. Cloud VPS 50 đủ chạy code-server + 5-10 project, từ iPad mở browser code mượt như laptop.
Xem 8 cấu hình Cloud VPS →


