在 VPS 基础设施上运行 code-server,当您想要一个可以通过浏览器访问的持久开发环境,而您的项目、Git 仓库、设置和扩展保持在您控制的 Linux 服务器上时。 VoyraCloud code-server 应用程序镜像默认启用密码认证,并仅在 VPS 回环接口上监听。您首先通过 SSH 隧道连接,而不是直接将终端可用的 Web IDE 暴露到公共互联网。
TL;DR
- VoyraCloud 镜像提供 Ubuntu 上的 code-server 和 Git,而语言运行时、项目依赖、扩展、域和备份仍由用户管理。
- code-server 在
127.0.0.1:8080上监听,因此{server-ip}:8080不是公共应用地址。 - 使用资源详情中显示的 SSH 隧道,打开本地
http://127.0.0.1:8080,并使用为您的 VPS 生成的唯一密码登录。 - 不要禁用认证。code-server 包含一个终端,因此未经授权的用户可能会以服务用户的权限执行命令。
- 在将 IDE 发布到互联网之前,使用域、支持 WebSocket 的反向代理、受信任的 HTTPS 和额外的访问控制层。
- 云 VPS 从符合条件的 2 vCPU、2 GB RAM 和 40 GB 存储计划开始。住宅 IP VPS 从 2 vCPU、4 GB RAM 和 60 GB 存储开始。
- 重启会保留 VPS 存储上的文件并重新启动服务,但持久性并不是备份。请将经过测试的副本保存在 VPS 之外。
什么是 code-server?
code-server 是一个开源项目,在 Web 浏览器中运行类似 VS Code 的开发环境。 它提供代码编辑器、集成终端、Git 工作流、扩展支持、设置和对存储在远程机器上的文件的访问。
它不是 Microsoft Visual Studio Code、GitHub Codespaces 或多用户 Coder 平台。它是一个自托管的浏览器 IDE,旨在为控制底层服务器的用户提供服务。浏览器仅是接口:代码执行、终端、代码库、构建工具和开发服务在 VPS 上运行。
这种架构在您从多台计算机工作、需要始终可用的 Linux 环境或不希望项目文件和工具绑定到一台工作站时非常有用。它还改变了安全边界。任何进入 IDE 的人都可能打开终端、检查项目文件并以 code-server 服务用户的身份执行命令。因此,访问保护是部署的一部分,而不是可选的外观设置。
官方 code-server 要求 建议至少有两个 CPU 核心和 1 GB 的 RAM,并要求支持 WebSocket。实际项目需求可能更高,特别是当您安装编译器、语言服务器、容器、数据库或内存密集型构建工具时。
VoyraCloud 镜像包含什么?
应用程序镜像准备了一个私有的 code-server 服务和 Git,但它并不将 VPS 转变为一个受管理的开发平台。 您保留对 VPS 的根访问权限,并决定添加哪些语言、软件包、代码库和扩展。
| 镜像提供的内容 | 用户管理或未包含的内容 |
|---|---|
| Ubuntu 24.04 LTS | 交付后的操作系统维护 |
| 一个固定的稳定 code-server 版本 | 自动 code-server 升级 |
| Git 命令行工具 | Git 托管账户和凭证 |
| 非根 code-server 服务 | 共享团队账户或角色管理 |
| 启用密码认证 | 外部身份提供者或单点登录 |
| 每个 VPS 的唯一随机密码 | 首次登录后的密码轮换策略 |
仅在 127.0.0.1:8080 上监听 | 公共域、反向代理或受信任的 HTTPS |
| 正常重启后自动启动服务 | 高可用性或自动故障转移 |
| 持久的 VPS 存储 | 自动离线备份 |
| 扩展安装支持 | 预安装的第三方扩展或兼容性保证 |
| 集成终端和开发端口代理 | 语言运行时、数据库、Docker 或用户项目 |
在您的 VoyraCloud 资源详情中的应用程序部分显示了 VPS 创建时交付的 code-server 版本。它在您后续自行更改软件时不会自动更新。
快速入门:如何安全访问 code-server?
安全的初始路径是建立 SSH 隧道,通过 SSH 检索您的实例密码,并在您自己的计算机上打开回环 URL。 这保持端口 8080 私有,并加密您计算机与 VPS 之间的流量。
- 打开 VoyraCloud code-server 页面 并继续购买流程。
- 选择符合条件的云 VPS 或住宅 IP VPS 计划,以及该产品当前提供的任何区域。
- 确认在镜像中选择了 code-server,创建 VPS,并等待配置完成。
- 打开资源详情并复制显示的 SSH 隧道命令。它遵循以下模式:
ssh -p <ssh-port> -N -L 8080:127.0.0.1:8080 <ssh-user>@<server-ip>
- 保持该 SSH 会话打开。如果它退出,隧道关闭,但 code-server 继续在 VPS 上运行。
- 使用为您的资源显示的连接值打开第二个 SSH 会话:
ssh -p <ssh-port> <ssh-user>@<server-ip>
7. 从您的 code-server 配置中读取生成的密码:
sed -n 's/^password: //p' ~/.config/code-server/config.yaml
8. 在您的本地浏览器中打开:
http://127.0.0.1:8080
9. 输入第 7 步中的密码,打开集成终端,并验证 Git:
git --version
使用您资源详情中的实际 SSH 用户和端口,而不是假设 root 和端口 22。code-server 进程在镜像的非根用户下运行,因此配置命令应以该 SSH 用户身份运行。
该地址使用 HTTP,因为它仅通过您自己计算机上的加密 SSH 隧道访问。它不是公共生产 URL。不要仅仅为了让 IP 地址在浏览器中打开而将监听器更改为 0.0.0.0:8080。
如果本地端口 8080 已被使用,请选择左侧的其他端口:
ssh -p <ssh-port> -N -L 18080:127.0.0.1:8080 <ssh-user>@<server-ip>
然后浏览到 http://127.0.0.1:18080。保持远程目标为 127.0.0.1:8080。
如何更改 code-server 密码?
通过以服务用户身份编辑 code-server 配置并重启服务来更改生成的密码。 使用一个独特的密码,您不应将其重复用于 SSH、Git 托管、电子邮件或其他 VPS。
打开配置文件:
nano ~/.config/code-server/config.yaml
保持以下安全设置:
bind-addr: 127.0.0.1:8080
auth: password
cert: false
仅用您的新强密码替换 password: 后的值,保存文件,并重启用户特定的服务:
sudo systemctl restart code-server@"$(whoami)"
通过隧道重新连接,并在关闭现有的已认证浏览器会话之前验证新密码。官方 code-server FAQ 还记录了 Argon2 hashed-password 选项。如果您采用它,请遵循当前的官方语法,通过 SSH 保持恢复路径,并在更改后测试服务。
切勿在公共可达的部署上设置 auth: none。SSH 隧道限制网络可达性,但保持密码认证启用增加了第二个控制,防止在网络配置稍后更改时意外暴露无认证。
如何添加项目和 Git 仓库?
在非根服务用户拥有的目录中创建或克隆项目,然后从浏览器 IDE 打开该目录。 避免以 root 身份开发,因为编辑器扩展、项目脚本和软件包生命周期钩子可以执行代码。
要通过 HTTPS 克隆一个仓库:
mkdir -p ~/projects
cd ~/projects
git clone https://github.com/<owner>/<repository>.git
对于私有仓库,使用您的 Git 提供者支持的凭证方法。不要将长期有效的访问令牌粘贴到源文件、shell 脚本、编辑器设置或保留在 shell 历史中的终端命令中。优先使用提供者支持的凭证助手、范围狭窄的令牌或来自受信任工作站的 SSH 代理转发。
在转发 SSH 代理之前,请了解信任边界:作为您的远程用户运行的进程可能会在会话活动时请求转发代理的签名。不要将高价值的个人密钥转发到不受信任的项目环境中。特定于仓库的部署密钥或范围狭窄的凭证可以降低被攻破的后果。
该镜像并未为每个项目安装语言工具链。仅添加您的代码所需的运行时,并使用项目的锁定文件保持依赖项的可重现性。在运行之前审查安装脚本,特别是从仓库 README 复制的命令或由软件包管理器自动执行的命令。
扩展在 code-server 中如何工作?
code-server 支持扩展,但其扩展生态系统与桌面 VS Code 不完全相同,并不是每个扩展都能在浏览器托管的环境中工作。 一些扩展依赖于专有的 Microsoft 服务、桌面 API、本地二进制文件或不适用于分支的许可条款。
从扩展视图或使用 code-server 命令行安装扩展:
code-server --install-extension <publisher.extension>
您还可以安装从扩展发布者处获得的受信任的 VSIX 文件:
code-server --install-extension /path/to/extension.vsix
官方扩展指导 解释了支持的市场和 VSIX 路径。它还不鼓励将 code-server 指向 Microsoft 的市场 URL,因为这样做与 Microsoft 的使用条款相冲突。
将扩展视为可执行软件。在安装之前,审查发布者、来源、权限、更新历史和项目访问。扩展可以读取工作区文件、启动进程、连接网络并访问服务用户可用的凭证。仅安装项目所需的内容,并在依赖于它们进行重要工作之前测试扩展更新。
如何运行和预览开发服务?
在 VPS 回环接口上运行您的开发服务器,并通过 code-server 的内置端口代理或其他 SSH 隧道访问它。 您无需在 VPS 防火墙中暴露每个开发端口。
例如,如果您的项目在 127.0.0.1:3000 上启动开发服务器,code-server 可以检测该端口并在其端口界面中提供转发链接。内置代理使用经过身份验证的 code-server 会话,并依赖 WebSocket 进行编辑器连接。
对于单独的 SSH 隧道,在您的计算机上运行:
ssh -p <ssh-port> -N -L 3000:127.0.0.1:3000 <ssh-user>@<server-ip>
然后在本地打开 http://127.0.0.1:3000。这种模式适用于开发仪表板、本地 API 文档和不应对公众可用的测试应用程序。
不要假设 code-server 密码可以保护您直接绑定到 0.0.0.0 的服务。单独的应用程序端口可以完全绕过 IDE 的身份验证。故意决定哪些服务是私有的,哪些需要自己的身份验证,以及哪些准备好公开访问互联网。
如何使用 HTTPS 发布 code-server?
公共访问需要一个域、受信任的 TLS 证书、保留 WebSocket 的反向代理、密码认证,最好还有一个额外的身份感知访问层。 官方安全访问指南 警告说,未经过身份验证和加密地暴露 code-server 可能会让攻击者通过其终端控制机器。
使用以下生产检查清单:
- 创建一个专用主机名,例如
code.example.com,并将其 DNS 记录指向 VPS。 - 保持 code-server 绑定到
127.0.0.1:8080。 - 配置 Nginx、Caddy 或其他支持的反向代理以访问回环服务。
- 保留 HTTP/1.1 WebSocket 升级头和原始主机信息。
- 获取一个浏览器信任的证书并自动续订。
- 将普通 HTTP 重定向到 HTTPS。
- 保持 code-server 密码认证启用。
- 在风险值得时添加外部访问层,例如身份感知代理。
- 测试登录、终端、扩展加载、文件上传和转发的开发端口。
- 确认从另一个网络中端口
8080本身仍然不可用。
一个最小的 Nginx 位置需要 WebSocket 转发:
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
这只是应用程序代理块。您仍然必须配置服务器名称、受信任的证书、续订、HTTP 重定向、防火墙和访问策略。使用您选择的代理的当前文档验证完整配置。
自签名证书对于正常浏览器使用来说是一个糟糕的默认选项,因为用户必须绕过或手动管理信任警告。当只有一个管理员需要 IDE 时,SSH 隧道访问更简单。公共 HTTPS 在您需要从没有 SSH 客户端的设备访问浏览器时很有用,但它会创建更大的攻击面,并且需要持续的证书和代理维护责任。
选择云 VPS 还是住宅 IP VPS 用于 code-server?
云 VPS 是远程开发的正常选择,而住宅 IP VPS 在稳定的住宅网络身份确实是开发或区域测试要求的一部分时可用。 两个产品系列提供相同的 code-server 应用程序行为,并支持该产品当前提供的所有区域。
| 产品 | 符合条件的起始配置 | 适用用途 |
|---|---|---|
| 云 VPS | 2 vCPU、2 GB RAM、40 GB 存储 | 一般编码、Git 项目、轻量级构建和远程开发 |
| 住宅 IP VPS | 2 vCPU、4 GB RAM、60 GB 存储 | 当需要稳定的住宅网络来源时的相同开发工作流 |
购买最低限额是符合条件的门槛,而不是性能保证。较大的项目可能需要更多资源用于语言服务器、软件包安装、TypeScript 索引、编译、本地数据库、容器构建或多个并发进程。在安装您的真实工具链后,监控内存、CPU、磁盘使用和可用存储。
住宅网络身份并不会提高编辑器性能,不应被视为 IDE 的安全特性。仅在网络来源本身在您的工作中具有合法角色时才选择它。在购买之前,请查看 VoyraCloud 定价页面 上的当前配置。
重启后会保留什么?
存储在 VPS 上的文件在正常重启后会保留,code-server 服务会自动重新启动,但实时终端进程和未保存的编辑器状态可能无法保留。 将项目工作保存到磁盘,并为任何必须重启的内容使用适当的进程监控。
持久项目包括:
- 项目文件和本地 Git 仓库。
- 编辑器设置、键绑定和已安装的扩展。
- code-server 配置和密码更改。
- 工具写入持久目录的文件。
不要期望重启能保留:
- 未保存的编辑器缓冲区。
- 在没有监控的正常终端中运行的命令。
- 内存中的开发服务器。
- 您的工具在退出时删除的临时文件。
- 在另一台计算机上的浏览器会话状态。
对于长时间运行的应用程序,使用为该应用程序设计的服务管理器或容器配置。code-server 重启不会自动重启在其终端中打开的每个命令。
如何备份 code-server VPS?
在 VPS 之外备份源代码和环境状态,因为本地持久性无法保护免受删除、损坏、泄露或存储故障。 Git 远程仓库对于版本化源代码很有用,但它们可能不包含未提交的工作、秘密、本地数据库、生成的资产、编辑器设置或部署状态。
使用分层备份计划:
- 将已提交的源代码推送到您控制的私有 Git 远程。
- 识别 Git 有意排除的项目数据。
- 如果重新创建它们的成本很高,请备份 code-server 设置和扩展状态。
- 使用应用一致的方法导出本地数据库,而不是盲目复制实时数据库文件。
- 将加密备份存储在 VPS 之外。
- 保留多个恢复点。
- 在单独的测试环境中恢复并验证项目、凭证、编辑器和构建过程。
不要仅仅为了简化备份而将秘密放入 Git 仓库。通过适当的秘密管理或加密恢复过程备份凭证,如果您怀疑 VPS 或备份目的地已被泄露,请轮换它们。
如何更新 code-server?
通过选择特定的稳定版本、阅读其发布说明、备份数据以及在安装后测试编辑器和项目工作流来谨慎更新。 该镜像不遵循浮动的 latest 版本,VoyraCloud 也不会自动升级现有客户的 VPS。
在更新之前:
- 使用
code-server --version记录当前版本。 - 查看 官方 code-server 发布 和变更日志,以获取安全修复、回归和浏览器兼容性更改。
- 备份项目、设置、扩展状态和当前配置。
- 选择一个确切的稳定版本,而不是边缘构建或浮动软件包目标。
- 保持 SSH 会话可用,以防浏览器界面失败。
- 使用当前官方方法为 Ubuntu 安装新版本。
- 重启服务并检查其状态。
- 测试密码登录、WebSocket 连接、终端访问、Git、所需扩展和一个代表性项目。
- 确认监听器仍然是
127.0.0.1:8080,并且认证仍然启用。
官方升级页面 表示,当新版本安装在旧版本上时,用户数据会被保留。这种预期行为并不能替代备份或证明每个扩展和项目仍然兼容。
操作系统安全更新、语言运行时、软件包管理器、反向代理、证书、扩展和项目依赖项有各自的更新周期。仅更新 code-server 并不会使整个开发环境保持最新。
常见错误
大多数 code-server 部署失败来自于削弱访问控制、混淆持久性与备份,或假设浏览器 IDE 的兼容性与桌面 VS Code 相同。 避免这些错误:
- 为了方便,将
8080绑定到每个接口。 - 在公共可达的服务器上设置
auth: none。 - 通过普通 HTTP 发布 IDE,而不是使用隧道或受信任的 HTTPS。
- 在多个 VPS 实例中重复使用生成的密码。
- 以 root 身份运行 code-server 或项目命令。
- 将每个扩展或专有市场集成视为兼容。
- 安装未经审查的扩展、脚本或仓库依赖项。
- 在没有单独身份验证的情况下暴露开发端口。
- 假设开放的终端进程会在重启后存活。
- 将 VPS 本地文件称为备份。
- 在未阅读更改或保留 SSH 恢复访问的情况下更新到浮动版本。
- 将 Git 令牌、API 密钥或 SSH 私钥存储在项目源中。
常见问题解答
我可以在 VPS IP 地址上打开 code-server 吗?
不可以,VoyraCloud 镜像故意不在公共 IP 上暴露端口 8080。 建立资源详情中显示的 SSH 隧道,并在您自己的计算机上打开 http://127.0.0.1:8080。在启用公共浏览器访问之前,配置一个域、反向代理、受信任的 HTTPS 和访问控制。
为什么本地 URL 使用 HTTP?
HTTP URL 在加密的 SSH 隧道内传输,仅在隧道打开时可以从您的本地计算机访问。 它不是一个安全的公共 URL,不应直接暴露在互联网上。
我在哪里可以获得初始密码?
通过 SSH 连接到 VPS,并从您的服务用户的 code-server 配置中读取唯一密码。 密码不会在 VoyraCloud 资源页面、前端 API、日志或分析中显示。确认初始访问后更改它。
该镜像是否包含 Node.js、Python、Docker 或数据库?
不。该镜像提供 code-server、Git 和浏览器 IDE 所需的 Linux 环境。 安装和维护您自己工作所需的语言运行时、数据库、容器和项目依赖项。
我可以安装普通的 VS Code 扩展吗?
一些扩展可以工作,但兼容性与桌面 VS Code 不完全相同。 使用支持的扩展源或受信任的 VSIX,检查扩展的许可证和运行时要求,并且不要将 code-server 重定向到 Microsoft 的市场 URL。
几个人可以共享一个 code-server 密码吗?
共享密码并不能提供个体身份、角色或审计能力。 该镜像被设计为单用户自管理工作区。当多个用户需要受控访问时,请使用单独的 VPS 实例或为团队工作区管理设计的平台。
重启 VPS 后我的工作会保留吗?
保存的文件、仓库、设置、扩展和 code-server 配置在正常重启后仍保留在持久的 VPS 存储中。 未保存的编辑器缓冲区和普通终端进程可能无法存活,本地持久性并不能替代离线备份。
VoyraCloud 会自动更新 code-server 吗?
不。该镜像提供一个固定的稳定版本,现有实例不会自动跟随新版本。 查看官方发布说明,备份数据,安装确切的稳定版本,并在更新后测试身份验证和项目工作流。
结论
code-server VPS 为您提供一个持久的基于浏览器的开发环境,同时将操作系统、文件、工具和网络控制保持在您的管理之下。 从私有 SSH 隧道开始,保留密码认证,仅安装项目所需的运行时和扩展,并仅在公共浏览器访问必要时添加受信任的 HTTPS 反向代理。
使用 VPS 管理指南 规划操作系统更新、访问控制、监控和备份工作,这些工作仍在浏览器 IDE 之外。
从 VoyraCloud code-server 应用程序镜像 开始,验证交付的环境,并在您控制的 VPS 上构建您的开发工作流。

