---
title: 'The Homelab Series: Part 1 - The Start of It All'
url: 'https://thanhvokhac.com/blog/homelab-series-1'
markdown: 'https://thanhvokhac.com/blog/homelab-series-1.md'
date: '2026-10-28'
description: 'It all started when I needed a CI/CD service the most... Introd'
taxonomy:
  category:
    - Homelab
  tag:
    - Homelab
    - Introduction
    - Self-hosting
    - Docker
---

# The Homelab Series: Part 1 - The Start of It All

It all started when I needed a CI/CD service the most...

## Introduction

Welcome to my vault, it is quite fortunate to see a visitor. Let me tell you the root of all this... series, and a bit of me.

I am Thanh, or call me **luckydoG\_** if you would, I work professionally as a Game Programmer, some time in 2025 I started a personal Unity project with some of my colleagues to create a roguelike game. Things were quite smooth, we worked on the editor, played some previews, did many iterations to improve the gameplay. Then I knew we hit a wall very soon after that.

Our target platform was mobile, as we already have some experience with it. However, playing a game in the editor is much different from playing it on mobile: performance, input gestures, visual appealing,... We needed a way to play the game on our phones to actually know what is happening with it.

---

## The early CI/CD

I built an one-click-one-build option in Unity to build the game. Okay-ish, but every time I wanted to deliver the build to the other guys, I was left with:

- Sending it via chat.
- Uploading to a cloud platform, then ask the guys to download it.

Well, manual work, and I was too lazy to wait for the build, then upload it somewhere, and nudge everybody. So I thought life should be better. I digged reddit and found out [GNU Make](https://www.gnu.org/software/make/) can be the CI too. I was left with a platform to upload a build, so I chose the classic Firebase Distribution.

![Makefile.png](https://thanhvokhac.com/images/3/2/5/a/1/325a13610735b7dcf0900e1dd8494dec6d109ffc-makefile.png)

*A peek of the Makefile I used to automatically build and upload to Firebase.*

So, yeah, I was quite happy with that, until I get tired of the command I had to type :)

`make android bundleVersion=0.2.1 bundleCode=21`

Short? Well in order to upload to Firebase I also had to:

- Create a release note file under `UserSettings/` for the pipeline, so that the pipeline picks it up and sends to Firebase for me.
- Keep a secret file on my machine. If it is accidentally lost, I have to download a new one, put to the `Secrets/` folder.

If another guy wants to build, I would need to introduce him to the CLI, the release notes and giving him the secret file.

I am a lazy guy, I wouldn't go down that path all day.

---

## My first Self-hosted service, ever!

I took a step further, looking at what we usually do at work, and I found [Jenkins](https://www.jenkins.io/), a free, open-source software that can be hosted by anyone.

![jenkins.webp](https://thanhvokhac.com/images/d/0/c/c/7/d0cc7d20530d768a660a59c7a10a56cb2318a9cf-jenkins.webp)

*You know you can trust this man when it comes to CI/CD.*

So I did, I hosted the Jenkins docker container on my PC... and ran a agent on the same machine!

I also created a new branch just to test my Jenkinsfile for the new automated build workflow. If you know you **will** know, writing a working Jenkinsfile is somewhat an art. It took me a week of side work just to stick the new CI/CD to my project, it wasn't as terrible as it sound, it was very fun, at least for the tinkerer like me.

And the return? Now I have a GUI to input, and everything in one place.

![Jenkins_Build.png](https://thanhvokhac.com/user/pages/03.blog/homelab-series-1/Jenkins_Build.png)

*How cool is this? A CI/CD pipeline for my own!*

## Conclusion

It was a personal project and a CI/CD service that changed me. I wanted to automate as much things as possible, from a Makefile to build to a small Jenkins server on my machine.

Achievement unlocked: first self-hosted service.

Reward: a bunch more to come, and two old machines to run them.

---

## Navigation

- Parent: [Blog](https://thanhvokhac.com/blog.md)
- Previous: [The Homelab Series: Part 2 - The First Steps](https://thanhvokhac.com/blog/homelab-series-2.md)
