跑在浏览器的 vscode | code-server

源代码地址: https://github.com/cdr/code-server

docker 安装

基于 Docker 安装, 更多安装方式详见 https://github.com/cdr/code-server/blob/v3.8.0/doc/install.md

拉取镜像

docker pull codercom/code-server:latest

启动

# This will start a code-server container and expose it at http://127.0.0.1:8080.
# It will also mount your current directory into the container as `/home/coder/project`
# and forward your UID/GID so that all file system operations occur as your user outside
# the container.
#
# Your $HOME/.config is mounted at $HOME/.config within the container to ensure you can
# easily access/modify your code-server config in $HOME/.config/code-server/config.json
# outside the container.
mkdir -p ~/.config
docker run -it --name code-server -p 50191:8080 \
  -v "$HOME/.config:/home/coder/.config" \
  -v "/storage/g/app/coder:/home/coder/project" \
  -e PASSWORD=password \
  -u "$(id -u):$(id -g)" \
  codercom/code-server:latest

打开 http://127.0.0.1:8080 就可看到了. 密码: password

本地安装

Ubuntu 20.04, 参考 https://github.com/cdr/code-server/blob/v3.8.0/doc/install.md

下载安装

curl -fOL https://github.com/cdr/code-server/releases/download/v3.8.0/code-server_3.8.0_amd64.deb
sudo dpkg -i code-server_3.8.0_amd64.deb
sudo systemctl enable --now code-server@$USER

运维

命令已集成到 systemd 中. 通过 systemd 管理

root@jansora:~/storage/app/coder# systemctl status code-server@root.service 
● code-server@root.service - code-server
     Loaded: loaded (/lib/systemd/system/code-server@.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-12-25 22:48:38 CST; 43s ago
   Main PID: 140805 (node)
      Tasks: 22 (limit: 8829)
     Memory: 48.5M
     CGroup: /system.slice/system-code\x2dserver.slice/code-server@root.service
             ├─140805 /usr/lib/code-server/lib/node /usr/lib/code-server
             └─140866 /usr/lib/code-server/lib/node /usr/lib/code-server

Dec 25 22:48:38 jansora systemd[1]: Starting code-server...
Dec 25 22:48:38 jansora systemd[1]: Started code-server.
Dec 25 22:48:38 jansora code-server[140805]: [2020-12-25T14:48:38.765Z] info  Wrote default config file to ~/.config/code-server/config.yaml
Dec 25 22:48:39 jansora code-server[140805]: [2020-12-25T14:48:39.109Z] info  code-server 3.8.0 c4610f7829701aadb045d450013b84491c30580d
Dec 25 22:48:39 jansora code-server[140805]: [2020-12-25T14:48:39.110Z] info  Using user-data-dir ~/.local/share/code-server
Dec 25 22:48:39 jansora code-server[140805]: [2020-12-25T14:48:39.124Z] info  Using config file ~/.config/code-server/config.yaml
Dec 25 22:48:39 jansora code-server[140805]: [2020-12-25T14:48:39.124Z] info  HTTP server listening on http://127.0.0.1:8080
Dec 25 22:48:39 jansora code-server[140805]: [2020-12-25T14:48:39.124Z] info    - Authentication is enabled
Dec 25 22:48:39 jansora code-server[140805]: [2020-12-25T14:48:39.124Z] info      - Using password from ~/.config/code-server/config.yaml
Dec 25 22:48:39 jansora code-server[140805]: [2020-12-25T14:48:39.124Z] info    - Not serving HTTPS

MAC 安装

brew install code-server

==> Caveats
==> code-server
The launchd service runs on http://127.0.0.1:8080. Logs are located at /usr/local/var/log/code-server.log.

To start code-server:
  brew services start code-server
Or, if you don't want/need a background service you can just run:
  /usr/local/opt/code-server/bin/code-server
==> mongodb-community
To have launchd start mongodb/brew/mongodb-community now and restart at login:
  brew services start mongodb/brew/mongodb-community
Or, if you don't want/need a background service you can just run:
  mongod --config /usr/local/etc/mongod.conf

Brew release has been installed.

Run with:
  code-server

配置

配置文件位于 ~/.config/code-server/config.yaml

bind-addr: 127.0.0.1:8080
auth: password
password: mewkmdasosafuio3422 # This is randomly generated for each config.yaml
cert: false

集成到 nginx 并启用 https

请自行修改 端口号, https 证书, 自定义域名

vs.conf

upstream vs {
    server 127.0.0.1:8080;
}


server {
    listen 443 ssl;
    server_name sub.example.com;
    ssl_ciphers    ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols    TLSv1 TLSv1.1 TLSv1.2;
    ssl_certificate     /etc/nginx/certs/lets-encrypt/sub.example.com.cer;
    ssl_certificate_key /etc/nginx/certs/lets-encrypt/sub.example.com.key;

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

server {
    listen 80;
    server_name sub.example.com;
    return https://sub.example.com$request_uri ;
}

常见疑问

https://github.com/cdr/code-server/blob/v3.8.0/doc/FAQ.md#docker-in-code-server-container

评论栏