『折腾』如何在iPad上优雅地怼代码

Last updated on June 30, 2024 pm

前言

  插头DP的坑等初赛之后再填把。

正文

  有时候出门只带了iPad。怎么办?直接打开App Store搜索C++然后下载。不行,这样不够优雅。那怎么办?于是我虎视眈眈地瞅着角落里的safari…

准备工具

  浏览器又没有g++,所以我们肯定需要准备一台远程计算机(算了就是服务器),装上g++,其实这样就可以直接干活了。但是很明显,直接在SSH上编译依然不是很优雅,所以还需要一点东西。   所以,这个东西就是code-server,一个在浏览器里面运行的VScode,最后的效果长这样:   这才是优雅!

部署code-server

  去github页面下载code-server,Debian/Ubuntu系下载deb,CentOS/RHEL系下载rpm(这都不用我来教吧) :evil: https://github.com/cdr/code-server/releases 若有同学因网络问题打不开github,这里直接放出截止2021.9.19的最新版本code-server的下载直联,直接到服务器离线下载即可: [mdx_table header=”true”] 系统 下载地址 —– Debian/Ubuntu https://github.com/cdr/code-server/releases/download/v3.12.0/code-server\_3.12.0\_amd64.deb —– CentOS/RHEL https://github.com/cdr/code-server/releases/download/v3.12.0/code-server-3.12.0-amd64.rpm [/mdx_table]

  安装完之后,直接在终端输入code-server,然后会输出这些信息:

1
2
3
4
5
6
7
8
[2021-09-19T15:01:34.457Z] info  Wrote default config file to ~/.config/code-server/config.yaml
[2021-09-19T15:01:34.976Z] info code-server 3.12.0 b37ff28a0a582aee84a8f961755d0cb40a4081db
[2021-09-19T15:01:34.978Z] info Using user-data-dir ~/.local/share/code-server
[2021-09-19T15:01:35.011Z] info Using config file ~/.config/code-server/config.yaml
[2021-09-19T15:01:35.011Z] info HTTP server listening on http://127.0.0.1:8080
[2021-09-19T15:01:35.011Z] info - Authentication is enabled
[2021-09-19T15:01:35.011Z] info - Using password from ~/.config/code-server/config.yaml
[2021-09-19T15:01:35.011Z] info - Not serving HTTPS

这时,我们ctrl+c退出程序,进入~/.config/code-server,编辑里面的config.yaml,默认状态应该是这样子的:

1
2
3
4
bind-addr: 127.0.0.1:8080
auth: password
password: 9f77cba7aab939cccfb31d7c
cert: false

如果你是个人使用的话,就可以把密码给改了。若想公开使用,那么我会在下面告诉你如何做好安全工作。   如果你只是在内网进行使用,并不需要反向代理来实现HTTPS,那么你应该把bind-addr: 127.0.0.1:8080改成bind-addr: 0.0.0.0:8080。当然,8080端口也可以改掉。如果需要反向代理,那么就只改端口或干脆不动。   最后,在终端输入code-server,浏览器输入对应域名或IP,就可以干活啦!

HTTPS

  本人强迫症,没有SSL,看到网址后面带上端口号就不高兴。 :cry: 所以带上HTTPS是必不可少的。   老样子,打开宝塔,新建网站,挂上SSL,挂好反向代理,我是这样填的:   如果你此时打开你的反向代理网站,那么恭喜你,你将看到一片空白。。。其实第一次部署code-server的时候我就是这个地方卡了好久,在不知道过了多长时间之后,我在部署sshwifty的时候看到websocket连接失败的现象,才想到可能code-server的反向代理网页没有和后台websocket服务进行连接,画面当然是空白了!   解决办法也很简单,在宝塔反向代理中点击配置文件 然后在两句proxy_set_header REMOTE-HOST $remote_addr;的后面加上这两行东西:

1
2
proxy_set_header Upgrade $http_upgrade; 
proxy_set_header Connection $connection_upgrade;

如这是我原来的配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#PROXY-START/
location ~* \.(gifpngjpgcssjswoffwoff2)$
{
proxy_pass http://127.0.0.1:2021;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
expires 12h;
}
location /
{
proxy_pass http://127.0.0.1:2021;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;

add_header X-Cache $upstream_cache_status;

#Set Nginx Cache

add_header Cache-Control no-cache;
}

加上之后就变成了这样子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#PROXY-START/
location ~* \.(gifpngjpgcssjswoffwoff2)$
{
proxy_pass http://127.0.0.1:2021;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
expires 12h;
}
location /
{
proxy_pass http://127.0.0.1:2021;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;

add_header X-Cache $upstream_cache_status;

#Set Nginx Cache

add_header Cache-Control no-cache;
}

然后,清理浏览器缓存,再次打开反代网站的时候就可以正常显示了。

公开

  要想公开,安全肯定是第一位的。因为在code-server当中,我们可以直接调用bash,所以用root账号运行肯定是不安全的。   所以,我们要新建一个账号,然后用新建的账号来运行code-server,这样在调用bash的时候就没有root权限了。   要注意的是,使用新账号运行code-sevrer的时候,配置文件要记得重新修改啊!

后台运行

  我在cloudreve这篇文章中说过一个插件叫supervisor。通过宝塔的supervisor,我们可以很方便地运行后台任务,比nohup要强上许多。   建议同学们在运行code-server的时候还是新建一个非root账号,这样万一打rm的时候手滑也没有很大损失。   我是这么配置的,新用户名为code:

结束

  经过上面一番折腾之后,我们终于可以在iPad上优雅地撸代码了。不过这里说一句,我们购买的服务器普遍配置不是很高,比如我这一台就是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
                         ./+o+-       root@Stephen-US-Server
yyyyy- -yyyyyy+ OS: Ubuntu 20.04 focal
://+//////-yyyyyyo Kernel: x86_64 Linux 5.4.0-84-generic
.++ .:/++++++/-.+sss/` Uptime: 103d 4h 51m
.:++o: /++++++++/:--:/- Packages: 967
o:+o+:++.`..```.-/oo+++++/ Shell: bash 5.0.17
.:+o:+o/. `+sssoo+/ Disk: **G / **G (**%)
.++/+:+oo+o:` /sssooo. CPU: Intel Xeon E5-2697 v2 @ 2.7GHz
/+++//+:`oo+o /::--:. GPU: Cirrus Logic GD 5446
\+/+o+++`o++o ++////. RAM: ***MiB / ***MiB
.++.o+++oo+:` /dddhhh.
.+.o+oo:. `oddhhhh+
\+.++o+o``-````.:ohdhhhhh+
`:o+++ `ohhhhhhhhyo++os:
.o:`.syhhhhhhh/.oo++o`
/osyyyyyyo++ooo+++/
````` +oo+++o\:
`oo++.

还是单核的。这注定在编译的时候速度会非常非常慢。所以,应急可以,但是当主力机就憋想了!


『折腾』如何在iPad上优雅地怼代码
https://www.qwqwq.com.cn/hello/code-server/
Author
Stephen Zeng
Posted on
September 19, 2021
Licensed under