Personal Blog Build Journey (Real Pitfalls)

A practical end-to-end record: server and domain purchase, ICP filing, Cloudflare setup, and HTTPS launch.

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.cn from 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 domain resolves 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.