commit 8d8f2375d85d8aca3bffd264fe216ff1a593202d
parent 9ec95ea98e1be6d267d2aa03ce007bab3baca5cc
Author: Oscar Benedito <oscar@oscarbenedito.com>
Date:   Wed,  3 Mar 2021 19:43:41 +0100

New entry: New home server

Diffstat:
Acontent/blog/2021-03-03-new-home-server.md | 99+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 99 insertions(+), 0 deletions(-)

diff --git a/content/blog/2021-03-03-new-home-server.md b/content/blog/2021-03-03-new-home-server.md @@ -0,0 +1,99 @@ +<!-- title: New home server --> +<!-- slug: new-home-server --> +<!-- categories: Decentralization, Self-hosting --> +<!-- date: 2021-03-03T18:39:00Z --> + +During this past year, I have been coming up with a variety of services that I +want to host from home. The problem was that I didn't have a computer to host +them on, so I decided to buy one before my Christmas vacation, when I would have +time to tinker with it. Because of the gifting tradition, I was asked if there +was anything that I wanted, so I ended up getting it for Christmas instead. In +case you are curious, the computer is a Raspberry Pi 4 Model B, I decided to go +with a Raspberry Pi because it's the only device I have experience with and it +has worked great, on top of having good specs at a good price. I already have a +server running round-the-clock (the one hosting this website), so why did I need +another machine running nonstop? For two reasons: control and proximity. + +When I talk about "my server", I mean a virtual private server (VPS) that I +rent. "My server" can be more accurately described as a virtual machine that +lives in someone else's computer and that I can administer for a certain fee. +This is great for many reasons which can be summarized in "I don't have to deal +with any infrastructure-related matter": the server's owner takes care of +maintenance, broken parts, refrigeration, etc. On top of that, the server has a +very fast internet connection and a static IP. So it's a machine that has all +the needed features to start serving content to the internet. However, because +this is someone else's computer, they have complete access to it. My guess is +nobody is accessing my data—it probably takes some effort to automate scraping +virtual machines, and I think I'm not interesting enough to be a target—, but +that is not a reassuring argument, so I don't trust my VPS with my private data. +With a computer at home, I have full control of everything that is happening, +and I am more comfortable saving personal data there. + +That was related to control, let's look at proximity. The VPS is hosted +somewhere far away (I believe in Germany), so the only feasible way to connect +to it is through an internet connection. This comes with limitations—you need +internet, and internet connections are slower than local ones. Moreover, I want +to be able to unplug external hard drives and plug them into my computer to have +instant access to any data (for example to make a copy to give to someone), as +well as the other way around: I want to be able to grab a USB drive, connect it +to my local server and have all the data available from all the devices in the +network. For obvious reasons, I can't do that with my VPS. Finally, because my +home server is not exposing any service to the internet, it is much harder to +hack it or for some data to get leaked. + +More arguments come to mind of why some things are better hosted at home, but I +think by now the general feeling has gotten across, so let's jump into what I've +done so far and what are some ideas I have for the future. + +What I currently have: + +- **Media center**: Well, something like it... I originally thought about + self-hosting Jellyfin or Plex, but the first time I wanted to use the media + center I didn't have much time to set it up, so I made a *very* minimal Apache + site with an HTML file linking to multiple videos and podcasts I had + downloaded. Surprisingly, this setup has been working great so far. I have + created a script that autogenerates the page from a JSON with all the metadata + of the files I have and I have added some features (like marking media as + "seen"). Now, all I need to access the files is a web browser and, in some + cases, [mpv][] or [VLC][] if the format is not supported on the browser (did + you know you can stream videos with them?) +- **Git backup**: It backs up all my Git repositories from different providers. + It does so with a [Python script][gb] I made some time ago that given some + authentication tokens, will mirror all my repositories (and any others that + I tell it to). +- **Syncthing**: It runs Syncthing as another peer for all my folders. This way, + all my devices are always synchronized with the Raspberry Pi. Previously, two + of them had to be on and connected to have any synchronization. This also acts + as a quick transparent backup for my data, since the RPi is backed up daily. + +My plans for the future are the following: + +- **Expanding the media center**: Add more functionality to the scripts + generating the webpage, add functionality to the website to be able to do some + basic operations without the need to SSH into the Raspberry Pi, and add more + types of content. +- **Backup center**: I'm not sure if "backup center" means anything (or if I'm + using it correctly), but as my backup center, the Raspberry Pi would be in + charge of backing up all my devices. Syncthing already helps with my phone and + some other small folders, but I'd like to improve my backup system so that a + lot more data can be automatically backed up. I think with my home server it + will be much easier to regularly pull data from the services I use as well as + have a centralized location to which send my files. +- **Calendar and contacts synchronization**: Right now, I use my email provider + to synchronize my contacts, calendar and reminders using the CardDAV and + CalDAV protocols. I would like to stop sending that information online and + just have it synchronize with my home server (ideally with the same + protocols). +- **Photo and video library**: I want to centralize all the photos and videos I + have (and the rest of the family's as well) and have a good interface to + access them. This will include sorting them out and will probably take a lot + of time, so I'm not sure if I'll end up doing it. + +... and anything else that comes to mind! I enjoy playing around with new +software and I have been enjoying every step of the move towards a more +self-hosting setup, so I am sure that more things will come up! + + +[mpv]: <https://mpv.io> "mpv" +[VLC]: <https://www.videolan.org> "VLC" +[gb]: <https://git.oscarbenedito.com/git-backup/> "git-backup — git.oscarbenedito.com"