diff --git a/README.md b/README.md index 0a8d51f..7215705 100644 --- a/README.md +++ b/README.md @@ -1,296 +1,175 @@ -

Hi, I'm Chase!
-Digital Systems | Infrastructure | RF Edge Systems -

+# Ced's NOC β€” Live Network Operations Center -

-I build real-world systems that combine data, automation, and infrastructure. -From monitoring platforms and dashboards to full infrastructure environments, everything I create is designed to solve practical problems and scale. -

+> A custom-built, public-facing Network Operations Center dashboard running at [noc.chasedumphord.com](https://noc.chasedumphord.com) β€” providing real-time visibility into Ced's HomeLab infrastructure, services, and RF edge systems. -Coding Gorilla - - +[![Live NOC](https://img.shields.io/badge/Live-noc.chasedumphord.com-1D9E75?style=flat-square)](https://noc.chasedumphord.com) +[![Portfolio](https://img.shields.io/badge/Portfolio-chasedumphord.com-0F6E56?style=flat-square)](https://chasedumphord.com) +[![Status](https://img.shields.io/badge/Status-Live-1D9E75?style=flat-square)](#) +[![Backend](https://img.shields.io/badge/Backend-Prometheus%20%2B%20Grafana-E6522C?style=flat-square)](https://github.com/ced4568/ceds-observability-stack) --- -# 🧠 Ced’s NOC System +## What This Is -πŸ‘‰ **Portfolio Site:** https://chasedumphord.com -πŸ‘‰ **Live NOC Dashboard:** https://noc.chasedumphord.com +This is the public-facing front door to Ced's HomeLab infrastructure. While the backend observability stack ([ceds-observability-stack](https://github.com/ced4568/ceds-observability-stack)) handles metrics collection and Grafana dashboards, this repo is the custom status page that makes that data publicly accessible β€” no login required. -This repository represents a **live Network Operations Center (NOC) system**, not just a static portfolio. - -It showcases: - -* πŸ“Š **Ced’s NOC Dashboard** (real system monitoring) -* 🧠 **HomeLab Infrastructure** (HA virtualization, VLANs, services) -* ☸️ **K3s Cluster** (distributed compute) -* πŸ“‘ **APRS iGate (RF Edge System)** +It's not a template or a third-party uptime service. It's a purpose-built frontend that pulls live status data and presents it as a professional NOC dashboard. Every card on the page represents a real, running service with real latency and uptime data. --- -# πŸ“Š Ced’s NOC Dashboard +## Live Dashboard -A central visibility layer for all systems. +[![NOC Systems](./screenshots/noc-systems.png)](https://noc.chasedumphord.com) -This dashboard includes real Grafana, Prometheus, and Blackbox Exporter monitoring for live HomeLab services. +The NOC displays real-time status for every layer of the infrastructure stack β€” from the Proxmox hypervisor down to the APRS RF edge system. --- -## πŸ” What it shows: +## System Coverage -* Infrastructure health -* Service availability -* Network segmentation -* RF edge system status +### Core Infrastructure + +| Service | Role | Status Source | +|---------|------|--------------| +| Proxmox VE | Hypervisor β€” 6-node HA cluster | TCP probe via Blackbox | +| TrueNAS | Storage platform | TCP probe via Blackbox | +| Nginx Proxy Manager | Reverse proxy | TCP probe via Blackbox | + +### Application Layer + +| Service | Role | Status Source | +|---------|------|--------------| +| Dashy | Service dashboard | TCP probe via Blackbox | +| Jellyfin | Media service | TCP probe via Blackbox | +| K3s API | Kubernetes cluster API | TCP probe via Blackbox | + +### Edge / RF Systems + +| Service | Role | Status Source | +|---------|------|--------------| +| APRS Home iGate | RF-to-internet gateway (KJ5JCO-10) | TCP probe via Blackbox | +| APRS-IS | External APRS internet service | TCP probe β€” noam.aprs2.net:14580 | --- -## 🧠 Why it matters: +## Architecture -This demonstrates: +```mermaid +graph LR + subgraph Backend["Backend β€” ceds-observability-stack"] + PROM[Prometheus] + BB[Blackbox Exporter] + SCRIPTS[Python Status Scripts] + end -* System monitoring mindset -* Operational visibility -* Real-world infrastructure awareness -* Ability to translate data into actionable insights + subgraph NOC["Frontend β€” ceds-noc"] + PAGE[noc.chasedumphord.com] + BADGE[noc-badge.json] + STATUS[noc-status.json] + end + + subgraph Infrastructure["Live Infrastructure"] + PVE[Proxmox VE] + TN[TrueNAS] + K3S[K3s API] + APRS[APRS iGate] + SERVICES[Services] + end + + Infrastructure --> BB --> PROM + PROM --> SCRIPTS + SCRIPTS --> BADGE & STATUS + BADGE & STATUS --> PAGE +``` + +**Data flow:** +1. Blackbox Exporter probes all services via TCP/HTTP +2. Prometheus collects and stores probe results +3. Python scripts generate status JSON from Prometheus data +4. NOC frontend reads JSON and renders live status cards +5. Public visitors see real-time infrastructure status β€” no login needed --- -## πŸ–ΌοΈ Live Dashboard Preview +## Repository Structure -### πŸ“Š Metrics Overview - -![NOC Metrics](./screenshots/noc-metrics.png) - -### πŸ–₯️ Systems Overview - -![NOC Systems](./screenshots/noc-systems.png) - ---- - -## πŸ”΄ Live System Status - -![Ced's NOC](https://img.shields.io/endpoint?url=https://ced4568.github.io/ced-portfolio/data/noc-badge.json&style=for-the-badge) - -![Edge](https://img.shields.io/badge/Edge-RF%20Active-orange?style=for-the-badge) -![Portfolio](https://img.shields.io/badge/Portfolio-Live-blue?style=for-the-badge) - ---- - -# 🧠 Featured System β€” Ced’s NOC (Network Operations Center) - -A real-time monitoring and observability platform built on top of my homelab infrastructure. - ---- - -## πŸ” What it demonstrates: - -* Live system monitoring (services, nodes, edge systems) -* Infrastructure visibility across VLANs and clusters -* Service health tracking (latency, uptime, status) -* Real data ingestion (NOT simulated) -* Dashboard design for operational awareness - ---- - -## βš™οΈ Monitoring Stack: - -* Grafana (Visualization) -* Prometheus (Metrics collection) -* Blackbox Exporter (Service uptime & latency checks) -* Uptime Kuma (External monitoring layer) - -πŸ‘‰ This is the **core system** that ties everything together. - ---- - -# 🧱 Foundation β€” Ced’s Home Lab (Infrastructure + Monitoring) - -Real-world environment used to simulate production systems and host services. - -This is the backbone of Ced’s NOC β€” where all systems, services, and monitoring originate. - ---- - -## βš™οΈ Core Infrastructure - -* **Proxmox HA Cluster (High Availability Virtualization)** -* K3s Kubernetes cluster (Raspberry Pi - 12 nodes) -* TrueNAS storage system -* Docker / containerized workloads - ---- - -## 🌐 Networking Layer - -* VLAN segmentation - - Main Network - - IoT Network - - HomeLab Network (10.10.30.0/24) - - Guest Network - -* Nginx Proxy Manager (external access layer) -* Cloudflare Tunnels (secure remote access) - ---- - -## πŸ“Š Monitoring Stack (LIVE) - -* Grafana (Dashboards) -* Prometheus (Metrics) -* Blackbox Exporter (Service Monitoring) -* Uptime Kuma (External Monitoring) - -πŸ‘‰ The NOC dashboard is built directly on top of this environment. - ---- - -# πŸ“‘ Edge System β€” APRS iGate (RF β†’ Internet Gateway) - -A real-world RF system that feeds live data into infrastructure. - ---- - -## βš™οΈ System Components - -* Raspberry Pi + Direwolf APRS TNC -* Audio chain tuning (critical for decode accuracy) -* APRS-IS integration -* Real beacon ingestion from handheld radios - -πŸ”— **Project:** -https://github.com/ced4568/ceds-aprs-igate - ---- - -## πŸ”₯ Key Insight - -This system bridges: - -```text -RF radio signals β†’ Raspberry Pi / Direwolf β†’ APRS-IS β†’ Digital Infrastructure +``` +ceds-noc/ +β”œβ”€β”€ assets/ +β”‚ └── images/ # NOC page assets +β”œβ”€β”€ data/ +β”‚ β”œβ”€β”€ noc-badge.json # Live status badge data +β”‚ └── noc-status.json # Live service status data +β”œβ”€β”€ screenshots/ +β”‚ β”œβ”€β”€ noc-metrics.png # NOC metrics view +β”‚ └── noc-systems.png # NOC systems overview +β”œβ”€β”€ scripts/ +β”‚ β”œβ”€β”€ generate-noc-badge.py # Generates badge JSON from Prometheus +β”‚ └── generate-noc-status.py # Generates status JSON from Prometheus +β”œβ”€β”€ index.html # NOC frontend +β”œβ”€β”€ script.js # Status page logic +└── style.css # NOC styling ``` --- -## 🎯 Key Tuning Insight +## Status Card Design -* Target audio level: **~50–60** -* Too high β†’ clipping / decode failure -* Too low β†’ missed packets +Each service card on the NOC displays: -This was tuned using: +- **Service name and role** β€” what it is and what it does +- **Category badge** β€” HYPERVISOR, STORAGE, CLUSTER, PORTAL, etc. +- **Health badge** β€” HEALTHY or DEGRADED based on probe results +- **Internal IP and port** β€” where the service lives on the HomeLab VLAN +- **Status** β€” Online / Offline +- **Latency** β€” real response time in milliseconds +- **Last check timestamp** β€” when the probe last ran -* Direwolf audio level output -* Real beacon testing from handheld radios +This gives anyone viewing the page the same operational picture that the internal Grafana dashboard provides β€” without requiring access to the internal network. --- -# 🧠 Featured Systems +## Screenshots - +### Metrics Overview +![NOC Metrics](./screenshots/noc-metrics.png) --- -# 🧰 Tech Stack +## Related Projects -## ⚑ Core Technologies +| Project | Role | +|---------|------| +| [ceds-observability-stack](https://github.com/ced4568/ceds-observability-stack) | Backend β€” Prometheus, Grafana, Alertmanager, all exporters | +| [ceds-homelab](https://github.com/ced4568/ceds-homelab) | Infrastructure β€” Proxmox cluster, TrueNAS, networking | +| [ced-k3s-homelab](https://github.com/ced4568/ced-k3s-homelab) | Orchestration β€” 12-node Raspberry Pi K3s cluster | +| [ceds-aprs-igate](https://github.com/ced4568/ceds-aprs-igate) | Edge β€” Dual-node APRS RF-to-internet gateway | -TypeScript -Git -Linux -HTML -JavaScript -React -NodeJS -Python -Docker -Kubernetes -Grafana -Prometheus -Bash +--- -

+## Roadmap -## πŸ–₯️ Infrastructure & Systems +- [x] Live service status cards with real probe data +- [x] APRS RF edge system monitoring +- [x] Public access β€” no login required +- [x] Custom badge and status JSON generation +- [ ] Alerting integration β€” visual alerts on NOC page +- [ ] Historical uptime percentage per service +- [ ] Mobile-optimized layout +- [ ] Auto-refresh with configurable interval +- [ ] Public Grafana dashboard embed -* Proxmox HA Cluster (Virtualization) -* K3s Kubernetes (Raspberry Pi Cluster) -* Docker / Containerized Services -* TrueNAS (Storage) +--- -## πŸ“Š Monitoring & Observability +## Author -* Grafana (Dashboards) -* Prometheus (Metrics) -* Blackbox Exporter (Service Monitoring) -* Uptime Kuma (External Monitoring) +**Chase Dumphord (Ced)** +Digital Systems Engineer Β· GE Aerospace Β· Oxford, MS -## 🌐 Networking & Access - -* Nginx Proxy Manager (Reverse Proxy) -* Cloudflare Tunnels (Secure External Access) -* VLAN Segmentation (UniFi Network) - -## πŸ“‘ Edge & RF Systems - -* Direwolf (APRS TNC) -* APRS-IS Integration -* Raspberry Pi iGate Systems -* Audio Signal Processing / Tuning - -## πŸ’» Development - -* Python (Automation / Data Collection) -* JavaScript (Frontend Dashboard UI) -* HTML / CSS (UI Design) -* Bash (System Automation) -* Git / GitHub (Version Control) - -# πŸ“ˆ Roadmap - -* [x] Grafana + Prometheus deployed -* [x] Real service monitoring (Blackbox) -* [ ] Response time dashboards -* [ ] Alerting system (Prometheus alerts) -* [ ] Full NOC dashboard layout (v2) -* [ ] Mobile APRS iGate deployment - -# πŸ‘€ Connect With Me - -[LinkedIn](https://www.linkedin.com/in/toochase-dumphord/) - -[GitHub](https://github.com/ced4568) - -## ⚑ Final Note - -This is not a static portfolio β€” it is a live representation of real infrastructure, monitoring, and edge systems working together. \ No newline at end of file +[![Portfolio](https://img.shields.io/badge/Portfolio-chasedumphord.com-0F6E56?style=flat-square)](https://chasedumphord.com) +[![LinkedIn](https://img.shields.io/badge/LinkedIn-chase--dumphord-0A66C2?style=flat-square)](https://www.linkedin.com/in/chase-dumphord/) +[![GitHub](https://img.shields.io/badge/GitHub-ced4568-181717?style=flat-square)](https://github.com/ced4568) +[![Live NOC](https://img.shields.io/badge/Live%20NOC-noc.chasedumphord.com-1D9E75?style=flat-square)](https://noc.chasedumphord.com) \ No newline at end of file