Everything as code
No machine or rule created by hand. OpenTofu describes the infrastructure, Ansible configures it; a second run must change nothing.
Homelab · Infrastructure as Code
One server, one firewall, sealed network zones and services my family uses every day. Everything is described as code, reviewed before it is applied, and documented — mistakes included.
$ tofu plan ✓ No changes. Your infrastructure matches the configuration.
$ ansible-playbook plateforme.yml ✓ changed=0 failed=0
$ curl -I https://photos.… ✓ WAF → SSO → application · TLS verified
$ netbox-synchro --simulation ✓ 0 created, 0 modified
$
1
server
hypervisor, storage and firewall
7
network zones
everything between them denied by default
100 %
as code
machines, firewall, DNS, services
2FA
wherever possible
single sign-on portal
Defence in depth
Each layer stops what the previous one let through. If one gives way, the next one holds.
Method
No machine or rule created by hand. OpenTofu describes the infrastructure, Ansible configures it; a second run must change nothing.
Anything public goes through a firewall, a WAF and a sign-in portal. Administration is reachable only over VPN.
Each service lives in its own zone. A compromise stays contained; every allowed flow is justified in a matrix.
Automatic snapshots, encrypted and versioned secrets, written procedures — so nothing depends on memory or on a single person.
Tools
Open-source tools, each chosen for a written reason — the ADRs explain every choice.
Decisions
Journal
An alert when login attempts come from an address never seen to succeed, without noise from 5G; dashboards fixed; and a night when the WAF was killed 139 times.
Full burn-in of a second-hand disk, RAIDZ2 expanded from 4 to 5 disks without downtime, then a disk with growing bad sectors replaced, with no free bay.
A black-box and grey-box audit, schedulable updates for the whole fleet with vulnerability watch, readable logs, and emails that finally get past the filters.
Access to each service is granted by ticking a group, administration rights follow the directory, and allocated space is set from a single page.