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
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
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
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
5
The Homelab
So I bought hardware. A whole homelab, to run a NAS I owned, in a room I could walk into. Eight drives, three of which can die at once before I lose anything. I have not had to test that claim yet.
-
Compute
home
- Debian 13
- Ryzen 9 3950X, 16 cores
- 128 GB DDR4
- RTX 4060, 8 GB
- every container, the game panel, local inference
-
Storage
home
- TrueNAS
- Celeron N5105
- 8 x 12 TB IronWolf, RAIDZ3
- about 50 TiB usable
- AES-256-GCM at rest
- direct cable to compute
-
Edge
cloud
- Debian 13
- 2 vCPU, 4 GB
- TLS, access control, tunnel
- the only public surface
-
Workstation
home
- CachyOS
- Ryzen 7 5700X
- RTX 3090
- Hyprland
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
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, at home, and in a lab I throw away and rebuild.
- Kubernetes
- k3s
- k3d
- Azure Local AKS
- CloudNativePG
- KEDA
- Envoy Gateway
- Linkerd
- Coraza
- 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.
- Minecraft
- Factorio
- Game Servers
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.