Code-Server 是一个可以在远程服务器上运行 VS Code 的工具。拥有与 VS Code 完全相同的界面和使用方法。
将其部署在远程服务器上,就可以通过 Edge、Chrome 等浏览器在任何设备(PC,iPad,Phone)上运用完全一致的环境进行写作与开发,一切计算都在服务器上进行,不用考虑终端设备的性能。
下载
在Releases页面找到符合服务器 CPU 架构的 tar.gz 软件包下载并上传到远程服务器(也可以直接在服务器上使用 wget 等工具直接下载)。
然后解压 tar -fx code-server-版本-架构.tar.gz
将解压出的文件夹改个简单的名字 mv code-server-版本-架构 code-server
部署
创建 /etc/systemd/system/code-server.service 文件,内容如下:
[Unit]
Description=code servier
After=network.target
[Service]
Type=simple
User=启动code-server的用户
Restart=on-failure
RestartSec=20s
Environment=PASSWORD="你设定的访问密码"
ExecStart=/code-server的解压路径/bin/code-server --cert 公钥路径 --cert-key 私钥路径 --bind-addr 0.0.0.0:端口
ExecReload=/code-server的解压路径/bin/code-server --cert 公钥路径 --cert-key 私钥路径 --bind-addr 0.0.0.0:端口
[Install]
WantedBy=multi-user.target
这里有几点需要注意:
- "启动code-server的用户" 尽量用当前 SSH 登陆系统所使用的用户,并要保证程序所在目录和公、私钥所在目录可以被访问。
- 设置公、私钥是为了设置 SSL 可以被 HTTPS 访问,不然有些功能不可用。
- "端口" 的设置可以任意,但不要与服务器已有服务冲突。
- "访问密码" 要牢记!
运行控制
# 设置开机启动
sudo systemctl enable code-server
# 关闭开机启动
sudo systemctl disable code-server
# 启动服务
sudo systemctl start code-server
# 停止服务
sudo systemctl stop code-server
# 重启服务
sudo systemctl restart code-server
# 查看服务状态
sudo systemctl status code-server
Nginx 反向代理
upstream code_server_oss {
server 127.0.0.1:端口 weight=1;
}
server {
listen 80;
server_name 域名;
server_tokens off;
location / {
proxy_pass https://code_server_oss;
proxy_read_timeout 1200s;
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}
}
server {
listen 443 ssl;
server_name 域名;
ssl_certificate 公钥路径; # path to your cacert.pem
ssl_certificate_key 私钥路径; # path to your privkey.pem
# Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
#ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem; # 为了更安全可以打开
# secure settings (A+ at SSL Labs ssltest at time of writing)
# see https://wiki.mozilla.org/Security/Server_Side_TLS#Nginx
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-SEED-SHA:DHE-RSA-CAMELLIA128-SHA:HIGH:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS';
server_tokens off;
location / {
proxy_pass https://code_server_oss;
proxy_read_timeout 1200s;
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}
}
之后,就可以在浏览器中使用 域名 来访问 code-server 了,而不用管前面配置文件中设置的端口。