Building NAS and Installing Unraid

My Synology DS221j I bought in 2021 is outdated today. As Synology's most entry-level NAS, its performance today is barely able to support any applications beyond the Samba service, and it doesn't support Docker. Therefore, I decided to buy a new NAS. I had considered buying the Synology DS925+, but Synology's new 2025 models introduced a restriction that only allows the use of their own branded hard drives. So Synology was ruled out as an option. I also considered the UGREEN NAS and install a third-party OS. However, the UGREEN NASync DXP4800 Plus is priced at $699, and even with a Prime Day discount, it's still $519, which isn't a great value. After some research, I decided to build a NAS myself. The post Building NAS and Installing Unraid appeared first on Frank's Weblog.

2025/8/8
articleCard.readMore

组装NAS及配置Unraid OS

我在2021年购买的群晖DS221j已经有些过时了,并且221j作为群晖最入门级的NAS,其性能在今天基本无法支持除了Samba服务之外的其他应用,而且它本身也不支持Docker。于是我准备更换一台新的NAS。 我本考虑购买群晖的DS925+,然而群晖在2025年新品中加入了仅支持群晖自家硬盘的限制,于是我直接排除了群晖的选项。我也考虑过购买绿联NAS并安装第三方系统,但是绿联UGREEN NASync DXP4800 Plus原价$699,即使是Prime Day打折也需要$519,性价比并不高。经过研究之后,我决定自己组装一台NAS。 The post 组装NAS及配置Unraid OS appeared first on Frank's Weblog.

2025/8/8
articleCard.readMore

Complete Guide for Automotive Paint at Home with Spray Can

I repainted the fender on my Miata. The outcome was great, but there were all kinds of problems throughout the process. There are all kinds of automotive paints on the market, the marketing strategies of the manufacturers make it even more complicated. Beginners can easily get confused and choose the wrong product or the wrong method of application. Furthermore, unlike mechanical repairs, painting doesn't have a strict procedure to follow, each tutorial on the web has it's own style. The material, the application process, and even environment can make the outcome drastically different. In this article, I will use the fender on my Miata as an example, to illustrate the basics of paint, the different types of paint, application process and common problems. This article will focus on using aerosol cans and common household tools to achieve the best results possible. Professional application and equipments are not in the scope of this article. This article is based on my personal research and experience, and is not a professional tutorial, the content may be mistaken. When using paint product with toxic contents, please use proper personal protective equipment (PPE) and follow the guidelines of recycling and disposal. The post Complete Guide for Automotive Paint at Home with Spray Can appeared first on Frank's Weblog.

2025/8/2
articleCard.readMore

使用喷漆罐实现最佳DIY汽车喷漆效果的完整指南

我重新喷涂了我的Miata上的一块翼子板。最终的效果非常不错,但期间遇到了不少问题。 市面上有各种类型和品牌的油漆可供选择,再加上厂商的市场营销策略,让类目更加纷繁复杂。这让新手很容易迷失,造成选用了错误的产品或错误的施工方式。另外,喷漆不像修理机械那样有严格的步骤和流程可供参考,网络上的教程都有自己的风格和习惯。选用的材料,施工工艺,甚至环境都会造成结果的不同。 本文中我将以我的Miata的前翼子板为例,来讲述汽车油漆的基础知识,油漆的分类和选择,施工过程,以及常见问题。本文会集中在使用喷漆罐(Aerosol)和家用工具和来实现尽可能好的效果。专业设备和材料不在本文的讨论范围内。 本文是基于个人经验的总结,而非专业教学,内容可能会存在错误。在使用含有有毒有害物质的涂料时,请注意个人保护以及遵循适当的废弃或回收流程。 The post 使用喷漆罐实现最佳DIY汽车喷漆效果的完整指南 appeared first on Frank's Weblog.

2025/8/2
articleCard.readMore

Deploy Containers with Cloudflare Containers

Today, Cloudflare announced Cloudflare Containers: a serverless container runtime in Cloudflare Workers. I will use httpbin as an example, to illustrate how to deploy a simple application to Cloudflare Containers. The post Deploy Containers with Cloudflare Containers appeared first on Frank's Weblog.

