安装 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。