安装 code-server
  
    
  
使用 docker-compose 安装:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
  | 
services:
    code-server:
        stdin_open: true
        tty: true
        container_name: code-server
        ports:
            - 8079:8080
        volumes:
            - ./local:/home/coder/.local
            - ./config:/home/coder/.config
            - ./project:/home/coder/project
            - ./.ssh:/home/coder/.ssh
            - ./.gitconfig:/home/coder/.gitconfig
        user: "1000:1000"
        environment:
            - DOCKER_USER=$USER
        image: codercom/code-server:latest
        #image: code-server:hugo-git-rsync
        restart: always
  | 
 
由于我们要使用 Git 和 SSH,为了防止重启 docker 后两者的配置消失,我们将 .ssh 目录和 .gitconfig 文件挂载到本地。
安装证书
  
    
  
在 code-server 中,如果不开启 HTTPS 访问,无法正常加载 Webview,此时 Markdown 无法正常被渲染。此外,由于我们使用 IP 访问,也无法用常用的 Let’s Encrypt 进行证书申请。
生成并安装证书
  
    
  
我们先安装 mkcert:
1
2
3
  | 
wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-linux-amd64
chmod +x mkcert
mv mkcert /usr/local/bin/
  | 
 
使用 mkcert 生成证书并安装本地 CA:
1
2
  | 
mkcert <YOUR-IP> 127.0.0.1 -
mkcert -install
  | 
 
此时会在当前目录下生成证书 <YOUR-IP>+2.pem 和 key <YOUR-IP>+2-key.pem。如果要通过外部浏览器访问,需要将 mkcert 的 CA 证书安装到访问的主机上。先查看证书位置:
进入对应文件夹,找到 rootCA.pem 文件,将其后缀修改为 .crt。在 Win11 上双击即可安装。安装时,选择受信任的根证书颁发机构。
修改 code-server 配置
  
    
  
修改 code-server 的配置文件 config/code-server/config.yaml:
1
2
3
4
5
6
  | 
bind-addr: 0.0.0.0:8079
auth: password
password: YOUR-PASSWORD
#cert: true
cert: /home/coder/.config/code-server/<YOUR-IP>+2.pem
cert-key: /home/coder/.config/code-server/<YOUR-IP>+2-key.pem
  | 
 
启动 code-server 即可通过本机 HTTPS 访问。
修改 nginx 配置
  
    
  
为了能从外部访问 code-server,我们需要修改 /etc/nginx/nginx.conf,加入:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  | 
server {
    listen 8078 ssl;
    server_name <YOUR-IP>;
    charset utf-8;
    ssl_certificate <PATH-TO-.pem>;
    ssl_certificate_key <PATH-TO-key.pem>;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    location / {
        proxy_pass https://<YOUR-IP>:<YOUR-PORT>;
        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
  | 
 
此时,重启浏览器和 nginx 服务即可在外部使用 HTTPS 访问 code-server。