2025/6/25
articleCard.readMore

使用 Cloudflare Containers 部署容器应用

今天,Cloudflare 宣布推出 Cloudflare Containers:其在 Cloudflare Workers 中的无服务器容器运行时。我将以 httpbin 为例,说明如何将一个简单的应用程序部署到 Cloudflare Containers。 The post 使用 Cloudflare Containers 部署容器应用 appeared first on Frank's Weblog.

2025/6/25
articleCard.readMore

房车旅行:观看星舰发射

本文记录了2024年三月作者观看星舰第三次发射的经历。为了观看发射,他早早预定了KOA房车营地和拖挂房车。出发时遇到电路问题,途中经历了长途驾驶并在挤满游客的South Padre Island等待发射,尽管天气不佳,但整体体验良好。 The post 房车旅行:观看星舰发射 appeared first on Frank's Weblog.

2024/6/3
articleCard.readMore

电子邮件防伪:SPF, DKIM与DMARC

本文探讨了电子邮件伪造问题,介绍了解决方案SPF、DKIM和DMARC。文章通过实例和技术细节解释了这些防范电子邮件伪造的标准和技术。 The post 电子邮件防伪:SPF, DKIM与DMARC appeared first on Frank's Weblog.

2024/2/18
articleCard.readMore

Anti Email Spoofing: SPF, DKIM and DMARC

This post explains email spoofing, detailing DMARC, SPF, and DKIM protocols that help verify authorized sending servers and authenticate emails to prevent fraudulent activities. The post Anti Email Spoofing: SPF, DKIM and DMARC appeared first on Frank's Weblog.

2024/2/18
articleCard.readMore

Project Miata – 软顶更换及内饰修复

作者详细记录了对一台Miata进行软顶更换和内饰恢复的过程。工作包括更换破损的软顶,清洗座椅和地毯,修复生锈的座椅底盘和车体其他部分。作者遇到了许多挑战,如座椅金属部分的严重生锈和断裂的螺栓,但通过创造性的解决方案,成功恢复了车辆的内饰,使其焕然一新。 The post Project Miata – 软顶更换及内饰修复 appeared first on Frank's Weblog.

2024/2/17
articleCard.readMore

Project Miata – Soft Top Replacement & Interior Restoration

The author restored the interior of a Miata, initially aimed at cleaning and replacing the soft top, revealed extensive rust. This led to extra work, including seat pan restoration, carpet treatment, and trunk maintenance, showcasing the unpredictable yet rewarding journey of vintage car restoration. The post Project Miata – Soft Top Replacement & Interior Restoration appeared first on Frank's Weblog.

2024/2/17
articleCard.readMore

Project Miata – Shifter Rebuild

The author encountered a stiff shifter in his Miata and realized it required maintenance. He purchased a shifter rebuild kit and carried out a self-service, replacing rubber, bushings, and old fluids, and meticulously reassembled the shifter. The issue got resolved improving the vehicle's gear shifting performance. The post Project Miata – Shifter Rebuild appeared first on Frank's Weblog.

2023/12/11
articleCard.readMore

Project Miata – 换挡杆维护

这篇文章描述了作者对他的Miata换挡杆进行维护的经历。他发现换挡不顺畅,换挡把活动量大。为此,他购买了换挡杆重建套件和必要工具,如75W-90齿轮油和注射器。维护中发现换挡杆损坏严重,原厂垫圈碎裂。他更换了损坏的零件,重新组装,注入新齿轮油。使换挡体验焕然一新 The post Project Miata – 换挡杆维护 appeared first on Frank's Weblog.

2023/12/11
articleCard.readMore

Project Miata – $2000 Project Car

The author purchased a 1995 Miata with various minor damages as a project car from Craigslist. Despite issues like a damaged fender, broken rear plastic window, and non-functioning odometer and gas gauge, the car was deemed a perfect fixer-upper due to the car's inexpensive cost and straightforward repairs. A test drive uncovered no significant problems. The author completed the purchase for $2000, intending to restore the car for daily use and occasional motorsport. This marks the start of the 'Project Miata'. The post Project Miata – $2000 Project Car appeared first on Frank's Weblog.

