Celyrian

Seven chaptersHow a Minecraft server turned into a homelab. Self-hosted, self-taught.

Celyrian

Never done. A bit better than last year.

1

Linux

I was a kid and I wanted a Minecraft server so my friends and I could play. I asked my father for one. He gave me a Linux VM instead. What arrived was not a game. It was a black screen with a cursor in the corner, waiting. Everything I do now grew out of that.

  • Minecraft
  • Linux
  • Bash

Milestone: A blinking cursor

2

Game Servers

Then FiveM, which meant Lua, and Lua meant databases. A player does not exist unless something stores them. Restart the server and they are gone. That was the first time I understood that the game is not where the state lives. It has to sit outside, in a database. Which is still a file on disk, obviously. Just not one you open.

  • FiveM
  • Lua
  • SQL
  • MariaDB
  • MySQL

Milestone: Players survive a restart

3

C#, Docker, certificates

Somewhere in there came C#, and with it the difference between code that works once and code that has to keep running. Docker came next, and with it Traefik, which is the thing that decides where a request goes. Traefik also handles certificates, so I had to learn what a certificate actually is, how long it lives, and what happens when nobody renews it. Reading about TLS 1.2 and 1.3 to get that right is how I ended up reading about security generally.

  • C#
  • .NET
  • MSSQL
  • Docker
  • Compose
  • Traefik
  • Let's Encrypt
  • TLS
  • WireGuard

Milestone: Certificates renew on time

4

Enterprise setups

Later came enterprise setups. Backups first, which is a subject you only take seriously once, and then git, and then the habit of version controlling everything and not just code.

  • Backups
  • Git
  • Forgejo
  • ZFS

Milestone: Backups that restore

5

The Homelab

So I bought hardware. A whole homelab, to run a NAS I owned, in a room I could walk into. Four drives, two of which can die at once before I lose anything, and a fifth that keeps a copy of all of it. I have not had to test that claim yet.

  • home

    Swarm

    • Debian 13
    • 3 x Intel N100, 16 GB each
    • Docker Swarm, three managers
    • one floating address
    • any one of them can fail
  • home

    Storage

    • TrueNAS
    • Celeron N5105
    • 4 x 12 TB IronWolf, RAIDZ2
    • about 21 TiB usable
    • 1 TB NVMe for app data
    • 18 TB Exos for the copies
  • home

    Resolver

    • NixOS
    • Celeron N5095
    • DNS, time and VPN for the house
    • boots alone after a power cut
  • cloud

    Edge

    • Debian 13
    • 2 vCPU, 4 GB
    • TLS, access control, tunnel
    • the only public surface
  • home

    Workstation

    • CachyOS
    • Ryzen 7 5700X
    • RTX 3090
    • Hyprland

Milestone: A NAS in the next room

6

GitOps

Once the hardware was mine, deploying by hand got old. Now I push, and the deploy happens without me. A thing that deploys on its own needs an account of its own, and that account should be able to do exactly one job. Drawing that line, over and over, is how I learned what a service account is for.

  • GitOps
  • Arcane
  • ArgoCD
  • Service Accounts
  • Keycloak
  • OIDC
  • Active Directory

Milestone: Deploys happen without me

7

Clusters Now

Staying up means more than one of everything, and more than one of everything means something has to decide which copy answers. That is where I am now. The database looks after itself. The app grows and shrinks depending on how many people are using it. Every request gets read and checked before it reaches anything that matters. I run this at work, in a lab I throw away and rebuild, and at home on three small nodes in a swarm.

  • Kubernetes
  • k3s
  • k3d
  • Azure Local AKS
  • Docker Swarm
  • keepalived
  • NixOS
  • CloudNativePG
  • KEDA
  • Envoy Gateway
  • Linkerd
  • Coraza
  • Authelia
  • OpenTelemetry
  • Prometheus
  • Grafana
  • Loki

Still here

I still host Minecraft servers. Same hobby as the first one, except now there is a cluster underneath it, which nobody playing will ever notice. I play Factorio for the same reason I do any of this.

It's probably this drive for automation in me that also lets me enjoy games like Factorio. To want it automated and perfected, a state chased forever and yet never really achieved. A constant increase of quality over a long time.

Choose a chapter Read it Back to the top