Code-server 是一个开源项目,它允许 VS Code 在远程服务器上运行,并通过 Web 浏览器访问。本文档全面概述了 code-server 是什么、它是如何工作的以及它的核心架构。
有关详细的安装说明,请参阅 安装和部署。有关配置选项,请参阅 配置。
Code-server 是一款允许您在远程服务器上运行 VS Code 并通过 Web 浏览器访问它的工具。这种方法提供了许多好处:
来源:package.json1-106 docs/README.md1-80
Code-server 的工作方式是运行一个服务器端 VS Code 实例(基于 VS Code 的核心组件),并通过 Web 界面使其可访问。系统架构包含几个关键组件:
架构包含三个主要部分:
来源: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 包含一个内置的身份验证系统,可以配置为:
启用后,身份验证系统会拦截请求并将未经身份验证的用户重定向到登录页面。
Code-server 没有重新实现代码编辑器,而是嵌入了 VS Code 的核心组件,并将其适配到浏览器环境中。这种集成:
Code-server 的一个独特功能是其内置的代理,允许通过相同的身份验证层访问服务器上运行的服务。这使得开发人员可以访问运行在特定端口上的 Web 应用程序。
代理系统支持:
此功能对于查看 Web 应用程序、文档或在开发过程中启动的服务特别有用。
来源:CHANGELOG.md602-610 CHANGELOG.md442-446
Code-server 可以通过多种方式安装和部署:
| 方法 | 描述 | 适用场景 |
|---|---|---|
| 包管理器 | 使用 apt、yum、pacman 等系统包管理器 | Linux 桌面/服务器 |
| 独立安装包 | 来自 GitHub 发行版的预编译二进制文件 | 任何支持的平台 |
| npm | 通过 Node.js 包管理器安装 | 开发环境 |
| Docker | Docker Hub 上的容器镜像 | 容器环境 |
| Helm | 通过 Helm Chart 进行 Kubernetes 部署 | Kubernetes 集群 |
安装脚本会根据您的系统自动检测适当的方法。
来源:install.sh264-294 ci/helm-chart/values.yaml1-209 docs/helm.md1-160
Code-server 遵循结构化的构建和发布流程,包括:
该过程使用 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 运行在:
客户端要求
来源:docs/requirements.md1-57 install.sh474-482
Code-server 在以下场景中特别有价值:
对于在团队环境中部署,可以考虑使用 Coder,它建立在 code-server 之上,提供了团队管理功能。
来源:docs/README.md76-80 docs/manifest.json1-114
几个关键的架构决策塑造了 code-server:
这些决策使 code-server 能够在作为 Web 应用程序运行的同时,提供真实的 VS Code 体验。