2023/11/11
articleCard.readMore

Project Miata – $2000玩具车

作者在Craigslist上购得了一辆1995年的Miata,虽然车辆存在一些问题,如受损的车翼板、破裂的后部塑料窗户、以及不工作的里程表和油表等,但由于这些问题相对较小,而且车辆价格适中,易于修复,因此被视为理想的翻新项目。最终,作者以2000美元的价格完成了交易,计划对车辆进行修复,使其适用于日常驾驶和偶尔的汽车运动。这标志着“Project Miata”正式启动。 The post Project Miata – $2000玩具车 appeared first on Frank's Weblog.

2023/11/11
articleCard.readMore

教科书级别的云服务构建指南——「在一年内从零开始构建ClickHouse Cloud」一文的翻译与笔记

ClickHouse团队这篇文章自今年3月发布以来,就看到Twitter上有很多人转发或推荐了这篇文章。 这是一篇教科书级别的文章,讲述如何基于Kubernetes构建一个Serverless云服务。因为我从事的领域和这方面相关,并且我所参与的产品开发与这篇文章有很多相关之处。我研读了这篇文章很多很多遍,然后决定将这篇文章翻译并添加我的理解。 你有好奇过在一年内开发一个无服务器(Serverless)的SaaS服务都需要些什么吗?在这篇博文中,我们将介绍我们如何从零开始构建ClickHouse Cloud ——一个基于全世界最流行的OLAP(online analytical processing)数据库之一构建的托管服务。我们深入研究了我们的规划流程、设计和架构决策、安全性和合规性考虑因素,如何在云上实现全球可扩展性和可靠性,以及我们在此过程中学到的一些经验教训。 The post 教科书级别的云服务构建指南——「在一年内从零开始构建ClickHouse Cloud」一文的翻译与笔记 appeared first on Frank's Weblog.

2023/11/4
articleCard.readMore

博客10周年纪念

从2013年起计算,今年是我写博客的第10年,这大约是我持续时间最长的业余项目。 最初创建博客的机遇是高中的时候,我和几个朋友一起创建了一个科技社团,我们想给社团做一个网站。我们当时只是觉得拥有一个网站很酷,实际上并没有想好网站要用来做什么内容。如果你翻到最后一页,你仍然可以找到朋友们当时写的文章。 就像中学时折腾过的各种项目一样,过了一段时间过后慢慢就荒废了。并且SAE花费确实有些高昂,于是我又把网站捡起来,并搬到了国外的VPS上,后来就成为了我的个人博客。 内容方面,一开始我的文章以技术类教程为主,当时对于技术的涉猎还不太广泛,主要围绕博客搭建(每个博主绕不开的话题LOL),Linux,树莓派,Arduino等等。 随着时间的推移,和技术的理解和应用逐渐深入,我开始尝试写一些更深入的技术内容,记录生活中的事件,以及一些对于冷门问题的分析和解决方案。 The post 博客10周年纪念 appeared first on Frank's Weblog.

2023/9/5
articleCard.readMore

A PoC for Geographically Distributed WordPress Deployment

This site is hosted in a single AWS Lightsail instance in Japan West region, it has perfect performance when visiting from near by regions, however it has poor performance if visiting from another continent. - Poor TTFB and LCP from US East and Europe I've been using WordPress to run this site for almost 10 years. WordPress have been a very successful software in blogging, CMS and even e-commerce. Comparing with static solutions, it takes more effort to optimize its performance, because of its "dynamic" nature. I've done a lot of performance tuning for this site, and it already archived ~150 ms TTFB from nearby cities, it's not possible to optimize any further from the server side. It's also very difficult to optimize the time that data travels between visitors and the server, since the speed of the packet is limited by the speed of light, and we don't have the control to the routing of the packets. One solution that came up to my mind is to add more origin servers and make them distributed all over the world. The visitors will hit the nearest server to eliminate the latency, it also makes the site HA by rerouting the visitors to the working site in case one of the servers is down. While there are some managed WordPress hostings that provide this feature, but these services are very expensive. I decided to conduct a proof of concept for this idea. The goals are: - The post A PoC for Geographically Distributed WordPress Deployment appeared first on Frank's Weblog.

