Preface
At first glance, the title of this article looks very artsy, which actually doesn't quite match my own style. After all, although my ideological level is very high (at least 3 or 4 stories high), my literary accomplishment is quite average (my score of 120 in Chinese in the 1998 college entrance examination was actually just a stroke of luck).
First, let's talk about why I had the idea of building my own blog. Besides the ”my blog"About Invincible“ mentioned in it, which is the important reason of recording the process of tinkering, another reason is that I read the blog of blogger ”bensz”. My first reaction at that time was that it was so cool, just as he said himself:

For a flexibly employed, 40-something, bored middle-aged person like me, I suddenly thought: Can I also set up a personal blog? It would be perfect for recording my tinkering process, and of course, it would be even better if it looked pretty cool at the same time. In the past when I was working, I would hand out business cards at every turn; in the future, when chatting with people online, could I just send my blog URL at every turn? Based on this very simple, very clear, and completely pure purpose, I began my learning journey of building a personal blog.
P.S.: Does starting to learn how to make a blog at this time count as "joining the Nationalist Army in 1949" (joining a losing cause at the last minute)?
Of course, my advantage is that I am in IT myself. Although I mainly rely on my mouth to persuade people (pre-sales engineer, sales engineer), after all, I used to start in post-sales, so I still have some hands-on ability (things like switch, router, firewall, IDS, IPS, load balancing... modestly speaking, I am still quite familiar with them). It's just that none of these have anything to do with building websites, nor do they involve dealing directly with code. So for me, it can be considered entering a brand new field, and it is not an exaggeration at all to call myself a complete novice (strictly speaking, I can't be considered completely ignorant about website building, after all, I studied FrontPage and Dreamweaver in college over 20 years ago, and my graduation project was also making a website).
Choosing the personal blog building method that suits you
Strictly speaking, the most important thing about a blog is not its form of existence or technical framework, but the content and whether you can persist in writing. Therefore, whether you stick to the form of a personal blog is theoretically not important (there are many ready-made blog platforms like Zhihu, CSDN, etc. Using these platforms only requires focusing on writing, without worrying about SEO issues), not to mention that the blog format seems so out of place in this era dominated by short videos.
However, the highly unique current internet environment has placed countless restrictions on creators who choose various domestic platforms (not only blogging platforms but also various popular short video platforms), and they are even frequently banned for no apparent reason. If you make money from these platforms, you have no choice but to accept it, since you need the traffic. But for those who don't rely on this to make money and just want to record their lives, or simply want to speak freely and write what they want, it is very unfriendly. In this case, a personal blog might be the most ideal choice for them.
Of course, there are pros and cons. Although choosing the form of a personal blog offers ”relative” freedom in content creation, it comes at the cost of spending one's own time and energy tinkering.
Personal blogs also have a compromise form: hosting, which is also the way most people choose.
If you choose hosting, you need to select a suitable hosting platform. Some of the more famous ones include:
wordpress.com
It offers a free plan. Once registered, you can publish blog posts directly. You can choose ”yourID.wordpress.com” or some free, less fancy subdomains. The backend is the most classic WordPress admin interface. The disadvantage is that it does not support plugins (well, it's not that it doesn't support them, but you have to pay extra, and a lot of money at that), and rather tacky ads will be automatically added to the end of your posts. The advantage is that it is truly hassle-free—you can just write directly, and the SEO is quite good.
GitHub Pages
GitHub Pages, provided to individual developers, can display static content, so it can be used to build static blogs. The advantage is high flexibility, while the disadvantage is that it requires a bit of tinkering (this "bit" is relative to building completely from scratch) and some coding knowledge (but don't worry, there are many online tutorials, just follow along).
From the perspective of saving financial costs, leveraging free hosting is indeed a good choice. However, choosing a hosting method means you accept the rules set by others, which is unacceptable to me (the free version of wordpress.com doesn't allow plugins? And adds ads for me? GitHub Pages only supports static? But what if I happen to prefer dynamic ones?). Therefore, I followed Wang Jinxi's famous quote: ”Go ahead when there are difficulties; when there are no difficulties, create difficulties and go ahead anyway,” and chose the path of building a completely self-hosted personal blog.
Every beginning is difficult
For me, everything else doesn't matter, but the coolness factor cannot be low, so an independent domain name is a must. This was not an issue for me because ”tangwudi.com” has been in use for many years.
Secondly, it was about how to build the website itself. My first reaction at the time was to look for Dreamweaver, can you believe it? Later, after carefully reading ”bensz's” blog, I realized that blogs are built with WordPress. I searched for related knowledge and learned that blogs are divided into dynamic and static types. Besides WordPress, there are other choices like Hexo, Hugo, etc.
In the end, I still chose WordPress. After all, it is more suitable for complete beginners. The required functions can be directly extended with plugins, and the appearance design can be completed directly in the admin dashboard using built-in modules, which can save bloggers a lot of time. Even so, I adjusted the appearance and structure of the entire website over and over again. Before writing the first article, this step took me at least a month. A lot of time was spent researching basic concepts: how to generate menus, why some menus show sub-content when hovered over, where categories are used, what a sidebar is, etc., to the point that I almost gave up at the time.
When the architecture adjustment was basically completed and the first article was published, you would feel that all the previous efforts were worth it. This is when it truly began.
The formation of the home data center model
In the beginning, I thought publishing was very simple. After all, my home China Telecom broadband had a public IP address. Although ports 80 and 443 were not available, couldn't I just set up port forwarding on the router and then manually add a port after the domain name? However, after actually doing it, I felt the coolness factor was really low (at that time, I didn't even have the concept of exposing the origin server's IP).
Since I didn't know about Cloudflare at that time, my simple mind thought: it seems that to use ports 80 and 443, I still need a cloud server, after all, only cloud servers have 80 and 443. So I went and bought a 2-core 2G 4Mbps Tencent Cloud Lighthouse server (99 for the first year, got a great deal, but ended up paying it back in the second year~). Along the way, I also bought a .cc domain name (because the .com domain was bought on Alibaba Cloud at that time, and I didn't know it could be directly transferred to Tencent Cloud).
After deploying the BT Panel on Tencent Cloud and then deploying WordPress via source code, I found that although ports 80 and 443 were open, the .cc domain was not registered (ICP filing), so it still couldn't be used (it would be forcibly redirected to the page requiring ICP filing). Then, having no choice, I had to research how to do a personal ICP filing. Fortunately, it wasn't too complicated. A few days later, the filing was finally approved, and the .cc domain could officially access port 443 of the Tencent Cloud server.
With port 443, I needed an SSL certificate. At that time, I didn't know much about Let's Encrypt, so I directly used the free 1-year DV certificate provided by Tencent Cloud (PS: Because I didn't know about the 20-hostname limit of TrustAsia certificates at the time, I had no planning and used them randomly, which quickly exhausted the 20 slots later~, very embarrassing). Then, Wudi's Personal Blog 1.0 found its home on the Tencent Cloud server.
Actually, at that time, the blog's name was not the current ”Wudi's Personal Blog”, but a somewhat cheesy name like ”Wudi's Soul xx”. This was because names containing the keyword ”blog” could not pass the ICP filing. In the end, after choosing for a long time and getting really annoyed, I reluctantly chose this one.
But at this time, the 4 Mbps upstream bandwidth of the Tencent Cloud server became an eyesore in my eyes. After all, with slightly higher traffic, 4 Mbps would be maxed out. This bottleneck was too big, so I turned my attention to Tencent Cloud's CDN. After all, CDN access to one's own cloud server is not limited by the 4 Mbps bandwidth. At this point, I was pleasantly surprised to find that CDN traffic was quite cheap, and CDN origin-pull could actually use custom ports. Doesn't that mean I could set up the origin server directly at my home? After all, my home broadband has a dual-stack IPv4/IPv6 public IP address.
Then, after another round of tinkering, I deployed WordPress via Docker on my home M1 "beggar version" Mac mini. Then, the iKuai router mapped an available public port directly to the service port of the intranet WordPress through port forwarding. The CDN then pointed to the mapped port on the dynamic domain name corresponding to the iKuai WAN port IP via a custom origin port. In this way, the migration of the blog from the cloud server back to the home Mac mini was completed.
However, my home doesn't just host one blog application; it's impossible to set up a port mapping for every single application, right? So later, I added a reverse proxy. The iKuai router only needed to map one public port to port 443 of the reverse proxy, and then the reverse proxy would initiate requests to WordPress based on the host of the access request. Furthermore, for security, I added a WAF after the reverse proxy and before WordPress. Only then did the entire public network origin-pull solution have a certain level of security. In fact, it was at this time that the prototype of the domestic line public network origin-pull solution for the home data center was officially formed.
Then, I learned about Cloudflare. After studying it for a while, I completely abandoned the domestic CDN public network origin-pull solution, and even gave up the .cc domain name directly (after all, the .cc domain was registered, which made me a bit paranoid, and it took me a long time to completely eliminate the .cc domain results from search engines). I migrated ”tangwudi.com” directly from Alibaba Cloud to Cloudflare. At first, I also used the public network origin-pull method, but later I found that the public network origin-pull had speed anomalies, so I switched to using Tunnels to publish applications. Utilizing various features provided by the Cloudflare free plan (caching, WAF, DDoS mitigation, etc.), combined with the home WAF as the final filter, the home data center solution finally became truly complete.
Looking back from August last year to now, I have really taken so many detours and wasted a lot of energy, but I have also really learned a lot of knowledge.
Will reading the above content make many friends who want to build their own personal blog but don't have much of a foundation immediately back down? Actually, it's not that scary. I recorded the detours I took just to help those who haven't taken the first step yet avoid these detours, or to help those who are currently taking detours avoid the remaining ones. The ultimate goal of the home data center solution is to allow friends in need to quickly build and publish their own blog websites using old equipment at home without requiring too much professional knowledge, even if the domain name is not registered. Therefore, ultimate simplicity and universality (relatively speaking) are the main principles, achieving an effect similar to the movie still from Stephen Chow's ”Love on Delivery” (King of Destruction):

P.S. Actually, strictly speaking, I knew many of the concepts in this knowledge. After all, I used to be a sales engineer. Although it wasn't the same field, I talked about them a lot when bluffing people. However, knowing is one thing, and actually implementing it yourself is another concept entirely. For example, with reverse proxy, the HTTP mode in professional load balancing equipment actually works as a Layer 7 reverse proxy. If you want to implement reverse proxy + Layer 7 load balancing, the configuration is quite simple: select this mode, associate the server group that needs load balancing, and then directly fill in parameters like host and x-forwarded-for through the profile configuration file. But when it came to having me implement the same function through Nginx, I was still a bit confused at first. Therefore, during this period, I really brushed up on a lot of practical operations of basic theories.
Is a personal blog really necessary?
After reading the above, I believe many friends will ask a question: Is it really necessary to spend so much time and effort tinkering with a personal blog?
This question actually has different answers for different people.
In the 8 months since I started blogging, I feel that the biggest beneficiary of a personal blog is actually the ”individual” themselves.
Recording the process of tinkering
Before having a blog, to achieve a certain technical goal, I would first search for a bunch of tutorials online, refer to this one and that one, encounter errors along the way, search again, and in the end, after successfully implementing it, I wouldn't even know how many tutorials or articles I had referenced. For complex multi-step operations, I might not even be clear on what order to follow if I had to do it all over again.
After having a blog, I would carefully record every operation step (my thoughts at the time, the results of verifying a certain hypothesis, screenshots of operation steps and output results), applying that well-known advertising slogan: ”Mom no longer has to worry about my studies.”
Organizing related knowledge points
If it's just purely recording the operation process, you don't necessarily need to use a blog; recording it locally is the same. However, recording it just for yourself to see versus putting it out for others to see are two completely different concepts. It's just like a girl not wearing makeup at home, going bare-faced is fine, but if she has to go out to meet people, shouldn't she dress up beautifully?
The same logic applies to blogging. When I want to publish a blog post, I will look at the article from the reader's perspective: ”Is this point written too vaguely? Will others not understand it? Do I need to include explanations of some related knowledge points to make it easier to understand?” If you write every article with this mindset, you will find that in order to publish a high-quality blog post, you have to constantly organize upstream and downstream related knowledge points, thereby prompting you to keep learning and growing.
Making thinking more logical
People often mention the phrase ”spark of thought,” which in Buddhism actually refers to ”thoughts.” In an instant, countless thoughts arise and cease in the human brain (actually, there is a number; in the ”Bodhisattva Womb Sutra,” Maitreya Bodhisattva says, "In a single snap of the fingers, there are 3.2 billion hundred thousand thoughts"). Among them, there are good thoughts and bad thoughts. We don't care about the bad thoughts, but if there are good thoughts, such as suddenly remembering a certain technical point that is worth writing a dedicated article about, shouldn't we put it into action? Over time, won't the blog never run out of content to write about?
To get back to the point, when our brain occasionally generates a spark, turning it into a final blog post is not something that can be done just by pounding away on the keyboard.
A good technical blog post should at least include, but is not limited to: the cause (what idea it is based on or what problem it aims to solve, hoping to spark the reader's interest or resonance), the process (the steps of tinkering, explanations of relevant knowledge points, which should be simple and easy to understand, with plenty of screenshots and preferably red boxes highlighting key content so as not to deter people or make them frown and doze off while reading), and the result (the display of the final effect achieved, which is convincing and allows people to see the final outcome, at least letting others know what you have managed to produce after all that tinkering—this is also why I am dissatisfied with some articles online, where you don't even see a screenshot of the final result at the end; even selling a house requires a rendering). Going a step further, you need to consider whether the linguistic logic is clear, whether the paragraphing is reasonable, and so on. Over time, the habits formed when writing articles will also affect your daily thinking, making your mind more logical.
Note: I'm just talking, and I don't do well enough myself; I'm just working in this direction.
Combating your own laziness with perseverance
Everyone has a lazy side. To combat your own laziness, the best way is to find something you like (or at least don't hate) and do it consistently. From this perspective, blogging is very suitable: it is not as tiring as exercise, you don't have to feel the pain of spending much money, and you can show off to the outside world along the way~.
As the last pure land where you can freely laugh, cry, and scold
Currently, internet regulation is becoming increasingly strict. Anyone with a bit of common sense knows that trouble comes from the mouth, so they can only remain silent through tolerance on various domestic media. However, it is better to channel than to block, and there is always a need for a place to vent. At this time, if you have an independent personal blog, it can become the last pure land where your emotions can be vented at will.
Note: This comes with a premise—at least the domain name shouldn't be an ICP-filed domain, right? And it's best not to go too far; there must still be a limit. Don't underestimate big data correlation analysis. Unless your domain name, posting username, website name, etc., when building the site, have absolutely nothing to do with your domestic social media accounts, email accounts, screen names, nicknames, etc., it's still better not to be too arrogant.
After saying so much, in the end, I found that the biggest target reader of a personal blog is actually the blogger themselves. When many years later, you open your blog and look at the articles written by your once-naive self, will you smile knowingly?
Sharing and being touched
Actually, I had never specifically explored how many people are still persisting with personal blogs. I was just silently updating my blog out of personal interest and for the purpose of learning, without paying too much attention to how many people actually came to read it. The few personal blogs I knew of were only stumbled upon by chance when searching for some knowledge points on search engines. They were obviously old blogs that had existed for many years, and they didn't attract much of my attention at the time.
Until a few nights ago, when I accidentally came across a blog post:

It was actually just a simple free blog hosted on wordpress.com, nothing fancy, and the content was mostly just personal sharing. However, through this article, I learned about the concept of blog aggregators. After checking them out, I realized that in this crazy era where basically everyone swipes through Douyin and Kuaishou (excluding me, I haven't even downloaded them, let alone registered an account), there are still many people silently persisting in creating personal blogs. This also reminded me of the reason why I started learning to make a personal blog:

I suddenly felt another meaning of the existence of personal blogs: sharing.
Although the main content of a personal blog is created for oneself, once you share it, even if the vast majority of people might just glance at it and pass by quickly, in the vast crowd, there will always be someone who stops because of your content and benefits from your sharing. At this moment, your sharing becomes meaningful.
I suddenly felt a touch of emotion in my heart; it turns out there are still fellow travelers on this road, and I am not alone.
Final Thoughts
Relatively speaking, although independent personal blogs have very prominent advantages—high freedom and flexibility—their disadvantages are equally prominent: you need to spend time on operation and maintenance, learn a lot of related knowledge, and if you want to increase traffic, you also need to study SEO yourself. I have only recently come into contact with knowledge in this area, so I will learn and tinker with it slowly. Since I chose this path, why should I be afraid of learning and tinkering?
A quote I quite appreciate: The best time to plant a tree was ten years ago. The second best time is now.
Don't worry about which technical framework is best, and don't fret over which field to start with. I think the most important thing is to set up your blog and then seriously write your first post. Just like a saying in our cycling circle: Don't worry about whether the bike is good or if your gear is complete; the first thing you need to do is get the bike out and ride!
Having said so much about what I don't recommend, in the end, I recommend the free-hosted Bearblog, and Ghost blogs which can be self-hosted or hosted (hosted platforms are really too expensive, all charged in USD, so it's better to buy a cheap cloud server yourself and use Baota for one-click installation), and Halo blogs are semi-recommended. There is another reason for recommending them: they are simple and good-looking. Their themes can all become just like static blogs. They are not bloated like WP, and WP themes are usually very ugly.
If we are really talking about hassle-free, free static blogs, there are still a few options, but you just can't have too high expectations.
Pursuing content is still a bit difficult. Most of the Chinese blogs I've read are about life and technology, and the content is not that great. It seems to be the same for foreign language ones. But I think this is something that can only be achieved by reading more books, right? I try my best to make my blog posts longer and more complete.
There's nothing wrong with pursuing content, but the standard for good or bad content is hard to define. As the saying goes, "One man's meat is another man's poison." People with different levels of knowledge will definitely evaluate the same content differently: some popular science articles about certain knowledge points might be considered well-written by those who don't know much, but for experts in the field, they might find them meaningless. Therefore, if you want to pursue article content that everyone thinks is good, it is not very realistic. However, I think the most crucial thing is that the content you write must be meaningful to yourself: whether it's keeping a record or organizing what you've learned, as long as you can benefit from it yourself, that's the reason to keep going. Only after that comes trying to help others as much as possible, and finding like-minded friends, just like fishing.
If it is free hosting, then I highly recommend Bearblog. If you want to modify the style, it is also relatively easy to let GPT assist in decorating the blog. I do not recommend the one-click installation of Apanel on virtual hosting (I think this can also be counted as free hosting), it is way too laggy!
Hosting platforms like GitHub, Netlify, and Vercel are simply too difficult for ordinary people who don't know how to code, and using them might require considering network issues. Many times, even with a proxy turned on, it still fails. Or maybe wanting to modify some static blog themes is also really difficult.
IT is inherently a very abstract term, encompassing everything: from a cybercafe administrator to Elon Musk, all fall under the scope of ”working in IT”. From when I just graduated (2002) to 2007, I worked as a ”Network Engineer”, focusing on the planning and implementation of network projects of various scales; after 2007, I joined the largest domestic distributor of IT products and started working as a ”Pre-sales + Post-sales Engineer”, getting in touch with overall solutions of various foreign brands (F5, checkpoint, netscreen, mcafee, etc.); after 2011, I went to a competitor of F5, specializing in application delivery products. Code and websites can basically be merged together nowadays, because website development (frontend, backend, or full stack) is all code-related, and of course, there is also code development for software in specific fields; pure networking work is actually not very viable now, because China has long passed the era of network infrastructure (around 2000, once you passed the CCIE certificate, you could directly affiliate it with a company, and then directly take the money to buy a car~). How many professional ”network engineers” today have implemented large-scale networks (municipal, provincial, or even nationwide, such as CN2)? Actually, if we really want to divide it seriously, we can also divide it into many IT sub-fields, which is simply endless. In fact, it can be divided by job functions, which is clearer: R&D (code), sales, pre-sales engineers, post-sales engineers, and support engineers.
Thank you for your thoughtful reply. However, when clicking the "Go to View" button in your reply email, the linked URL is actually
http://192.168.10.99:50443/technology/homedatacenter12030/#comment-27878Perhaps the server you used before hasn't had that button link updated after the migration?Haha, that's because I usually manage WordPress directly using the intranet address. This is my preferred practice of separating domain access from daily management, because some security policies are set quite strictly for domain access. If I log in directly using domain management, it is relatively slow, so I usually access it directly using the intranet address. This reply was written after logging into the WordPress backend using the domain name method, so there is no such problem.
I discovered the blogger through the blog post [Home Data Center Series: Building Your Own Proxy Server and Forwarding Proxy Chain Using gost], and I benefited greatly. Thank you!
I actually want to build a blog too, because I find that I can't remember many things; command configurations are forgotten after a long time, but I need to constantly reuse them to meet my needs. A blog feels more like a diary to me.
It's the same for me. I also got the idea of building my own blog after reading other people's blogs, because it's like having a home of your own on the ethereal internet. In this home, you can take notes seriously, vent your emotions freely, and also make many like-minded friends. In today's foul, chaotic, and upside-down society, having such a relaxing ”room of time and spirit” is a very precious thing. Another purpose of my building this blog is to help more people build their own ”home on the internet”.
The biggest reader is yourself, indeed.
Haha, it's just a reflection of my feelings. If you start with the idea of making money from a personal blog, then in all probability, what you write won't be pure, and it will be hard to persist. Only by truly writing for yourself, where the articles you write can bring you mental satisfaction, is the best motivation to persist for a long time.