Recently, I migrated my home server to a cheap VPS. It’s a bottom tier $5/month box with measly specs compared to my old home server, but can still handle all of my services. This is an article explaining the troubles I faced as a self hoster and why they prompted me to move to a VPS, and a general reflection of self hosting.
Self hosting days
I like space and astronomy and name my machines after spacecraft and related programs. The home server was named Mariner after the Mariner program. Mariner, the server, started as my former desktop computer.
A humble Samba server
In the very beginning, Mariner was used mainly as a Samba server. I knew very little of servers, sysadmin basics, and networking that I left Mariner alone for quite a while; occasionally uploading or downloading files from it.
Leaving Mariner just as a Samba server felt like a waste of electricity, so I started to learn about what self hosting can accomplish. Soon enough, I had an idea of what I wanted Mariner to be: a cloud and media/music streaming server. I got a domain name, learned how to deploy services, and made Mariner go public.
Self hosting awakening
Mariner was running a bunch of Docker containers during this time. I had both cloud and streaming services running, and managed to deploy a few more services, like this website. It was incredible to realize how much I could do with a computer and a domain name.
Self hosting gave me independence. Why pay someone else for a service when I can just do it myself, and it often results in a better experience? Having a domain name and computer invalidated the existence of virtually all subscription-based services. Cloud services like OneDrive, Google Drive, or Dropbox, streaming services like Netflix or Spotify; self hosting could provide a much better exerience.
Home server problems
Of course, the drawbacks to self hosting began to reveal themselves rather quickly. As fun as it was to have a self hosted system, there are aspects where commercial providers cannot be beaten.
Dynamic IP address
Because Mariner was inside my house, its IP address would change every few weeks. My domain registrar has an API where the IP address can be updated by a script, which was very useful. However, DNS TTL means that there is unavoidable downtime every few weeks, even if Mariner itself was always online.
Downtime
Mariner’s downtime would be fairly small for a home server if it was unavailable for only 10 minutes every three weeks. But in reality, I would put Mariner’s uptime at no greater than 95%, maybe even lower than 90% in the worst case. That’s pretty bad, even for a home server. There are multiple reasons why this happened, each making me doubt the long term feasibility of a home server.
- Mariner became a remote server quickly
- Frequent and uncontrollable power outages
- Residential internet bandwidth and restrictions
- Unexplainable, random downtime
The unpredictable downtime was very frustrating. I could tolerate it if I used Mariner alone, but other people were using it too. And as a server with fairly critical services, uptime became important. A few days before the VPS migration, I received a few complaints from users about the downtimes. That was the final push I needed to find a new solution.
The anwser was easy, I needed to use a VPS. Not only do they have good uptime, but bandwidth is significantly better than my shoddy home internet connection. Additionally, the hardware maintenance duty would be on the VPS provider instead of me. I still perform backups of course, but the physical burden is now absent.
Migration debate
Migrating to a VPS would come at a large cost: hardware. Mariner was a fairly beefy computer: 6 TB of usable storage, a Skylake i5, and 16 GB of memory. A VPS plan with those specs would be ludicrously expensive, so I would have to prioritize what services would be kept alive.
If I were to migrate to a VPS, heavy services like Jellyfin or Nextcloud would be impossible. I would only be able to maintain the webserver and a few lightweight services at best. However, the heavy ones are the services that got me motivated to self host to begin with.
Ultimately, I decided to go with the migration. The reliability of a VPS would outweigh the lost services. Besides, I am fairly confident that it is possible to keep using heavier services with some setup.
If not, I could always use Nextcloud and Jellyfin locally. That would make my job easier, since security becomes a much smaller problem.
Post migration thoughts
Mariner has been put to bed and will be further repurposed as an intranet server later. Critical infrastructure like this website are now hosted on the VPS. Of course, following the spacecraft trend, the VPS has been named ‘Pioneer’ after the Pioneer missions.
The bandwidth is significantly better; the website and other services load much faster. When performing a system update, I can see that the download speed peaks at about 24 MB/s, which completely destroys my relatively puny 5 MB/s from home. The VPS’s data cap is 1 TB/month, more than enough for my needs.
Second, the uptime is as good as expected. Pioneer has had 100% uptime so far, and I hear that it’s not hard to get uptimes of over a year. I can also receive ping packets and not have them all drop, unlike Mariner.
Third is the static IP address. No need to deal with a NAT as well, everything Just WorksTM. The simpler networking conditions made setting up more services accessible, when they would have been very unreliable or even impossible at a house. I’m even able to install mail servers now, which was much harder with Mariner.
Self hosting is still cool
Overall, moving to a VPS was the right decision. The uptime, bandwidth, and relatively maintenance-free strengths are very nice to have. It solves all the problems I faced with self hosting, as nice as the hardware control was. The monthly cost of running a VPS is worth it to me, and it probably isn’t far off from the electricity that Mariner used.
Self hosting is still amazing though, make no mistake. If you want to experiment with private services, it’s better to do it at home than use a VPS. You can turn any computer into a server, from a powerful desktop to a Raspberry Pi.