2023/8/25
articleCard.readMore

UHaul Trailer Lighting Issue During Cross Country Move

We recently embarked on a cross-country move from Syracuse to Dallas, towing a U-Haul 5x8 trailer behind our car. The trip was split into four days, with stops in Mansfield, OH, Nashville, TN, and Little Rock, AR. Before leaving Syracuse, I checked every item according to the checklist, including hitch pin, ball mount, coupler, safety chain, wiring, tires, lock, etc. However, I skipped checking the lights because they were already tested when picking up the trailer, so I assumed that they should be working properly as long as the connection was good. The first stop was Mansfield OH, about 7 hours drive from Syracuse. We stopped for dinner and gas at a small town near Cleveland OH. It was almost dark and I was a bit anxious since I skipped the light check before departure. So I checked the trailer tail lights and found out that the lights were off. The post UHaul Trailer Lighting Issue During Cross Country Move appeared first on Frank's Weblog.

2023/6/12
articleCard.readMore

跨州搬家途中的UHaul拖车尾灯短路问题

5月底,我们从雪城搬到了达拉斯。我们选择了开自己的车,后面拖UHaul的5x8拖车。整个行程分为4天,途径Mansfield OH,Nashville TN和Little Rock AR。 从雪城出发前,我按照事先列好的检查单检查了每一个项目,包括拖车的连接(pin, ball mount, coupler, safety chain,wiring),轮胎,锁,两只猫的牵引绳,AirTag,重要的行李等等。然而我唯独跳过了对灯光的检查,因为在取车时已经测试过车灯,所以我认为只要插头插好,车灯应该是正常工作的。 第一天的终点是Mansfield OH,离雪城大约7小时车程。在路过Cleveland OH附近的一个小镇时我们停下来买晚饭和加油。当时天已经快黑了,因为中午出发时跳过了灯光的检查,总是有些不放心。于是我去检查了拖车尾灯,结果发现灯不亮了。 The post 跨州搬家途中的UHaul拖车尾灯短路问题 appeared first on Frank's Weblog.

2023/6/11
articleCard.readMore

Use Cloudflare Load Balancer with Cloudflare Tunnel

Cloudflare Load Balancer is a global load balancing product provided by Cloudflare. It can connect to origin servers in traditional ways by DNS name or IP addresses, it also can be integrated with Cloudflare Tunnel to create a seamless and secure network infrastructure. Using Cloudflare Tunnel with Cloudflare Load Balancer is more complicated as we need to configure the DNS name and host header to make sure the routing and monitoring work correctly. In this post, we will use an example to demonstrate how to use Cloudflare Load Balancer with Cloudflare Tunnel. The post Use Cloudflare Load Balancer with Cloudflare Tunnel appeared first on Frank's Weblog.

2023/2/24
articleCard.readMore

配合Cloudflare Tunnel使用Cloudflare Load Balancer

Cloudflare Load Balancer是Cloudflare提供的一个全球负载均衡产品。它可以以传统方式(域名或IP地址)连接源服务器,还可以与Cloudflare Tunnel集成,以创建一个无缝和安全的网络基础设施。 将Cloudflare Tunnel与Cloudflare Load Balancer一起使用的配置与传统方式相比略微复杂,我们需要正确地配置域名和Host头,以确保路由和监控的正常工作。 在这篇文章中,我们将用一个例子来演示如何配置将Cloudflare Load Balancer与Cloudflare Tunnel一起使用。 The post 配合Cloudflare Tunnel使用Cloudflare Load Balancer appeared first on Frank's Weblog.

2023/2/24
articleCard.readMore

Post Mortem for Blog Outage on 2023/1/21

