Phase Complete

This project started more than two years ago, and I have reached a milestone of sorts. I’m not sure what the original goal was, but it started with creating a Jellyfin instance that was accessible to the internet. It has, of course, become much more than that, and the ultimate goal shifted dramatically; the new and current goal is to replace Google (and more). Here’s a mostly comprehensive list of what I’m running.

Have I done that completely? For the most part, yes, I have replaced Google services with my own self-hosted options. The most glaring omission is my domain hosting. Google domains was the easiest, relatively cheap, and other reasons. It’ll probably be the last service to be replaced.

Nextcloud

Nextcloud was one of the first services I set up and had completely working. Originally, it was only to serve as a photo backup and still serves that purpose. I haven’t used Google Photos for years, so I’m not itching to replace all of that functionality (PhotoPrism or Immich will probably do that). However, as I continued to use Nextcloud, I realized how powerful it is. It now replaces these services:

  • Web email
    • Just for checking in a browser. My email is still split between Gmail and an other email service.
  • Drive
  • Contacts
  • Calendar

Pi-Hole

I originally just used Pi-Hole for its DNS sink capability, but the thing with that is that I was still getting my DNS from Google or Cloudflare. That won’t do! Enter Unbound. Unbound goes out and finds DNS entries from sources higher than Google or Cloudflare, so when Pi-Hole is pointed to an Unbound instance, it answers all of your DNS queries with bespoke, magical responses. Or something like that.

Vaultwarden

I’ve never used a password manager apart from the built-in options from Chrome and Firefox. My normal routine was *cough* just a spreadsheet stored on Drive. I’m still trying to trust Vaultwarden, but so far my experience has been ok. Eventually I will delete the passwords and disable the manager in Firefox, but I’ll still be keeping a ‘paper’ copy somewhere.

Wireguard

It makes sense that I might want to use my new adblocking capabilities on the run, so I started using Wireguard. I experimented a bit with OpenVPN running on my router. It worked, but it felt slow. Several reviews and tutorials suggested that Wireguard was much faster than OpenVPN, and of course faster is better. I did notice a difference: while OpenVPN would score about 60mbps in the wild on T-Mobile, Wireguard seemed to run at roughly network speeds. More testing is required.

Word Press

The words your reading live in a small, square box on a shelf next to my TV. I’ve worked with Word Press for years, but this is my first web-exposed instance and I love it very much.

Jellyfin

The original raison d’etre for this project. It mostly works, although transcoding has been a constant issue. I think it’s my enormous 4k bluray rips combined with a lack of knowledge that is the problem.

Hidden Heros

There are a few mostly invisible stars that also need to be mentioned. Home Assistant is also web-exposed, but I feel like it’s an outlier as it doesn’t replace any Google services. Also, it’s running on its own Raspberry Pi and not the main server (annoying, I’d like to migrate to the main server). It’s an amazing program, but represents an infinitely deep rabbit-hole and that’s all I have to say for now. Caddy is my reverse-proxy of choice as it was the only one I could figure out how to make work. All of these programs run through Docker, and I use Portainer to organize and inspect the containers. Up to recently, I had been using Termius as my terminal program. I’ve been expementing with Visual Studio Code, however, and it seems like a much more powerful tool. And lastly, I have Fail2Ban and UFW running on my little black brick.

While not entirely a software solution, I have also integrated a UPS into the system. It’s a CyberPower model, and comes with a USB port for communication with the server. The software the UPS uses is called Power Panel, and although command line only, it is shockingly easy to configure. The UPS I have will run my network (server, router, fibre box, a small switch, and a Raspberry Pi) for about an hour.

That’s a brief synopsis of the system, I’m sure I’ve left something out. I have plans for the future, but for now I am focusing on making sure the current system runs as well as possible. The journey to this point has been crazy, and I really felt like I wasn’t going to finish. I gave up a few times, but I’d revisit a given issue, solve it, and then experience a renewed interest in the project as a whole. Eventually I gained enough momentum to get to this point, and I’m very happy with the results.