Containerized Home Services Hardening
Built and hardened a containerized home services stack with isolated application roles, controlled outbound network paths, and automated backups. The goal was to keep the system useful while reducing the chance that one misconfigured component could affect the rest of the environment.
What I Built
The stack uses separate Docker containers for distinct application roles, supporting services, and controlled network egress. Persistent data is separated from replaceable containers so maintenance, updates, and recovery can be handled more predictably.
Security Focus
I treated the build like a small segmentation project: separate services by function, limit unnecessary reachability, and make failure behavior matter. Selected outbound traffic is attached to a VPN container network namespace so it cannot silently fall back to the default WAN route if the VPN path fails.
Operational Work
The project included dependency planning, persistent data handling, service ordering, digest-pinned container updates, and automated backups for the configuration and state that would matter during recovery. Container updates are handled by recreating services from recorded image digests, then validating the running image IDs against the pinned digest image IDs.
Validation & Backup Testing
Confirmed daily age-encrypted local configuration backups, weekly age-encrypted offsite configuration backups through rclone crypt, and weekly full Docker backups to object storage with Object Lock Compliance retention. The server stores only the public age recipient key, allowing it to encrypt backups without being able to decrypt them if the host is compromised.