Code-server VS Code trên VPS: workflow remote dev cho freelancer

Chia sẻ bài viết

Mục lục
TL;DR
  • 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-serverGitHub CodespacesCursor Web (chưa GA)
LicenseMITProprietaryProprietary
Chi phíVPS bạn thuê0.18 USD/giờ trở lênPay per credit
Customize VPSFull rootLimited containerN/A
Data persistenceTrên VPSAuto saveCloud
Extension MS proprietaryKhông (cần workaround)
Phù hợpDev solo/freelancerTeam có ngân sáchAI-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

  1. Sáng: ở quán cà phê, mở iPad Pro, browser Safari, vào code.your-domain.com.
  2. Code Next.js của client A trong workspace đã save.
  3. Commit, push lên GitLab self-host.
  4. Chiều: về nhà, mở MacBook, dùng VS Code desktop tiếp tục.
  5. Tối: ở co-working, dùng Chromebook, lại code qua browser.
  6. 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 M2Mượt như VS Code desktop
iPad Pro M2 + Magic KeyboardRất mượt, ngang MacBook
Chromebook giá rẻMượt, đôi khi lag khi mở 20+ tab
iPhone 15 ProCode được nhưng UI nhỏ, không thực tế
Android tablet 10 inchOK 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 cho vibe coder

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 →