Personal Blog Build Journey
This is my real build log from 0 to 1. It is not an idealized guide. It is a practical timeline with actual mistakes, root causes, and fixes.
Main Build Routes
Route A: No-Server Route
Good for beginners and lightweight personal sites.
Typical stack:
GitHub Pages+Hugo/Hexo- Very low cost, often close to zero
- No server maintenance
Official links:
Route B: Traditional Server Route
Good for full control and future expansion.
Typical stack:
- Buy cloud server + domain
- Deploy static site with Nginx, or use WordPress/Typecho
Official links:
I chose Route B because I had already purchased a one-year server and did not want to waste it.
My Actual Setup
- Server: Huawei Cloud ECS (already purchased)
- Domain:
xedczq.cnfrom Alibaba Cloud - Site type: Static blog (generated by Hugo, served by Nginx)
Official links:
My initial decision was simple:
- Reuse existing server (save money)
- Buy the cheapest domain option (save money)
Those decisions were valid, but they increased filing and network complexity.
Domain Purchase and DNS
After buying xedczq.cn, I immediately pointed DNS to my Huawei Cloud server IP for public access testing.
My minimum checklist here:
nslookup domainresolves to the target IP- Server service is actually listening on public ports (80/443)
- Security group and firewall allow required ports
ICP Filing
My first major blocker was ICP filing.
When ICP Filing Is Usually Required
Common case:
- Server is in mainland China
- Domain provides internet information services in mainland China
Common case where ICP is usually not required:
- Server is outside mainland China (HK/overseas)
- Service targets overseas access
Official filing portal:
I decided not to move to an overseas server, so I completed the full filing process, which took about 10 days.
Issue: Works Without VPN, Fails With VPN
After filing, I hit the second problem:
- Works without VPN
- Fails with VPN
In practice, this usually involves routing differences across DNS/proxy/region paths instead of one single bug. I then tried Cloudflare for unified DNS and traffic handling.
Cloudflare Domain Onboarding
I moved the domain to Cloudflare.
Official links:
Main advantages:
- Global Anycast network
- Fast DNS propagation and good observability
- Optional CDN/WAF/basic protection
- Flexible DNS-only (gray cloud) vs proxy mode (orange cloud)
Pitfall I Hit
I enabled orange-cloud proxy first, and the site became inaccessible.
Root cause pattern:
- In proxy mode, requests first reach Cloudflare edge, then return to origin server
- If origin TLS mode, return path, source policy, or filing access conditions are not aligned, access breaks
Domain Access Filing at Provider Side
After Cloudflare onboarding, I hit another requirement around provider-side domain access filing.
My fix:
- Temporarily switch to DNS-only (gray cloud)
- Complete access filing on Huawei Cloud
- Wait for approval (about 4 days in my case)
After this, access stability returned.
HTTPS Launch
Final step: issue and deploy a free TLS certificate on the server, then enforce HTTP -> HTTPS redirect.
Official link:
At this point, the blog was fully online.
My Timeline
- Domain purchase + first DNS test: same day
- ICP filing: ~10 days
- Cloudflare onboarding + troubleshooting: 1–2 days
- Domain access filing: ~4 days
- HTTPS deployment: same day
Final Notes
If I only wanted the fastest launch, I would use the no-server route. If I want long-term control and extensibility, server route is worth it, but I must accept:
- Filing is mostly a time cost, not a pure technical cost
- DNS and proxy issues are network-engineering issues, not one-command issues
- Certificates, return path, and access policy must be debugged together
My biggest gain was not just launching a blog, but understanding the full chain of domain, DNS, filing, proxy, and origin routing.