code-server启动失败主因是端口冲突或权限错误:先用ss -tuln | grep :8080查占用,再以code-server --port 8888换端口启动;绑定地址须设--bind-addr 0.0.0.0:8888并放行防火墙;配置文件路径为~/.config/code-server/config.yaml,注意yaml格式与属主权限。

code-server 启动失败:常见报错和端口冲突怎么解
直接执行 code-server 却打不开网页?大概率是端口被占或权限没配对。默认 8080 端口在很多 Linux 发行版里常被 snap 版 Firefox 或其他服务悄悄占用,curl http://localhost:8080 返回空或连接拒绝就是信号。
- 先查端口:运行
ss -tuln | grep :8080,看谁在监听;如果没结果,再试lsof -i :8080(需装lsof) - 换端口启动最省事:
code-server --port 8888,然后访问http://your-ip:8888 - 绑定地址别漏掉:本地测试用
--bind-addr 127.0.0.1:8888;想局域网/外网访问,必须写成--bind-addr 0.0.0.0:8888,否则浏览器连不上 - 防火墙记得放行:Ubuntu 用
sudo ufw allow 8888,CentOS 用sudo firewall-cmd --add-port=8888/tcp --permanent && sudo firewall-cmd --reload
密码不生效或 config.yaml 不起作用?配置加载路径要盯紧
~/.config/code-server/config.yaml 是唯一被自动读取的配置文件,但很多人改了没效果,其实是路径或格式错了——~ 指的是当前用户主目录,不是 root,也不是 /root(除非你用 root 启动)。
- 确认当前用户:
whoami,再检查ls -la ~下有没有.config/code-server/目录 - 配置文件必须是 YAML 格式:冒号后要加空格,
password: mypass123对,password:mypass123错 - 启动时加
--config参数会覆盖默认路径,比如code-server --config /etc/code-server.yaml,这时就完全不看~/.config下的了 - 首次启动没生成 config?删掉
~/.local/share/code-server再跑一次code-server,它会重新初始化并提示密码位置
Docker 部署时 /root/.vscode-server 挂载失效?权限和路径别硬套
用 docker run -v /docker/vscode/data:/root/.vscode-server 启动后,插件装不上、设置不保存,基本是挂载路径权限问题。Docker 容器内 code-server 进程以非 root 用户(通常是 coder)运行,但宿主机目录属主是 root,导致写入被拒。
- 别直接挂载
/root/.vscode-server:改成挂载到普通用户目录下,比如-v /home/ubuntu/vscode-data:/home/coder/.local/share/code-server - 提前建好目录并赋权:
mkdir -p /home/ubuntu/vscode-data && chown -R 1001:1001 /home/ubuntu/vscode-data(1001 是 coder 用户 UID,可用docker exec -it code-server id -u coder查) - 环境变量
PASSWORD必须大写且无空格,-e PASSWORD=abc123有效,-e password=abc123或-e PASSWORD=" abc123 "都会静默失效 - 镜像版本别用
latest:2026 年主流已切到codercom/code-server:4.92.1,旧版latest可能拉不到或行为异常
浏览器打不开、WebSocket 断连?网络链路和反向代理要验三处
页面加载卡在白屏、控制台报 WebSocket connection to 'ws://...' failed,不是 code-server 没启,而是中间某层断了 WebSocket 流量。云服务器尤其容易栽在这儿。
- 先绕过所有代理直连:用手机热点连服务器 IP+端口,能开说明是本地网络或反代问题
- Nginx 反代必须加 WebSocket 支持:配置里缺这三行就必断——
proxy_http_version 1.1、proxy_set_header Upgrade $http_upgrade、proxy_set_header Connection "upgrade" - 云厂商安全组要同时放 TCP 和 WebSocket:只开
8080端口不够,还得确认“协议类型”选的是TCP(不是 HTTP/HTTPS),部分平台要手动勾选“允许 WebSocket” - Chrome 浏览器若提示
ERR_CONNECTION_REFUSED,先关掉所有插件,尤其是广告拦截类(uBlock Origin 早期版本会误杀 code-server 的 ws 请求)
真正卡住人的从来不是安装命令,而是容器 UID 和宿主机目录权限错位、Nginx 少一行 Connection "upgrade"、或者以为改了 config.yaml 就万事大吉却忘了 ~ 指的是谁的家目录。这些点不亲手敲一遍、不看一眼 docker logs code-server 或浏览器开发者工具的 Network 页签,光靠复制粘贴永远在循环重启。











