如果在服务器端的 vscode 中遇到了这样的报错:
Can't install 'xxx' extension because it is not compatible with the current version of code-server (version 1.xx.x).
那么说明,服务器端的 code-server 版本过低,不能使用一些比较新的 vscode 插件,比如 claude code. 这种情况下,需要升级服务器端的 code-server 版本。
# 什么是 code-server
在本机连接服务器一般有两种方式,第一种是使用本机的 ssh 进行连接。在这种方法下,IDE 界面实际由本机安装的软件提供。这样的自由度很高,但是需要本机安装软件,对本机的环境有一定要求。同时,部分关键设置如 vscode 的 debug 脚本,也是存储于本地的,对于多机办公不够方便。
另一种对本机用户更加便捷的方式是使用 code server. code server 是一个直接运行在服务器端的 VSCode, 这样可以有三点好处:
- 在多设备上具有一致的开发环境;
- 可以使用云服务器加快测试、编译、下载等;
- 所有高强度任务都在服务器上进行,便于外出环境下的工作。
正因如此,国内的许多大型云服务器提供商都提供了 WebIDE, 本质就是 code server.
# 如何对 code server 升级
大部分情况下,网页的 code server 是不太容易直接升级的,因为其依赖的底层 infra 可能对应不同的物理机(这块我也不太懂)。不过,可以通过在当前的机器上再安装一个 code server 来解决。
我们可以从 code-server Releases - GitHub 中找到对应的最新版本,下载到服务器上。一般情况下,服务器用 x64 架构,对应的是 xxx_amd64.deb . 比如这里我们下载(或者下载到本地再上传):
wget https://github.com/coder/code-server/releases/download/v4.109.2/code-server_4.109.2_amd64.tar.gz |
然后就可以解压到某个位置:
tar -xzf code-server_4.109.2_amd64.tar.gz |
# 运行新的 code server
要想让这个 code server 在某个端口上跑起来。我们通过
ss -tlnp | grep LISTEN |
显示当前被占用的端口。然后选择一个没有被占用的端口,比如 8081. 这样我们首先执行如下命令:
unset VSCODE_IPC_HOOK_CLI |
用来删除 code server 标识环境变量。否则,当启动新版本 code server 时,程序将自动寻找当前已经启动的 code 实例,而非启动一个新的 code server.
这样,就可以指定端口启动新版本 code server:
./code-server-4.109.2-linux-amd64/bin/code-server --bind-addr 0.0.0.0:8081 --auth password |
这样,假设我们之前公网访问 WebIDE 的地址是 https://xxx.xxx.xxx.xxx/ , 那么现在访问 https://xxx.xxx.xxx.xxx/proxy/8081/ 就可以访问到 code server 了。
因为这个新的 code server 是需要一直挂着的,所以最好在 tmux 中执行启动 code server 的命令以保活。
# Reference
- Visual Studio Code Server - Microsoft
- code-server - GitHub