We've almost about made it through an entire year of Tidy '24 posts. Can you believe it? Only a few more weeks to go.
This week begins Wildcard Month, where we explore a variety of topics without spending multiple weeks on each one—a sort of potpourri of digital organization and related things. For this first wildcard topic, we'll look at self-hosting. I chose this one for a few reasons:
- I personally enjoy it tremendously
- If you already know about it, you might feel the same way
- If it's new to you, you might find it interesting even if you don't use it
Enjoy!
Wildcard Week 1: Self-Hosting
Once upon a time, pretty much everything you did on a computer happened on your own hardware. Word processing, graphic design, publishing, taking notes, making music, playing games—all of these things required acquiring standalone programs that you could install and run from floppy disks or, later, CD-ROM or DVD-ROM discs. (Photo management was still done with prints and physical albums, since digital photography was extremely young.)
There was no consumer-grade internet. Networks were slow, complex, expensive, and found (where they existed at all) mainly in the realm of business, education, and government. Even as regular users began to adopt the internet, first with dial-up connections and then with early broadband solutions like ISDN and DSL, it took decades for it to grow into the underlying platform we use for just about everything.
If you'd asked someone in 1995 whether they self-hosted their calendar software, they would have been utterly confused by the question. It would have been like asking a fish if it likes being wet.
The idea of self-hosting only makes sense if you know what the alternative is. Even today, it might seem like a foreign concept if you've never heard the term before or simply don't think about where your data is and whose resources are required to manipulate that data.
Simply put, self-hosting is when you choose set up software on your own computer(s) that replaces a service that many or most other people use an always-online cloud-based service for.
Here are a few example of cloud services (not self-hosted) for some common tasks:
- Google Photos for photo management
- Google Docs and Sheets for documents and spreadsheets
- iCloud for calendar and contact management
- Notion for note-taking
- DropBox for file sharing
It may surprise you to learn that every one of these services can be replaced with software that you run on your own computer and access without internet connectivity. (File sharing among your own devices at home may be more limited than you want, but more on that later.)
How Does It Work?
In pre-internet days, programs like word processors, photo editors, and games relied on their own set of files stored in a specific place on your computer. You'd generally install something on only one device, and anything you did was stuck on that machine with that installation (unless you knew how to copy files around on removable media).
That’s still partly true today, but it seems like just about everything also relies on the internet for one reason or another: automatic updates, cloud data backups, sharing data (intentionally or otherwise), and so on. Is this really necessary?
Well, yes and no. It’s certainly necessary for a service like Google Photos to have a connection to the internet so that you can access it from your devices via your own connection to the internet. But what if the Google Photos server could somehow be in your house?
I know that might sound ludicrous. Isn't a server some big, expensive, special computer that costs thousands of dollars and needs care and feeding that we mere mortals are unequipped to provide?
Actually, no. Or at least, not always, and especially not if you intend to self-host services for a very small number of people: yourself, your family, perhaps a few friends. Expensive, high-performance server hardware is engineered for longevity and reliability under harsh conditions and heavy usage. These are great features, of course, but arguably unnecessary if you just want a few simple services that half a dozen people will use lightly now and then.
In fact, you can get an off-lease ready-to-go mini PC from Facebook Marketplace for $100-$150 that will work great for personal self-hosting experiments. You wouldn't want to deploy it in any other environment for that purpose, but that's the point. You don't want to do that.
(One caveat: if self-hosting AI/LLM tools is your passion, you won't get away with a $150 machine, because you'll want a much, much beefier graphics card, a.k.a. GPU. But that's a topic for another post.)
Not long ago—even just ten years—it often took a lot of work to set up a server for this type of software. But with growing interest and adoption, standardized and streamlined solutions have emerged. There’s no one-size-fits-all solution; being able to customize to your heart’s content is part of the fun, after all. But there are quite a few options that come pretty close to being turn-key: just download, install, and off you go.
What About Remote Access?
One of the biggest benefits to using services like iCloud, Google Photos, and Dropbox is that they are by definition always available if you have a working internet connection. (Well, other than rare outages, of course.) You can connect to them from your desktop at home, your laptop at school, and your smartphone anywhere.
This is not automatically true for anything you host at home, nor should it be, as that would be a huge security risk. Without getting into technical details, just know that you can intentionally allow remote access to specific services inside your home network so that you can use them from your phone or laptop away from home. There are actually many possible ways to do this, some quicker and easier (but with more risk) and some more paranoid and secure (but requiring more effort).
For example, one of my more recent self-hosting deployments is Nextcloud, which now powers my contacts, calendars, file sharing, and cross-platform data syncing. I set it up with acceptably secure remote access so that I can get to it seamlessly on my phone and laptop. I've done the same thing with Mylio for photo syncing and organization. Secure remote access is usually one of the more complicated things to set up, but it's still possible.
Why Would You Self-Host?
Good question!
Here are a few reasons why people choose to set up self-hosted versions of services that are readily available in the cloud:
- 🔏 Privacy: If you host everything yourself, you know where all of your data is, and there's relatively little risk of anything falling into the wrong hands if you set it up properly. ("Properly" in this case does require more technical knowledge than average, though.)
- 💪 Control: When you set up all your own services, you no longer depend on other companies or people to keep those services running. Google, for example, has a long history of shutting down many services—most with relatively small audiences, but also some extremely popular ones. (However, being in control of your own hosted services also means you're also in charge of maintenance.)
- 💵 Cost: Much of the self-hosted software available today is open-source and available for free. These options have no up-front or recurring costs. Others have a small one-time cost to obtain the software, but then you're done other than optional future upgrades. A few have no up-front cost but offer some premium features for a small recurring fee, often to encourage developers to keep improving the software. (Fair warning: unless you value your time very cheaply, you probably won't come out ahead--or even break even--unless you self-host half a dozen or more services that you'd otherwise be paying for.)
- 🎓 Education: Learning about self-hosting and actually doing it yourself poses an interesting technical challenge and provides an excellent opportunity to learn a lot about computers, networks, security, system administration, and other topics. One of the best ways to learn how something is done is to do it yourself, especially if you have to find your own way through some of the trickier bits with hands-on experiments and research.
- 🎉 Fun: Yes, you read that right. Self-hosting stuff can be just like any other hobby: enjoyable for its own sake, a way to keep your mind engaged, a way to stay informed about the one corner of the wide world of technology. (Although, also like any other hobby, the hardware and time costs can balloon rapidly if you aren't careful.)
Over the last 20 years, I've gone back and forth with various self-hosted solutions. Most of my early choices were made out of curiosity or convenience, or to see if I could figure out how to do something cheaper than it would cost for a subscription service. And, of course, the options available have changed drastically over those same 20 years. Sometimes, it just made sense to use the easy, ready-to-go services from Google, even though I knew I was the product and my data was the payment.
These days, I'm slowly gravitating back towards self-hosting more and more services. All five of the reasons listed above play a part in this shift, some more than others depending on my mood or whether I've just read an article about yet another data breach.
How Do I Get Started?
There's no right or wrong way to begin your self-hosting journey. The only thing I'll say is that you should be ready to learn more about computers and networks than you knew before, and you will eventually want to have at least one computer dedicated for your self-hosted services so you don't need to keep your personal computer on and running just so the services you want to use remain available.
If you have the budget for it and enough interest to know it's worthwhile, I'd recommend two pieces of hardware and one software platform to give you great flexibility:
- A network-attached storage (NAS) device for keeping your important data in one easy-to-back-up place, such as a Synology DS1522+
- A dedicated server computer that can stay powered on all the time, such as an off-lease HP EliteDesk 800 G5
- ProxMox virtualization software (video link) to run on the server, which makes it much easier to try new things without breaking anything important
Fair warning: this is a deep rabbit hole. It's fun if you like this stuff, but it can be daunting. Reach out to me if you aren't sure whether it's a good idea or you'd like some additional resources.
Otherwise, here are a couple of starting points:
- Mike Royal's Self-Hosting Guide (List of How-To's, concepts, and lots of self-hosted software)
- Self Host 101 - Set up and Secure Your Own Server (YouTube video)
That's all for now. As always, send me any questions or comments you have, and happy data-taming!