使vscode的code-server支持https

First Post:

Last Update:

Word Count:
1k

Read Time:
3 min

没想到这玩意居然整了大半天XD(手不累,心累)

0x0 写在最前

vscodecode-server 是个好东西,部署起来方便,还能远程访问,但是加上 域名https 的buff后就很难受,网上基本没有相关文档。

0x1 环境信息

  • 一个code-server,版本号:1.63.0
  • 操作系统:Ubuntu 20.04.3 LTS
  • nginx版本:1.21.6
  • 域名使用cloudflare进行A记录解析到服务器IP地址

1x0 摸索过程

1x1 获取ssl证书

很麻烦,真的很麻烦

1x1.1 一开始是通过 Cloudflare

Cloudflare 其中有三种证书类型: 边缘证书客户端证书源服务器
其中 边缘证书 并不能下载,而且(貌似)只对采用了代理模式的DNS解析生效,并且代理状态下code-server的延迟表现十分惊人(亲测),直接pass。
客户端证书 中,官方已经写明:使用客户端证书保护和验证您的 API 和 Web 应用程序。 ,并不能部署到服务器上,继续pass。
最后一个 源服务器 ,官方也写明: 源证书仅对 Cloudflare 与源服务器之间的加密有效。 ,最后pass。
(什么你问我 自定义主机名 ?要付款的,拜拜了您嘞)

1x1.2 接下来通过腾讯云

在腾讯云的控制台,直接提交信息,不到一会就下来了。
但是使用过程中,在显示代码时状态还行(仅进行极小时间测试),一旦使用插件 Cloudmusic (强烈推荐此插件,写代码时听歌必备),就会出现断连情况,原因未知,所以也是pass。

1x1.3 直到看到了官方文档

code-server的有关设置的官方文档,看的我一愣一愣的,直接大大的 在脸上。
直到通篇下来整篇看完后,对于自己有用的也就一点。
其中端口转发是不可能的了,毕竟不想每次都要启动这玩意。
Let's Encrypt 中,Ubuntu 并不能直接 apt install,还要添加源仓库。
所以现在能用的就 nginx,经尝试,此路可通。

2x0 开始配置

注意:这里的 code-server 需要关闭 cert 认证,使用默认配置即可
根据官方文档介绍,在配置时需要以下几步。

  1. 此选项要求将远程计算机暴露在互联网上。确保您的实例允许 HTTP/HTTPS 流量。
  2. 您需要一个域名(如果您没有域名,可以从 Google Domains 或您选择的域名服务购买一个域名))。拥有域名后,将 A 记录添加到包含实例 IP 地址的域中。
  3. 安装 NGINX
    1
    2
    sudo apt update
    sudo apt install -y nginx certbot python3-certbot-nginx

    注:这里的官方文档中,需要安装 nginx ( python3-certbot-nginx 也需要 nginx 支持)。如果服务器的 nginx 是编译安装(比如这里:配置一个好用的nginx),通过将编译后的 objs/nginx 文件替换掉 /usr/sbin/nginx 的方式,经过尝试是可行的。

  1. 使用 sudo 对以下配置进行更新: /etc/nginx/sites-available/code-server

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    server {
    listen 80;
    listen [::]:80;
    server_name mydomain.com;

    location / {
    proxy_pass http://localhost:8080/;
    proxy_set_header Host $host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection upgrade;
    proxy_set_header Accept-Encoding gzip;
    }
    }

    请务必将 mydomain.com 替换为您的域名。

    注:经尝试,只要是被 nginx 引用的文件(包括 include ),都是可以进行配置的。但其中的 mydomain.com 必须和下方一致(推测是检查关键字后对文件进行修改)。

  2. 启用配置:

    1
    2
    sudo ln -s ../sites-available/code-server /etc/nginx/sites-enabled/code-server
    sudo certbot --non-interactive --redirect --agree-tos --nginx -d mydomain.com -m me@example.com

    请务必替换为您的实际电子邮件 me@example.com

此时,您应该能够通过https://mydomain.com访问 code-server

2x0 结语

code-server 的配置记录可能以后会发布。
code-server 确实好用。
code-server 的插件有的并不能适配。
Cloudflare 的国内延迟确实拉跨。
配置下来耗费的时间确实挺长(大概一整天),主要是查文档~和摸鱼~ 。
如果有错的及时通知。
完了。

reward
支付宝 | Alipay
微信 | Wechat