The Joys of Running a Home Server

Over the last handful of years I’ve got deeper and deeper into running a home server / selfhosting apps. If you love playing around with tech, there’s so many cool and fun things you can do with a home server setup.

It started simply enough: I wanted to have a live backup for my familes files and photos at home, so I bought a little 2 bay Synology NAS (it was a DS218, but the current model is the DS223). That was a fun little machine! Synology has put a lot of work into their DSM OS and it’s very easy to use and a great entry point if you’d like to dip your toes into Home Server stuff. Obviously it’s primary purpose is for storage, but there is a great bunch of apps you can run on your Synology (it has it’s own little app store with all the basics and you can extend it with the community store for even more options), AND it supports Docker containers, which allows you to run practically anything you can imagine.

If you buy a Synology NAS keep in mind it’s not meant to be a powerhouse server, so you can’t go too crazy with the number of apps running off it. However, I was surprised just how many things I could get away with. At one time I had this blog, Plex, a file sync service, and a bunch of the default Synology apps running off it with no issues. It did start to chug when I tried to add a Minecraft server though… So like, not bad! If you want a small, quiet, power efficient, easy to use NAS that can handle a few other tasks, you’d be hard pressed to find something better than a Synology DiskStation.

(When I wrote up my last post on searching for a useable Google Photos replacement I left out Synology Moments, which is pretty great in it’s own right! You just need to have a Synology NAS to use it).

This setup worked great for a while, but then one day my brother-in-law asked me if I wanted an old Dell PowerEdge rack mounted server he wasn’t using anymore… and how could I say no to a free server?!? This thing has 2 10-core CPU’s and 96GB of RAM. I’m not even sure if I can utilize all this power even if I tried! Suddenly I’d gone from struggling to run one Minecraft server to easily running a dozen if I’d wanted.

At the suggestion of a friend with a similar setup, I decided to run UNRAID on it for the OS. UNRAID is a Linux based OS that as the name implies, doesn’t use RAID for data redundancy. Instead, it uses what are called “parity” drives, which is a drive that for each byte contains the sum of the same byte on all the other drives. That way if one drive goes down, you can reconstruct it using the others and the parity drive. I didn’t even realize that was a thing. How cool is that?

What UNRAID really offers is flexibilty. You can have any combination of hard drive sizes, speeds, or brands, no problem. It can make it all work together. The catch (and it’s a minor one) is that your parity drive needs to be your largest drive. This makes sense as how else could you calculate the sum of a byte on the drive doesn’t have bytes numbered that high on it?

The OS is accessed almost entirely from the web and is very intuitive and easy to use. Obviously it works great as a NAS and makes sharing file access over the network a breeze, but it also has Wireguard VPN built in, can run Virtual Machines, and (most importantly in my mind) has a really lovely interface for running Docker containers.

For those unfamiliar with Docker containers they are similar to running virtual machines. However, where with virtual machines we are emulating the hardware, in Docker’s case we’ve bumped that up a level and we’re emulating the operating system as well. The advantage here is that each Docker container comes bundled with copies of it’s own prerequesits, so you never have to worry about finding the right version of an application to work with all your programs. This makes deploying, maintaining, and updating Docker containers a breeze. For a great intro to Docker, I recommend Network Chuck’s Docker Containers 101 video.

Like I mentioned earlier, UNRAID has it’s own Docker container manager that works great. It’s simple and has everything you’ll need to manage containers. They also have something called “Community Apps” which are containers that come with a configuration file that allows you to easily setup a container with pre-filled defaults. Most of the popular containers have a Community App configuration setup all ready, and if they don’t? No worries! You can search the DockerHub collection of containers directly by clicking the “Click Here To Get More Results From DockerHub” button:

look, there it is

When you grab a container directly from Dockerhub you also have the option to attempt an automatic community conversion where it will try to setup all the ports and mapped drives the container requires. In my experience this works quiet well and I rarely have to fight with it further.

Alright, I’ve told you my entire life’s story and how I got to this point, but what am I actually running on my UNRAID server you may ask? What makes all this effort worth it?

Good question! Here’s a non-exhaustive list of some of my favorite self-hosted apps I’m running:

And here’s some of my favorite resources for learning more:

What’s next? Well I haven’t got into the world of Home Automation yet, but I swear everyone I know is into it so I suspect I’m going to get sucked into that one sooner or later.

Immich – Finally, A Good Self-Hosted Google Photos Replacement

As I mentioned in my last post, I was on the lookout for a self-hosted Google Photos replacement. The first thing I did was get PhotoSync for my phone so I could get all my photos going forward synced to my NAS and sorted nicely (it’s a great little program, highly reccomended).

Then I started testing out different photo management software and THERE ARE SO MANY OPTIONS. LibrePhotos and PhotoPrism were amoung the better ones I tried, but all of them left me feeling disappointed. It turns out Google Photos has a lot of features and I don’t like missing any of them! (Call me greedy if you must). Some could only have one user, didn’t have automatic face detection (or even worse had horrible face detection), wouldn’t accept a pre-existing library… the list goes on and on.

I was close to giving up when I heard about Immich. It looks almost identical to Google Photos, it supports multiple users and external photo libraries, it has android and iphone apps, and it’s face detection algorithm is half decent! I am VERY impressed!

There are a few missing features/things that annoy me about it, but thankfully Immich is in very active development so there’s a good chance these things will get cleared up in future updates. In fact, in the time I’ve been using the app they’ve already fix two things that were bugging me:

  • Added in the ability to modify the date/time of photos from within the app – something I had to do all the time in Google Photos. (This might still be broken for external libraries, but it’s a start).
  • Added in the ability to correct false face detection matches – My wife and 4 year old looked very similar as toddlers and the auto detected faces for them are all mixed together haphazardly. I’m not sure if there’s a way to outright remove a false detection (it seems you have to pick a new person to assign it to?) but this is veyr welcome fix.

