My take on Self-Hosting

A great way of defining self-hosting is the concept in which you are hosting your own applications, data, and software tools. Self-hosting can be open to the world, or just something you use for yourself. (nobody else or just your team/family/friends have access to whatever you are self-hosting)

To be fair, this does tie up nicely with the idea of having a home lab. I’ve written about what a home lab is here. But there are some differences between self-hosting a service and experimenting with a piece of software. For example, you might spin up a docker container in your home lab and test what is this Plex everyone is talking about. But you would want a stable Plex installation for your actual media consumption needs… a massive crash while enjoying a cool movie or something would be… not cool.

As you’ve probably already guessed, I am a fan of self-hosting and I do self-host several apps for myself and even for my own business (or I’ve configured for my business to self-host some of its own services it needs?! take it as you want).

How and why I started self-hosting

It all started from a dumb problem the city where I live has. Almost every night (sometimes during the day too), we get these 2s – 60s power outages. Sure, I have a couple of UPS units, there is no actual harm done. But! Sometimes, the internet goes out. And it lasts ~5 to 10 minutes until it comes back. Unless something breaks and ISP takes sometimes >6 hours to fix it.

Yeah, not fun if you were working on something online, or if you were just streaming a sitcom. Basically random interruptions. So it’s bad times for work and for free time.

note: a secondary ISP is not quite a solution because of several reasons I won’t bore you with, and a 4G backup solution exists… but it’s not that great.

The first attempt was actually running my personal PC basically 24/7 to feed media from Plex to my non-smart Phillips TV using DNLA. As the TV, PC, and router were on a UPS, even 5-minute power outages did not hurt my sitcom watching ‘marathons’.

On the work side of things, as we work from home of course the same problem plagued us. But even worse: as these outages happen during the night when we sometimes check stuff, quickly patch other stuff, and push stuff to production… there were some occasions where this was definitely not fun.

So that’s how the local development ‘server’ and home lab got started. As well as the idea of self-hosting certain business apps, especially internal things.

The reasons above aside, having a 1 Gbps download and upload speed to all my data is awesome – it’s a lot faster than my internet speed, and it can be upgraded to 10 Gbps a lot sooner than my ISP will ever do it. Here comes the NAS (powered by Open Media Vault and NextCloud). And as it’s in the local network, I can continue my work or whatever I was testing even if I have no internet access.

Sure, privacy and the fact that the data resides on my own SSDs and HDDs is cool too. Especially for family photos and videos. But to be fair, work-wise, it’s not like I’m working on something revolutionary or a top-secret :-)).

My experience in self-hosting stuff

When and after you finish messing around with every stupid little thing possible, it’s great! It takes a lot of patience and trial and error until you reach a good stability record. Especially if you are self-hosting complex stuff or modified to be tailored to your specific workflow/use case. But when you’re done, you have something really useful. And as power is quite cheap where I live and modern hardware is quite efficient, it’s even cheaper than alternatives.

There have been a few occasions when I was too eager to upgrade something and I discovered some annoying bugs. Or just dumb mistakes like a missing comma in a certain configuration etc. But as they say, we learn as we go.

Should you self-host?

Anyone can self-host a service, a tool, or whatever you need. Check at the end of the article for some great lists of stuff you can self-host.

A lot of people self-host for privacy reasons, as having their personal photos or videos on Google Drive, Dropbox, or other similar services can arise concerns. I get it and can agree. Or they want to avoid some costs while handling their own data.

Successfully deploying an application and using it daily for work or home is a great feeling. That cheap thrill that you can achieve most of what big companies do with their products at little to no cost is a great feeling.

What you need to successfully self-host an application:

  • you need a lot of patience;
  • you need to acknowledge that sometimes things will not work properly and be prepared to fix them;
  • you need toacknowledge that sometimes maintenance is necessary;
  • you have the will to learn new stuff constantly;
  • you really enjoy tinkering with things and sometimes obsessing over features/things that only you care about;
  • all of the above + a specific thing that would really help you and it’s either too expensive or you haven’t found it in an ideal form;
  • to be fair, some cash too. I mean, you should take backups into account, hardware costs, etc.;

What to never self-host

I would never self-host a business website, an e-commerce store, or mail & support services like live chat features and ticketing software.

Why?

Some things can cause actual cash/opportunity loss and major inconveniences for your client or for your business.

And hosting a mail service is hard. It takes a lot of knowledge and tinkering if you don’t know what you are doing. And e-mails should just work. Don’t host it yourself unless it’s as an experiment and not for something critical like a business. Or of course, if you know what you are doing.

What I self-host

By self-host, I mean really self-host on a server in our home office. Because as far as administration goes, everything we operate is on ‘cloud servers’, that we actually configured from scratch and take care of them (our websites, our blogs, our apps, etc.).

