Overview

The Homelab Security Portfolio documents the design, implementation, operation, and continued maturation of a segmented enterprise-style homelab and cyber-range environment.

The project is intended to demonstrate security engineering rather than simply self-hosting applications. Its design emphasizes trust boundaries, least privilege, controlled change, independent recovery, security monitoring, validation, and explicit separation between implemented capabilities and future roadmap work.

The public portfolio is a sanitized derivative of the private operational environment. Operational identifiers, credentials, private network information, recovery artifacts, and other unnecessary infrastructure details are intentionally excluded or generalized.

Engineering problem

A useful security lab needs to support experimentation without collapsing every workload into a single trust domain.

The project therefore addresses several related engineering problems:

  • how to segment production, administration, CI, security monitoring, and cyber-range workloads;
  • how to provide externally reachable services without exposing router ports;
  • how to prevent CI infrastructure from becoming unrestricted production administration;
  • how to maintain recoverability outside the production failure domain;
  • how to collect security telemetry without creating unnecessarily broad firewall paths;
  • how to allow local AI to consume approved knowledge without making the AI system an infrastructure control plane;
  • how to document current, planned, and historical states without presenting roadmap work as deployed capability.

Architecture

The environment uses OPNsense as the authoritative inter-zone routing and firewall boundary.

Separate security zones support functions including:

  • trusted administration;
  • production applications;
  • CI/CD;
  • management and security monitoring;
  • ICS/OT;
  • Red Team activity;
  • OT DMZ services;
  • IoT and guest workloads;
  • future dedicated AI placement.

Proxmox provides virtualization, while Docker hosts the production application platform.

The public architecture deliberately uses sanitized addressing and functional system identifiers. The detailed public repository retains the architectural relationships and security controls while withholding unnecessary operational information.

Zero Trust ingress

Externally reachable applications do not require public router ports.

The normal application path uses:

Internet

Cloudflare Access / Tunnel

edge tunnel connector

OPNsense

Caddy

application

Cloudflare provides the external identity and tunnel layer, while Caddy provides the internal reverse-proxy boundary.

Caddy is deliberately operated without routine access to the Docker socket.

This reduces the blast radius of the reverse-proxy tier and avoids treating container-engine control as a prerequisite for ingress.

Network security model

Inter-zone connectivity is based on narrow source, destination, and service requirements rather than broad east-west access.

The design favors:

  • explicit firewall rules;
  • default-deny policy;
  • dedicated trust zones;
  • controlled administrative paths;
  • limited telemetry exceptions;
  • clear separation between management and production workloads.

The firewall remains the routing authority between zones rather than allowing virtualization or application infrastructure to bypass the security boundary.

GitOps and isolated CI/CD

Infrastructure development follows a controlled Git workflow:

workstation

feature branch

pull request

isolated CI validation

approval

main

restricted production reconciliation

The CI environment is deliberately prevented from becoming production root.

It does not receive unrestricted production shell access or routine access to the production Docker socket.

Production deployment uses a constrained reconciliation path with validation and rollback rather than treating successful CI execution as automatic authorization to control production.

Recovery architecture

The recovery design evolved from same-host protection toward an independent backup failure domain.

The architecture incorporates:

  • a separate backup network identity;
  • narrowly scoped backup connectivity;
  • encrypted SMB transport;
  • fail-closed mount validation;
  • application-aware backup staging;
  • Restic-based retention;
  • restore validation;
  • separation between production storage and recovery storage.

The important design objective is not simply that backups exist, but that a production-host failure cannot silently redirect backup operations into the same failure domain.

Security monitoring

Wazuh provides the current security-monitoring foundation.

Telemetry includes endpoint and network-security sources, with firewall policy allowing only the required collection paths.

The implementation demonstrates both deployment and troubleshooting of a segmented SIEM architecture, including endpoint telemetry and firewall-log integration.

Wazuh recovery, retention, tuning, notification workflows, and additional hardening remain maturity work rather than being presented as completed capability.

Administrative trust

Administrative access is treated as a separate security problem rather than an extension of application access.

The environment uses independent administrative identities and SSH trust relationships across Windows and Linux systems.

Administrative workstations remain independently manageable rather than sharing a single universal credential or relying on CI infrastructure as a bastion.

This supports narrower revocation boundaries and limits the effect of a single compromised administrative identity.

Local AI security boundary

The local AI environment is intentionally constrained.

Model and dashboard services remain locally bound rather than operating as generally accessible network services.

Knowledge access is provided through a read-only MCP boundary restricted to approved derived knowledge roots.

The AI environment is therefore able to assist with documentation and knowledge retrieval without receiving unrestricted shell access, arbitrary filesystem access, infrastructure credentials, or production-control authority.

The AI system is explicitly not treated as an authoritative infrastructure control plane.

Validation model

Changes are evaluated using both positive and negative tests.

Validation includes concepts such as:

  • confirming intended communication paths;
  • confirming prohibited paths remain blocked;
  • service-health checks;
  • backup verification before risky changes;
  • recovery and rollback capability;
  • configuration comparison;
  • security telemetry validation;
  • documentation review.

Runtime evidence takes precedence over stale documentation when the two disagree.

Engineering decisions

Several architectural decisions are intentionally conservative.

CI remains isolated from production control.

Backups remain outside the production failure domain.

Application ingress does not require public router ports.

The reverse proxy does not require the Docker socket.

The firewall remains the authoritative inter-zone boundary.

Local AI remains constrained and read-only with respect to approved knowledge.

These decisions trade some convenience for reduced blast radius, clearer trust boundaries, and more predictable recovery.

Current maturity

The following foundations are currently operational and represented in the public portfolio:

  • segmented OPNsense network architecture;
  • production Docker application platform;
  • Cloudflare-protected ingress;
  • Forgejo-based Git workflow and isolated CI;
  • independent Restic-backed recovery;
  • Wazuh security-monitoring foundation;
  • multi-workstation administration;
  • constrained local AI;
  • read-only AI knowledge access.

Several areas remain active maturity work:

  • selected SSH hardening;
  • firewall reconciliation and additional policy hardening;
  • Wazuh recovery, retention, tuning, and notifications;
  • Docker reproducibility and selected runtime drift;
  • observability modernization.

The following remain roadmap items and are not represented as completed implementations:

  • final Grafana and Prometheus observability architecture;
  • full ICS/OT cyber-range workload implementation;
  • Red Team exercise integration;
  • migration of local AI into the dedicated AI VLAN;
  • final semantic RAG and vector-retrieval architecture.

Lessons

The project reinforces several broader engineering principles.

Security boundaries are more valuable when they are explicit and testable.

CI should validate changes without automatically inheriting production authority.

Recovery architecture is part of security architecture.

Observability and SIEM systems require the same trust-boundary discipline as production applications.

Documentation should distinguish what exists from what is intended.

AI integration should begin from minimum authority rather than adding controls after broad access has already been granted.

Detailed engineering evidence

The public GitHub repository contains the detailed sanitized engineering material, including:

  • architecture documentation;
  • network-segmentation design;
  • trust-boundary analysis;
  • security design principles;
  • GitOps and CI/CD architecture;
  • Zero Trust ingress;
  • backup and recovery architecture;
  • SSH trust modeling;
  • Wazuh SIEM documentation;
  • local AI security boundaries;
  • architecture decision records;
  • validated case studies.

View the Homelab Security Portfolio