None of these other issues are showstoppers for me… but I’m going to list them anyways:

  • You have to manually refresh “External” libraries. By default, Immich expects you to upload photos from the phone app to the default library. In my case I already have all my photos organized on my NAS (and I’m adding new ones using the aformentioned PhotoSync) and I just want them to show up in the app. Thankfully, they have a feature called “External Libraries” where you can point it to a folder and have it include those photos. This works very well except that you need to go in and manually trigger a refresh of the external libraries to have any new photos show up. A bit of a pain in the butt.
  • You can’t delete photos from External Libraries from within the app. For some reason they haven’t given the app the ability to delete externally linked photos, if you want them gone, you need to go directly to the file system to do it. Another small pain in the butt.

Realistically those are minor gripes. Overall this is a fantastic, and frankly, the first truely great Google Photos replacement I’ve seen. Kudos to the developers! Thanks to your efforts I might be able to decouple myself from Google Photos yet!

AllDup Photo De-duplicator

Like a lot of people I was mad when Google Announced that they were ending free photo storage for Google Photos a couple of years ago. I’d become pretty used to storing all of my photos there, and I didn’t really feel like paying Google more money than I already do, so I figured I’d find a way to manage all my photos myself. I’ve got a nice giant NAS and have got into Home Server stuff lately (more blog posts on that in the near future) so why not?

Well I had one major problem… my photos were a mess. I had kept some of them backed up on my NAS, my local PC, and some where only on Google Photos… and a few maybe just on Facebook? There was definitely a lot of overlap, so I needed some way to find the duplicates and remove them. It’s easy to find and remove IDENTICAL files, but what about a copy of the same photo that was re-compressed by Google or Facebook? The problem seemed too large to tackle, so I left it for a couple of years, trying to keep all new photos going forward organized and vowing to come back to the problem when I had a proper solution for it.

That solution is here, and it’s not even new! I came across a windows program called AllDup that does EXACTLY what I need (and it’s been around for years). It makes a tiny thumbnail style version of each photo you throw at it, and then logs any that meet a certain threshold of similarity (I found the default setting of 92% to work very well). You then go through the list and delete the ones you don’t want. Simple as that! You can even throw it two separate folders to compare against each other which worked great for comparing my Google Photos library against the mess of photos on my desktop. That way you can tell it “delete the ones from this folder where a match exists” if you know, for example, that the photos from Google will be more compressed than the ones already on your desktop.

Just switch the Search Method “find similar pictures” and you’re good to go!

I noticed very few false positives. It only happened when there were many shots in quick succession (with very little change between them) from a photo shoot, which were easy to identify and ignore. Overall a VERY impressive program!

So I’ve Been Playing a Lot of LETHAL COMPANY

this video contains all of my screams

The kids keep me pretty busy these days so I don’t get up to as much gaming as I used to, but a few of my friends and I heard about this LETHAL COMPANY game that’s been blowing up on Steam and had to give it a go. Holy crap this game is fun. Again, I do not have a lot of free time, but I’ve been drawn to spending most of it playing this stupid and hilarious game the last couple of weeks

For the uninitiated: you work as a team of 4 flying a spaceship to various moons so you can rummage through abandoned warehouses and haunted mansions looking for enough scrap metal and other junk to sell to the company so you can make quota. Also you have to run away from monsters. It’s so beautifully stupid. What ties it all together is the excellent proximity chat. There’s nothing more terrifying than hearing your friends scream cut short in a nearby room…

I’m always amazed at what weird little game concepts blow up big. It’s crazy to think that one solo dev made this game and it’s outselling all these massive blockbuster games with multi-million dollar budgets made by hundreds of people.

So all that said, if you want to see me scream in terror and swear a lot at every new monster I encounter… then this highlight video is for you (you weirdo).

Fixing the 3DS Black Screen of Death

My 4 year old is obsessed with Super Mario 64 (good choice!) and I sometimes let him play the hacked port version on my New 3DS XL, but the other day it stopped working almost entirely. When you pushed the power button the blue light would turn on, and you could hear some sounds… but the screen never lit up. I did some reading online and I guess this is a fairly common 3DS issue with a multitude of possible causes: The black screen of death (BSOD).

Well I ran through the list and nothing was working. I tried leaving it on for 10 minutes, pulling the battery, updating the Custom Firmware, performing a CTRTransfer, restoring a NAND backup (thankfully I made one when I installed the CFW in the first place), even trying the more insane sounding CTRTransfer Type D9 script (and I had to find an older copy of the CTRTransfer file as the newest one didn’t seem to work with this script), and NOTHING worked.

Then I refined my search with the additional information that I could still hear the sound, and that let me to this thread post claiming that the camera might be broken, and unplugging it’s ribbon cable might solve the issue.

Holy crap that worked! I have no idea how anyone ever figured out that a broken camera could cause your system not to boot but I sure am thankful they did!

  • Image from the GBATemp Form post detailing the issue.

Anime “Time for Lunch!” Announcement

Story Time: On days we are working remotely, my coworkers and I have a pre-lunch virtual meeting to catch up on our plans for the day. My boss famously ends the meeting with almost the exact same sign-off every day. I secretly recorded him once so I could play back the video on days he’s unable to attend (whether or not my coworkers want me to) and have consistently kept that up for the past few months.

Last week one such coworker semi-jokingly asked if I could redo the video as an anime scene, and of course I had to do it. Six hours of work later and here it is!