Alright, this is my homelab progress tracker. I just wanted to explore homelabbing to get to know more about servers, networking and to replicate many other useful tools used in the real world. There are also goodies that come with homelabbing like self hosting my own media and blocking ads at network level.
1.The First Brick
The first step was turning my old PC into a dedicated Network attached Storage (NAS). I installed OpenMediaVault which is based on debian and is beginner friendly and comes with a web user interface.
Alright, this is my homelab progress tracker. I just wanted to explore homelabbing to get to know more about servers, networking and to replicate many other useful tools used in the real world. There are also goodies that come with homelabbing like self hosting my own media and blocking ads at network level. 1.The First Brick The first step was turning my old PC into a dedicated Network attached Storage (NAS). I installed OpenMediaVault which is based on debian and is beginner friendly and comes with a web user interface. The initial and most important step was to setup a static IP for the OMV machine as the router assigns addresses dynamically and they expire once the DHCP lease time expires. This happened to me once and then I had to set it to static by going into the router settings page and assigned the old PC a statis IP based on its MAC address. 2. Secure Boot Chaos HP BIOS is just really stubborn when installing operating systems other than windows. If the OMV machine powers off suddenly (because my area had frequent powercuts) the BIOS settings would get reset to the default thereby turning the secure boot on. I every time have to turn the secure boot off which would then load the GRUB bootloader. This was a real challenge. To fix this issue and make the GRUB bootloader to work with secure boot I had tried a lot of options. The one which worked was for me to sign the kernel and the bootloader itself. I used a tool called sbctl which made me generate some keys using which I had to sign the kernel so that the motherboard trusts everyting. 3. Docker installation and Managing Containers I decided to use docker containers to run everything as it would make managing everything easier. To run Navidrome and Jellyfin I installed the docker plugin which was available in OMV. Docker lets me run each service (like navidrome) in their isolated environments which makes managing everything easy when there are multiple services running. 4. The Linux permission pain I had originally setup Samba shares for copying movies in an easier way but I couldn’t perform read or write operations because the windows user had no permission to read and write. This was an issue at the beginning but then I got the hang of it. Another permissions pain was the docker user who is responsible for running containers couldn’t do that because he wasnt authorized but that wasnt it he also must be able to access the files present in the Samba share folder so that the service can inturn access those files. The solution was simple I gave the required permissions to the user and also specified the PUID (Process User ID) and PGID(Process Group ID) variables in the compose file which made docker run smoothly. 5. Services currently running I now started exploring some good services to host on the server to make it useful. Navidrome (Music server) : It is really fast and smooth and is built on Subsonic API (I think this means it has compatible apps on mobile which I needed). It also has metadata support and organises everything cleanly. Jellyfin (Movies and Shows): This part handles the streaming of movies and shows. There is a naming convention for files which is given in their documentation which I follow to get the correct metadata. I want to automate this using the ARR stack for a future project. Pi-hole(Network wide Ad-Blocker): This is a DNS resolver which sits on port 53 which I had to configure in the router settings page. While its ad-blocking is relatively low for me (I havent configured the block list yet just using the defaults) I use it mainly for Local DNS Resolution. 6. Local DNS combined with NGINX I got tired of typing in the IP address everytime I wanted to access a service so I configured movies.local to resolve to the IP 192.168.20.x:8096. This was done using Pi-hole which resolves movies.local to the OMV server’s static IP on which the NGINX Reverse Proxy manager listens and forwards the traffic to the correct container. This might seem like a small step but this made accesssing everything locally a lot easier. CONCLUSION In this initial phase I had learned a few basic linux fundamentals, static networking, managing user permissions and handling storage. I have given all of my compose files in the Github link. The services are now running smoothly in my home network but for the next step I want to make them remotely accessible from anywhere so even my friends can access the media servers from their home network. This might be a little troublesome because Im behind CGNAT but I might have a workaround for this. I appreciate your time reading this and feel free to give me more suggestions about the setup and some neat services that I can run. PenguinsAreCool.

