Maybe you prefer the privacy or the principle of owning your data, maybe you prefer the challenge of setting up your own server at home (or maybe you're intimidated by the challenge). But don't worry! I've went through the process myself, and at times it could get challenging; however, I want to pass on what I've learned through several years of tinkering on my own homeserver. Hopefully this removes some of the scariness of trying to host at home! First, I'll go over some other options you may consider before addressing how to host at home.
Alternatives to Hosting at Home
There are several ways to host your website. Many people prefer hosting websites through a virtual private server (a.k.a VPS). VPS's basically dedicate a segment of a physical server anywhere in the world with many cores and a ton of RAM (memory) into small chunks of "virtual" servers that you can treat as a separate computer. They are similar in many ways to virtual machines that you can run on your computer at home (e.g., VirtualBox or VMWare, if you've used those). A few of the services I'm aware of include Digital Ocean and Linode. Full disclosure though: I've never used these services since I began hosting from home directly.
The advantages are the following:
- Someone else administers the physical server the VPS resides on. This allows for high-availability since others maintain data backups and the connection of the server to the Internet. Hosting at home means making sure your server can connect to the internet, it's powered on, and appropriately backed up (more on that later in this series).
- Fast, stable Internet connection. This can be very useful if you want to stream videos, lots of images, or host your own video conferencing service, and you don't have a very high speed connection at home. If you host at home, you have to have a broadband internet connection for hosting all but the most basic of text-based websites.
- Can be easier to start. Online services have become very good at taking care of a lot of the early legwork for you, like spinning up a Linux OS with some of the configuration already set up. They also have very neat dashboards that can allow you easily set up things like SSH (a secure way to access the VPS), and sometimes webapps, services, etc. Hosting at home, there is a little more time needed to set up the computer serving the websites initially. But! Hopefully with this instruction set it will be much less intimidating for you.
The disadvantages are:
- Cost over time. Basic VPS can be very inexpensive per month, but are usually very limited in resources (1 CPU core, 2 GB RAM, 10-20 GB data). This is fine for hosting a blog site like this one, but if you want to get into hosting your own data or a personal cloud (like Nextcloud), VPS can get very expensive per month (some have plans where you pay for every MB or GB of data transfer, too). For a home server, you have upfront costs like the hardware and the DNS domain name registration, but after that, you basically run the server with no additional cost besides electricity use and very occasional maintenance; it uses the same home Internet connection that you use for your devices. Hard drives have become very inexpensive over time, and if you have an Internet Service Provider (ISP) with no data limits, there is essentially no cost for higher data transfer, and storage is limited only by how many or how large of hard drives you want to use.
- You don't physically own your data. Though many online VPS services claim to not interfere or scrape your data and usage, there is no guarantee as ironclad as hosting your data at home. Additionally, you don't have to be locked in to any one provider over time.
Start Hosting at Home!
Now that I've addressed the alternatives, the rest of the series will be dedicated to setting up your own home server.
This process allows you a standard website address or domain name. For example, mine is jb-net.us, where the name is jb-net, and the TLD is .us (TLD stands for Top Level Domain). I'm going to try to walk through the process I've used myself to start hosting your own websites and services at home. Throughout the series, I'll try to be as explicit as possible in explaining what all the commands and configurations do, and if I'm feeling adventurous, maybe a pictoral diagram or two.
That's it for now, I'll post soon about initial setup and requirements including hardware and getting your own website address!