Robin Miller

IT infrastructure · Networking & security · Virtualization

I look after the IT infrastructure of a private bank in Munich — networking, firewalls, virtualization. At home I run a small datacenter of my own: a Proxmox cluster, a segmented network, everything documented as code. I came to IT as a career changer — no formal IT education, but all the more drive of my own. The fact that I spend my evenings voluntarily doing what I do for a living probably says more about me than any cover letter could.

robin@homelab: ~
Robin Miller

robin@homelab

role: IT Service Specialist — Infra & Virtualization

employer: Merkur Privatbank, Munich

homelab: 2-node Proxmox cluster · 30+ services

stack: OPNsense · VMware · Ansible · Debian + Docker · NixOS

branch: feature/declarative-everything

uptime: in IT since 2018 — enthusiastic for far longer

$ play · · ·

Experience

  1. IT Service Specialist — Infrastructure & Virtualization @ Merkur Privatbank KGaA

    01/2022 — today

    Munich, Germany

    • Planning, building and operating the bank's LAN, WAN and WLAN infrastructures
    • Network and security architecture: firewalls (pfSense, Sophos), VPN, DMZ, network segmentation and SIEM
    • Software-defined networking via the LANCOM Management Cloud
    • Virtualized server and storage environments (VMware, SAN) and the Windows Server landscape
    • Patch, change and incident management incl. testing and release; proactive monitoring (PRTG)
    • IT projects focused on infrastructure and network security; technical documentation and emergency procedures

    pfSenseSophosLANCOMVMwareSANWindows ServerPRTGSIEM

  2. IT Organisator (IT operations & organization) @ Merkur Privatbank KGaA

    10/2020 — 12/2021

    Munich, Germany

    • Introduction of the bank's private inhouse cloud — migrating the servers from bare metal to VMware, incl. planning, configuration and regular system checks
    • Planning and administration of server rooms, SAN storage networks (DataCore) and VMware environments
    • Building out WAN (primary and secondary links), LAN, WLAN, VPN and the bank's firewall
    • Backup concept incl. controls and restore verification; proactive monitoring (PRTG)

    VMwareDataCorePRTG

  3. IT Administrator @ VR-Bank Memmingen eG

    01/2018 — 09/2020

    Memmingen, Germany

    • Administration of Windows servers and clients, mobile devices and Citrix
    • Operating the datacenter banking applications; disaster recovery planning and system restart procedures
    • Deputy to the head of IT; point of contact in the user helpdesk
    • In parallel: trainee in project lead / project management (05/2019 – 01/2020): intranet platform "VR-WIKI", successful rollout in spring 2020

    Windows ServerCitrix

  4. 2018 · switched careers into IT
  5. Apprenticeship & bank clerk @ VR-Bank Memmingen eG

    09/2013 — 12/2017

    Memmingen, Germany

    • Apprenticeship as a bank clerk (Bankkaufmann, until 01/2016), then worked as a bank clerk — 2018 brought the career change into IT

Skills & technologies

Networking & security

  • Firewalls (pfSense, Sophos, OPNsense)
  • Network segmentation: VLANs, DMZ
  • VPN & site connectivity (WAN)
  • SIEM & security monitoring
  • LANCOM Management Cloud (SD networking)
  • Reverse proxies (Traefik, Caddy) & WAF
  • DNS (split-horizon), SSO / OIDC

Virtualization & servers

  • VMware vSphere
  • Proxmox VE
  • Windows Server
  • Linux (Debian, NixOS)
  • LXC & Docker Compose
  • Storage: SAN (DataCore), ZFS
  • Backup: Proxmox Backup Server, backup concepts

Automation & IaC

  • Ansible
  • GitOps deployments (Ansible, NixOS)
  • OpenTofu / Terraform formerly in use, currently retired
  • Git & CI/CD (Forgejo Actions)
  • Secrets management (SOPS / age)
  • Bash / scripting

Operations & processes

  • Monitoring & alerting (PRTG, self-hosted stack)
  • Patch, change & incident management
  • Technical documentation & emergency concepts
  • IT projects focused on infrastructure & network security

Homelab

Family and friends use my services every day — so the lab runs in production, around the clock. If something goes down, I quickly have enough people on the phone complaining. At the same time it's my laboratory: it's where I try technologies before I take them seriously.

Cluster
2 × Proxmox VE + quorum device
Services
30+ self-hosted
Backup
Proxmox Backup Server, versioned
Docs
100% as a Git repo (docs as code)

Projects

Homelab: Proxmox cluster

Self-built two-node Proxmox cluster with an external quorum device, a direct Thunderbolt link for fast replication, separate VLANs, a dedicated firewall, central backup and 30+ self-hosted services — fully documented as a Git repository.

ProxmoxOPNsenseDockerZFSPBS

Infrastructure as Code

The Git repo describes what should run — automation makes sure it does. On Debian hosts, Ansible configures the system and rolls out the Docker Compose stacks; NixOS hosts are described entirely as a flake and rebuild themselves on every push. CI checks every change.

