--- // src/pages/homelab.astro - Converted from static homelab.html import BaseLayout from '../layouts/BaseLayout.astro'; import Header from '../components/Header.astro'; import Footer from '../components/Footer.astro'; const title = "Home Lab | Argobox - LaForceIT Tech Hub"; const description = "ArgoBox - A production-grade Kubernetes homelab for DevOps experimentation, infrastructure automation, and containerized application deployment."; // Data for services (can be fetched or defined here) // Example structure - replace with actual data source if needed const servicesData = { development: [ { name: "Gitea", description: "Self-hosted Git service", url: "https://git.argobox.com", status: "live", icon: "fas fa-code-branch", available: true }, { name: "VS Code Server", description: "Remote development environment", url: "https://code.argobox.com", status: "live", icon: "fas fa-terminal", available: true }, { name: "Drone CI", description: "Continuous Integration server", url: "https://drone.argobox.com", status: "live", icon: "fas fa-cogs", available: true }, ], media: [ { name: "Plex", description: "Media streaming server", url: "https://plex.argobox.com", status: "live", icon: "fas fa-play-circle", available: true }, { name: "Jellyfin", description: "Open source media system", url: "https://jellyfin.argobox.com", status: "live", icon: "fas fa-film", available: true }, { name: "Sonarr", description: "TV show management", url: "#", status: "restricted", icon: "fas fa-tv", available: false }, { name: "Radarr", description: "Movie management", url: "#", status: "restricted", icon: "fas fa-video", available: false }, { name: "Prowlarr", description: "Indexer management", url: "#", status: "restricted", icon: "fas fa-search", available: false }, ], utilities: [ { name: "File Browser", description: "Web file manager", url: "https://files.argobox.com", status: "live", icon: "fas fa-folder-open", available: true }, { name: "Vaultwarden", description: "Password manager", url: "https://vault.argobox.com", status: "live", icon: "fas fa-key", available: true }, { name: "Homepage", description: "Service dashboard", url: "https://dash.argobox.com", status: "live", icon: "fas fa-tachometer-alt", available: true }, { name: "Uptime Kuma", description: "Status monitoring", url: "https://status.argobox.com", status: "live", icon: "fas fa-heartbeat", available: true }, ], infrastructure: [ { name: "Proxmox VE", description: "Virtualization platform", url: "#", status: "restricted", icon: "fas fa-server", available: false }, { name: "Kubernetes (K3s)", description: "Container orchestration", url: "#", status: "restricted", icon: "fas fa-dharmachakra", available: false }, { name: "Traefik", description: "Ingress controller", url: "#", status: "restricted", icon: "fas fa-route", available: false }, { name: "OPNsense", description: "Firewall/Router", url: "#", status: "restricted", icon: "fas fa-shield-alt", available: false }, ] }; // Data for projects (can be fetched or defined here) const projectsData = [ { title: "Ansible Playbooks", description: "Collection of playbooks for automating system configuration and application deployment.", icon: "fab fa-ansible", tech: ["Ansible", "YAML", "Jinja2"], url: "/resources/iac" }, // Link to relevant resource page { title: "Kubernetes Manifests", description: "YAML definitions for deploying various applications and services on Kubernetes.", icon: "fas fa-dharmachakra", tech: ["Kubernetes", "YAML", "Helm"], url: "/resources/kubernetes" }, { title: "Monitoring Dashboards", description: "Grafana dashboards for visualizing infrastructure and application metrics.", icon: "fas fa-chart-line", tech: ["Grafana", "PromQL", "JSON"], url: "/resources/config-files" }, // Link to relevant resource page { title: "Cloudflare Tunnel Setup", description: "Securely exposing home lab services to the internet using Cloudflare Tunnels.", icon: "fas fa-cloud", tech: ["Cloudflare", "Networking", "Security"], url: "/posts/cloudflare-tunnel-setup" } // Link to blog post ]; // Data for dashboards (can be fetched or defined here) const dashboardsData = [ { title: "Infrastructure Overview", description: "Key metrics for Proxmox hosts, network devices, and storage.", previewClass: "infrastructure", url: "https://dash.argobox.com/goto/...", icon: "fas fa-server" }, { title: "Kubernetes Cluster", description: "Detailed view of K3s cluster resources, node status, and pod health.", previewClass: "kubernetes", url: "https://dash.argobox.com/goto/...", icon: "fas fa-dharmachakra" }, { title: "Network Traffic", description: "Real-time and historical network usage, firewall logs, and connection tracking.", previewClass: "network", url: "https://dash.argobox.com/goto/...", icon: "fas fa-network-wired" }, { title: "Service Performance", description: "Application-specific metrics, request latency, and error rates.", previewClass: "services", url: "https://dash.argobox.com/goto/...", icon: "fas fa-cogs" } ]; // Data for contact form (if keeping it on this page) // const contactInfo = { email: "daniel.laforce@argobox.com", /* other info */ }; --- {/* Add Font Awesome if not loaded globally by BaseLayout */} {/* */}

