feat: set Gateway 3 as root index and move dispatches to /dispatches/
- Update src/index.njk with Gateway 3 homelab services router and cluster telemetry - Create src/dispatches.njk for the full-width technical dispatches feed and tag filters - Update src/_data/site.json navigation hierarchy to reflect root Gateway and /dispatches/ - Update breadcrumbs and return links in post.njk and hero-tile.njk
This commit is contained in:
+4
-4
@@ -1,18 +1,18 @@
|
|||||||
{
|
{
|
||||||
"name": "River Rooks",
|
"name": "River Rooks",
|
||||||
"title": "River Rooks | Technical Publication",
|
"title": "River Rooks | Homelab Gateway",
|
||||||
"description": "Engineering Notes, CTF Write-Ups & Systems Architecture",
|
"description": "Engineering Notes, CTF Write-Ups & Systems Architecture",
|
||||||
"status": "SYSTEMS NOMINAL",
|
"status": "SYSTEMS NOMINAL",
|
||||||
"author": "River Rooks",
|
"author": "River Rooks",
|
||||||
"systemSpec": "IEEE STD 1003.1",
|
"systemSpec": "IEEE STD 1003.1",
|
||||||
"nav": [
|
"nav": [
|
||||||
{
|
{
|
||||||
"label": "Dispatches",
|
"label": "Gateway 3",
|
||||||
"url": "/"
|
"url": "/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "Gateway 3",
|
"label": "Dispatches",
|
||||||
"url": "/gateway/"
|
"url": "/dispatches/"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "Git Forge",
|
"label": "Git Forge",
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="padding-top: 10px; border-top: var(--border-width) solid var(--border-color);">
|
<div style="padding-top: 10px; border-top: var(--border-width) solid var(--border-color);">
|
||||||
<a href="/" class="filter-tag-btn" style="width: 100%; justify-content: center;">
|
<a href="/dispatches/" class="filter-tag-btn" style="width: 100%; justify-content: center;">
|
||||||
← Return to Dispatches
|
← Return to Dispatches
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
<article class="article-tile" aria-labelledby="article-title">
|
<article class="article-tile" aria-labelledby="article-title">
|
||||||
<header class="article-header-block">
|
<header class="article-header-block">
|
||||||
<nav class="article-breadcrumbs" aria-label="Breadcrumb">
|
<nav class="article-breadcrumbs" aria-label="Breadcrumb">
|
||||||
<a href="/">~/NOTES</a>
|
<a href="/dispatches/">~/NOTES</a>
|
||||||
<span>/</span>
|
<span>/</span>
|
||||||
<span>{{ (tags | filterTagList)[0] | default('DISPATCHES') | upper }}</span>
|
<span>{{ (tags | filterTagList)[0] | default('DISPATCHES') | upper }}</span>
|
||||||
<span>/</span>
|
<span>/</span>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="filter-pills-row" aria-label="Topic Filters">
|
<div class="filter-pills-row" aria-label="Topic Filters">
|
||||||
<a href="/" class="filter-tag-btn {% if not currentTag %}active{% endif %}">
|
<a href="/dispatches/" class="filter-tag-btn {% if not currentTag %}active{% endif %}">
|
||||||
[All Dispatches ({{ collections.posts.length }})]
|
[All Dispatches ({{ collections.posts.length }})]
|
||||||
</a>
|
</a>
|
||||||
{% for tag in collections.tagList %}
|
{% for tag in collections.tagList %}
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
layout: layouts/base.njk
|
||||||
|
title: "River Rooks | Engineering Notes & Systems Architecture"
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- 1. Lander Hero Tile with Dynamic Filter Tag Buttons -->
|
||||||
|
{% include "partials/hero-tile.njk" %}
|
||||||
|
|
||||||
|
<!-- 2. Asymmetric Split Grid: Featured Lead Post (Left) & Telemetry Sidebar (Right) -->
|
||||||
|
<div class="split-grid">
|
||||||
|
<div class="split-lead-col">
|
||||||
|
{% include "partials/featured-card.njk" %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="split-sidebar-col">
|
||||||
|
{% include "partials/stats-sidebar.njk" %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 3. Full-Width Chronological Dispatches Feed Tile -->
|
||||||
|
<section class="tile" aria-label="Dispatches Feed Catalog">
|
||||||
|
<header class="tile-header">
|
||||||
|
<div class="tile-title">
|
||||||
|
<span class="status-indicator"></span>
|
||||||
|
RECENT DISPATCHES
|
||||||
|
</div>
|
||||||
|
<span class="tile-meta">ORDER: CHRONOLOGICAL DESC • TOTAL: {{ collections.posts.length }}</span>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="feed-list">
|
||||||
|
{% for post in collections.posts %}
|
||||||
|
{% include "partials/post-card.njk" %}
|
||||||
|
{% else %}
|
||||||
|
<p style="color: var(--text-muted); font-family: var(--font-mono); font-size: 0.85rem; padding: 16px;">
|
||||||
|
No published dispatches found in repository.
|
||||||
|
</p>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
-137
@@ -1,137 +0,0 @@
|
|||||||
---
|
|
||||||
layout: layouts/base.njk
|
|
||||||
title: "River Rooks | Homelab Gateway"
|
|
||||||
---
|
|
||||||
|
|
||||||
<!-- Main Hero Landing Tile -->
|
|
||||||
<section class="hero-tile" aria-label="Gateway Declaration">
|
|
||||||
<div class="hero-pretitle">SYSTEM DECLARATION • RACK-01 NODE GATEWAY</div>
|
|
||||||
<h1 class="hero-main-title">Engineering Sovereign Infrastructure & Technical Notes</h1>
|
|
||||||
|
|
||||||
<div class="hero-landing-text">
|
|
||||||
<p>
|
|
||||||
My work centers on network forensics, self-hosted system architecture, low-level firmware exploitation, and zero-allocation Unix utilities.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
This gateway functions as the frontend for my physical homelab cluster. Rather than hosting projects on opaque third-party clouds, everything here runs on bare metal in my personal server rack—orchestrated through Proxmox VE, partitioned across isolated VLANs via OPNsense, and protected by point-to-point WireGuard cryptographic meshes.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="hero-directive-box">
|
|
||||||
<strong>PRIMARY DESTINATIONS:</strong>
|
|
||||||
<span style="color: var(--accent-cyan); margin-left: 8px;">[1] Technical Blog ({{ collections.posts.length }} Articles)</span> •
|
|
||||||
<span>[2] Forgejo Git Repos</span> •
|
|
||||||
<span>[3] Public Tools</span> •
|
|
||||||
<span>[4] Cluster Telemetry</span>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<!-- Split Tiling Columns -->
|
|
||||||
<div class="split-grid">
|
|
||||||
<!-- Left Column: Featured Service (Blog) + Dynamic Recent Articles -->
|
|
||||||
<div style="display: flex; flex-direction: column; gap: var(--tile-gap);">
|
|
||||||
<section class="tile" aria-label="Featured Service: Technical Blog">
|
|
||||||
<header class="tile-header">
|
|
||||||
<div class="tile-title">
|
|
||||||
<span class="status-indicator"></span>
|
|
||||||
// PRIMARY SERVICE: THE TECHNICAL BLOG
|
|
||||||
</div>
|
|
||||||
<span class="tile-meta">~/notes/ • {{ collections.posts.length }} ARTICLES</span>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<div class="blog-service-feature">
|
|
||||||
<div class="blog-feature-top">
|
|
||||||
<span class="badge-core">[CORE PUBLICATION SERVICE]</span>
|
|
||||||
<span style="color: var(--text-muted);">{{ collections.posts[0].date | postDate }} LAST SYNC</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a href="/" class="blog-feature-title">> River Rooks Technical Notes & Research</a>
|
|
||||||
<p class="blog-feature-desc">
|
|
||||||
In-depth security post-mortems, CTF write-ups, shell portability benchmarks, and bare-metal homelab architecture guides.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<div class="blog-sublinks">
|
|
||||||
{% for post in collections.posts | limit(4) %}
|
|
||||||
<a href="{{ post.url }}" class="blog-sublink-item">
|
|
||||||
<span>{{ loop.index }}. {{ post.data.title }}</span>
|
|
||||||
<span style="color: var(--accent-cyan);">[{{ post.templateContent | readingTime(post.data.readingTime) }}] →</span>
|
|
||||||
</a>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Right Column: Homelab Hosted Services & Node Telemetry -->
|
|
||||||
<div style="display: flex; flex-direction: column; gap: var(--tile-gap);">
|
|
||||||
<section class="tile" aria-label="Homelab Services Directory">
|
|
||||||
<header class="tile-header">
|
|
||||||
<div class="tile-title">
|
|
||||||
<span class="status-indicator"></span>
|
|
||||||
// HOMELAB SERVICES ROUTER
|
|
||||||
</div>
|
|
||||||
<span class="tile-meta">4 PUBLIC TOOLS</span>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<div class="services-mini-grid">
|
|
||||||
<a href="https://git.rooks.dev" target="_blank" rel="noopener noreferrer" class="service-tile-item">
|
|
||||||
<div>
|
|
||||||
<div class="service-item-title">Forgejo Git</div>
|
|
||||||
<div class="service-item-tag">git.rooks.dev:2222</div>
|
|
||||||
</div>
|
|
||||||
<p class="service-item-desc">Self-hosted code repositories & dotfiles.</p>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="https://chef.rooks.dev" target="_blank" rel="noopener noreferrer" class="service-tile-item">
|
|
||||||
<div>
|
|
||||||
<div class="service-item-title">CyberChef</div>
|
|
||||||
<div class="service-item-tag">chef.rooks.dev:443</div>
|
|
||||||
</div>
|
|
||||||
<p class="service-item-desc">Hex decoding, cryptography & forensics.</p>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="https://pdf.rooks.dev" target="_blank" rel="noopener noreferrer" class="service-tile-item">
|
|
||||||
<div>
|
|
||||||
<div class="service-item-title">Stirling PDF</div>
|
|
||||||
<div class="service-item-tag">pdf.rooks.dev:443</div>
|
|
||||||
</div>
|
|
||||||
<p class="service-item-desc">Private document OCR and manipulation.</p>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="https://status.rooks.dev" target="_blank" rel="noopener noreferrer" class="service-tile-item">
|
|
||||||
<div>
|
|
||||||
<div class="service-item-title">Uptime Kuma</div>
|
|
||||||
<div class="service-item-tag">status.rooks.dev:443</div>
|
|
||||||
</div>
|
|
||||||
<p class="service-item-desc">High-frequency ping & latency monitors.</p>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<!-- Infrastructure Telemetry Tile -->
|
|
||||||
<section class="tile" aria-label="Infrastructure Nodes Telemetry">
|
|
||||||
<header class="tile-header">
|
|
||||||
<div class="tile-title">
|
|
||||||
<span class="status-indicator"></span>
|
|
||||||
// CLUSTER TELEMETRY
|
|
||||||
</div>
|
|
||||||
<span class="tile-meta">3 NODES ONLINE</span>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<div style="display: flex; flex-direction: column; gap: 8px;">
|
|
||||||
<div class="node-stat-row">
|
|
||||||
<span class="node-name">RACK-01 (Proxmox Primary)</span>
|
|
||||||
<span class="node-load">ONLINE • LOAD: 0.24</span>
|
|
||||||
</div>
|
|
||||||
<div class="node-stat-row">
|
|
||||||
<span class="node-name">NODE-02 (Storage TrueNAS)</span>
|
|
||||||
<span class="node-load">ONLINE • POOL: 98% HEALTH</span>
|
|
||||||
</div>
|
|
||||||
<div class="node-stat-row">
|
|
||||||
<span class="node-name">OPN-01 (Routing Gateway)</span>
|
|
||||||
<span class="node-load">ONLINE • WIREGUARD ACTIVE</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
+121
-23
@@ -1,39 +1,137 @@
|
|||||||
---
|
---
|
||||||
layout: layouts/base.njk
|
layout: layouts/base.njk
|
||||||
title: "River Rooks | Engineering Notes & Systems Architecture"
|
title: "River Rooks | Homelab Gateway"
|
||||||
---
|
---
|
||||||
|
|
||||||
<!-- 1. Lander Hero Tile with Dynamic Filter Tag Buttons -->
|
<!-- Main Hero Landing Tile -->
|
||||||
{% include "partials/hero-tile.njk" %}
|
<section class="hero-tile" aria-label="Gateway Declaration">
|
||||||
|
<div class="hero-pretitle">SYSTEM DECLARATION • RACK-01 NODE GATEWAY</div>
|
||||||
|
<h1 class="hero-main-title">Engineering Sovereign Infrastructure & Technical Notes</h1>
|
||||||
|
|
||||||
<!-- 2. Asymmetric Split Grid: Featured Lead Post (Left) & Telemetry Sidebar (Right) -->
|
<div class="hero-landing-text">
|
||||||
|
<p>
|
||||||
|
My work centers on network forensics, self-hosted system architecture, low-level firmware exploitation, and zero-allocation Unix utilities.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This gateway functions as the frontend for my physical homelab cluster. Rather than hosting projects on opaque third-party clouds, everything here runs on bare metal in my personal server rack—orchestrated through Proxmox VE, partitioned across isolated VLANs via OPNsense, and protected by point-to-point WireGuard cryptographic meshes.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="hero-directive-box">
|
||||||
|
<strong>PRIMARY DESTINATIONS:</strong>
|
||||||
|
<a href="/dispatches/" style="color: var(--accent-cyan); text-decoration: none; margin-left: 8px;">[1] Technical Blog ({{ collections.posts.length }} Articles)</a> •
|
||||||
|
<a href="https://git.rooks.dev" target="_blank" rel="noopener noreferrer" style="color: inherit; text-decoration: none;">[2] Forgejo Git Repos</a> •
|
||||||
|
<span>[3] Public Tools</span> •
|
||||||
|
<span>[4] Cluster Telemetry</span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Split Tiling Columns -->
|
||||||
<div class="split-grid">
|
<div class="split-grid">
|
||||||
<div class="split-lead-col">
|
<!-- Left Column: Featured Service (Blog) + Dynamic Recent Articles -->
|
||||||
{% include "partials/featured-card.njk" %}
|
<div style="display: flex; flex-direction: column; gap: var(--tile-gap);">
|
||||||
</div>
|
<section class="tile" aria-label="Featured Service: Technical Blog">
|
||||||
|
|
||||||
<div class="split-sidebar-col">
|
|
||||||
{% include "partials/stats-sidebar.njk" %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 3. Full-Width Chronological Dispatches Feed Tile -->
|
|
||||||
<section class="tile" aria-label="Dispatches Feed Catalog">
|
|
||||||
<header class="tile-header">
|
<header class="tile-header">
|
||||||
<div class="tile-title">
|
<div class="tile-title">
|
||||||
<span class="status-indicator"></span>
|
<span class="status-indicator"></span>
|
||||||
RECENT DISPATCHES
|
// PRIMARY SERVICE: THE TECHNICAL BLOG
|
||||||
</div>
|
</div>
|
||||||
<span class="tile-meta">ORDER: CHRONOLOGICAL DESC • TOTAL: {{ collections.posts.length }}</span>
|
<span class="tile-meta">~/notes/ • {{ collections.posts.length }} ARTICLES</span>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div class="feed-list">
|
<div class="blog-service-feature">
|
||||||
{% for post in collections.posts %}
|
<div class="blog-feature-top">
|
||||||
{% include "partials/post-card.njk" %}
|
<span class="badge-core">[CORE PUBLICATION SERVICE]</span>
|
||||||
{% else %}
|
<span style="color: var(--text-muted);">{{ collections.posts[0].date | postDate }} LAST SYNC</span>
|
||||||
<p style="color: var(--text-muted); font-family: var(--font-mono); font-size: 0.85rem; padding: 16px;">
|
</div>
|
||||||
No published dispatches found in repository.
|
|
||||||
|
<a href="/dispatches/" class="blog-feature-title">> River Rooks Technical Notes & Research</a>
|
||||||
|
<p class="blog-feature-desc">
|
||||||
|
In-depth security post-mortems, CTF write-ups, shell portability benchmarks, and bare-metal homelab architecture guides.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<div class="blog-sublinks">
|
||||||
|
{% for post in collections.posts | limit(4) %}
|
||||||
|
<a href="{{ post.url }}" class="blog-sublink-item">
|
||||||
|
<span>{{ loop.index }}. {{ post.data.title }}</span>
|
||||||
|
<span style="color: var(--accent-cyan);">[{{ post.templateContent | readingTime(post.data.readingTime) }}] →</span>
|
||||||
|
</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Right Column: Homelab Hosted Services & Node Telemetry -->
|
||||||
|
<div style="display: flex; flex-direction: column; gap: var(--tile-gap);">
|
||||||
|
<section class="tile" aria-label="Homelab Services Directory">
|
||||||
|
<header class="tile-header">
|
||||||
|
<div class="tile-title">
|
||||||
|
<span class="status-indicator"></span>
|
||||||
|
// HOMELAB SERVICES ROUTER
|
||||||
|
</div>
|
||||||
|
<span class="tile-meta">4 PUBLIC TOOLS</span>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div class="services-mini-grid">
|
||||||
|
<a href="https://git.rooks.dev" target="_blank" rel="noopener noreferrer" class="service-tile-item">
|
||||||
|
<div>
|
||||||
|
<div class="service-item-title">Forgejo Git</div>
|
||||||
|
<div class="service-item-tag">git.rooks.dev:2222</div>
|
||||||
|
</div>
|
||||||
|
<p class="service-item-desc">Self-hosted code repositories & dotfiles.</p>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="https://chef.rooks.dev" target="_blank" rel="noopener noreferrer" class="service-tile-item">
|
||||||
|
<div>
|
||||||
|
<div class="service-item-title">CyberChef</div>
|
||||||
|
<div class="service-item-tag">chef.rooks.dev:443</div>
|
||||||
|
</div>
|
||||||
|
<p class="service-item-desc">Hex decoding, cryptography & forensics.</p>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="https://pdf.rooks.dev" target="_blank" rel="noopener noreferrer" class="service-tile-item">
|
||||||
|
<div>
|
||||||
|
<div class="service-item-title">Stirling PDF</div>
|
||||||
|
<div class="service-item-tag">pdf.rooks.dev:443</div>
|
||||||
|
</div>
|
||||||
|
<p class="service-item-desc">Private document OCR and manipulation.</p>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="https://status.rooks.dev" target="_blank" rel="noopener noreferrer" class="service-tile-item">
|
||||||
|
<div>
|
||||||
|
<div class="service-item-title">Uptime Kuma</div>
|
||||||
|
<div class="service-item-tag">status.rooks.dev:443</div>
|
||||||
|
</div>
|
||||||
|
<p class="service-item-desc">High-frequency ping & latency monitors.</p>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Infrastructure Telemetry Tile -->
|
||||||
|
<section class="tile" aria-label="Infrastructure Nodes Telemetry">
|
||||||
|
<header class="tile-header">
|
||||||
|
<div class="tile-title">
|
||||||
|
<span class="status-indicator"></span>
|
||||||
|
// CLUSTER TELEMETRY
|
||||||
|
</div>
|
||||||
|
<span class="tile-meta">3 NODES ONLINE</span>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div style="display: flex; flex-direction: column; gap: 8px;">
|
||||||
|
<div class="node-stat-row">
|
||||||
|
<span class="node-name">RACK-01 (Proxmox Primary)</span>
|
||||||
|
<span class="node-load">ONLINE • LOAD: 0.24</span>
|
||||||
|
</div>
|
||||||
|
<div class="node-stat-row">
|
||||||
|
<span class="node-name">NODE-02 (Storage TrueNAS)</span>
|
||||||
|
<span class="node-load">ONLINE • POOL: 98% HEALTH</span>
|
||||||
|
</div>
|
||||||
|
<div class="node-stat-row">
|
||||||
|
<span class="node-name">OPN-01 (Routing Gateway)</span>
|
||||||
|
<span class="node-load">ONLINE • WIREGUARD ACTIVE</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user