菜单

概述

相关源文件

Code-server 是一个开源项目,它允许 VS Code 在远程服务器上运行,并通过 Web 浏览器访问。本文档全面概述了 code-server 是什么、它是如何工作的以及它的核心架构。

有关详细的安装说明,请参阅 安装和部署。有关配置选项,请参阅 配置

什么是 code-server?

Code-server 是一款允许您在远程服务器上运行 VS Code 并通过 Web 浏览器访问它的工具。这种方法提供了许多好处:

  • 从任何带有 Web 浏览器的设备访问您的开发环境
  • 利用服务器资源进行计算密集型任务,如测试、编译和下载
  • 在不同机器之间维护一致的开发环境
  • 由于密集型任务在服务器上运行,因此可以延长本地设备的电池寿命
  • 可以更轻松地进行代码协作

来源:package.json1-106 docs/README.md1-80

核心架构

Code-server 的工作方式是运行一个服务器端 VS Code 实例(基于 VS Code 的核心组件),并通过 Web 界面使其可访问。系统架构包含几个关键组件:

架构包含三个主要部分:

  1. 服务器端:处理请求、身份验证和 VS Code 集成
  2. 客户端:提供基于浏览器的界面
  3. 辅助服务:管理扩展、终端访问和文件系统操作

来源:package.json70-90 ci/README.md1-113

系统组件和工作流程

命令行界面

Code-server 从其 CLI 开始,它会处理参数、读取配置文件并初始化 HTTP 服务器。入口点在 package.json 中定义为 out/node/entry.js

CLI 支持许多标志和选项,包括:

类别关键选项
服务器--bind-addr--port--socket
身份验证--auth--password--cert
VS Code--user-data-dir--extensions-dir
代理--proxy-domain--disable-proxy
高级--disable-telemetry--disable-update-check

来源:install.sh1-20 package.json95-97

认证系统

Code-server 包含一个内置的身份验证系统,可以配置为:

  • 使用密码身份验证(默认)
  • 禁用对受信任环境的身份验证
  • 与代理身份验证集成

启用后,身份验证系统会拦截请求并将未经身份验证的用户重定向到登录页面。

来源:CHANGELOG.md507-513

VS Code 集成

Code-server 没有重新实现代码编辑器,而是嵌入了 VS Code 的核心组件,并将其适配到浏览器环境中。这种集成:

  1. 将 VS Code 的源代码用作子模块
  2. 应用补丁使其能在 Web 环境中工作
  3. 通过基于 WebSocket 的协议公开 VS Code 的功能

来源:CHANGELOG.md825-837

代理系统

Code-server 的一个独特功能是其内置的代理,允许通过相同的身份验证层访问服务器上运行的服务。这使得开发人员可以访问运行在特定端口上的 Web 应用程序。

代理系统支持:

  • 端口转发
  • 基于路径的代理
  • 基于域名的代理

此功能对于查看 Web 应用程序、文档或在开发过程中启动的服务特别有用。

来源:CHANGELOG.md602-610 CHANGELOG.md442-446

安装和部署选项

Code-server 可以通过多种方式安装和部署:

方法描述适用场景
包管理器使用 apt、yum、pacman 等系统包管理器Linux 桌面/服务器
独立安装包来自 GitHub 发行版的预编译二进制文件任何支持的平台
npm通过 Node.js 包管理器安装开发环境
DockerDocker Hub 上的容器镜像容器环境
Helm通过 Helm Chart 进行 Kubernetes 部署Kubernetes 集群

安装脚本会根据您的系统自动检测适当的方法。

来源:install.sh264-294 ci/helm-chart/values.yaml1-209 docs/helm.md1-160

构建与发布流程

Code-server 遵循结构化的构建和发布流程,包括:

  1. 使用必要的补丁从源代码构建 VS Code
  2. 将 code-server 与其依赖项打包
  3. 创建独立的发行版、Debian/RPM 包和 Docker 镜像
  4. 发布到 npm、GitHub 发行版和 Docker Hub

该过程使用 CI/CD 流水线来自动化构建、测试和发布。

来源:CHANGELOG.md160-174 ci/README.md35-71

功能和能力

Code-server 提供了 VS Code 的大部分功能,包括:

功能描述
扩展支持安装和使用 VS Code 扩展(主要来自 OpenVSX)
终端访问用于命令行操作的集成终端
源代码管理Git 集成和其他源代码管理提供商
调试直接在浏览器中调试应用程序
定制设置、主题、键盘快捷键
文件操作浏览、编辑和管理服务器上的文件
协作支持协作扩展
渐进式 Web 应用可在支持的设备上安装为 PWA

该项目在与 VS Code 的发展保持一致的同时,通过定期更新、添加新功能和改进,持续发展。

来源:docs/collaboration.md1-66 CHANGELOG.md602-610

支持的平台

Code-server 运行在:

  • Linux(广泛的发行版支持)
  • macOS
  • Windows(通过 WSL)
  • FreeBSD

客户端要求

  • 支持 WebSocket 的现代 Web 浏览器
  • 与服务器的互联网连接

来源:docs/requirements.md1-57 install.sh474-482

用例和场景

Code-server 在以下场景中特别有价值:

  1. 远程开发:从任何地方访问您的开发环境
  2. 资源限制:在低功耗客户端上使用强大的服务器进行开发
  3. 一致的环境:确保所有团队成员在相同的环境中工作
  4. 云开发:直接在云服务器上进行开发
  5. 边缘设备:在 iPad、Chromebook 或其他无法原生运行 VS Code 的设备上进行编码

对于在团队环境中部署,可以考虑使用 Coder,它建立在 code-server 之上,提供了团队管理功能。

来源:docs/README.md76-80 docs/manifest.json1-114

架构决策

几个关键的架构决策塑造了 code-server:

  1. 嵌入 VS Code:Code-server 集成了实际的 VS Code 代码库,而不是从头构建新的编辑器。
  2. Express 框架:使用 Node.js 和 Express 作为 HTTP 服务器。
  3. WebSockets:客户端和服务器之间的实时通信。
  4. 现代 Web 技术:利用 Web 标准实现跨平台兼容性。
  5. 扩展 API 兼容性:保持与 VS Code 扩展 API 的兼容性。
  6. 安全重点:身份验证、HTTPS 支持和受控的代理访问。

这些决策使 code-server 能够在作为 Web 应用程序运行的同时,提供真实的 VS Code 体验。

来源: package.json70-90 CHANGELOG.md825-837