109 lines
3.5 KiB
HTML
109 lines
3.5 KiB
HTML
```html
|
|
<!-- index.html -->
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>ByteGeist Cloud</title>
|
|
<link rel="stylesheet" href="style.css" />
|
|
</head>
|
|
<body>
|
|
<header class="hero">
|
|
<nav>
|
|
<div class="logo">ByteGeist</div>
|
|
<div class="nav-links">
|
|
<a href="#architecture">Architecture</a>
|
|
<a href="#security">Security</a>
|
|
<a href="#cicd">CI/CD</a>
|
|
<a href="#docs">Docs</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>
|
|
|
|
<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>
|
|
</section>
|
|
</header>
|
|
|
|
<main>
|
|
<section class="stats">
|
|
<div><span>25+</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>
|
|
<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.
|
|
</p>
|
|
|
|
<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>
|
|
</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>
|
|
</section>
|
|
|
|
<section id="cicd" class="section">
|
|
<h2>Automation & 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>
|
|
|
|
<section id="docs" class="section">
|
|
<h2>Documentation & Recovery</h2>
|
|
<p>
|
|
ByteGeist includes disaster recovery documentation, backup validation, service inventory,
|
|
restore procedures, and operational notes for maintaining the platform.
|
|
</p>
|
|
</section>
|
|
</main>
|
|
|
|
<footer>
|
|
<p>ByteGeist Cloud • Built by Keith Casko</p>
|
|
</footer>
|
|
</body>
|
|
</html>
|
|
``` |