242 lines
11 KiB
HTML
242 lines
11 KiB
HTML
{{define "title"}}Infrastructure — Ridgway Systems{{end}}
|
|
{{define "meta-desc"}}Hardware inventory and network diagram for the Ridgway Systems FreeBSD homelab.{{end}}
|
|
|
|
{{define "content"}}
|
|
<div class="page-header">
|
|
<h1>Infrastructure</h1>
|
|
<p class="page-desc">Physical hardware, network layout, and service placement.</p>
|
|
</div>
|
|
|
|
<section class="infra-section">
|
|
<h2>Hardware</h2>
|
|
<table class="hw-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Host</th>
|
|
<th>Hardware</th>
|
|
<th>OS</th>
|
|
<th>Role</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="hw-name">fw01</td>
|
|
<td>SuperMicro 1U<br><span class="hw-spec">E3-1230v2 • 16 GB RAM</span></td>
|
|
<td>OPNsense 26.1</td>
|
|
<td>Firewall, router, VPN, reverse proxy<br><span class="hw-spec">pf • relayd • WireGuard • unbound</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="hw-name">srv01</td>
|
|
<td>Dell R720<br><span class="hw-spec">Xeon E5-2620 • 96 GB RAM</span></td>
|
|
<td>FreeBSD</td>
|
|
<td>Primary server<br><span class="hw-spec">Gitea • httpd • OpenSMTPD • Prometheus • Grafana • Matrix</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="hw-name">srv02</td>
|
|
<td>Dell R710<br><span class="hw-spec">Xeon X5560 • 288 GB RAM</span></td>
|
|
<td>FreeBSD + Linux VMs</td>
|
|
<td>Backup, game servers<br><span class="hw-spec">nsd • qemu • Jellyfin • secondary DNS</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="hw-name">ws01</td>
|
|
<td>Desktop<br><span class="hw-spec">Intel Core i9-12900K • 64 GB RAM</span></td>
|
|
<td>Fedora Linux 43</td>
|
|
<td>Daily driver, Ansible control node<br><span class="hw-spec">Development • playbook management</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="hw-name">ws02</td>
|
|
<td>Lenovo ThinkPad T14s<br><span class="hw-spec">AMD Ryzen Pro 5 8640HS • 32 GB RAM</span></td>
|
|
<td>Fedora Linux 43</td>
|
|
<td>Mobile daily driver<br><span class="hw-spec">Development • remote work</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="hw-name">ws03</td>
|
|
<td>System76 Lemur Pro<br><span class="hw-spec">Intel Core i7-10210U • 16 GB RAM</span></td>
|
|
<td>FreeBSD</td>
|
|
<td>FreeBSD testing machine<br><span class="hw-spec">Development • testing</span></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</section>
|
|
|
|
<section class="infra-section">
|
|
<h2>Network Diagram</h2>
|
|
<div class="netmap-wrap">
|
|
<svg class="netmap" viewBox="0 0 720 430" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Network topology diagram">
|
|
|
|
<!-- Internet -->
|
|
<g class="netmap-node" data-tooltip="Public internet — WAN uplink">
|
|
<rect x="285" y="10" width="150" height="38" rx="4" class="netmap-box netmap-box-internet"/>
|
|
<text x="360" y="34" class="netmap-label">Internet</text>
|
|
</g>
|
|
|
|
<!-- Internet → fw01 -->
|
|
<line x1="360" y1="48" x2="360" y2="88" class="netmap-line"/>
|
|
|
|
<!-- fw01 -->
|
|
<g class="netmap-node" data-tooltip="fw01 · SuperMicro 1U OPNsense 26.1 Services: pf · relayd · WireGuard · unbound">
|
|
<rect x="220" y="88" width="280" height="44" rx="4" class="netmap-box netmap-box-fw"/>
|
|
<text x="360" y="107" class="netmap-label">fw01</text>
|
|
<text x="360" y="123" class="netmap-sublabel">OPNsense 26.1 · SuperMicro 1U</text>
|
|
</g>
|
|
|
|
<!-- fw01 → trunk line -->
|
|
<line x1="360" y1="132" x2="360" y2="160" class="netmap-line"/>
|
|
<!-- horizontal trunk -->
|
|
<line x1="60" y1="160" x2="660" y2="160" class="netmap-line"/>
|
|
|
|
<!-- VLAN drop lines -->
|
|
<line x1="60" y1="160" x2="60" y2="185" class="netmap-line"/>
|
|
<line x1="195" y1="160" x2="195" y2="185" class="netmap-line"/>
|
|
<line x1="360" y1="160" x2="360" y2="185" class="netmap-line"/>
|
|
<line x1="525" y1="160" x2="525" y2="185" class="netmap-line"/>
|
|
<line x1="660" y1="160" x2="660" y2="185" class="netmap-line"/>
|
|
|
|
<!-- VLAN 1 — Mgmt -->
|
|
<g class="netmap-node" data-tooltip="VLAN 1 · Management 10.0.1.0/24 Switches, OOB, firewall mgmt">
|
|
<rect x="10" y="185" width="100" height="38" rx="4" class="netmap-box netmap-box-vlan"/>
|
|
<text x="60" y="200" class="netmap-label netmap-label-sm">Mgmt</text>
|
|
<text x="60" y="215" class="netmap-sublabel">VLAN 1</text>
|
|
</g>
|
|
|
|
<!-- VLAN 10 — Servers -->
|
|
<g class="netmap-node" data-tooltip="VLAN 10 · Servers 10.0.10.0/24 srv01, srv02">
|
|
<rect x="145" y="185" width="100" height="38" rx="4" class="netmap-box netmap-box-vlan"/>
|
|
<text x="195" y="200" class="netmap-label netmap-label-sm">Servers</text>
|
|
<text x="195" y="215" class="netmap-sublabel">VLAN 10</text>
|
|
</g>
|
|
|
|
<!-- VLAN 20 — Desktop -->
|
|
<g class="netmap-node" data-tooltip="VLAN 20 · Desktop 10.0.20.0/24 ws01, personal devices">
|
|
<rect x="310" y="185" width="100" height="38" rx="4" class="netmap-box netmap-box-vlan"/>
|
|
<text x="360" y="200" class="netmap-label netmap-label-sm">Desktop</text>
|
|
<text x="360" y="215" class="netmap-sublabel">VLAN 20</text>
|
|
</g>
|
|
|
|
<!-- VLAN 30 — Game -->
|
|
<g class="netmap-node" data-tooltip="VLAN 30 · Game 10.0.30.0/24 Game clients, gaming VMs">
|
|
<rect x="475" y="185" width="100" height="38" rx="4" class="netmap-box netmap-box-vlan"/>
|
|
<text x="525" y="200" class="netmap-label netmap-label-sm">Game</text>
|
|
<text x="525" y="215" class="netmap-sublabel">VLAN 30</text>
|
|
</g>
|
|
|
|
<!-- VLAN 40 — IoT -->
|
|
<g class="netmap-node" data-tooltip="VLAN 40 · IoT/Guest 10.0.40.0/24 Untrusted / isolated devices">
|
|
<rect x="610" y="185" width="100" height="38" rx="4" class="netmap-box netmap-box-vlan"/>
|
|
<text x="660" y="200" class="netmap-label netmap-label-sm">IoT/Guest</text>
|
|
<text x="660" y="215" class="netmap-sublabel">VLAN 40</text>
|
|
</g>
|
|
|
|
<!-- Servers VLAN → hosts -->
|
|
<line x1="170" y1="223" x2="170" y2="255" class="netmap-line"/>
|
|
<line x1="170" y1="255" x2="145" y2="255" class="netmap-line"/>
|
|
<line x1="170" y1="255" x2="220" y2="255" class="netmap-line"/>
|
|
<line x1="145" y1="255" x2="145" y2="275" class="netmap-line"/>
|
|
<line x1="220" y1="255" x2="220" y2="275" class="netmap-line"/>
|
|
|
|
<!-- srv01 -->
|
|
<g class="netmap-node" data-tooltip="srv01 · Dell R720 Xeon E5-2620 · 96 GB RAM FreeBSD httpd · Gitea · OpenSMTPD Prometheus · Grafana · Matrix">
|
|
<rect x="90" y="275" width="110" height="44" rx="4" class="netmap-box netmap-box-host"/>
|
|
<text x="145" y="293" class="netmap-label netmap-label-sm">srv01</text>
|
|
<text x="145" y="308" class="netmap-sublabel">Dell R720 · FreeBSD</text>
|
|
</g>
|
|
|
|
<!-- srv02 -->
|
|
<g class="netmap-node" data-tooltip="srv02 · Dell R710 Xeon X5560 · 288 GB RAM FreeBSD + Linux VMs nsd · qemu · Jellyfin Game servers">
|
|
<rect x="165" y="275" width="110" height="44" rx="4" class="netmap-box netmap-box-host"/>
|
|
<text x="220" y="293" class="netmap-label netmap-label-sm">srv02</text>
|
|
<text x="220" y="308" class="netmap-sublabel">Dell R710 · FreeBSD</text>
|
|
</g>
|
|
|
|
<!-- Desktop VLAN → hosts -->
|
|
<line x1="360" y1="223" x2="360" y2="255" class="netmap-line"/>
|
|
<line x1="300" y1="255" x2="420" y2="255" class="netmap-line"/>
|
|
<line x1="300" y1="255" x2="300" y2="275" class="netmap-line"/>
|
|
<line x1="360" y1="255" x2="360" y2="275" class="netmap-line"/>
|
|
<line x1="420" y1="255" x2="420" y2="275" class="netmap-line"/>
|
|
|
|
<!-- ws01 -->
|
|
<g class="netmap-node" data-tooltip="ws01 · Desktop Intel Core i9-12900K · 64 GB RAM Fedora Linux 43 Daily driver · Ansible control node">
|
|
<rect x="248" y="275" width="104" height="44" rx="4" class="netmap-box netmap-box-host"/>
|
|
<text x="300" y="293" class="netmap-label netmap-label-sm">ws01</text>
|
|
<text x="300" y="308" class="netmap-sublabel">Desktop · Fedora</text>
|
|
</g>
|
|
|
|
<!-- ws02 -->
|
|
<g class="netmap-node" data-tooltip="ws02 · Lenovo ThinkPad T14s AMD Ryzen Pro 5 8640HS · 32 GB RAM Fedora Linux 43 Mobile daily driver">
|
|
<rect x="308" y="275" width="104" height="44" rx="4" class="netmap-box netmap-box-host"/>
|
|
<text x="360" y="293" class="netmap-label netmap-label-sm">ws02</text>
|
|
<text x="360" y="308" class="netmap-sublabel">ThinkPad T14s</text>
|
|
</g>
|
|
|
|
<!-- ws03 -->
|
|
<g class="netmap-node" data-tooltip="ws03 · System76 Lemur Pro Intel Core i7-10210U · 16 GB RAM FreeBSD FreeBSD testing machine">
|
|
<rect x="368" y="275" width="104" height="44" rx="4" class="netmap-box netmap-box-host"/>
|
|
<text x="420" y="293" class="netmap-label netmap-label-sm">ws03</text>
|
|
<text x="420" y="308" class="netmap-sublabel">Lemur Pro · FreeBSD</text>
|
|
</g>
|
|
|
|
</svg>
|
|
|
|
<!-- Tooltip element -->
|
|
<div class="netmap-tooltip" id="netmap-tooltip"></div>
|
|
</div>
|
|
|
|
<script>
|
|
(function() {
|
|
var tip = document.getElementById('netmap-tooltip');
|
|
document.querySelectorAll('.netmap-node').forEach(function(node) {
|
|
node.addEventListener('mouseenter', function(e) {
|
|
var text = node.getAttribute('data-tooltip') || '';
|
|
tip.textContent = text;
|
|
tip.classList.add('visible');
|
|
});
|
|
node.addEventListener('mousemove', function(e) {
|
|
tip.style.left = (e.pageX + 14) + 'px';
|
|
tip.style.top = (e.pageY - 10) + 'px';
|
|
});
|
|
node.addEventListener('mouseleave', function() {
|
|
tip.classList.remove('visible');
|
|
});
|
|
});
|
|
})();
|
|
</script>
|
|
</section>
|
|
|
|
<section class="infra-section">
|
|
<h2>Services</h2>
|
|
<table class="hw-table">
|
|
<thead>
|
|
<tr><th>Service</th><th>Host</th><th>URL</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr><td>Web / httpd</td><td>srv01</td><td>ridgwaysystems.org</td></tr>
|
|
<tr><td>Gitea</td><td>srv01</td><td>git.ridgwaysystems.org</td></tr>
|
|
<tr><td>Email (OpenSMTPD)</td><td>srv01</td><td>—</td></tr>
|
|
<tr><td>DNS (unbound)</td><td>fw01</td><td>internal resolver</td></tr>
|
|
<tr><td>DNS (nsd)</td><td>srv02</td><td>authoritative</td></tr>
|
|
<tr><td>Prometheus + Grafana</td><td>srv01</td><td>monitoring.ridgwaysystems.org</td></tr>
|
|
<tr><td>Matrix</td><td>srv01</td><td>matrix.ridgwaysystems.org</td></tr>
|
|
<tr><td>Jellyfin</td><td>srv02</td><td>jellyfin.ridgwaysystems.org</td></tr>
|
|
<tr><td>WireGuard VPN</td><td>fw01</td><td>vpn.ridgwaysystems.org</td></tr>
|
|
</tbody>
|
|
</table>
|
|
</section>
|
|
|
|
<section class="infra-section">
|
|
<h2>VLAN Layout</h2>
|
|
<table class="hw-table">
|
|
<thead>
|
|
<tr><th>VLAN</th><th>ID</th><th>Subnet</th><th>Purpose</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr><td>Management</td><td>1</td><td>10.0.1.0/24</td><td>Switches, OOB, firewall management</td></tr>
|
|
<tr><td>Servers</td><td>10</td><td>10.0.10.0/24</td><td>srv01, srv02 — all hosted services</td></tr>
|
|
<tr><td>Desktop</td><td>20</td><td>10.0.20.0/24</td><td>ws01 and personal devices</td></tr>
|
|
<tr><td>Game</td><td>30</td><td>10.0.30.0/24</td><td>Gaming VMs and clients</td></tr>
|
|
<tr><td>IoT/Guest</td><td>40</td><td>10.0.40.0/24</td><td>Untrusted / isolated devices</td></tr>
|
|
</tbody>
|
|
</table>
|
|
</section>
|
|
{{end}}
|