Some of these are not only personal but for business use too. But I suppose it still passes as it’s the same person configuring/running/fixing them.

What I currently self-host:

You could split this into two sections actually, work and home.

For work:

  • Open Media Vault + NextCloud via Docker (work files, organisation, backups, etc);
  • A lot of docker containers each accesible by the respective client through its subdomain with Let’s Encrypt Certificate, basically development environments or ‘soon to be launched/in work’ projects. The apps are mainly Magento 1.x, Magento 2.x, WooCommerce, Prestashop and some Laravel containers – about 25 containers in total;
  • A GitLab instance;
  • Portainer – having a pretty interface to do basic stuff with containers is handy sometimes;

For Home:

  • A Plex server with Open Media Vault (media and stuff);
  • The Home Lab: which is actually made of highly experimental stuff that I would not trust to be anywhere else yet, but also some stuff that I’m currently in testing or I’m on the fence about them;
  • A custom price tracker for some popular and some obscure shops in my country. I can take this out of the ‘lab’ idea, as it’s been pretty stable so far; (it helps and warns me when something in my wishlists has a decent price)
  • Bitwarden – password management, it’s here as it’s a different machine than the work server, that has outside traffic;

Everything is monitored by Grafana + Prometheus, and sensitive work stuff is backed up to another machine (sensitive = money can be lost if these things go missing). I should also note that the work part that is accessible from the outside, is using Cloudflare for security and speed purposes.

And yes, a lot of stuff is not usable/accessible from outside the home/office network. But it’s like that by design. If we’re not home, we are probably not working actively and have no time for watching something on Plex.

What am I looking to self-host in the future:

  • Either a fully capable CRM or an offer/invoicing solution for the business – I mean, why not?
  • this would not actually be in-house but I guess it’s worth putting here: a stable VPN on an US-based server, I’ve only been experimenting and screwing around with stuff;
  • some sort of project management app… kind of complicated/time consuming as I would have to somehow integrate it with a customized OSticket installation we are using for work (not self-hosted, it’s up in the cloud) along with figuring out common workflows and etc… we’ll see;
  • Transmission, and Sonarr alongside Plex – just couldn’t be bothered yet :-));

Is it worth the hassle?

To be fair, I love tinkering with stuff. It’s not even work… it’s fun!

But as our electricity costs are quite low, about $0.15/kW h or €0.13/Kw h, the machines will eat up to about $536 (or about €462) per year in terms of electricity costs – that comes around to about $44,66/month (or 38.53 euros). And since it’s not only home-stuff but also business-related stuff, it’s well worth it.

And this is without being too conservative. If I were to fiddle with power-saving profiles, undervolting, powering off/on some of the stuff based on a schedule, the electricity costs would probably go down. It’s in the plan but not urgent.

I mean, only having ~24 TB of storage would bring a hefty bill. Probably more if I were to be paranoid like on the local setup and split those 24 TB on different machines for work and personal stuff. And I’d lose the advantage of not depending on our ISP. In all fairness, the fact that the ‘servers’ are actually old PCs we’ve upgraded from, and only the PSUs, HDDs, and SSDs are new, also helped.

And if we actually decide to pull the trigger and self-host an invoicing solution and stuff like this, we could (probably, based on the fact that the machine is already running) save some money in the process.

How about stability?

My current uptime record is 304 days on one of the machines.

To be fair, up until now, if there was a problem, it was because of some dumb mistake or error, and totally fixable and usually fixed in the same day.

Some great resources

You can find some great lists of things you can self-host here: https://github.com/awesome-foss/awesome-sysadmin and here https://github.com/awesome-selfhosted/awesome-selfhosted

And of course, there is the self-hosted subreddit here.

Some ending notes

Self-hosting is a great way of putting your skills to good use while learning something in the process. I do believe that a lot of people who have a home lab, also self-host something.

As far as self-hosting being worth it, I really don’t know what to say – I guess electricity costs matter a lot. I mean if our power costs would triple, I would probably look for alternatives (hard to say, as this is also my hobby and throwing money at it is not actually wasted money as long as I’m having fun and making something useful in the process)

But the simple fact that for media consumption I do not depend on my ISP 24/7 or on the bandwidth available if someone else is gaming or downloading something, is well worth it for me. Speed also rocks. My ISP currently offers 25 Mbps upload (on paper, really it’s more like 22-23 Mbps). So randomly uploading stuff to a storage box would take a while.

A good ending note would be: no matter how much experience or skill you have, you are guaranteed to run into reliability problems at some point. They may take you 5 minutes to fix, or 5 hours. If that’s OK or you welcome a challenge, go for it!

If you want to support this blog consider joining me on Patreon!

Become a Patron!

Leave a comment