I’ve been entertaining the idea of starting a homelab a few months ago but never found the time to really start one. And for a while It’s been out of my mind until recently the thought came back and I suddenly have this urge to make one.

The Plan

I’m planning to start with a single mini pc as the server. It would look like something like the image below.

Server

Server OS

  • Ubuntu Server - For the actual machine I will be installing the latest LTS release of Ubuntu Server.

Apps running directly

  • cockpit - for monitoring and managing VMs.
  • docker - for running containers.
  • kvm - I think the cockpit-machines uses kvm for running VMs.

Docker on host

Here are some of the initial services that I’m thinking of hosting.

  • minio
  • gitea
  • docker registry
  • newt
  • portainer

VM

For the VM I also plan to install Ubuntu Server on it same as the host. Will also have docker installed. This will be my application server.

  • cloudflared
  • nginx
  • docker

Docker on VM

All of the web apps and backend would go here.

Exposing to the Internet

My network is on CGNAT so my plan is to use cloudflare tunnels and newt to get around this.

Cloudflare tunnels inside the VM to reverse proxy nginx then nginx to reverse proxy the containers.

For minio, gitea, and docker registry I plan to use newt and pangolin. Why not just cloudflare tunnels? Well because I’m not sure if these services are allowed by cloudflare’s TOC. But yeah for this one I also need a VPS to host pangolin. So VPS -> pangolin -> newt -> minio, docker registry, gitea.

Cockpit and Portainer will just be accessed locally on my network for now since they are more for admin and managing things for the server. I’m not yet comfortable exposing them to the wild. Or maybe I should also run tailscale for this?

HOMELABを作りはじめましょう!

And that’s the plan. First thing to do now is get a mini pc and start setting things up.

Thanks for reading. またね!