During my Freshman year of college, I started experimenting with home servers. I wanted a good solution for me and my family to use to store files like photos and music, and after further research I went with CasaOS. CasaOS is an Open-source software that allows for simple homelab applications to run on any device. It is a piece of software that runs on a desktop but can be managed by any device running on the same network. CasaOS is essentially a portal that allows you to run web applications on any device.
My family wanted an easy way to share photos, so I installed a container called photoprism that allows my family to upload as much photos as they wanted to onto the system, and this is better than paying for software such as iCloud or Google photos because I am the one who controls where the photos are stored. My friends also asked me if I would be able to use the CasaOS server to host a dedicated gaming server, which took some time to configure but I eventually found a container called crafty which allowed me to easily host a Minecraft server. These experiences have taught me the basics of custom networking and because of this I am able to move onto bigger projects such as learning active directory.
CasaOS has a lot of community support. The CasaOS Wiki contains a lot of helpful information in setting up this software and has allowed me to work on these projects. There is also a Github available to the public and the developers of CasaOS often help community members with problems related to creating containers and with installation. I have used their Github to see if any issues I have encountered have been ran into by other people, and with the amount information available on Github I was able to fix every problem I ran into.
In order to create a home lab, I had to purchase a server. As a college freshman, I wanted to save some money, so I decided to go with an older HP Elite Desk small form factor mini pc. I found a computer online for $80 and it came with a 6th Generation Intel CPU and plenty of RAM for many task to run.
I also had to choose an operating system to host this server on. I didn't think Windows Server was a great option for me then because of the pricing, so I decided to go with the free Open-Source route and use Debian. Debian is very secure and is very stable compared to Windows Server.
I wanted to use this server anywhere I went. To allow myself to access this server, I decided to purchase a VPN (Virtual Private Network), and this is the safest option to remotely accessing the server. There is another option however, and this is when you port forward port "80" and "443" to your static ip address. This is a bad option because botnets, brute force attacks, and exploits can target your ip and attempt to log into your server, which is incredibly dangerous.