On 1/21/2023, my blog was attacked and went down for 4 hours. This article will cover what the incident was like, the root cause analysis and improvements. On that day, I woke up in the noon and saw the alert email from UptimeRobot. Sometimes a network or server glitch can trigger an alert as well, but it have been 2 hours since alert triggered, so apparently that's not the case. I found I was not able to connect to the website, while sometimes I could connect but got 504. I ssh-ed to the server and restarted all the Docker containers, but the problem persists. top showed that all the load average were 6.xx and most of the CPU usage were from php-fpm. I checked the graphs in nginx amplify and found that nginx have received large amount of requests during past few hours. I planned to go grocery shopping for the lunar new year dinner with my girlfriend, so I didn't want to spend too much time on this. I simply turned on the Cloudflare reverse proxy(orange cloud icon) and "Under attack" mode and left home. After a while I received the alert clear email from UptimeRobot and website was back online. Over last few years I've implemented a set of monitoring and security measures for my site and automated scripts to mitigate common issues. 1.UptimeRobot for monitoring downtime. I’ll receive alerts if the website cannot be reached or returned HTTP status that indicates a malfunctioning(5xx). 2.nginx amplify for monitoring nginx and OS metrics. I’ll receive alerts if some metrics(eg. disk usage, requests per second) goes over the threshold. 3.If requests per second goes over the threshold, it will automatically turn on Cloudflare proxy and increase security level. 4.WordPress security plugin automatically blocks malicious requests. Benefit from these measures, my site have maintained a uptime of nearly 100%. Being a blog that only have 2 digits of visitors everyday, 4 hour downtime is nothing to worry about. But my professional habit have been wondering what happened behind the incident, especially why these measures failed to prevent the incident from happening. The post Post Mortem for Blog Outage on 2023/1/21 appeared first on Frank's Weblog.

2023/2/9
articleCard.readMore

2023/1/21博客受攻击宕机事件分析与复盘

2023年1月21日,我的博客收到攻击宕机了4个小时左右。本文将介绍事件的经过,对根本原因的分析,及改进方案。 当天中午,我起床之后看到了UptimeRobot的报警邮件。有时一些网络或者服务器的短暂故障也会触发报警,但是当时距离收到报警邮件已经过去了近两个小时,所以事情显然没有这么简单。我简单检查后发现访问博客时有时完全无法连接,有时会返回504。 我ssh上去之后重启了一下所有Docker容器,但是故障依旧。top显示全部load average高达6.xx并且大部分的CPU使用来自php-fpm。检查nginx amplify图表之后发现过去几小时内nginx收到了大量的请求。 因为当天下午我计划和女朋友去采购年夜饭的食材,不想在这上面花费太多时间,于是我打开了Cloudflare的反向代理(橙色云图标)和Under attack模式,然后就出门了。 过了一段时间后就收到UptimeRobot的报警解除邮件,访问恢复。 我的博客上有一套监控和安全措施,以及一些自动化脚本来mitigate一些简单问题: - UptimeRobot用于监控可访问性,如果出现无法连接或异常的HTTP状态(5xx)则会发邮件报警 受益于这些措施,博客在过去几年一直保持着近乎100%的uptime。作为一个每日访问量两位数的博客,4个小时的downtime并不是一个需要担心的问题,但是职业习惯还是让我想知道背后到底发生了什么,尤其是为什么这一系列措施都未能阻止宕机的发生 The post 2023/1/21博客受攻击宕机事件分析与复盘 appeared first on Frank's Weblog.

2023/1/31
articleCard.readMore

Deploying Budget Friendly ARM-X86 Hybrid Kubernetes Cluster with K3s

中文版:使用K3s部署预算友好的ARM-X86混合Kubernetes集群 – Frank’s Weblog Kubernetes were used for enterprise level services, which is heavy and expensive. Even for the least-expensive Digital Ocean, its managed Kubernetes starts with $12/month per node. Then I learned about K3s, a lightweight Kubernetes distribution that removes or lightens many of the components in Kubernetes, allowing K3s to run on smaller […] The post Deploying Budget Friendly ARM-X86 Hybrid Kubernetes Cluster with K3s appeared first on Frank's Weblog.

2023/1/16
articleCard.readMore