• Anonymous Kali setup on Mac

    Introduction Last week we setup a single Kali box as a daily driver. As promised, this week we take it a step further. The lab I built in July hands me an attacker box and two targets on an isolated segment, rebuilt from scratch with one command. Every VM in it still reaches the internet…

  • Single Kali VM on Apple Silicon

    Introduction A few weeks back I built a throwaway lab: an attacker box and a couple of disposable targets, all from a make up. That solved the targets problem, but I wanted more for the Kali box itself. So I gave it the same treatment: one repo, one command, a Kali workstation I can burn…

  • Automated lab setup on a Mac

    Introduction Last time I built a single Kali workstation on the Mac by hand: install the VM, update it, duplicate it, keep the clone clean. That’s fine when you need one attacker box. It stops being fine the moment you want a target to point it at, and then a second target, and then a…

  • Separation of concerns of VPS and Docker apps

    Introduction I’ve been working on a clean, reusable setup for running my own apps on a Virtual Private Server (VPS), specifically on Hetzner Cloud. The result is three open source repositories that take you all the way from bare metal to running Nginx, WordPress, and Nextcloud behind a proper reverse proxy, with automatic SSL certificates…

  • Automated secured Hetzner VPS

    Introduction A few weeks ago we setup a cool VPS with WordPress, Traefik, etc. in an automated way. The only downside was that is could not be managed with the same code (only setup once), as explained in the post. Today we’re setting up a complete, automated WordPress hosting solution using OpenTofu, cloud-init and Ansible;…

  • Oneshot secured Hetzner VPS

    Introduction A complete, automated WordPress hosting solution using OpenTofu, Docker, and Traefik. Deploy a secure, fast WordPress site to Hetzner Cloud in minutes with TLS, caching, and security hardening out of the box. Find the code here. Update: I’ve split the code into 3 repos, making it more scalable for future deployments. Deploy them in…