The Formative Years

Castle Adventure title screen

The Conversation

3 AM. Late January. First commit:

# [redacted] Home Infrastructure

An hour later: dozens of files. Thousands of lines. Complete CLI framework. Ansible playbooks for DNS, DHCP, VMs, backups, provisioning. Docker roles. CloudFormation templates. Full documentation.

Not copy-paste. Timestamps don’t lie. This was a conversation.

Same kind of conversation from decades ago. Child typing commands into DOS. Castle made of ASCII. Learning that the machine answers if you know how to ask.


What the Code Says

DNS records file reads like an autobiography. Each entry a room in a digital house built over years.

Foundation: Firewall. Dual Pi-hole DNS. ProxMox hypervisor. Omada network controller.

Storage: Primary. Secondary. Syncthing. NTP server — time matters when syncing.

Services: Nextcloud. Gitea. Mattermost. CheckMK watching everything.

Media: Media server. Download manager. Game library. NVR. Home automation.

Compute: ai2, gpu2 — the “2” implies there was a 1. Infrastructure grew. Castle started as one room.

The Timestamps

Time Event
3 AM Project started
4 AM Thousands of lines
1 AM SSL work begins
5 AM Still going
6 AM One more service secured

Night work. After-hours work. House quiet. Just keyboard and server hum.

Code is meticulous. Every playbook commented. Every variable file sectioned. Commit messages descriptive but not verbose. Someone who’s written production code. Someone who knows future-you forgets what past-you was thinking.


The Build

Day 1. Initial burst. Claude and developer building framework together. Not from template — code too specific, too tailored. Developer knows their servers. Knows what they want. Translating that into Ansible, into a CLI that feels right — that’s the hard part.

Thousands of lines in an hour. Not typing speed. Conversation speed.

Day 2-3. SSL work begins. Nextcloud first — personal cloud exposed to internet needs HTTPS. Pattern established: Let’s Encrypt, Route 53 DNS challenge, deploy, restart, verify. Then Gitea.

Pi-hole playbooks break. API changed. Fix committed that evening. Real infrastructure work — things break, you adapt.

Day 4. SSL marathon.

Time Service
midnight Download manager
2 AM Game library, media server
5 AM Monitoring, UPS dashboard
6 AM Admin panel, file sync
9 PM Network controller RSA fix

Each service a different puzzle. Media server uses nginx proxy. Network controller needs RSA — OC200 doesn’t support ECDSA. UPS monitor has legacy CGI interface that needs certs too.

Omada OC200 rejected the certificate. Back to conversation. Force RSA key type. Problem solved.

Day 5. Scope expands. Project sync across machines. Not just servers anymore — development workflow.

Day 6. Documentation. Architecture doc. Version tag.


The Parallel

Castle Adventure gameplay

Castle Adventure (1984). Kevin Bales. ASCII walls. Rooms connected by corridors. No tutorials. Just you and the maze and command prompt waiting.

You typed. The castle answered.

Machine wasn’t magic. It was conversation. Someone built this. Someone thought about what you’d try. If you learned the language, castle revealed itself room by room.

Infrastructure automation feels the same.

Servers are rooms. Network is corridors. Configuration is language. CLI is conversation between maze-builder and maze-walker.

But now the conversation has a partner.

4 AM. Hit a wall. OC200 rejects certificate. Not alone with man pages and Stack Overflow anymore. Something holds the whole context. Remembers what you built three hours ago. Says “OC200 doesn’t support ECDSA, let me modify the playbook.”

That’s new. That’s the thing that feels like 1989 again.


The Numbers

Built Count
Servers managed dozen+
SSL certs dozen+
CLI commands dozens
Playbooks dozens
Lines of code thousands
Cost Value
Calendar time 5 days
Claude interaction ~15 hours
Manual equivalent weeks

What it replaced: Years of SSH sessions. Cert renewals in text files. DNS edited through web UIs. DHCP scattered across router configs.

Now: ssl generate, dns sync, project setup. Castle answers.


The Tag

v1.0-castle

Named for Castle Adventure (1984).

Before graphics cards and physics engines,
there was a conversation. Developer built
rooms out of ASCII walls. Player typed.
Castle answered.

Infrastructure is the same. Servers are rooms.
Networks are corridors. CLI is conversation
between maze-builder and maze-walker.

First castle. First maze. First map on graph
paper while cursor blinks.

The walls remember.

What’s Next

Commit history ends with docs and a tag. But DNS records say more servers coming. The “2” suffixes promise a “3.” Empty inventory groups waiting.

Toolkit will grow. More rooms. More corridors.

Somewhere around 3 AM there’ll be another conversation. Another problem that seems impossible until it isn’t. Another moment where machine answers and it feels like being a kid again, typing commands into a castle made of characters.

The walls remember.