code-server 体验:一行命令把 VS Code 跑在服务器上,随时用浏览器写代码

前言

code-server 解决的核心问题是:让你在任意设备的浏览器里用上完整的 VS Code。

它的原理不复杂------VS Code 本身是 Electron 应用,code-server 把这层桌面 UI 换成 Web 服务端渲染,代码实际跑在远程服务器上,浏览器只负责显示和交互。相当于把"开发环境"从本地抽离出来,变成一个可以通过 URL 访问的服务。

实际用下来,它适合两类场景:

一是重度远程开发。比如你有一台高配服务器放着跑模型、编译大型项目,但人可能在外面,用笔记本或 iPad 临时连上去写代码。code-server 跑在服务器上,本地设备只作为终端,不用把代码同步过来再同步回去。

二是团队统一开发环境。给新成员分配机器时,不用逐台配环境,直接给一个 code-server 地址,连上就能开始写,预装的插件和配置都在服务器上。

Docker 部署一条命令能起,最小配置成本不高。需要注意的细节是密码认证默认开启,密码在启动命令里通过环境变量传入,建议生成随机字符串而不是用"123456"这种弱密码。

局限方面:浏览器里的 VS Code 体验和桌面端比还是有差距,尤其是插件对 GUI 交互依赖较重的时候;长时间在浏览器里写代码,眼睛负担比桌面端更大;另外内存占用不低,毕竟服务端要跑一个完整的 VS Code 进程。

本文将带你从零开始,基于Docker快速部署code-server,搭建一个安全、可持久化、随时可用的网页版VS Code开发环境。无论你是个人开发者、教育工作者,还是DevOps工程师,只需几分钟,即可拥有属于自己的在线IDE。

让我们开始吧!

1.什么是code-server?

code-server是一个开源项目,它将Microsoft Visual Studio Code(VS Code) 运行在远程服务器上,并通过Web浏览器 提供访问能力。简单来说:

code-server = VS Code + 浏览器访问 + 云端运行

核心特点

特性 说明
✅ 完整 VS Code 体验 支持扩展市场、调试器、终端、Git、主题等几乎所有原生功能
💕轻量易部署 官方提供 Docker 镜像,一条命令即可启动
🌐 跨平台访问 只要有浏览器(手机、平板、Chromebook、Windows/Mac/Linux),就能写代码
💻 统一开发环境 代码、配置、依赖全部部署在服务器,避免"在我机器上能跑"的问题
🔒 私有部署 数据完全掌握在自己手中,不依赖第三方云 IDE(如 GitHub Codespaces)

工作原理

  • 你在服务器(本地、云主机、NAS 等)上运行 code-server
  • code-server 启动一个 Web 服务(默认端口 8080)
  • 你通过浏览器访问 http://你的服务器IP:8080
  • 输入密码后,即可在网页中使用 VS Code 界面操作服务器上的文件

典型使用场景

  • 远程开发:在家连接公司/实验室的高性能服务器写代码
  • 教学演示:老师一键分发统一编程环境给学生
  • 移动办公:用 iPad + 键盘随时随地编码
  • 资源受限设备:在低配笔记本或树莓派上通过浏览器使用强大 IDE
  • 团队共享环境:快速为新成员提供预装工具链的开发沙箱

技术栈简述

  • 基于 VS Code 的开源版本(OSS) 构建
  • 使用 Node.js 和 TypeScript 开发
  • 通过 WebSocket 实现编辑器与浏览器的实时同步
  • 支持 Linux / macOS / Windows / Docker / Kubernetes 部署

2.安装docker

安装Docker:

shell 复制代码
curl -fsSL https://get.docker.com/ | sh

启用Docker服务:

shell 复制代码
systemctl enable --now docker

检查Docker状态:

shell 复制代码
systemctl status docker

3.部署code-server

3.1 安装code-server

使用以下命令下载最新的code-server镜像:

shell 复制代码
docker pull codercom/code-server:latest