AnsibleDocker ComposeNixOS FlakesForgejo ActionsSOPS

AI agents in operations

A team of specialised AI agents works on the homelab: one plans, one implements, one audits for security and drift. Each role has its own minimal permissions; nothing changes live without my approval — and everything ends up as a commit in the repo.

Claude CodeGitLeast privilege

Work in progress

CCNA

Networking is the topic that draws me most — the CCNA gives the hands-on knowledge from work and homelab a clean theoretical foundation.

CiscoRouting & switching

Kubernetes

First steps with container orchestration: start small, understand it, then grow — in the lab, before it gets serious.

KubernetesContainers

NixOS on the desktop

Laptop and gaming PC are moving from Debian to NixOS on Btrfs — declarative all the way to the desk.

NixOSBtrfsFlakes

From the engine room

Three short excerpts from my homelab repository — rewritten and anonymized for publication, but true to structure and style. Expand to read.

LXC updates with a safety net yaml

Ansible playbook (excerpt): all containers update in batches; after the upgrade a health check probes the Docker stack — failing hosts are held for review instead of rolling on.

- name: Update LXC containers in controlled batches
  hosts: lxc_all
  serial: 5
  tasks:
    - name: Apply pending upgrades
      ansible.builtin.apt:
        update_cache: true
        upgrade: dist

    - name: Health check — compose stack still running?
      ansible.builtin.command: docker compose ps --status running -q
      args:
        chdir: /opt/{{ service_name }}
      register: health
      changed_when: false
      failed_when: health.stdout == ""

    - name: Hold host for manual review instead of rolling on
      ansible.builtin.file:
        path: /var/lib/updates/hold/{{ inventory_hostname }}
        state: touch
      when: health is failed
A host as code nix

What a host looks like as code: one NixOS file declares the system, the service, the firewall and the secrets. One push to the repo and the host rebuilds itself — whatever isn't in the file doesn't exist on the host.

# hosts/webapp01.nix — the whole host, declared in one file
{ config, ... }:
{
  imports = [ ../modules/lxc-base.nix ];   # hardening, SSH keys, updates

  networking.hostName = "webapp01";
  networking.interfaces.eth0.ipv4.addresses = [
    { address = "192.0.2.10"; prefixLength = 24; }   # documentation range
  ];

  services.nginx = {
    enable = true;
    virtualHosts."webapp.example.org".root = "/srv/webapp";
  };

  # only what is declared is open — everything else is dropped
  networking.firewall.allowedTCPPorts = [ 80 ];

  # secrets are decrypted on the host at activation, never stored in git
  sops.secrets."webapp/token".owner = "nginx";
}
Monitoring that speaks up yaml

Gatus checks every service from the outside: status code, response time, remaining certificate lifetime. Only three failures in a row trigger a push notification — and a second one as soon as it's back.

endpoints:
  - name: webapp
    group: services
    url: "https://webapp.example.org/health"
    interval: 2m
    conditions:
      - "[STATUS] == 200"
      - "[RESPONSE_TIME] < 1500"
      - "[CERTIFICATE_EXPIRATION] > 168h"   # a week's warning
    alerts:
      - type: ntfy
        failure-threshold: 3    # one hiccup is not an incident
        success-threshold: 2
        send-on-resolved: true

alerting:
  ntfy:
    url: "https://ntfy.example.org"
    topic: "homelab-alerts"
    priority: 4

How I work

  1. 01 Simple beats clever

    At work
    The simplest solution that actually solves the problem is the most stable one — fewer moving parts means less that can break at 3 a.m.
    In the homelab
    Only a stable homelab is a good homelab. A simple solution that runs every day beats the clever one that covers a niche and breaks every week — or that I no longer understand myself a year later.
  2. 02 Consistent, not one-off

    At work
    Identical systems are built identically: clients and servers get their settings centrally via Group Policy, and the network is rolled out from uniform templates through the LANCOM Management Cloud. That way everyone on the team understands every device, and deviations stand out immediately.
    In the homelab
    Fixed conventions for names, networks and deployments; an exception is a deliberate, documented decision, never something that just grew.
  3. 03 Emergency plans get rehearsed

    At work
    An emergency plan is only worth something once it has been tested — I push for that, even when it takes a discussion.
    In the homelab
    A change only counts as done once it's proven to work live. I try out backups and failover instead of trusting them.
  4. 04 Every change needs a way back

    At work
    Patches and changes go through testing, approval and a documented rollback plan.
    In the homelab
    A snapshot or backup before every intervention — and every change is a Git commit that can be reverted.
  5. 05 Security from the start

    At work
    Firewalls, segmentation, DMZ and SIEM are part of the design for me, not an afterthought.
    In the homelab
    No open ports at home, minimal privileges per service, secrets encrypted only.
  6. 06 Stay calm when things break

    At work
    During an incident: overview first, then priorities, then communication — things get hectic on their own.
    In the homelab
    Alerts arrive as push notifications; solved problems become a troubleshooting entry so they only hurt once.

Contact

E-mail is the fastest way to reach me.