Nearly a year ago, I turned an old laptop into my first ever home server. I had tried to make this laptop useful before by upgrading it with an SSD and installing Linux on it in the hopes of learning progressively, but it was just too big and clunky to be realistically usable compared to my MacBook, so those hopes never materialised. It just sat there gathering dust until the day I saw a video of someone’s Jellyfin setup. As someone who watches a lot of shows, and mostly the same shows over and over again, this turned out to be the perfect push that I needed.
I started out with this video because it seemed like the most simple and straightforward setup for what I wanted - a media server on an old laptop. The only problem that I ran into during the installation process was an infinite boot loop since I had Windows on the hard disk and had installed the Ubuntu Server LTS on the SSD. It took a while to figure out and I finally resolved it by using the boot repair with Ubuntu on a usb (after trying and failing to connect to the internet on the Ubuntu Server). Here’s what to do if that happens to you / Fixing infinite boot loop during Windows dual boot.
Once the Ubuntu server was up and running, the Samba and Jellyfin setup was pretty straightforward. I tested it out by transferring a few seasons of a show, and although it did take a few minutes for the content to show up on Jellyfin (long enough the first time that I thought I’d messed something up) it was pretty smooth after that. I downloaded the Jellyfin app on my phone and my projector, and I was really happy with how seamless the experience was across all my devices. I took a few days to just enjoy this and then went ahead with setting up Wireguard so that I could access my homelab from outside the home (mostly to watch shows during my commute and while I was at the gym).
At this point I was also excitedly watching videos of everything else I could add to my little homelab. I tried out Pi-hole but I was pretty disappointed with it, perhaps due to unrealistic expectations on my part. I thought it would act as an Adblock and block ads on my phone (while I was connected to my home WiFi) but this was not really the case, so I didn’t feel much of a noticeable benefit. I did not really dig too deeply into this - did not setup any custom blocklists and just used the basic recommended one, so that could also be the issue. I also tried out Paperless-ngx, which seems really cool but I don’t have a lot of documents or paper that I want to manage at the moment, so I haven’t been very motivated to use it much yet. Something I do use a lot on it is Open WebUI which I was previously running on my Mac but it felt much cleaner to run it on the homelab so that I did not have to have Docker Desktop running every time I wanted to use it. I’ve also been meaning to try out Immich next, to get a handle on the vast unorganised mess that is my photo ‘collection’ (quite daunting, hence my procrastination).
Something I learnt after using the current setup for a while was that placing files in /media was bad practice by Linux conventions because this directory is the standard mount point used primarily for removable media devices. Setting it up this way also caused access and permission issues while managing media files in the homelab. So my next task is to do some cleanup to fix this and have Jellyfin running in docker too, since it’s the only service currently not.
I’ve noticed that most people seem to use CasaOS or similar GUI alternatives to manage services on their homelab but I intentionally held off on this approach because I wanted to have the CLI experience. Ultimately what I want is for the homelab to be more of a playground where I can learn and try stuff outside of (and without the fear of messing up) my primary device, and I’m so glad to have gotten started.