启动code-server容器:

shell 复制代码
docker run -d \
 --name code-server \
 -p 8000:8080 \
 -e PASSWORD=123456 \
 -v /docker/vscode/data:/root/.vscode-server \
 codercom/code-server:latest

验证部署,打开docker发现确实已经启动容器啦:

部署完成后,在浏览器中输入 http://localhost:8008 就能看到code-server的界面:

3.2 使用code-server

使用启动命令的密码"123456"登录:

登录成功后,同意协议并进行下一步:

安装中文版vscode:

点击如图所示:

选择中文版。

然后就成功啦!

搜索"Live Server"安装,为了后续查看页面效果:

可以新建一个文件,创造页面看看:

也可以使用终端:

code-server是一个强大的工具,它让你可以在任何设备的浏览器中运行完整的VS Code开发环境。但默认情况下,code-server只能在本地访问(如 http://localhost:8080),无法从外部网络直接使用。

这时候,你就需要一个内网穿透工具------而cpolar正是为此而生。

4.安装cpolar实现随时随地开发

4.1 什么是cpolar?

cpolar是一款安全高效的内网穿透工具,无需公网IP或复杂配置,只需一条命令,即可将本地服务器、Web服务或任意端口映射到公网,让你随时随地远程访问内网应用,特别适合开发调试、远程运维和应急部署等场景。

4.2 部署cpolar

cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。

❤️以下是安装cpolar步骤:

使用一键脚本安装命令:

shell 复制代码
sudo curl https://get.cpolar.sh | sh

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

shell 复制代码
sudo systemctl status cpolar

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

5.配置公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理------创建隧道:

  • 隧道名称:可自定义,本例使用了:vscode,注意不要与已有的隧道名称重复
  • 协议:http
  • 本地地址:8000
  • 域名类型:随机域名
  • 地区:选择China Top

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。

访问成功。

6.保留固定公网地址

使用cpolar为其配置二级子域名,该地址为固定地址,不会随机变化。

点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我使用的是vscode,大家可以自定义。填写备注信息,点击保留。

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理------隧道列表,找到所要配置的隧道,点击右侧的编辑

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China Top

点击更新

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问的页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

总结

整体而言,code-server 是一个把"开发环境"服务化做得比较彻底的方案。它的价值不在于替代桌面端 VS Code,而是把开发环境从具体的设备上解耦出来------代码在云端,从任何终端都可以连接。

如果你有闲置服务器或者 NAS 想充分利用,或者确实有移动办公写代码的需求,这套方案可以一试。

相关推荐
tedcloud1236 分钟前
hello-agents部署教程:从零学习AI Agent开发
服务器·人工智能·学习·自动化·powerpoint
qq_265153378 分钟前
Redis在游戏服务器中怎么实现开合服数据同步?
服务器·redis·游戏·游戏服务器
szxinmai主板定制专家16 分钟前
电力设备RK3568/RK3576+FPGA,多系统混合部署Linux+RTOS RT-THREAD,强实时性
linux·运维·服务器·人工智能·嵌入式硬件·fpga开发
我是坑货1 小时前
Jenkins 构建失败排查记录:mvn -U 把新版依赖被远程旧版覆盖
运维·jenkins
L、2181 小时前
CANN调优工具链全景:从profiler到tensorboard的完整观测体系
linux·运维·服务器·深度学习
码点滴1 小时前
Workload 自动化进化论:从手动运维到 AI 驱动的 Kubernetes 智能管控
运维·人工智能·kubernetes·自动化·workload
darkdragonking1 小时前
Docker(五)OpenEuler22.03 安装docker ce、排坑
运维·docker·容器
j_xxx404_2 小时前
Linux进程信号捕捉与操作系统运行本质深度解析
linux·运维·服务器·开发语言·c++·人工智能·ai
eggrall2 小时前
Linux信号——保存信号
linux·运维·服务器
2501_920047032 小时前
firewalld的使用
linux·运维