【VPS 进阶玩法精选 030】用 VPS 搭建云端 IDE(code-server):随时随地写代码的省钱方案

code-server 把 VS Code 搬进浏览器。本文讲清在 VPS 上部署云端 IDE 的配置、安全(反代 + 鉴权)、插件与离线同步,以及和 GitHub Codespaces 的成本对比。

专题连载:VPS 进阶玩法精选

本文是该系列第 30 篇。阅读该系列其他文章:

延伸阅读

更多相关攻略推荐:从 Git Push 到秒级上线:CI/CD 流水线与"无中断"发布连云厂商也看不到你的数据?机密计算(Confidential Com被割裂的"云上互联网":数据主权(GDPR)、本地化存储与主权云(S什么时候非得要独立 IPv4?便宜国外 VPS 独立 IP 适用场景为什么你自己 VPS 发的邮件总进垃圾箱?邮件协议(SPF、DKIM

什么是 code-server?为什么要在 VPS 上跑浏览器版 VS Code?

code-server 由 Coder 公司维护,它把 VS Code 的开源核心搬到了服务器上,让你通过浏览器就能写代码。官方的口号是"在任何机器上运行 VS Code,然后在浏览器里访问它"。目前在 GitHub 上大约有 5 万以上的 star。说白了,它把开发环境从你的笔记本里解放出来,放到了云端。

它的核心能力很实用:浏览器里是完整的 VS Code,工作区(代码和配置)持久化存在服务器上,自带完整终端能跑命令行,Git 集成齐全,能装任意扩展,最关键是能利用服务器的算力——低配的笔记本也能跑大型项目。数据全在你自己的 VPS 上,不上别人的云。

它和 VS Code Remote SSH 不一样:Remote SSH 还得装桌面客户端,而 code-server 纯浏览器,iPad、Chromebook、甚至公司那台锁了屏的机器都能直接开干。对只有平板或旧设备、又想随时随地写码的人,这几乎是把破设备变生产力的唯一解法。

VPS 怎么选:配置与成本

先看官方最低要求:一台开了 WebSockets 的 Linux 机器,至少 1 GB 内存加 2 核。但我们翻了一圈社区实测,一致建议 2 GB 起步。原因在语言服务器非常吃内存:TypeScript 的大型 monorepo 单个就能吃掉 1 到 2 GB,Python 加 Pylance 差不多。经验法则是每个活跃工作区至少留 2 GB。

实测资源占用:空闲大约 300 MB 内存,活跃开发时 512 MB 到 2 GB,取决于项目和扩展数量,大头就是 TypeScript、ESLint 这类语言服务器。磁盘方面 code-server 本体加项目大约 500 MB,建议 20 GB 以上的 SSD。一句话总结:个人轻量开发 1 核 1 GB 能跑;认真写代码、装一堆扩展建议 2 GB 起步,团队或多项目上 4 GB 以上。

网络有个硬性前提:WebSocket 必须开启,因为浏览器和服务器的实时通信(终端、实时补全)全靠它。选机房时尽量挑离你近的,远程 WebSocket 对延迟敏感,离太远会明显卡顿。预算上,一台单开发者的小 VPS 参考价大约每月 4 到 5 欧元,团队也就 10 到 25 欧元级别,非常便宜。

三种部署方式:脚本 / Docker / 云一键

最省事的是官方一键脚本:curl 拉取 install.sh 然后 sh 执行,再用 systemctl 启用 code-server@你的用户。首次登录密码在 ~/.config/code-server/config.yaml 里。这套适合不想折腾容器的同学。

更推荐的是 Docker,隔离最好。官方镜像是 codercom/code-server:latest。安全要点必须强调:端口绑到 127.0.0.1(比如 127.0.0.1:8080 或 8443:8080),只本机访问,绝不裸奔公网。关键环境变量有 PASSWORD(强密码)、TZ、PUID/PGID(用非 root 用户,避免权限问题)。卷挂载两块:./config 存设置和扩展,./workspace 存代码。

云厂商的一键应用市场也常内置 code-server,点几下就能起。但无论哪种方式,部署完第一件事都是改默认密码、确认绑定地址,再考虑对外暴露。安全设置没到位之前,千万别直接把 8080 口对外。

安全是第一要务:反代 + 鉴权 + HTTPS

这条必须放在最显眼的位置:官方铁律是绝不能直接把 code-server 暴露公网而不加认证和加密,否则别人通过内置终端能完全接管你的机器。默认情况下 code-server 用 password 认证,监听 127.0.0.1:8080(只本机),这本身是个安全默认。把 bind-addr 设为 127.0.0.1:8080 关掉外网直连,再走反代,才是正确姿势。

三种安全的暴露方式。第一,SSH 端口转发,官方最推荐:ssh -N -L 8080:127.0.0.1:8080 用户@主机,本地浏览器开 localhost:8080。零额外配置、最安全,缺点是无 SSH 客户端的设备(比如 iPad)用不了。第二,反向代理加 Let's Encrypt(Caddy 或 Nginx):域名指向 VPS,Caddy 自动签发和续期 TLS,三行配置就能反代。适合要 iPad 或公网访问的人。第三,自签证书,适合测试。

补充几条加固清单:公网必须 HTTPS,否则密码在公共 Wi-Fi 被截;防火墙只开 443 和 22,其余(尤其 8080、3000 这类原始端口)全关;code-server 原生限速密码尝试为每分钟 2 次加每小时 12 次防爆破,可用 HASHED_PASSWORD(argon2)替代明文更稳;想用 Google 或 GitHub 登录靠反代层 oauth2-proxy 做 SSO 并关掉自身密码;还能叠 Tailscale 或 WireGuard 做零信任,连公网端口都不用开。最后别忘了备份 ~/.config/code-server,里面可能含凭证和 token。

插件与开发环境同步

一个必须提前知道的事实:code-server 用的是 Open VSX 扩展市场,不是微软官方市场。因为微软的服务条款禁止非微软的 VS Code 访问其市场。code-server 自带 Coder 扩展市场,正在迁移到 Open VSX。这意味着 GitHub Copilot、Live Share、Remote 系列(SSH/Containers/WSL)这些微软闭源扩展是缺失的,其余大多数开源扩展都能用。缺失的可以手动从 GitHub releases 下载 VSIX,用"从 VSIX 安装"或命令行装上。

环境与设置同步有多种办法。dotfiles:code-server 支持 dotfiles 仓库,启动时自动套用你的 .bashrc、.gitconfig 和 VS Code settings。Settings Sync:可用 VS Code 自带的设置同步(需登录微软或 GitHub 账号),或导出 profile 再导入。Git 凭证建议配 credential-store 或 SSH agent 转发,避免每次 push 输密码;把 ~/.ssh 挂进容器(只读)也行。内存优化方面,可设 CODE_SERVER_MAX_MEMORY,或在设置里调 typescript.tsserver.maxTsServerMemory、用 files.watcherExclude 排除 node_modules。

与 GitHub Codespaces / Gitpod 成本对比

code-server 本身完全免费开源,你只付已经在跑的 VPS。单人小 VPS 参考每月 4 到 5 欧元,团队也就 10 到 25 欧元级别。而 GitHub Codespaces 的计费(参考):免费额度每月 120 核时(2 核机约 60 小时),超出后 2 核约 0.18 美元/小时、4 核约 0.36 美元/小时。一个开发者每天 8 小时、用 4 核,算下来约 58 美元/月;3 个人约 87 美元/月,一年约 696 美元。Gitpod 约 0.36 美元/小时起,Pro 版每人每月 25 美元。

自托管的划算拐点是:从第 1 个开发者就开始回本;3 人团队差距最明显(约 10 欧元对比约 87 美元/月),唯一代价是一次约 30 到 60 分钟的部署。其他维度:code-server 可纯局域网部署零延迟,Codespaces 必须云且有 30 到 90 秒冷启动;数据主权在自己服务器,Codespaces 活跃期间代码在 GitHub/Azure;扩展上 code-server 用 Open VSX(缺 Copilot/Remote),Codespaces 用完整官方市场;定制上 code-server 无限自由,托管方案受限。

如果想更贴近上游,可看看 Gitpod 出的 OpenVSCode Server(连官方市场、含 Copilot,但自托管要自己搞);团队多用户、要 SSO 和资源配额的话,Coder 是同团队商业版。VS Code Remote SSH 则需桌面端,定位不同。

常见坑与排错

最大风险永远是裸奔公网。只要直接把 code-server 开放到公网而不加认证,别人就能用内置终端接管机器,这是社区里最多惨痛教训的一条,必须绑 127.0.0.1 加反代加认证加 HTTPS。

终端打不开或白屏,几乎都是反代没转发 WebSocket。Nginx 要加 Upgrade 和 Connection "upgrade" 头,Caddy 默认已处理。权限拒绝通常是容器 PUID/PGID 和宿主机项目目录 owner 不一致,需要 chown -R 1000:1000。内存爆是 TS 语言服务器加 ESLint 吃内存,大项目必须 2 GB 以上否则卡。键盘快捷键被浏览器吞,Chrome 装 PWA(地址栏加图标)能缓解。高延迟卡顿就选近机房或走 Tailscale。最后记住:工作区项目要独立用 Git 管理,code-server 的备份只保 config 卷,不保你的代码。

适合谁?不适合谁?

适合:低配笔记本、平板、iPad 写码的人;想数据自有、不被按小时收费绑定的自由职业者;团队 2 人以上想省钱的。code-server 让破设备也能跑大型项目,换设备无缝接续,成本从第 1 个人就回本。

不适合:重度依赖 Copilot、Live Share、Remote 扩展,或想要零运维、开箱即用的托管环境的人。这类人 Codespaces 或 Gitpod 更顺手,虽然贵但省心。一句话,code-server 是把控制权换低价的方案,你得多付一点运维精力,换来的是完全自主和极低月费。

💡 延伸阅读:关于架构与基础设施的更多深潜指南,请前往 VPS 主题导读中心 (Hub) 获取全盘策略。