Every system is built on a collection of assumptions.
Some are good.
Some are dangerous.
This environment exists because I questioned assumptions.
Trust shouldn’t be binary.
A server isn’t the same as a workstation. A workstation isn’t the same as an IoT device. A firewall isn’t the same as any of them.
Yet many networks treat them all the same.
Most of my infrastructure decisions start with a simple question:
“What if?”
Most systems only need access to a small portion of the environment.
Access should be denied by default with only the minimum required exceptions.
Network segmentation establishes trust boundaries while authentication verifies identity.
Location influences trust, but location alone should never grant access.
A device connected with Ethernet is not exposed to the same risks as a device connected over Wi-Fi. Physical access is a higher barrier than radio access.
Likewise, an organization should be more suspicious of an administrative request originating from the other side of the world than one originating from within its own network.
Trust is contextual.
Authorization is not.
That philosophy is reflected throughout the environment.
Devices are separated into dedicated networks based on their purpose. Administrative systems remain isolated. Remote access requires device certificates, multi-factor authentication, and authorization before access is granted.
Trust is earned through layers rather than assumed through location.
Trust should be intentional.
Hard drives fail.
Sometimes it’s spectacular. Most of the time, it’s hidden until you try to open a picture, document, or diary entry from ten years ago.
At its most basic level, data is held together by a handful of electron bonds.
Time, physics, and bad luck have little regard for your data.
I’d rather not leave preservation to chance.
Most storage systems write data once and don’t look at it again.
It’s not malicious; it’s simply how they were designed.
ZFS was built around a different philosophy: trust, but verify.
ZFS continuously verifies the integrity of stored data. Corruption can be detected and, when redundancy exists, repaired automatically. Snapshots provide recovery points while redundant drives protect against hardware failures.
Access should be equally scrutinized.
The value of data isn’t determined by whether someone else finds it interesting. Protecting your data matters regardless.
Strong encryption prevents access to the hardware becoming access to the data.
The goal isn’t simply storing data.
The goal is ensuring the data remains available, accurate, and mine.
Devices should do device things.
Cameras should record video.
Servers should host applications.
Firewalls should control traffic.
The further a device strays from its purpose, the more complexity it introduces.
I shouldn’t be logging into an NVR to change a server setting, just as I shouldn’t be managing network access from a media server.
Every connection between systems creates another path that needs to be secured and controlled.
While devices grow linearly, complexity grows exponentially.
Network segmentation and firewall policy establish boundaries, but every new device still introduces new relationships.
Instead of having every application manage authentication and access independently, those responsibilities are being centralized into a dedicated platform.
Reverse proxies, centralized authentication, and single sign-on provide a consistent access layer in front of the services they protect.
Applications remain focused on their purpose while authentication, authorization, and access policies are handled in one place.
Fewer paths.
Fewer rules.
Easier to control.
Everything fails eventually.
Hardware.
Software.
Configurations.
Assumptions.
The question isn’t whether something will fail. The question is what happens when it does.
My infrastructure decisions are about reducing the impact of failure because you’ll never fully eliminate it.
Backups, documentation, segmentation, encryption, monitoring, and recovery procedures all exist for the same reason:
Failure is inevitable.
Catastrophe is optional.