一、项目介绍
code-server 是 Coder Technologies Inc. 维护的开源项目,把 Microsoft Visual Studio Code(VS Code)完整搬到服务器,通过浏览器即可访问一个功能完整的 VS Code 开发环境。官方文档原文:"code-server" 即 "VS Code on a remote server"。
典型场景:
- 在低配笔记本上通过浏览器使用服务器上的开发环境;
- 在 iPad/平板上写代码;
- 统一团队开发环境,避免"我机器上能跑"的问题;
- 长时间运行的编译、训练任务放在服务器本地,不依赖本地网络。
项目在 GitHub(coder/code-server)持续活跃维护;官方同时提供 Cloud 托管版 coder.com(企业向)与开源自托管 code-server。
二、功能拆解
按官方文档与 VS Code 本身能力:
| 功能 | 说明 |
|---|---|
| 浏览器版 VS Code | 完整 VS Code UI:文件树、编辑器、集成终端、调试器 |
| 扩展市场 | 可安装 VS Code 扩展(Python、Go、Prettier、Remote-SSH 等) |
| 多平台安装 | install.sh 自动识别 Debian/Ubuntu、Fedora/CentOS/RHEL、Arch、macOS、FreeBSD;不识别时回退到 standalone 包 |
| 多架构 | 官方镜像/包提供 amd64 与 arm64;arm32 需用社区镜像 linuxserver/code-server |
| 密码 + HTTPS 自签 | 首次启动自动生成随机密码并写入 config.yaml |
| Docker 镜像 | codercom/code-server:latest,amd64/arm64 |
| systemd 服务 | Debian/Ubuntu/RPM/Arch 安装后可 systemctl enable --now code-server@$USER |
三、官方/GitHub 链接
- GitHub 仓库:https://github.com/coder/code-server
- 官方文档(安装):https://coder.com/docs/code-server/latest/install
- 官方网站:https://coder.com
- 安装脚本:https://code-server.dev/install.sh
- Docker 镜像:https://hub.docker.com/r/codercom/code-server
- Releases:https://github.com/coder/code-server/releases
四、环境要求
官方文档《Install》明确:
- 操作系统:Linux(Debian/Ubuntu、Fedora/CentOS/RHEL/SUSE、Arch、Artix)、macOS、FreeBSD;官方明确不发布 Windows 原生包(原文:"We currently do not publish Windows releases",issue #1397)。
- glibc 要求:standalone 包要求 Linux
glibc >= 2.28、glibcxx >= v3.4.21;不满足时用 npm 方式安装(官方文档「npm」一节)。 - 架构:官方发布 amd64 与 arm64;其他架构用 npm 方式。
- 端口:默认 8080(官方文档反复出现:"Now visit http://127.0.0.1:8080")。
- 配置文件:
~/.config/code-server/config.yaml(密码、绑定地址、证书都在这里)。
五、部署步骤
官方文档推荐三种原生方式,本教程按官方原文给出最常用的两种。
方式 A:install.sh 一键脚本(官方推荐,Linux/macOS/FreeBSD)
步骤 1:(可选)dry-run 预览将要执行的命令
官方原文:
curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run
逐段解释:
curl -fsSL静默下载脚本;| sh把脚本交给 shell 执行;-s -- --dry-run是传给脚本的参数——--dry-run让脚本只 echo 将要执行的命令而不真正执行。
预期输出参考: 输出一段将要执行的命令清单(如 sudo dpkg -i ... 或 tar -C ~/.local/lib -xz),不实际安装。
步骤 2:正式安装
官方原文:
curl -fsSL https://code-server.dev/install.sh | sh
逐段解释:同上,但去掉
--dry-run,真正执行安装。脚本会自动识别系统包管理器:
- Debian/Ubuntu → 安装 .deb;
- Fedora/CentOS/RHEL/openSUSE → 安装 .rpm;
- Arch → 安装 AUR 包;
- macOS 有 Homebrew →brew install;否则回退到 standalone 包到~/.local;
- FreeBSD / 其他架构 → 用 npm 安装。
预期输出参考: 官方原文:"When done, the install script prints out instructions for running and starting code-server." 通常会出现类似 Installed extensions / Run: code-server 的提示;若安装到 ~/.local,脚本会提醒把 ~/.local/bin 加进 $PATH。
步骤 3:启动
code-server
逐段解释:直接运行 code-server 命令,前台启动。首次启动会在
~/.config/code-server/config.yaml生成随机密码与自签证书。
预期输出参考(官方文档原文):
text [2026-xx-xxTxx:xx:xx.xxZ] info code-server v4.xx.x [2026-xx-xxTxx:xx:xx.xxZ] info HTTP server listening on http://127.0.0.1:8080/ [2026-xx-xxTxx:xx:xx.xxZ] info - Using password from ~/.config/code-server/config.yaml [2026-xx-xxTxx:xx:xx.xxZ] info - To get started, head to http://127.0.0.1:8080/
方式 B:Debian/Ubuntu .deb 包(官方原文)
curl -fOL https://github.com/coder/code-server/releases/download/v$VERSION/code-server_${VERSION}_amd64.deb
sudo dpkg -i code-server_${VERSION}_amd64.deb
sudo systemctl enable --now code-server@$USER
# Now visit http://127.0.0.1:8080. Your password is in ~/.config/code-server/config.yaml
逐段解释:把
$VERSION替换为具体版本号(如4.99.0,见 https://github.com/coder/code-server/releases );curl -fOL下载 release 资产;dpkg -i安装;systemctl enable --now注册为 systemd 服务并立即启动,服务名带用户名后缀(code-server@$USER.service)。
方式 C:Docker(官方原文)
mkdir -p ~/.config
docker run -it --name code-server -p 127.0.0.1:8080:8080 \
-v "$HOME/.local:/home/coder/.local" \
-v "$HOME/.config:/home/coder/.config" \
-v "$PWD:/home/coder/project" \
-u "$(id -u):$(id -g)" \
-e "DOCKER_USER=$USER" \
codercom/code-server:latest
逐段解释(官方注释原文):
--p 127.0.0.1:8080:8080:把容器 8080 暴露到宿主 127.0.0.1:8080。
--v "$HOME/.local:/home/coder/.local":持久化扩展与用户数据。
--v "$HOME/.config:/home/coder/.config":持久化 code-server 配置(含密码)。
--v "$PWD:/home/coder/project":把当前目录挂载为容器内工作目录。
--u "$(id -u):$(id -g)":用宿主当前 UID/GID 运行,保证文件权限一致。
--e "DOCKER_USER=$USER":传用户名进容器。
六、配置参数详解
1. 配置文件 ~/.config/code-server/config.yaml(官方文档原文反复引用):
首次启动自动生成,内容形如:
bind-addr: 127.0.0.1:8080
auth: password
password: <自动生成的随机密码>
cert: false
| 字段 | 默认值 | 说明 |
|---|---|---|
bind-addr |
127.0.0.1:8080 |
监听地址;公网访问需改为 0.0.0.0:8080 |
auth |
password |
认证方式;可设为 none(仅内网) |
password |
随机生成 | 明文密码,登录时使用 |
cert |
false(首次启动自动生成自签证书后为路径) |
HTTPS 证书路径;false 表示 HTTP |
2. 常用命令行参数(code-server --help 可见):
code-server --bind-addr 0.0.0.0:8080 --auth password
官方文档提示:也可通过
--user-data-dir、--extensions-dir、--disable-telemetry等参数覆盖默认目录(见 Artix Linux 一节示例)。
七、启动与运维
- 前台启动:
code-server。 - 后台常驻(systemd,官方 .deb/RPM/AUR 方式自带):
- 启动:
sudo systemctl start code-server@$USER - 停止:
sudo systemctl stop code-server@$USER - 开机自启:
sudo systemctl enable --now code-server@$USER(官方原文命令) - 查看日志:
journalctl -u code-server@$USER -f - Docker 方式: 用
-d替换-it即可后台运行;docker stop code-server/docker start code-server。 - 修改端口: 编辑
~/.config/code-server/config.yaml中bind-addr,或启动时加--bind-addr 0.0.0.0:9000。 - 卸载(官方文档原文):
rm -rf ~/.local/share/code-server ~/.config/code-server
install.sh 方式额外:
rm -rf ~/.local/lib/code-server-*;Debian/Ubuntu:sudo apt remove code-server;Homebrew:brew uninstall code-server;npm:npm uninstall --global code-server。
八、实操验证
- 浏览器访问
http://127.0.0.1:8080(服务器部署则为http://服务器IP:8080,前提是bind-addr已改为0.0.0.0:8080且防火墙放行 8080)。 - 出现密码输入框——打开另一个终端,执行:
cat ~/.config/code-server/config.yaml
复制其中
password:后面的字符串粘贴到浏览器。
3. 登录后看到完整 VS Code 界面:左侧文件树、中间编辑器、底部集成终端。
4. 打开终端(Ctrl+`),执行pwd && ls,确认工作目录就是挂载/启动时的目录。
5. 安装一个扩展(如 Python)验证市场可用:左侧扩展图标 → 搜索 "Python" → Install。
登录与安全(重要)
- 官方默认密码: 无出厂固定密码。首次启动时自动在
~/.config/code-server/config.yaml中生成随机密码。 - 登录地址:
http://127.0.0.1:8080(默认只监听本机)。 - 修改密码: 编辑
~/.config/code-server/config.yaml中password:字段,重启 code-server 生效。 - 密码重置: 删除 config.yaml 后重启 code-server,会重新生成随机密码;或手动改成自己想要的字符串。
- 密码存放位置:
~/.config/code-server/config.yaml(明文 YAML)。 - 安全提醒(强烈建议):
1. 默认bind-addr: 127.0.0.1:8080只监听本机——公网服务器若直接改成0.0.0.0:8080,等于把一个完整开发环境暴露在公网;务必:① 用强密码;② 前面套 Nginx/Caddy 做 HTTPS;③ 或用 SSH 隧道访问(ssh -L 8080:127.0.0.1:8080 user@server),不要改 bind-addr。
2.auth: none仅在受信内网使用。
九、故障排查
案例 1:浏览器访问 8080 连接被拒绝
- 报错原文:
This site can't be reached/ERR_CONNECTION_REFUSED。 - 报错原因:默认
bind-addr: 127.0.0.1:8080,只监听本机回环;远程浏览器自然连不上。 - 分步解决:① 公网部署时编辑
~/.config/code-server/config.yaml把bind-addr改为0.0.0.0:8080;重启 code-server;② 或更安全的方式:保持127.0.0.1:8080,本地用 SSH 隧道ssh -L 8080:127.0.0.1:8080 user@server后访问http://127.0.0.1:8080。
案例 2:安装时报 node-gyp 错误(Raspberry Pi / 其他架构)
- 报错原文(官方文档 Raspberry Pi 一节引用 issue #5174):node-gyp 编译失败。
- 报错原因:arm32 等官方未提供预编译二进制的架构,npm 方式需要本地编译原生模块。
- 分步解决:官方文档建议在 Raspberry Pi 上用 npm 方式安装;具体见 https://github.com/coder/code-server/issues/5174 ;arm32 用户也可用社区镜像
linuxserver/code-server(官方文档原文推荐)。
案例 3:Alpine Linux 上 standalone 包无法运行
- 报错原文(官方文档「npm」一节引用 issue #1430):
Error: dlopen ... /lib64/ld-linux-x86-64.so.2: no version information available之类。 - 报错原因:官方 standalone 包要求 glibc ≥ 2.28;Alpine 用 musl libc,不兼容。
- 分步解决:官方建议改用 npm 方式安装 code-server(详见 docs/npm.md)。
案例 4:忘记密码
- 报错现象:浏览器密码输入框怎么输都进不去。
- 分步解决:
cat ~/.config/code-server/config.yaml查看当前密码;或直接编辑该文件把password:改成新值后重启。
十、升级、回滚与卸载
升级:
- install.sh 方式:重新执行 curl -fsSL https://code-server.dev/install.sh | sh(脚本会拉最新版)。
- .deb 方式:下载新版本 .deb 后 sudo dpkg -i code-server_<新版本>_amd64.deb。
- Docker 方式:
docker pull codercom/code-server:latest
docker stop code-server && docker rm code-server
# 重新执行方式 C 的 docker run 命令
回滚: 官方未提供一键回滚;从 https://github.com/coder/code-server/releases 下载旧版本 .deb 或 standalone 包覆盖安装即可(配置目录 ~/.config/code-server 保留)。
卸载: 见第七节官方卸载命令。
十一、商用许可合规说明
- 许可证:MIT License(仓库 LICENSE 文件开头原文:"The MIT License / Copyright (c) 2019 Coder Technologies Inc.")。
- MIT 许可允许自由使用、修改、分发与商用,包括闭源商业产品;必须保留原始版权声明与许可文本。
- code-server 自托管无需付费授权;Coder 公司另提供 coder.com 企业版(商业产品),与开源 code-server 是两条线。
- 注意:code-server 本身是 MIT,但你在其中安装的 VS Code 扩展与打开的项目代码按各自许可证处理。