Migrate to Linode

My blog was originally hosted on Tencent Cloud, a VPS and a CDN. It was supposed to be a very simple solution but Tencent had made it complicated. After a failed Ghost upgrade, I needed to reinstall NodeJS, but installing these commonly available packages in mainland China posed a challenge. That's when I decided to migrate my site somewhere else - somewhere with decent Internet access.

Digital Ocean was my first choice. I had used their droplets many years ago. However, after registration, my account was blocked. Despite contacting customer service, there was no resolution. So Linode naturally became my next option.

Before beginning the migration, I switched my DNS provider to CloudFlare, hoping their free Proxy and CDN would help accelerate my site and save bandwidth. But I overlooked one crucial detail: since my server was in mainland China, CloudFlare's requests could get blocked by the GFW (Great Firewall). I had forgotten that the GFW works both ways.

I tried using CloudFlare's Zero Trust Tunnel as a workaround, creating a tunnel with a CNAME record for my blog. The idea was to let the site be proxied while allowing CloudFlare to access the original site through this tunnel. I ran the tunnel on my home server with a GFW proxy, but it didn't work. While the tunnel connected to CloudFlare fine, requests to the original server wouldn't go through.

This left me with only one option: migrating my site out of mainland China. Since Digital Ocean didn't want my $5 per month, I went to Linode (now part of Akamai). I consulted Claude about potential conflicts between hosting on Akamai while using CloudFlare's services, given they're competitors. Claude assured me they're professional enough to work together.

Unlike Digital Ocean's immediate block, Linode required mobile verification. While they offered SMS verification for +86 numbers, Chinese carriers block these international messages as a "protection" against fraud. Thankfully, a friend in Singapore helped me complete the verification.

The technical setup was straightforward: configuring the node, implementing security measures, and installing Ghost. The migration challenge came with moving my data. Ghost's export feature only handles metadata, not the images and audio files. Following Claude's advice, I used the official export for posts and manually copied the static files. This approach worked perfectly.

CloudFlare, nicknamed "Cyber-Pusa" in Chinese, provides more than enough features in its free tier for bloggers like me. After adding a rule to cache everything, all traffic now goes through CloudFlare. My VPS stats are remarkably quiet, and I no longer worry about outbound bandwidth limits.

With this fresh installation working smoothly, I plan to post about my second trip to Japan tomorrow, once I finish repairing my motorcycle.

That's about it. Good day.