Pick a skill: the parts where I use it light up on the map and I tell you what for.
- Terraform
- One file per container or VM with the Proxmox provider, a plan before every apply and care with fields that recreate.
- Ansible
- One role per service, secrets read from OpenBao, dry runs with --check --diff and fleet updates machine by machine.
- Proxmox VE
- Terraform talks to its API with a least-privilege token; the control node lives in a container on the server itself.
- LXC
- One container per service, almost all unprivileged.
- ZFS
- Each service's data lives on ZFS and is mounted; roles don't touch it.
- Git
- Everything versioned, with a hook pushing to two remotes and a cleaned public copy.
- Forgejo · Actions
- The repository's origin: protected main branch, CI with no secrets, the PR's plan and one-click deploys.
- Renovate
- One PR for every pinned version with a new release, with its official checksum; applied with the same plan and the same click.
- Linux (Debian, Alpine, Arch)
- Debian, Ubuntu and Alpine containers configured uniformly.
- Traefik
- Its routes are generated from the common service list.
- Technitium DNS
- Cloudflare records are created and deleted from the same list; the home DNS is configured from here too.
- Linux / SSH hardening
- A common role: key-only SSH from specific sources, spare services removed and monitoring everywhere.
- OpenBao · Vault
- Every secret and the Terraform credentials come from OpenBao, not from the repository or the control node's disk.
- CrowdSec
- Its role installs the engine, its sources and the daily summary; the real IP behind Cloudflare and the plugin, in Traefik's.
- Proxmox Backup Server
- The backup server, its datastore, the nightly job and the separate copy of the game worlds, all from code.