added more samples and identified ideal candidates

This commit is contained in:
venus
2026-09-12 22:47:46 -05:00
parent f3ae84ad79
commit 70134d2e00
18 changed files with 11044 additions and 2 deletions
+587
View File
@@ -0,0 +1,587 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>River Rooks | Node Gateway &amp; System Hub</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,400;0,500;0,700;1,400&family=Inter:wght@400;500;700&family=JetBrains+Mono:ital,wght@0,400;0,500;1,400&display=swap');
:root {
--bg-canvas: #0d0f12; /* Deep slate/charcoal canvas */
--bg-surface: #121417; /* Card surface background */
--bg-elevated: #1c1f26; /* Hovered surface */
--border-color: #2b303b; /* Low-contrast 1px border */
--text-primary: #e0e6f0; /* Off-white prose */
--text-muted: #8a95a5; /* Monospace metadata */
--accent-cyan: #00f0ff; /* Primary terminal accent */
--accent-green: #00e676; /* Operational indicator */
--accent-amber: #ffb700; /* Internal / protected warning */
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
background-color: var(--bg-canvas);
color: var(--text-primary);
font-family: 'Inter', sans-serif;
line-height: 1.65;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
padding: 40px 20px 64px 20px;
}
.hub-container {
width: 100%;
max-width: 780px;
}
/* Top Breadcrumb & Status Bar */
.top-status-bar {
display: flex;
justify-content: space-between;
align-items: center;
font-family: 'IBM Plex Mono', monospace;
font-size: 0.78rem;
color: var(--text-muted);
padding-bottom: 12px;
margin-bottom: 28px;
border-bottom: 1px solid var(--border-color);
flex-wrap: wrap;
gap: 10px;
}
.node-identifier {
display: flex;
align-items: center;
gap: 8px;
}
.status-dot {
width: 8px;
height: 8px;
background-color: var(--accent-green);
display: inline-block;
flex-shrink: 0;
}
.status-pill {
color: var(--accent-green);
font-weight: 500;
}
/* Main Landing Narrative Section (Primary Focus) */
.landing-hero {
margin-bottom: 36px;
}
.author-title {
font-family: 'IBM Plex Mono', monospace;
font-size: 2.2rem;
font-weight: 700;
color: var(--text-primary);
letter-spacing: -0.02em;
margin-bottom: 6px;
}
.author-tagline {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.85rem;
color: var(--accent-cyan);
margin-bottom: 20px;
letter-spacing: 0.04em;
}
.manifesto-prose {
font-size: 1.02rem;
color: var(--text-primary);
line-height: 1.7;
margin-bottom: 20px;
}
.manifesto-prose p {
margin-bottom: 16px;
}
.callout-block {
background-color: var(--bg-surface);
border: 1px solid var(--border-color);
border-left: 3px solid var(--accent-cyan);
border-radius: 3px;
padding: 14px 18px;
font-size: 0.9rem;
color: var(--text-muted);
margin-bottom: 24px;
font-family: 'IBM Plex Mono', monospace;
line-height: 1.55;
}
.callout-block strong {
color: var(--text-primary);
}
/* 1px Solid Section Divider */
.section-divider {
border: 0;
border-top: 1px solid var(--border-color);
margin: 36px 0;
}
.section-header {
display: flex;
justify-content: space-between;
align-items: baseline;
margin-bottom: 16px;
}
.section-title {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.95rem;
font-weight: 700;
color: var(--text-primary);
text-transform: uppercase;
letter-spacing: 0.05em;
}
.section-meta {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.76rem;
color: var(--text-muted);
}
/* Direction to Services Router */
.services-router {
display: flex;
flex-direction: column;
gap: 12px;
margin-bottom: 40px;
}
.service-card {
background-color: var(--bg-surface);
border: 1px solid var(--border-color);
border-radius: 4px;
padding: 16px 20px;
display: flex;
flex-direction: column;
gap: 8px;
text-decoration: none;
color: inherit;
transition: none; /* Instant snap */
}
.service-card:hover {
border-color: var(--accent-cyan);
background-color: var(--bg-elevated);
}
.service-card:focus {
outline: 2px solid var(--accent-cyan);
outline-offset: -1px;
}
/* Highlighted Blog Service Card */
.service-card.service-primary {
border-left: 3px solid var(--accent-cyan);
}
.service-top-row {
display: flex;
justify-content: space-between;
align-items: center;
font-family: 'IBM Plex Mono', monospace;
font-size: 0.8rem;
}
.service-name-group {
display: flex;
align-items: center;
gap: 10px;
}
.service-name {
font-size: 1.05rem;
font-weight: 700;
color: var(--text-primary);
}
.service-card:hover .service-name {
color: var(--accent-cyan);
}
.service-badge {
font-size: 0.72rem;
padding: 2px 6px;
border-radius: 2px;
font-weight: 500;
}
.badge-blog {
background-color: var(--accent-cyan);
color: var(--bg-canvas);
font-weight: 700;
}
.badge-public {
border: 1px solid var(--accent-green);
color: var(--accent-green);
}
.badge-internal {
border: 1px solid var(--accent-amber);
color: var(--accent-amber);
}
.service-endpoint {
color: var(--text-muted);
font-size: 0.76rem;
}
.service-desc {
font-size: 0.9rem;
color: var(--text-primary);
line-height: 1.5;
}
.service-tags {
display: flex;
flex-wrap: wrap;
gap: 8px;
font-family: 'IBM Plex Mono', monospace;
font-size: 0.74rem;
color: var(--text-muted);
margin-top: 4px;
}
/* Recent Articles Feed Section */
.articles-preview-list {
display: flex;
flex-direction: column;
gap: 16px;
}
.article-item {
background-color: var(--bg-surface);
border: 1px solid var(--border-color);
border-radius: 3px;
padding: 14px 18px;
display: flex;
flex-direction: column;
gap: 6px;
}
.article-item:hover {
border-color: var(--accent-cyan);
}
.article-meta-row {
display: flex;
justify-content: space-between;
font-family: 'IBM Plex Mono', monospace;
font-size: 0.75rem;
color: var(--text-muted);
}
.article-date {
color: var(--accent-cyan);
}
.article-heading {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.98rem;
font-weight: 700;
color: var(--text-primary);
text-decoration: none;
transition: none;
}
.article-heading:hover {
color: var(--accent-cyan);
}
.article-summary-text {
font-size: 0.88rem;
color: var(--text-primary);
line-height: 1.5;
}
/* Footer */
.hub-footer {
margin-top: 48px;
padding-top: 24px;
border-top: 1px solid var(--border-color);
font-family: 'IBM Plex Mono', monospace;
font-size: 0.8rem;
color: var(--text-muted);
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 12px;
}
.footer-links {
display: flex;
gap: 10px;
align-items: center;
flex-wrap: wrap;
}
.footer-link {
color: var(--text-primary);
text-decoration: none;
padding: 2px 4px;
transition: none;
}
.footer-link:hover {
background-color: var(--accent-cyan);
color: var(--bg-canvas);
}
.pipe {
color: var(--border-color);
}
</style>
</head>
<body>
<main class="hub-container">
<!-- Top Status Line -->
<header class="top-status-bar">
<div class="node-identifier">
<span class="status-dot"></span>
<span>node: gw-node01.lan [RACK-01 / ALABAMA]</span>
</div>
<div class="status-pill">[SYSTEMS OPERATIONAL • 10GbE]</div>
</header>
<!-- Main Landing Narrative (Core Focus) -->
<section class="landing-hero" aria-label="System Introduction & Landing Manifesto">
<h1 class="author-title">River Rooks</h1>
<div class="author-tagline">SYSTEMS ARCHITECTURE &bull; CYBERSECURITY &bull; SELF-HOSTED CLUSTER</div>
<div class="manifesto-prose">
<p>
Welcome to my personal computing node and technical gateway. I am an engineering student at the University of Alabama specializing in network forensics, bare-metal hypervisors, and security systems.
</p>
<p>
This server is not a commercial landing page or marketing platform. It is a sovereign, self-hosted operational command hub operating from a dedicated 10GbE home rack. All services below run on hardened local hypervisors (Proxmox VE, OPNsense, TrueNAS) routed through an automated Traefik reverse proxy with WireGuard zero-trust mesh peering.
</p>
<p>
Use this landing portal to navigate the ecosystem. The <strong>Technical Blog</strong> contains deep-dive research notes and CTF post-mortems. The <strong>Public Services</strong> are live, free-to-use developer and cryptographic utilities available to the public, while the <strong>Internal Infrastructure</strong> links route directly to cluster monitoring and orchestration consoles.
</p>
</div>
<div class="callout-block">
<strong>ROUTING NOTICE:</strong> External ingress is authenticated and monitored via OPNsense Suricata IDS/IPS. Public utilities are open for interactive use without registration.
</div>
</section>
<hr class="section-divider">
<!-- Direction to Services (With Blog as Primary Endpoint) -->
<section aria-label="Homelab Services Directory">
<div class="section-header">
<h2 class="section-title">Directory of Hosted Services &amp; Tools</h2>
<span class="section-meta">Select a destination &rarr;</span>
</div>
<div class="services-router">
<!-- Service 1: The Blog (Primary Service) -->
<a href="blog-lander-stream.html" class="service-card service-primary" title="Go to Technical Blog & Dispatches">
<div class="service-top-row">
<div class="service-name-group">
<span class="service-name">&gt; Technical Notes &amp; Engineering Blog</span>
<span class="service-badge badge-blog">[BLOG / DISPATCHES]</span>
</div>
<span class="service-endpoint">~/blog/notes/ &bull; rooks.dev/notes</span>
</div>
<p class="service-desc">
The core writing repository. Reverse-chronological feed of technical articles covering IoT SPI flash extraction, glibc 2.35 heap exploitation, high-availability Traefik routing, and POSIX shell engineering.
</p>
<div class="service-tags">
<span>[#ctf-writeups]</span>
<span>[#firmware-reversing]</span>
<span>[#traefik-docker]</span>
<span>[#posix-sh]</span>
<span style="color: var(--accent-cyan); font-weight: 500;">[OPEN BLOG FEED &rarr;]</span>
</div>
</a>
<!-- Service 2: Forgejo Git Server -->
<a href="https://git.rooks.dev" target="_blank" rel="noopener" class="service-card" title="Open Self-Hosted Git Forge">
<div class="service-top-row">
<div class="service-name-group">
<span class="service-name">Forgejo Git Server</span>
<span class="service-badge badge-public">[PUBLIC FORGE]</span>
</div>
<span class="service-endpoint">https://git.rooks.dev &bull; :2222/ssh</span>
</div>
<p class="service-desc">
Lightweight, independent Git forge hosting infrastructure-as-code playbooks, dotfiles, POSIX shell parser modules, and bare-metal kernel bootstrap code.
</p>
<div class="service-tags">
<span>[#iac]</span>
<span>[#ansible]</span>
<span>[#cortex-m]</span>
<span>[#git]</span>
</div>
</a>
<!-- Service 3: CyberChef Workbench -->
<a href="https://chef.rooks.dev" target="_blank" rel="noopener" class="service-card" title="Open CyberChef Workbench">
<div class="service-top-row">
<div class="service-name-group">
<span class="service-name">CyberChef Security Workbench</span>
<span class="service-badge badge-public">[PUBLIC TOOL]</span>
</div>
<span class="service-endpoint">https://chef.rooks.dev &bull; :443</span>
</div>
<p class="service-desc">
Client-side cryptographic Swiss Army knife for hex decoding, Base64 operations, XOR decryption, hashing algorithms, and CTF payload deconstruction.
</p>
<div class="service-tags">
<span>[#cryptography]</span>
<span>[#forensics]</span>
<span>[#ctf-toolkit]</span>
</div>
</a>
<!-- Service 4: Stirling PDF Studio -->
<a href="https://pdf.rooks.dev" target="_blank" rel="noopener" class="service-card" title="Open Stirling PDF Suite">
<div class="service-top-row">
<div class="service-name-group">
<span class="service-name">Stirling PDF Studio</span>
<span class="service-badge badge-public">[PUBLIC TOOL]</span>
</div>
<span class="service-endpoint">https://pdf.rooks.dev &bull; :443</span>
</div>
<p class="service-desc">
Locally hosted private document toolkit for OCR text extraction, PDF merging, splitting, sanitization, and password encryption without external cloud telemetry.
</p>
<div class="service-tags">
<span>[#pdf-tools]</span>
<span>[#ocr]</span>
<span>[#privacy-first]</span>
</div>
</a>
<!-- Service 5: Proxmox VE & TrueNAS Cluster Management -->
<a href="homelab.html" class="service-card" title="Inspect Homelab Infrastructure">
<div class="service-top-row">
<div class="service-name-group">
<span class="service-name">Homelab Cluster &amp; Storage</span>
<span class="service-badge badge-internal">[INTERNAL / HYPERVISOR]</span>
</div>
<span class="service-endpoint">https://pve.rooks.dev &bull; 48TB ZFS</span>
</div>
<p class="service-desc">
Hypervisor cluster with AMD Ryzen 9 5900X (12C/24T), 128GB ECC RAM, and TrueNAS SCALE RaidZ2 storage pool. View node topology and live resource utilization telemetry.
</p>
<div class="service-tags">
<span>[#proxmox-ve]</span>
<span>[#truenas]</span>
<span>[#10gbe-mesh]</span>
</div>
</a>
<!-- Service 6: Uptime Kuma System Telemetry -->
<a href="https://status.rooks.dev" target="_blank" rel="noopener" class="service-card" title="Open Status Dashboard">
<div class="service-top-row">
<div class="service-name-group">
<span class="service-name">Uptime Kuma Health Monitor</span>
<span class="service-badge badge-public">[STATUS / TELEMETRY]</span>
</div>
<span class="service-endpoint">https://status.rooks.dev &bull; :3001</span>
</div>
<p class="service-desc">
Continuous synthetic HTTP, TCP, and ICMP health checks broadcasting real-time cluster uptime, DNS resolution latencies, and service availability.
</p>
<div class="service-tags">
<span>[#uptime-100%]</span>
<span>[#telemetry]</span>
<span>[#prometheus]</span>
</div>
</a>
</div>
</section>
<hr class="section-divider">
<!-- Recent Technical Writing (Direct Excerpts from the Blog) -->
<section aria-label="Latest Blog Dispatches">
<div class="section-header">
<h2 class="section-title">Latest Technical Dispatches From the Blog</h2>
<a href="blog-lander-stream.html" style="color: var(--accent-cyan); font-family: 'IBM Plex Mono', monospace; font-size: 0.78rem; text-decoration: none;">View all 5 entries &rarr;</a>
</div>
<div class="articles-preview-list">
<article class="article-item">
<div class="article-meta-row">
<time datetime="2026-07-20" class="article-date">2026-07-20 &bull; 8 min read</time>
<span>[#firmware] [#hardware]</span>
</div>
<a href="blog-lander-stream.html" class="article-heading">&gt; Reverse Engineering IoT Firmware: SPI Flash Extraction</a>
<p class="article-summary-text">
Bypassing bootloader lockdowns by dumping physical SPI Flash memory from an 8-pin SOP chip using a Bus Pirate and flashrom.
</p>
</article>
<article class="article-item">
<div class="article-meta-row">
<time datetime="2026-07-15" class="article-date">2026-07-15 &bull; 12 min read</time>
<span>[#homelab] [#docker-traefik]</span>
</div>
<a href="blog-lander-stream.html" class="article-heading">&gt; Building a High-Availability Traefik Router with Docker Compose</a>
<p class="article-summary-text">
Architecting automated TLS wildcard certificate propagation, Docker provider label routing, zero-downtime container updates, and health checks.
</p>
</article>
<article class="article-item">
<div class="article-meta-row">
<time datetime="2026-07-10" class="article-date">2026-07-10 &bull; 6 min read</time>
<span>[#posix-sh] [#unix]</span>
</div>
<a href="blog-lander-stream.html" class="article-heading">&gt; POSIX sh vs. Bash: Portability in Modern Scripts</a>
<p class="article-summary-text">
Eliminating bashisms and writing bulletproof, zero-allocation bootstrapping scripts for minimal Alpine and embedded Linux environments.
</p>
</article>
</div>
</section>
<!-- Footer -->
<footer class="hub-footer">
<div>River Rooks &bull; Cluster gw-node01.lan</div>
<nav class="footer-links" aria-label="Portal Footer Navigation">
<a href="blog-lander-stream.html" class="footer-link">Blog</a>
<span class="pipe">|</span>
<a href="feed.xml" class="footer-link">RSS</a>
<span class="pipe">|</span>
<a href="https://git.rooks.dev" target="_blank" rel="noopener" class="footer-link">Git Forge</a>
<span class="pipe">|</span>
<a href="mailto:river@rooks.dev" class="footer-link">Email</a>
<span class="pipe">|</span>
<a href="#" title="Fingerprint: 0x4A8E92F1C0B3D4E7" class="footer-link">PGP Key</a>
<span class="pipe">|</span>
<a href="index.html" class="footer-link">Samples Catalog &rarr;</a>
</nav>
</footer>
</main>
</body>
</html>