Update index.html

This commit is contained in:
2026-06-21 01:34:59 +00:00
parent be07315b2b
commit 2d94331c4a
+185 -58
View File
@@ -8,99 +8,226 @@
</head>
<body>
<header class="hero">
<nav>
<nav class="nav">
<div class="logo">ByteGeist</div>
<div class="nav-links">
<a href="#architecture">Architecture</a>
<a href="#operations">Operations</a>
<a href="#security">Security</a>
<a href="#cicd">CI/CD</a>
<a href="#docs">Docs</a>
<a href="#development">CI/CD</a>
<a href="#recovery">Recovery</a>
</div>
</nav>
<section class="hero-content">
<p class="eyebrow">Self-Hosted Infrastructure Lab</p>
<h1>Infrastructure, security, monitoring, and automation built from scratch.</h1>
<p class="subtext">
ByteGeist Cloud is a self-hosted homelab platform running on Ubuntu, Docker, Authentik,
Grafana, Loki, Prometheus, CrowdSec, Gitea, and Woodpecker CI.
</p>
<section class="hero-grid">
<div class="hero-content">
<p class="eyebrow">Self-Hosted Infrastructure Platform</p>
<h1>Infrastructure, security, monitoring, and automation built from scratch.</h1>
<p class="subtext">
ByteGeist Cloud is a self-hosted homelab platform running on Ubuntu, Docker,
Authentik, Grafana, Loki, Prometheus, CrowdSec, Gitea, and Woodpecker CI.
</p>
<div class="buttons">
<a href="https://wiki.casko.dev" class="btn primary">View Documentation</a>
<a href="https://git.casko.dev" class="btn secondary">View Git Server</a>
<div class="buttons">
<a href="https://wiki.casko.dev" class="btn primary">View Documentation</a>
<a href="https://git.casko.dev" class="btn secondary">View Git Server</a>
</div>
</div>
<div class="hero-image">
<img src="assets/images/portfolio-grafana-operations.png" alt="ByteGeist Grafana operations dashboard" />
</div>
</section>
</header>
<main>
<section class="stats">
<div><span>25+</span><p>Containers</p></div>
<div><span>26</span><p>Containers</p></div>
<div><span>20+</span><p>Services</p></div>
<div><span>SSO</span><p>Authentik</p></div>
<div><span>CI/CD</span><p>Woodpecker</p></div>
</section>
<section id="architecture" class="section">
<h2>Platform Overview</h2>
<section class="section intro">
<h2>What is ByteGeist?</h2>
<p>
ByteGeist uses Nginx Proxy Manager for routing, Authentik for identity, Grafana and
Prometheus for monitoring, Loki and Alloy for logs, and Woodpecker for automation.
ByteGeist Cloud is a self-hosted infrastructure platform built to practice real-world
Linux administration, Docker operations, networking, identity management, monitoring,
logging, security hardening, backup planning, disaster recovery, and CI/CD automation.
</p>
</section>
<div class="cards">
<div class="card">
<h3>Infrastructure</h3>
<p>Ubuntu 24.04, Docker, Docker Compose, Portainer, and Nginx Proxy Manager.</p>
</div>
<div class="card">
<h3>Identity</h3>
<p>Centralized SSO using Authentik, OAuth2, OIDC, Forward Auth, and 2FA.</p>
</div>
<div class="card">
<h3>Observability</h3>
<p>Grafana dashboards, Prometheus metrics, Loki logs, Node Exporter, and cAdvisor.</p>
</div>
<section id="architecture" class="section">
<div class="section-heading">
<p class="eyebrow">Architecture</p>
<h2>Platform Design</h2>
<p>
Traffic flows through Nginx Proxy Manager, authentication is centralized through
Authentik, and services are monitored, logged, backed up, and documented.
</p>
</div>
<div class="feature-image wide">
<img src="assets/images/bytegeist-architecture.png" alt="ByteGeist architecture diagram" />
</div>
</section>
<section id="operations" class="section">
<div class="section-heading">
<p class="eyebrow">Operations</p>
<h2>Monitoring & Logging</h2>
<p>
Grafana, Prometheus, Loki, Alloy, Node Exporter, and cAdvisor provide visibility
into system health, container workloads, and infrastructure logs.
</p>
</div>
<div class="screenshot-grid">
<article class="screenshot-card">
<img src="assets/images/portfolio-grafana-operations.png" alt="Grafana operations dashboard" />
<div>
<h3>Infrastructure Monitoring</h3>
<p>System health, uptime, memory, CPU, disk usage, and container metrics in Grafana.</p>
</div>
</article>
<article class="screenshot-card">
<img src="assets/images/portfolio-grafana-logs.png" alt="Grafana logs dashboard" />
<div>
<h3>Centralized Logging</h3>
<p>Loki and Grafana provide searchable logs for containers and infrastructure troubleshooting.</p>
</div>
</article>
</div>
</section>
<section id="security" class="section dark">
<h2>Security Controls</h2>
<div class="cards">
<div class="card">
<h3>SSH Hardening</h3>
<p>Password authentication disabled. ED25519 key-only access enforced.</p>
</div>
<div class="card">
<h3>Threat Detection</h3>
<p>Fail2Ban and CrowdSec detect brute-force attempts and automatically block attackers.</p>
</div>
<div class="card">
<h3>Access Control</h3>
<p>Services protected with Authentik SSO, 2FA, HTTPS, and reverse proxy policies.</p>
</div>
<div class="section-heading">
<p class="eyebrow">Security</p>
<h2>Identity & Threat Detection</h2>
<p>
Authentik provides single sign-on and access control while Fail2Ban and CrowdSec
detect and block hostile traffic.
</p>
</div>
<div class="screenshot-grid">
<article class="screenshot-card">
<img src="assets/images/portfolio-authentik-applications.png" alt="Authentik application portal" />
<div>
<h3>Centralized Identity</h3>
<p>SSO, OAuth2, OIDC, Forward Auth, and 2FA protect access to internal services.</p>
</div>
</article>
<article class="screenshot-card">
<img src="assets/images/portfolio-crowdsec-decisions.png" alt="CrowdSec security decisions" />
<div>
<h3>Threat Detection</h3>
<p>CrowdSec detects brute-force behavior and creates firewall decisions to block attackers.</p>
</div>
</article>
</div>
</section>
<section id="cicd" class="section">
<h2>Automation &amp; CI/CD</h2>
<p>
Woodpecker CI is integrated with Gitea to run automated pipelines when code is pushed.
The first test pipeline successfully cloned a repository, executed build steps, and returned exit code 0.
</p>
<section id="development" class="section">
<div class="section-heading">
<p class="eyebrow">Development</p>
<h2>Git Hosting & CI/CD</h2>
<p>
Gitea hosts the code and infrastructure repositories while Woodpecker CI runs automated
pipelines triggered by repository activity.
</p>
</div>
<div class="screenshot-grid">
<article class="screenshot-card">
<img src="assets/images/portfolio-gitea-dashboard.png" alt="Gitea dashboard" />
<div>
<h3>Self-Hosted Git</h3>
<p>Gitea manages source code, project history, documentation, and infrastructure repositories.</p>
</div>
</article>
<article class="screenshot-card">
<img src="assets/images/portfolio-woodpecker-pipeline.png" alt="Woodpecker successful pipeline" />
<div>
<h3>CI/CD Automation</h3>
<p>Woodpecker successfully runs automated pipelines connected to Gitea repositories.</p>
</div>
</article>
</div>
</section>
<section id="docs" class="section">
<h2>Documentation &amp; Recovery</h2>
<p>
ByteGeist includes disaster recovery documentation, backup validation, service inventory,
restore procedures, and operational notes for maintaining the platform.
</p>
<section class="section">
<div class="section-heading">
<p class="eyebrow">Service Portal</p>
<h2>Centralized Dashboard</h2>
<p>
Dashy acts as the launchpad for the environment, organizing infrastructure,
observability, development, security, tools, and user services.
</p>
</div>
<div class="screenshot-grid">
<article class="screenshot-card">
<img src="assets/images/portfolio-cloud-dashboard-overview.png" alt="Dashy dashboard overview" />
<div>
<h3>Operations Portal</h3>
<p>Quick access to core infrastructure, observability, and development services.</p>
</div>
</article>
<article class="screenshot-card">
<img src="assets/images/portfolio-cloud-dashboard-services.png" alt="Dashy service catalog" />
<div>
<h3>Service Catalog</h3>
<p>Organized access to security tools, utilities, file management, and public sites.</p>
</div>
</article>
</div>
</section>
<section id="recovery" class="section dark">
<div class="section-heading">
<p class="eyebrow">Recovery</p>
<h2>Documentation & Disaster Recovery</h2>
<p>
ByteGeist includes documented restore procedures, backup validation, service inventory,
DNS information, and recovery priorities.
</p>
</div>
<div class="feature-image">
<img src="assets/images/portfolio-wiki-disaster-recovery.png" alt="ByteGeist disaster recovery documentation" />
</div>
</section>
<section class="section skills">
<h2>Skills Demonstrated</h2>
<div class="skills-grid">
<span>Linux Administration</span>
<span>Docker</span>
<span>Docker Compose</span>
<span>Reverse Proxies</span>
<span>SSL/TLS</span>
<span>DNS</span>
<span>SSO</span>
<span>OAuth2 / OIDC</span>
<span>Monitoring</span>
<span>Centralized Logging</span>
<span>CI/CD</span>
<span>Security Hardening</span>
<span>Threat Detection</span>
<span>Backup Strategy</span>
<span>Disaster Recovery</span>
<span>Technical Documentation</span>
</div>
</section>
</main>
<footer>
<p>ByteGeist Cloud • Built by Keith Casko</p>
<p>ByteGeist Cloud • Built and maintained by Keith Casko</p>
</footer>
</body>
</html>