Skip to content

配置文件

服务端的全部设置都在一个 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。
cookieSecurefalse登录 Cookie 仅 HTTPS。生产环境设 true 如果登录后马上被弹出,多半是设了 true 却还在用 http:// 访问。
hstsfalse「仅 HTTPS」模式:明文 HTTP 跳转,浏览器记住永远走 HTTPS。确认 HTTPS 正常后再开。

HTTPS

默认作用
tlsDomains[]要申请免费证书的域名。填了它就等于打开 HTTPS 开关。 列出的每个域名都必须解析到这台服务器。
tlsListen":443"HTTPS 监听地址。
tlsEmail可选,证书机构的联系邮箱(到期提醒)。

完整流程见 HTTPS 与域名

存储与 Web 界面

默认作用
dataDir/var/lib/code/data服务器所有数据的根目录:绑定的机器和密码、会话历史、设置、证书缓存。记得备份——见数据与备份
webDir/var/lib/code/webWeb 界面静态文件的位置。安装包放好的,一般不用碰。
webProxy仅开发用,保持为空。
corsOrigin仅开发用,保持为空。

多节点(可选)

跑了多台服务器(比如一个地区一台),想让登录页把它们都列出来并显示延迟?两个额外的键:

作用
serverList绑定页展示的节点列表。每项:namedomain、可选的 ip / fallbackhttps: 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_LISTENCODE_TLS_DOMAINS(逗号分隔)、CODE_DATA_DIRCODE_HSTS。主要用于容器部署;普通安装直接改 YAML 就好。

WARNING

如果某个键被环境变量覆盖了(比如写在容器定义里),改 YAML 里的这个键不会生效,得先去掉那个覆盖。

让修改生效

  • 最省事:code-server-setup 编辑——Ctrl+S 保存时自动让运行中的服务器重载。
  • 手改了文件?重启:sudo systemctl restart code-server(用户态:systemctl --user restart code-server)。

重载/重启会断开活动连接一两秒;浏览器和 Agent 会自动重连,正在运行的任务不受影响。