read time minute to read


Project Yggdrasil

Project Yggdrasil

  • mdo  jonas
  •   HomeLab
  •   January 1, 2025

Let’s kick things off with the first project: Project Yggdrasil.

In Norse mythology, Yggdrasil is the world tree that connects all realms, so it felt like the perfect name for the foundational project that makes everything else in my HomeLab possible. Plus, who doesn’t love a cool, catchy project name inspired by mythology?

The goal of Project Yggdrasil was to build the infrastructure for my HomeLab/HomeCloud. Specifically, I set out to create a cloud storage solution and a Kubernetes cluster.

What’s the Goal?

At its core, I wanted to set up a personal cloud. But what does “cloud” really mean? While discussing this with a friend, I realized how vague the term can be. Is a cloud just running applications on someone else’s computer? For me, the answer was clear:

A private cloud is only truly a private cloud if it’s your hardware, your services, and your rules.

So here’s how I define my private cloud—the BoniClaud (because, let’s face it, finding a good domain name with “cloud” in it is near impossible):

  • Storage: Say goodbye to “your cloud storage is full” messages. I want all my images, backups, and files stored locally on my hard drives.
  • Computation: Run services and share them, either within my local network or over the internet. (This blog is a great example!)
  • Networking: All of this runs on hardware in my apartment—fully under my control.
  • Zero-Ops: Admittedly, this might be a pipe dream, but the ultimate goal is to have a system that just works. No incidents, no debugging, no hassle.

Milestones

Rome wasn’t built in a day, and neither is a cloud. To avoid getting overwhelmed, I broke the project down into manageable steps:

  1. Cloud Storage: I started by setting up a FriendlyElec CM3588 NAS board. Depending on where you look, these boards are still pretty affordable.
  2. Install OpenMediaVault: I installed OpenMediaVault on the NAS board to manage storage and also set up PhotoPrism for organising photos.
  3. Kubernetes Cluster: Next, I dusted off my Raspberry Pi 4b and installed microk8s, a lightweight Kubernetes distribution.
  4. Connect the NAS to Kubernetes: Integrating the storage with the Kubernetes cluster was the next step.
  5. Version Control: To manage my configurations and deployments, I deployed Gitea, a lightweight Git service.
  6. Docker Image Adventures: While setting up the blog, I realized that Bludit didn’t have a recent Docker image on Docker Hub. This led to an unplanned detour: setting up Gitea actions to build my own Docker image.
  7. Deploy Bludit: Finally, I deployed Bludit (visit Bludit) to host this very blog.

Mission Accomplished

If you’re reading this, it means Project Yggdrasil is complete! Every milestone has been checked off, and the foundation of my HomeLab is in place. That said, I’ll use this blog to document everything I learned along the way.

Organizing the Posts

Even though Project Yggdrasil is finished, I won’t be publishing all the related blog posts at once. Most of them are already drafted, but they’ll be released weekly.

Posts related to this project will be tagged with #yggdrasil, so you can easily find them. Meanwhile, I’ll be starting new projects and sharing updates on those as well.

What’s Next?

Project Yggdrasil is just the beginning. From here, the sky’s the limit!

yggdrasil homelab


Powered by Bludit - Theme by BlThemes
© 2025 BoniClaud