最近以搞到了一个 4 核 8G 内存的服务器，于是测试了一些之前在 2 核 2G 内存的服务器想尝试但是没有多余的内存的一些自托管应用。Code-server介绍Code Server 是一个自托管的在线 IDE，其实就是把 VSCode 变为了自托管，使得用户可以在线编写代码。使用感受Code-server 大概占用不到 1G 的内存，但是如果安装过多的插件或者编译重型项目那有可能会占用更多。如果服务器的网络延迟比较高，或者服务器带宽比较低，在加载文件和新建文件和使用命令行的时候会比较卡，或者加载时间较长，所以如果只是自己用，那么推荐用本地的 VSCode 或者用 Tailscale 来建立 P2P 连接，这样能显著降低延迟。至于其他感受，主要是需要自己设置 CodeServer 插件市场的源，不然由于预装的源和 VSCode 不一样，导致一些插件有可能缺失。其他编写代码的感受和本地的 VSCode 差不多。OpenList（原 Alist）注：由于原本的 Alist 貌似被收购了，所以有开发者在原来的 Alist 基础上继续开发 OpenList。介绍OpenList 是一个云盘自托管项目，其有着界面美观，能挂载各种网盘到本地的特点。使用感受确实是一个很好的项目，能把其他网盘比如说百度网盘或者阿里网盘挂在在本地，很方便，而且界面也确实很美观。Stirling PDF介绍一个 PDF 工具箱，可以方便免费的编辑 PDF 和使用其他 PDF 工具箱。个人感受界面很有现代的风格，其解析和编辑 PDF 的方法我猜测是先转换为 JSON，然后再识别原本的排版，最后再把编辑的按原本的排版渲染回去，我的说法有可能不对，因为我不了解。这个工具箱确实能解决很多时候想加水印等但是需要付费的软件或者需要上传到第三方网站。KaraKeep介绍一个稍后阅读的自托管应用，界面美观。其快照的主要原理在开了一个轻量级的 Chrome 专门用来渲染页面然后截图，效果和普通的获取截图的相比效果尤其的好。使用感受我测试了多个平台，包括但不限于微信公众号，少数派，某个 Wordpress 博客。在微信公众号的文章爬取中，这个无法正确显示图片，初步分析是因为其在显示的时候需要把 data-src 正确解析为 src，而且还要加上 Referer。这一点做的不如 Wallabag。少数派的文章中这个爬取的比 Wallabag 效果好，至少大部分图片能正常显示，但是对代码的渲染不够好。对于 Wordpress 博客，Wallabag 和这个的效果差不多，但是Wallabag 的页面美观程度远比不上这个。Wallabag介绍同上，但是页面美观度不如上面，但是时间更久远。使用感受和上一个差不多吧，只不过颜值确实不如。。。。Freshrss介绍功能强大的 RSS 阅读软件，也是自托管的，但是颜值就一般了。使用感受还可以，能用，但是颜值方面比不上一些本地的阅读软件。Linkding介绍一个自托管的书签管理应用，可以一键从各大浏览器导入。使用感受颜值方面是很不错的，而且其搜索功能也很强大，UI 交互上还算挺好的（相比起前面所说的部分应用）。总结我大概就安装了这些，算上 Nginx，Mysql 8，PHP 和各种其他东西内存大概占了 4GB，对我来说很富裕。
初识服务器我第一次接触到服务器，是从一个朋友想搞一个网站想把我拉过去一起搞，开始的。 那时候，是我第一次迈进捣鼓博客这个大门。我以前虽然从一些做服务器的朋友哪里听过一些关于服务器的事情，我对服务器的第一印象就是笨重价格超级贵噪声很大耗电量极多等等负面影响，觉得买一个服务器不是我能想象的。 但是从那次，我才知道了一个叫云服务器的概念。 我那个朋友想买的是一个阿里云的服务器，一年两百多，还行。我也是从那个时候萌生了一个拥有自己的服务器的想法。 后来，我决定买腾讯云的服务器（不知道什么原因），2 核 2 GB 内存，还有一个 4M 的带宽和 50 GB 的数据盘。 我后来换到了慈云的服务器，腾讯云的服务器闲置了一段时间。 我的巅峰时期，为了测试一些服务器的性能，我甚至有 5 个自己的服务器。博客我最开始知道有博客这个东西后觉得很好奇，试了各种各样的博客软件，比如说 Gridea，Hexo，OIer Space（已经没了）和免费的 Wordpress 在线托管。我最开始，听说了一个叫 Wordpress 的博客程序，但是由于我当时处于一些原因，想白嫖，于是开始在网上寻找如何保票在线 wordpress。 有一次，我搜索到了一个叫 ProFreeHost 的网站，提供免费主机。我当时很开心，又从 Freenom 白嫖了一个免费的 ml 域名，开始了第一个博客。 当时我很兴奋，疯狂地添加各种花里胡哨的动画，但是文章却完全没有有用的东西。说来惭愧，我当时估计还不知道什么是博客。我当时甚至开放了注册，让其他人来注册。 兴奋之后，迎来的是冷漠。我渐渐的觉得这个不好玩了，而且没时间，就抛弃了一段时间。从这以后，有相当一段时间的空缺。这段时间，我尝试了 Gridea，一个也是用 Github Page 托管的博客，但是是有图形化客户端程序的。 我当时也用了一段时间，写了几篇文章。而且还好数据是在本地储存的，所以很多数据现在都还在。 也是从那时候，我决定了以后不管博客的数据是在本地还是在服务器上面，都要自己在线下有一个文件夹储存。再然后，我买了第一个服务器，当时还是部署了 Wordpress，还是用了 Argon 主题，但是特效，却不如之前那么多了，而且内容，比之前充盈了。但是渐渐的，这个博客，也荒废了，由于学习和生活压力，我没有精力去继续更新了。我后来偶然间访问了一次，发现访问不了了，而且由于我在买这个服务器后在服务器上捣鼓了很多东西，服务器的硬盘空间竟然全满了。我当时直接放弃了。 在这个时候，我买了一个我自己的域名 ztrztr.top，备案，开始了一段我自己博客 “top” 的时期。到了那一年过年，我突然想起了服务器这回事，决定重新来，买一个新的服务器，定时备份，把之前的博客的一些文章放上去，删除了很多没必要的东西，关闭了用户注册，给服务器安装了一点防护，重新开张了。 这个博客，也就是我现在的这个。接下来的计划过几天写一个 《Canvas 在用户点击的位置绘画点》，是自己写完一个小网站后的一些总结。到时候要处理一下服务器的事情，准备重装一下系统。这个服务器需要按正常价格续费的时候我就打算切换到阿里云的了，阿里云也有 99 计划，而且看起来不错。 如果在以后，我有可能会回归静态博客，但是也有可能我当时有钱了，可以支付起来慈云的一年 400 的服务器，也说不定。
2024-8-24 服务器故障记录事故概括资源使用率自 2024-8-24 14:43:00 出现极大幅度的异常，资源使用率瞬间升值 100%，持续无下降至 2024-8-24 20:11，在采取措施后，资源使用率瞬间降至 20%，也就是正常业务水平。负载从 14:43:00 开始升高，瞬间达到 90，然后维持在 90 \~ 50，正常负载为 0.2。CPU 使用率从 14:43:00 瞬间攀升到 100%，然后基本上维持在这个程度，只有在重启服务器后的短暂的一分钟会下降，同样持续到 2024-8-24 20:11。内存从同样的时间开始出现从 90% 到 20% 的大幅度持续波动，同样时间结束。磁盘 IO 远远高于正常水平，从原来的 100 KB/s 攀升至 328.6 MB/s 左右的程。网络 IO 正常。 经过下午四点半，我在机房准备看看我的博客的时候发现竟然访问超时。我打开邮箱，发现腾讯云和 Uptimerobot 都给我发送邮件，显示网站异常，其中腾讯云的监控是直接监控源站的。我登录了雷池 WAF 后台，发现访问正常，也就排除了 WAF 的问题。我登录了 CDN 后台，也没有发现大流量的 DDOS / CC，那么也排除了攻击的问题。我尝试登录服务器，发现完全登录不上，于是登录腾讯云的控制台进行重启。重启后，发现服务器没过多久恢复原样，说明故障的进程是开机自启动的。没办法，ssh 连接不上，我就直接找了腾讯云的客服。在经过必要的授权后，我直接把服务器的问题交给腾讯云客服的专业人员去调试了，我就先做其他事情了。过了大约几十分钟，我查看的时候发现腾讯云客服已经回复了，说找到了故障进程，而且帮助我杀掉了。我打开业务一看，确实好了，原来是通过 VNC 登录，找到问题然后 kill 掉了。原来是 Hfish 蜜罐的锅。给腾讯云的客服和专业人员点赞。‍反思如果下次遇到这种情况可以通过 VNC 登录，因为 VNC 登录不需要网络连接。‍总结这一次的故障从 2024-8- 24 14:43:00 开始，所有指标除了网络 IO 都显示极其大的变化，持续到 2024-8-24 20:11。主要故障程序：Hfish。故障原因未知。已停止故障程序并且恢复所有业务。‍‍
起因昨天我写好了一篇文章，准备发布，但是发现网站访问异常的慢，于是上 itdog 慢速测试了一遍，发现全红。于是我尝试去找客服，客服说我没有把域名解析到 cdn，但是我在 cf 上解析了，于是我开始排查原因。过程我先登录了 cf 控制台，查看了 dns 记录，发现没问题。我自己在本地电脑上又 ping 了一遍，ping 出的 ip 是 cdn 的，但是我突然想到我 ping 其他 cname 记录的时候都会在命令行看见那个 cname 的地址，为什么唯独我的根域名没显示。顺着这个想，我想到了 cf 的根域名自动 cname 拉平，具体可以看后面。面对这种情况，有两种选择，一个是用 www 的子域名来做网站，因为 cloudflare 只拉平根域名。还有一种方法，也是我采用的，就是把域名 nameserver 切换回 dnspod，成功解决了第一个问题。但是第一步解决后网站访问还是很慢，我对每个源站进行测试，发现所有香港的服务器好像访问都超时了？？？由于时间紧迫，我直接关掉了所有不健康源站的回源，只留下了一个国内服务器的。但是这样会导致服务器资源不够了，于是我又买了一个华为云的北京的服务器，这样网站就快多了，而且又一定的负载能力了。CNAME 拉平由于 CNAME 跟任何记录都冲突的特性，在根域（@）下添加 CNAME 记录指向 CDN（或其他服务）会导致 mx（邮箱记录）、TXT（一些站长验证）、DS 等常用记录冲突等且多级 CNAME 会导致解析性能下降等问题，所有 cloudflare 在根域名上禁止使用了 cname，如果要添加 cname 记录，cf 会自动把记录拉平。cname 拉平，也就是 dns 服务商在他们的服务器上获取到 cname 的终点 ip，然后把 cname 记录改成这个 ip。这样子虽然对大部分场景是有好处的，但是如果是国内的 cdn + cloudflare 就会出现错误。因为 cloudflare 用来拉平的服务器是美国的服务器，所有在国内访问会发现 cdn 没有作用了，所有访问都只会访问一个 ip，那么这个 cdn 就成废物了。cloudflare 的很大的问题就是无法关闭根域名的 cname 拉平，导致如果用 cloudflare 的 dns 解析，而且要用 cdn 的业务在根域名上面，就必须用 cloudflare 的 cdn，这一点极其的坑。结果这次的主要原因是 cf 的 cname 拉平和香港服务器的问题。我到时候有空会重新看一下我的那几个香港的服务器出现了什么问题。实在不行就重装系统。
前言最近由于有人频繁攻击我的网站，我决定开启防火墙。宝塔有两种类型的防火墙，免费和付费的，我的网站只是一个小博客，所以免费版的就够用了。安装打开宝塔面板，点击左侧菜单上的：。搜索 nginx：，找到。点击安装，确认安装后就可以了。最后的结果： 进阶设置自定义拦截页面在插件设置里面点击全局配置。点击：就可以修改了。有可能的错误当遇到安装免费防火墙导致 nginx 无法启动的情况时，我们可以：卸载防火墙。卸载 nginx。重新编译安装 nginx。安装防火墙。执行完后，你就会发现网站恢复正常了。
密钥第一步，先从云服务器厂商的管理页面中添加 ssh 密钥，并下载。把下载好的密钥放在 C:\Users\\\.ssh，注意 \ 填写自己电脑的用户名。下载插件打开 VSCode，下载 Remote-SSH 插件。安装后打开：点击新建远程，输入 ssh <username>@<ip> -p <port>。其中 port 默认为 22，ip 为服务器公网 ip，username 为服务器登录用户名，一般填写 root。登录按 ctrl + Shift + P，输入 打开 SSH 配置文件，点击第一个，打开文件，找到你刚才创建的那个连接，在最后面添加一行 IdentityFile <path>，其中 path 是你下载的密钥的完整路径（C:\Users\\\.ssh\\<filename.pem>）。记得保存。最后在侧栏找到 Remote-SSH，找到你创建好的那个远程连接，连接就行了。有可能的错误如果提示无法写入管道，把 C:\Users\\\.ssh 目录下的 known_hosts 文件删除就行了