Why you should have a home server
Tags: productivity, opensource, discuss, learning
Published: 2024-03-31 15:28:02

Do you have multiple machines for working (your desk computer, a notebook, maybe a tablet)? Are you tired of keeping all of them updated with various packages, versioning, etc.? Are you tired of thinking "Why does it work fine on MY machine"? Ever feel like your data is scattered across different devices? Photos on your phone, music on your computer, important documents everywhere, and even more, having to PAY to keep those files on the cloud? Do you have a thirst for knowing HOW things work behind the scenes? 

I may have a solution for you! 🥷🏽

A home server can be your digital butler AND your personal Jarvis, centralizing everything and making it easily accessible, even if you are not connected to your local network. Think of it as a personal cloud storage system but with some key benefits: You're the Boss, the Dungeon Master, the Dom, the One That Rules. You control who sees your information and how it's secured. Plus, you can set things up **exactly** how you like them, unlike relying on third-party services.

And how a home server can improve your life if you are a developer or a tech enthusiast?

**Centralized Storage**: Forget about searching for documents everywhere, or PAYING for mere terabytes of storage. With a home server, all your devices (phones, laptops, tablets) can access your files from one central location.

**Automatic Backups**: Worried about losing precious photos or work files? A home server can automatically back up your devices on a remote setting, for extra security. Do all Time Machine backups over the network.

**Media Streaming**: Tired of paying for different streaming services? Or, do you have a collection of movies and don't know how to stream them? Set up your server as a media hub to stream music, movies, and TV shows to any device in your house AND people outside, if you want it.

**Personal Cloud**: Free yourself from limited storage space on cloud services. A home server lets you expand your storage as needed (just buy an extra HDD / SDD), keeping everything under your control.

**Dedicated Development Environment**: Set up **your server** as a development machine. Install all your favorite programming languages, frameworks, and tools in one place, keeping everything else clean. Access all tools needed from any device, anytime!

**Testing Playground**: Need a safe space to test your code before deploying it live? A home server is perfect for setting up test environments, simulating real-world conditions without risk, and keeping costs low.

**Local Server for Development**: Develop web applications with ease by hosting your backend and frontend directly on your server. This lets you test and debug locally before going public without lag or downtime.

**Learning something new**: Not exactly the endgame here, but let's be honest, if you are a dev that knows the ins and outs of a Linux server, you have an advantage.

## OK, I'm Sold! What do I need to start? 

### A computer

![Image really] (https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYTlzaDBydDQyZzF5bGxzZGZsN281NGQxeXgyZGk2ZWVnbHliMTc2dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/kt3PrO9QV6xMsF67oD/giphy.gif)

OK, that sounds stupid, but that's basically it. Get a reaaaaaly simple computer, no need for fancy LEDs, cases, etc. Does it turn on? Does it have at least 4GB of RAM and an HDD? It can be a server. You can even repurpose an old computer to get started. The only requisite is that it can connect to a network and be reliable enough to keep running 24/7 without wasting too much energy.

I'm using a Raspberry Pi 4B with 8GB RAM and it works fine, with just some issues when PhotoPrism tries to index my 1TB collection of old internet memes, but that's my fault, I'm talking thousands of images here.

### Docker

Let's be honest, everyone likes simplicity. And Docker is simple. Keep different packages installed, even if they have compatibility issues (library versioning, for example). And there are HUNDREDS of ready-to-install packages for your needs.

### Minimum Shell knowledge

If you use a *nix, most of the home server setup and maintenance will be via SSH, so you need to know how to execute basic commands in the terminal.

And that's it, everything else is on your own. Install PHP, Node, Python, or whatever you need. It's YOUR server, YOUR configuration. In my case, I even installed [Hommar](https://homarr.dev/) to avoid having to remember a lot of different addresses. And, unless you want it to be available to the world, it's secure.

If you value control, security, and easy access to your data, then it's worth considering a home server. It's a great way to take charge of your tech and streamline your digital life. For developers, it unlocks a world of possibilities for building and testing your code in a dedicated environment. And it's a cool side project 😃

(Should I make this a series, showing more tips for home serving? Let me know in the comments)