配置文件
服务端的全部设置都在一个 YAML 文件里:
| 安装方式 | 配置文件 |
|---|---|
| 系统包(deb/rpm) | /etc/code.yaml |
| 用户态安装(无 root) | ~/.config/code/server.yaml |
| Docker / Podman | 宿主机的 /etc/code.yaml,挂载进容器 |
可以直接编辑,也可以用方向键操作的配置界面——见配置界面(TUI)。
带注释的示例
yaml
# --- 监听 ---
listen: ":80" # 明文 HTTP 监听。HTTPS 关闭时它服务整个应用;
# HTTPS 开启时它负责证书验证(ACME),并可选
# 跳转到 https。
cookieSecure: true # 开了 HTTPS 之后必须为 true(否则登录状态存不住);
# 只有纯 HTTP 测试时才用 false。
hsts: false # true = 强制 HTTPS(80 端口 301 跳转 + HSTS 头)。
# HTTPS 验证没问题后再开。
# --- 自动 HTTPS(Let's Encrypt)——见「HTTPS 与域名」 ---
tlsDomains: ["code.example.com"] # 非空 = 开启 HTTPS;空 = 纯 HTTP
tlsListen: ":443" # HTTPS 端口
tlsEmail: "" # 可选:接收证书到期提醒的邮箱
# --- 存储 ---
dataDir: "" # 空 = /var/lib/code/data。存放机器、会话、
# 历史、设置和证书缓存。
# --- Web 界面(保持默认即可) ---
webDir: "" # 空 = /var/lib/code/web(安装包放好的)键参考
监听与安全
| 键 | 默认 | 作用 |
|---|---|---|
listen | ":80" | 明文 HTTP 地址。HTTPS 关时服务整个应用;HTTPS 开时应答 Let's Encrypt 验证,配合 hsts: true 把其余请求跳转到 HTTPS。 |
cookieSecure | false | 登录 Cookie 仅 HTTPS。生产环境设 true。 如果登录后马上被弹出,多半是设了 true 却还在用 http:// 访问。 |
hsts | false | 「仅 HTTPS」模式:明文 HTTP 跳转,浏览器记住永远走 HTTPS。确认 HTTPS 正常后再开。 |
HTTPS
| 键 | 默认 | 作用 |
|---|---|---|
tlsDomains | [] | 要申请免费证书的域名。填了它就等于打开 HTTPS 开关。 列出的每个域名都必须解析到这台服务器。 |
tlsListen | ":443" | HTTPS 监听地址。 |
tlsEmail | 空 | 可选,证书机构的联系邮箱(到期提醒)。 |
完整流程见 HTTPS 与域名。
存储与 Web 界面
| 键 | 默认 | 作用 |
|---|---|---|
dataDir | /var/lib/code/data | 服务器所有数据的根目录:绑定的机器和密码、会话历史、设置、证书缓存。记得备份——见数据与备份。 |
webDir | /var/lib/code/web | Web 界面静态文件的位置。安装包放好的,一般不用碰。 |
webProxy | 空 | 仅开发用,保持为空。 |
corsOrigin | 空 | 仅开发用,保持为空。 |
多节点(可选)
跑了多台服务器(比如一个地区一台),想让登录页把它们都列出来并显示延迟?两个额外的键:
| 键 | 作用 |
|---|---|
serverList | 绑定页展示的节点列表。每项:name、domain、可选的 ip / fallback、https: true/false。 |
nodeName | 这台服务器对应 serverList 里的哪一项。单台部署留空。 |
yaml
serverList:
- { name: "Hong Kong", domain: "hk.example.com", https: true }
- { name: "Singapore", domain: "sg.example.com", https: true }
nodeName: "Hong Kong"环境变量覆盖
每个键都有对应的 CODE_* 环境变量,一旦设置就优先于 YAML 里的值——例如 CODE_LISTEN、CODE_TLS_DOMAINS(逗号分隔)、CODE_DATA_DIR、CODE_HSTS。主要用于容器部署;普通安装直接改 YAML 就好。
WARNING
如果某个键被环境变量覆盖了(比如写在容器定义里),改 YAML 里的这个键不会生效,得先去掉那个覆盖。
让修改生效
- 最省事: 用
code-server-setup编辑——Ctrl+S保存时自动让运行中的服务器重载。 - 手改了文件?重启:
sudo systemctl restart code-server(用户态:systemctl --user restart code-server)。
重载/重启会断开活动连接一两秒;浏览器和 Agent 会自动重连,正在运行的任务不受影响。