My Second Attempt To ARM Servers

Last weekend, a full month without my Telegram account, I thought I had to do something. I believe I got banned because someone clicked the “spam” button on my messages, but I have nowhere to appeal.

I lost the faith in centralization. This time, I made up my mind to dive into decentralization.

First, I need a server.

Where To Purchase

I used to buy servers from distributors of the DC for lower prices, but it always ended up with disappointment. The servers are just not stable and I can not upgrade the hardware configuration on demand.

So this time, I chose Hetzner for my server. Hetzner is a huge IDC in Germany, I must have to pay a fairly high price for the server, am I right?

The following images show the price of Hetzner’s traditional CX series - with x86 CPU.

Hetzner CX Series

A 2 CPU and 4GB RAM CX21 can fit my needs, it costs 5.35 EUR per month. By the way, the 40GB disk is far less than my requirement.

The CX series are using Intel Xeon CPU. The GB6 benchmark score of an Intel core is around 850, which is significantly lower than AMD EPYC of around 1200.

However, when I switch to the CAX series…

Hetzner CAX Series

I can get the same number of CPU cores and RAM with only 3.79 EUR per month, 30% lower than the x86 one.

The GB6 benchmark score of ARM CPU is around 1050, even higher than the Intel ones.

The disk space is still 40GB, but I can purchase a 3.2EUR/month 1TB Storage Box to solve this problem.

With a total of 6.99 EUR per month, I can get a server with 2 CPU cores, 4GB RAM, and 1TB disk. That is a great deal.

Wait, ARM?

About a year ago, when Hetzner first released the ARM series, I was interested in it and evaluated its compatibility.

I always use Docker containers to host my ~25 services. It turned out that more than half of the Docker images I was using were only compiled for the x86 CPU.

That means you have to build the image by yourself if you want to run it on an ARM CPU. The time and effort were not worth it, so I gave it up.

However, this time, I found all of the Docker images already supporting the ARM CPU. It is time to give it a try.

The Experience

Here is my final hardware configuration:

I chose the CAX11 server, which has 2 Ampere ARM CPU cores, 4GB RAM, and 40GB disk. I added 2GB swap space to store cached files and reduce the load of the RAM.

I also purchased a 1TB Storage Box to store my data. Mounted to the server with NFS, just like a local disk.

I am using the latest Debian 12 Bookworm and I can’t feel any difference between x86 and ARM. My daily use software from APT source is all compiled for ARM. The installation speed is as fast as x86.

As to the Docker images, I am using Portainer to manage them. What I need to do is just click the “Recover” button on the settings page, Portianer will automatically recover the configuration from CloudFlare R2 storage and all the containers just work as before, with no need to change any settings.

Today, when I am writing this article, My services are running for a week without any problem.


Well, Still Not Perfect

The ARM server just works fine, but I want to share some problems I encountered when building the ARM Docker images.

The official software repositories of Linux distributions can offer full support for ARM CPU, but the repositories of other sources such as PyPi can not.

Build time difference

There are still some packages that don’t have prebuilt ARM wheels, and the building process can take a long time on the 2-core ARM machine.

That is not a huge problem, but it makes the experience of ARM arch different from x86.

If you are a developer, try to include ARM in your build pipeline next time, that will be a great help for the ARM community.

Final Conclusion

In my opinion, the ARM server is ready for daily use today. They offer a high quality-price ratio. I didn’t come across any compatibility problems.

Next time when you want to purchase a server, you can consider the ARM ones.

My Second Attempt To ARM Servers
Kare Udon