Ubuntu安装code-server
在docker里面试用了一下code-server以后,发现实在的确是太好用了,于是就改在机器上直接跑了。安装code-server很简单:
先从 github relaese 页面下载最新版本,然后解压到本地目录。
这里我就解压放在了 [~/code-server] 下面。然后随便启动一下看看有什么问题:
PASSWORD="password" ~/code-server/code-server --bind-addr 127.0.0.1:8080
如果是远程机器,最好可以用ssh反代端口: ssh -L 8080:8080 remote_addr 。如果是本地机器,就啥也不用做。
然后打开 http://localhost:8080 就会有:
然后注意到了地址栏的右侧有个⊕
点击一下然后点安装:
于是就得到了一个全屏的 vs-code

设置系统服务,code-server开机自启
在系统服务里面添加一个新的服务文件,这里叫它~code-server.service~
sudo vi /lib/systemd/system/code-server.service
然后修改添加以下内容到文件里面:
[Unit]
Description=code-server
[Service]
User=user
Group=group
Type=simple
Environment=PASSWORD=password
ExecStart=$h/code-server --user-data-dir $h/.local/share/code-server --bind-addr 127.0.0.1:8080
Restart=always
[Install]
WantedBy=multi-user.target
主要的配置在 [Service] 下。具体配置可以看文档systemd.service。这里说明下用到的选项和选项里面的内容:
- User 和 Group: 配置为自己想要的用户和组,不设置的话会以root用户执行。
- Type: simple,系统会简单地运行你提供的命令。
- Environment: 环境变量,PASSWORD=password,记得将'password'换成你自己想要用的密码
- ExecStart:
$h是用户的home文件夹。--user-data-dir作为code-server保存配置的文件夹,默认的目录是$HOME/.local/share/code-server/--bind-addr绑定地址
- Restart: always, 无论exit code或者signal是怎么样的,只要退出了都会重启。
保存好文件以后,可以用下面的命令启动:
sudo systemctl start code-server
然后查看状态:
sudo systemctl status code-server
运行命令以后会得到类似这样的输出:
● code-server.service - code-server
Loaded: loaded (/lib/systemd/system/code-server.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-05-16 11:27:08 PDT; 13h ago
Main PID: 46045 (node)
Tasks: 169 (limit: 77023)
Memory: 1.5G
CGroup: /system.slice/code-server.service
├─ 46045 /home/code-server/node /home/code-server/out/node/entry.js --user-data-dir /home/.local/share/code-server --bind-addr 127.0.0.1:8080
├─ 46072 /home/code-server/node /home/code-server/out/node/entry.js --user-data-dir /home/.local/share/code-server --bind-addr 127.0.0.1:8080
├─ 46087 /home/code-server/node /home/code-server/lib/vscode/out/vs/server/fork
├─116898 /home/code-server/node /home/code-server/lib/vscode/out/bootstrap-fork --type=watcherService
├─116941 /home/code-server/node /home/code-server/lib/vscode/out/bootstrap-fork --type=extensionHost
├─117028 /home/code-server/node /home/.local/share/code-server/extensions/streetsidesoftware.code-spell-checker-1.8.0/server/server.js --node-ipc --clientProcessId=116941
├─117077 /home/go/bin/gopls -mode=stdio
├─117308 /home/code-server/node /home/code-server/lib/vscode/out/bootstrap-fork --type=watcherService
├─117321 /home/code-server/node /home/code-server/lib/vscode/out/bootstrap-fork --type=extensionHost
├─117376 /home/code-server/node /home/.local/share/code-server/extensions/streetsidesoftware.code-spell-checker-1.8.0/server/server.js --node-ipc --clientProcessId=117321
├─117442 /home/go/bin/gopls -mode=stdio
├─118082 /home/code-server/node /home/code-server/lib/vscode/out/bootstrap-fork --type=watcherService
└─118094 /home/code-server/node /home/code-server/lib/vscode/out/bootstrap-fork --type=extensionHost
May 16 11:27:08 workstation systemd[1]: Started code-server.
May 16 11:27:08 workstation code-server[46072]: info code-server 3.2.0 fd36a99a4c78669970ebc4eb05768293b657716f
May 16 11:27:08 workstation code-server[46072]: info HTTP server listening on http://127.0.0.1:8080
May 16 11:27:08 workstation code-server[46072]: info - Using custom password for authentication
May 16 11:27:08 workstation code-server[46072]: info - Not serving HTTPS
May 16 11:27:08 workstation code-server[46072]: info Automatic updates are enabled
如果看上去没有什么错误的话,可以enable,这样每次开机,系统就会自动的运行code-server
sudo systemctl enable code-server
配置Nginx反代
通过https将code-server服务安全地暴露在外网。
首先,先创建一个新的域名指向服务端,比如,code-server.yicheng.ren。
然后参考我建站的nginx配置:hello-world。在vhost下添加一个新的配置文件:
server {
listen 443 ssl http2;
server_name code-server.yicheng.ren;
ssl_certificate /ssl/yicheng.ren/fullchain.cer;
ssl_certificate_key /ssl/yicheng.ren/yicheng.ren.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
ssl_session_cache builtin:1000 shared:SSL:10m;
location / {
proxy_pass http://localhost:8080/;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
}
access_log /home/wwwlogs/access.log;
}
这里只定义了监听443端口的HTTPS,在nginx.conf里面已经定义了将所有HTTP流量通过301转发重定向到了HTTPS,确保无论怎么访问都会落在HTTPS端口上。保存重启nginx,访问你的域名,就可以在任何地方打开vs-code啦。比如,在ipad上:
妙控键盘还没到手…到时候就可以用ipad写代码了。