Ramón Calvo's picture
Ramón Calvo
Robotics Engineer

This page is self hosted now

Published on 12 Sep 2020

Up until recently, this page was hosted on a vultr’s virtual private server. The VPS service was good for the price: $4.24/month (after VAT), the offer with the minimum cost available. For that price I got a server located in New Jersey with 10GB SSD, 0.5GB of RAM and 1 CPU. It served as my web and private email server. But I found it rather ’expensive’ for the use I was giving it: the web page does not have visits at the moment and I don’t use my mail regularly. Originally I intended to make a searx instance but I just couldn’t get it to work.

I wasn’t interested in paying $50.88/year (+$8.50/year for the domain, managed by epik) for my Internet presence, especially when I am in charge of having everything working. Even scarier was the thought of missing emails due to a poorly configured email server, or never reaching out to people because my mails could potentially end in their spam folders. Even though these last problems were solved, I don’t trust myself that much.

The solution: grab a Raspberry Pi 2B+ I had laying around catching dust, an old smartphone charger, cheap Ethernet cable and a micro SD. With that, I burnt the newest Raspbian (or Raspberry Pi OS to be precise) and configured the same simple nginx server I had on the VPS. Then I changed the domain DNS configuration to point to my home’s public address and redirected port 80 (HTTP) and 443 (HTTPS) to the Raspberry Pi. If you do this be sure to have a static IP address.

Also, storage is as cheap as buying a micro SD card, and they’re really cheap right now, and maintenance is close to none. Another benefit is that the Pi is completely silent and it draws very little power: according to my calculations it costs 0.20€/month being very conservative.

To maximize the lifespan of the micro SD card, you should tell the Raspberry Pi to move all its journaling to RAM. This is because SD cards have a limited write/erase cycles. If you use journald, this can be achieved setting Storage=volatile inside /etc/systemd/journald.conf and then restarting with systemctl force-reload systemd-journald. You can now remove /var/log/journal to delete the old journal files.

Since this page is plain old HTML and CSS, it loads fast and the Raspberry Pi can easily handle hundreds of petitions per second if not thousands thanks to the files being so small (like I’d ever need that). The majority of them aren’t even bigger than the file system’s default block of 4KB. Also if the micro SD gets damaged it would be no problem since I edit the page on my computer and then sync it with rsync.

I substituted the mail server with a tutanota account and paid the yearly subscription of 12€. This allows me to make up to 5 email alias addresses with custom domains. The instructions for setting the custom domain up were clear and worked on the first try. Also the company is very concerned about data privacy and based on Germany. Added to that, they have open source clients for every platform which is very convenient.

The downside is that tutanota does not support IMAP. This means that it can’t be used alongside mutt/neomutt for example.

I also changed the domain of this page from noctrog.xyz to ramoncalvo.com. The first link will be working for the next 9 months or so but I will not renew it.

In summary, the domain and email now cost me less than 20€ a year which I find much more reasonable.