After finishing my bachelor's degree, I repurposed my old desktop computer as a server. The computer iteself is a modest desktop from around 2012 with an AMD Athlon X4 750 quad core processor, and I have made some more recent updates, including 16 GB of DDR3 memory and an AMD Radeon RX 6600 GPU. For storage, a few 1-3 TB hard disk drives are mounted. I installed Arch Linux with the long term support kernel for the operating system.
Once I completed setting up the hardware and operating system, I began installing various software components. One of the first was Jellyfin, a free and open source software media system. It's best understood as something similar to Netflix, or maybe the type of in-flight streaming that is becoming more common on airplanes these days. I have been able to use Jellyfin to provide hundreds of movies and dozens of TV shows to my friends and family. I was able to successfully set up the software to use hardware acceleration, allowing the GPU to transcode videos to the appropriate format for various clients. I was also able to use a TV antenna to allow for livestream rebroadcasting of local over-the-air television. These endeavours gave me a strong appreciation for media codecs and containers, something that I previously took entirely for granted. While the primary use case for Jellyfin is for local networks, I wanted to be able to access it from anywhere, so I registered a domain with AWS and pointed it to my server. The overall cost for this project is extremely low, since much of the hardware was repurposed. The only recurring costs are for domain name registration, and the occasional additional hard drive.
Quickly after finishing this project, I realized that having multiple web services running on the same server is slightly less trivial, so I went back and added Caddy as a reverse proxy. This allowed general internet traffic to be router to the appropriate port corresponding to each web service on the server. It also gave me the opportunity to add HTTPS encrpytion.
After that, I set up pi-hole for local network ad blocking, and it has been effective in blocking about 15% of my web traffic, greatly reducing the amount of advertising that gets shoved in my face.
I also set up Immich as a photo/video backup and cataloging solution, similar to what Google Photos or iCloud offers. Besides backing up photos, it has some wonderful advanced features, like facial recognition and geolocation metadata mapping. I typically use this to share my photos with other people, without having to pay monthly cloud service fees.
This server has also been instrumental in working on other projects, since I use it as my primary git remote. This experience taught me a considerable amount about how the web works, and it has given me an appreciation for all of the layers that go into making cloud services work, especially at a large scale.
While these services are all publically accessible over the internet, they are all password protected and I will not share the URLs or set up accounts for anyone but friends and family. I enjoy working on these things, but only as a hobby for the time being.
This server is also responsible for processing digitized radio data served in real time over my local wireless network. SatDump is the software that enables this exciting feature, and the real-time status of SatDump's processing and schedule can be monitored at satdump.kevin-dee.com. Currently, the final image products are only stored locally.