Enterprise-Grade Home Lab Environment

A production-ready infrastructure platform for DevOps experimentation, distributed systems, and automating everything with code.

32+
CPU Cores
64GB
RAM
12TB
Storage
{Object.values(servicesData).flat().length}+
Services
argobox ~ k8s-status
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
argobox Ready control-plane,master 154d v1.25.16+k3s1
argobox-lite Ready worker 154d v1.25.16+k3s1
 
$ kubectl get pods -A | grep Running | wc -l
32
 
$ uptime
14:30:25 up 154 days, 23:12, 1 user, load average: 0.22, 0.18, 0.15
 
$ ansible-playbook status.yml
PLAY [Check system status] *******************************************
TASK [Gathering Facts] **********************************************
ok: [argobox]
ok: [argobox-lite]
TASK [Check service status] *****************************************
ok: [argobox]
ok: [argobox-lite]
PLAY RECAP **********************************************************
argobox : ok=2 changed=0 unreachable=0 failed=0 skipped=0
argobox-lite: ok=2 changed=0 unreachable=0 failed=0 skipped=0
$ |

Infrastructure Architecture

Enterprise-grade network topology with redundancy, virtualization, and secure segmentation.

{/* Consider replacing with an actual image or a more maintainable diagram component */} ArgoBox Architecture Diagram {/* Fallback or simplified diagram if image isn't available */}

Network Security

Enterprise firewall with network segmentation using VLANs and strict access controls. Redundant routing with automatic failover between OPNsense and OpenWrt.

Virtualization

Proxmox virtualization platform with ZFS storage pools in RAID10 configuration. Optimized storage pools for VMs and containers with proper resource allocation.

High Availability

Full redundancy with failover routing, replicated storage, and resilient services. Automatic service recovery and load balancing across nodes.

Core Technologies

The ArgoBox lab leverages cutting-edge open source technologies to create a powerful, flexible infrastructure.

{/* Data could be externalized */}

Kubernetes (K3s)

Lightweight Kubernetes distribution running across multiple nodes for container orchestration. Powers all microservices and applications.

Multi-node clusterPersistent volumesTraefik ingressAuto-healing

Proxmox

Enterprise-class virtualization platform running virtual machines and containers with ZFS storage backend for data integrity.

ZFS storageResource balancingLive migrationHardware passthrough

Zero Trust Security

Comprehensive security architecture with Cloudflare tunnels, network segmentation, and authentication at all service boundaries.

Cloudflare tunnelsOPNsense firewallVLAN segmentationWireGuard VPN

PostgreSQL

Enterprise database cluster for application data storage with automated backups, replication, and performance optimization.

Automated backupsConnection poolingOptimized for K8sMulti-app support

Monitoring Stack

Comprehensive monitoring with Prometheus, Grafana, and AlertManager for real-time visibility into all infrastructure components.

Prometheus metricsGrafana dashboardsAutomated alertsHistorical data

Available Services

Explore the various services and applications hosted in the ArgoBox environment.

Some services require authentication and are restricted. Available public services are highlighted and clickable.

{Object.entries(servicesData).map(([categoryKey, categoryServices]) => (

{categoryKey.charAt(0).toUpperCase() + categoryKey.slice(1)} Tools

))}

Related Projects & Code

Explore associated projects, configurations, and code repositories related to the ArgoBox lab.

Live Dashboards

Real-time monitoring dashboards providing insights into the lab's performance and status. (Authentication Required)

{/* Reusing banner style */}

Access to live dashboards requires authentication via Cloudflare Access.

{/* Contact Section - Optional: Can be moved to a separate page */} {/*

Get In Touch

Have questions or want to collaborate? Reach out!

Add other contact items like LinkedIn, GitHub etc.
*/}