Compare commits
21 Commits
7ba9cbdb6b
...
main
@@ -3,6 +3,7 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build-and-deploy:
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
weight = 30
|
||||
|
||||
[[subnavigation]]
|
||||
name = "lab"
|
||||
pageRef = "projects/homelab/diagrams"
|
||||
name = "homelab"
|
||||
pageRef = "projects/homelab/homelab_Infra"
|
||||
weight = 10
|
||||
|
||||
[[subnavigation]]
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
---
|
||||
bodyClass: has-bg
|
||||
date: '2025-12-31T18:07:42Z'
|
||||
draft: true
|
||||
draft: false
|
||||
title: Posts
|
||||
author: wompmacho
|
||||
tags: []
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
---
|
||||
title: Projects
|
||||
layout: card
|
||||
bodyClass: has-bg
|
||||
description: No description available.
|
||||
author: wompmacho
|
||||
date: '2025-02-12T00:00:00Z'
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
---
|
||||
bodyClass: has-bg
|
||||
title: Homelab
|
||||
description: Infrastructure, diagrams, and technical setup for my home lab.
|
||||
author: wompmacho
|
||||
|
||||
@@ -16,13 +16,138 @@ tags: ['homelab', 'infrastructure', 'network']
|
||||
## 2026 Home lab
|
||||
|
||||
{{< rawhtml >}}
|
||||
<iframe
|
||||
src="http://homelable/view?key=live"
|
||||
width="100%"
|
||||
height="600px"
|
||||
style="border:none; border-radius: 8px; box-shadow: 0 4px 6px rgba(0,0,0,0.1);"
|
||||
allowfullscreen>
|
||||
</iframe>
|
||||
|
||||
|
||||
<div id="homelabel-container" style="position: relative; width: 100%; border-radius: 8px; overflow: hidden; background: #1e1e1e;">
|
||||
|
||||
<button id="fullscreen-btn" style="position: absolute; top: 10px; right: 10px; z-index: 10; display: inline-flex; align-items: center; gap: 8px; background: rgba(0, 0, 0, 0.7); color: #fff; border: 1px solid rgba(255, 255, 255, 0.2); padding: 6px 12px; border-radius: 4px; cursor: pointer; font-size: 14px;">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3"/></svg>
|
||||
<span>Fullscreen</span>
|
||||
</button>
|
||||
|
||||
<div id="wrapper-target" class="iframe-wrapper" style="width: 100%; height: 450px; overflow: hidden; position: relative;">
|
||||
<iframe id="homelabel-frame" src="https://homelable.wompmacho.com/view?key=live" style="width: 100%; height: 100%; border: none;"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
#homelabel-frame {
|
||||
display: block !important;
|
||||
flex-shrink: 0 !important;
|
||||
}
|
||||
|
||||
/* Regular view wrapper: standard, safe layout rules */
|
||||
#wrapper-target {
|
||||
overflow: hidden !important;
|
||||
position: relative !important;
|
||||
}
|
||||
|
||||
/* Fullscreen Container Engine */
|
||||
#homelabel-container:fullscreen {
|
||||
width: 100vw !important;
|
||||
height: 100vh !important;
|
||||
height: 100dvh !important;
|
||||
border-radius: 0 !important;
|
||||
padding: 24px !important;
|
||||
box-sizing: border-box !important;
|
||||
background: #1e1e1e !important;
|
||||
overflow: hidden !important;
|
||||
|
||||
display: flex !important;
|
||||
flex-direction: column !important;
|
||||
justify-content: center !important;
|
||||
align-items: center !important;
|
||||
}
|
||||
|
||||
/* Fullscreen Wrapper: Converts to a flex centering field ONLY when fullscreen */
|
||||
#homelabel-container:fullscreen #wrapper-target {
|
||||
width: 100% !important;
|
||||
flex: 1 !important;
|
||||
height: auto !important;
|
||||
display: flex !important;
|
||||
justify-content: center !important;
|
||||
align-items: center !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
document.getElementById('homelabel-frame').addEventListener('load', function() {
|
||||
const iframe = this;
|
||||
const wrapper = document.getElementById('wrapper-target');
|
||||
const container = document.getElementById('homelabel-container');
|
||||
const fsButton = document.getElementById('fullscreen-btn');
|
||||
|
||||
function scaleIframe() {
|
||||
const targetWidth = wrapper.offsetWidth;
|
||||
const targetHeight = wrapper.offsetHeight;
|
||||
const screenWidth = window.innerWidth;
|
||||
|
||||
if (targetWidth === 0 || targetHeight === 0) return;
|
||||
|
||||
// Base layout breakpoints
|
||||
let virtualWidth = 1400;
|
||||
if (screenWidth < 768) {
|
||||
virtualWidth = 480;
|
||||
} else if (screenWidth < 1200) {
|
||||
virtualWidth = 900;
|
||||
}
|
||||
|
||||
let virtualHeight = 950;
|
||||
let scale;
|
||||
|
||||
// FIX: Isolate calculation parameters and transform origins per state
|
||||
if (document.fullscreenElement) {
|
||||
const scaleX = targetWidth / virtualWidth;
|
||||
const scaleY = targetHeight / virtualHeight;
|
||||
|
||||
scale = Math.min(scaleX, scaleY);
|
||||
iframe.style.transformOrigin = 'center center';
|
||||
} else {
|
||||
// Safe standard inline calculations
|
||||
scale = targetWidth / virtualWidth;
|
||||
virtualHeight = targetHeight / scale;
|
||||
iframe.style.transformOrigin = 'top left';
|
||||
}
|
||||
|
||||
// Apply transformations
|
||||
if (scale < 1) {
|
||||
iframe.style.width = virtualWidth + 'px';
|
||||
iframe.style.height = virtualHeight + 'px';
|
||||
iframe.style.transform = `scale(${scale})`;
|
||||
} else {
|
||||
iframe.style.width = '100%';
|
||||
iframe.style.height = '100%';
|
||||
iframe.style.transform = 'none';
|
||||
}
|
||||
}
|
||||
|
||||
// --- FULLSCREEN INTERACTION CONTROLS ---
|
||||
fsButton.addEventListener('click', () => {
|
||||
if (!document.fullscreenElement) {
|
||||
container.requestFullscreen().catch(err => {
|
||||
console.error(`Error attempting to enable fullscreen: ${err.message}`);
|
||||
});
|
||||
fsButton.querySelector('span').textContent = 'Exit';
|
||||
} else {
|
||||
document.exitFullscreen();
|
||||
fsButton.querySelector('span').textContent = 'Fullscreen';
|
||||
}
|
||||
});
|
||||
|
||||
document.addEventListener('fullscreenchange', () => {
|
||||
if (!document.fullscreenElement) {
|
||||
fsButton.querySelector('span').textContent = 'Fullscreen';
|
||||
}
|
||||
setTimeout(scaleIframe, 75);
|
||||
});
|
||||
|
||||
scaleIframe();
|
||||
window.addEventListener('resize', () => {
|
||||
setTimeout(scaleIframe, 50);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
{{< /rawhtml >}}
|
||||
|
||||
---
|
||||
|
||||
@@ -15,12 +15,147 @@ tags:
|
||||
|
||||
This document outlines the internal infrastructure of the **wompmacho** homelab. The lab is built on a high-speed **10GbE backbone** and utilizes a hybrid architecture of dedicated NAS storage, Proxmox virtualization, and containerized services for media, self-hosting, and development.
|
||||
|
||||
> [!TIP] Visual Guide
|
||||
> For a visual representation of the network and hardware layout, see the [Infrastructure Diagrams](diagrams.md).
|
||||
> [!TIP] **2026 Homelab**
|
||||
>
|
||||
> {{< rawhtml >}}
|
||||
|
||||
[TOC]
|
||||
<div id="homelabel-container" style="position: relative; width: 100%; border-radius: 8px; overflow: hidden; background: #1e1e1e;">
|
||||
|
||||
<button id="fullscreen-btn" style="position: absolute; top: 10px; right: 10px; z-index: 10; display: inline-flex; align-items: center; gap: 8px; background: rgba(0, 0, 0, 0.7); color: #fff; border: 1px solid rgba(255, 255, 255, 0.2); padding: 6px 12px; border-radius: 4px; cursor: pointer; font-size: 14px;">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3"/></svg>
|
||||
<span>Fullscreen</span>
|
||||
</button>
|
||||
|
||||
## Physical and hardware registry
|
||||
<div id="wrapper-target" class="iframe-wrapper" style="width: 100%; height: 450px; overflow: hidden; position: relative;">
|
||||
<iframe id="homelabel-frame" src="https://homelable.wompmacho.com/view?key=live" style="width: 100%; height: 100%; border: none;"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
#homelabel-frame {
|
||||
display: block !important;
|
||||
flex-shrink: 0 !important;
|
||||
}
|
||||
|
||||
/* Regular view wrapper: standard, safe layout rules */
|
||||
#wrapper-target {
|
||||
overflow: hidden !important;
|
||||
position: relative !important;
|
||||
}
|
||||
|
||||
/* Fullscreen Container Engine */
|
||||
#homelabel-container:fullscreen {
|
||||
width: 100vw !important;
|
||||
height: 100vh !important;
|
||||
height: 100dvh !important;
|
||||
border-radius: 0 !important;
|
||||
padding: 24px !important;
|
||||
box-sizing: border-box !important;
|
||||
background: #1e1e1e !important;
|
||||
overflow: hidden !important;
|
||||
|
||||
display: flex !important;
|
||||
flex-direction: column !important;
|
||||
justify-content: center !important;
|
||||
align-items: center !important;
|
||||
}
|
||||
|
||||
/* Fullscreen Wrapper: Converts to a flex centering field ONLY when fullscreen */
|
||||
#homelabel-container:fullscreen #wrapper-target {
|
||||
width: 100% !important;
|
||||
flex: 1 !important;
|
||||
height: auto !important;
|
||||
display: flex !important;
|
||||
justify-content: center !important;
|
||||
align-items: center !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
document.getElementById('homelabel-frame').addEventListener('load', function() {
|
||||
const iframe = this;
|
||||
const wrapper = document.getElementById('wrapper-target');
|
||||
const container = document.getElementById('homelabel-container');
|
||||
const fsButton = document.getElementById('fullscreen-btn');
|
||||
|
||||
function scaleIframe() {
|
||||
const targetWidth = wrapper.offsetWidth;
|
||||
const targetHeight = wrapper.offsetHeight;
|
||||
const screenWidth = window.innerWidth;
|
||||
|
||||
if (targetWidth === 0 || targetHeight === 0) return;
|
||||
|
||||
// Base layout breakpoints
|
||||
let virtualWidth = 1400;
|
||||
if (screenWidth < 768) {
|
||||
virtualWidth = 480;
|
||||
} else if (screenWidth < 1200) {
|
||||
virtualWidth = 900;
|
||||
}
|
||||
|
||||
let virtualHeight = 950;
|
||||
let scale;
|
||||
|
||||
// FIX: Isolate calculation parameters and transform origins per state
|
||||
if (document.fullscreenElement) {
|
||||
const scaleX = targetWidth / virtualWidth;
|
||||
const scaleY = targetHeight / virtualHeight;
|
||||
|
||||
scale = Math.min(scaleX, scaleY);
|
||||
iframe.style.transformOrigin = 'center center';
|
||||
} else {
|
||||
// Safe standard inline calculations
|
||||
scale = targetWidth / virtualWidth;
|
||||
virtualHeight = targetHeight / scale;
|
||||
iframe.style.transformOrigin = 'top left';
|
||||
}
|
||||
|
||||
// Apply transformations
|
||||
if (scale < 1) {
|
||||
iframe.style.width = virtualWidth + 'px';
|
||||
iframe.style.height = virtualHeight + 'px';
|
||||
iframe.style.transform = `scale(${scale})`;
|
||||
} else {
|
||||
iframe.style.width = '100%';
|
||||
iframe.style.height = '100%';
|
||||
iframe.style.transform = 'none';
|
||||
}
|
||||
}
|
||||
|
||||
// --- FULLSCREEN INTERACTION CONTROLS ---
|
||||
fsButton.addEventListener('click', () => {
|
||||
if (!document.fullscreenElement) {
|
||||
container.requestFullscreen().catch(err => {
|
||||
console.error(`Error attempting to enable fullscreen: ${err.message}`);
|
||||
});
|
||||
fsButton.querySelector('span').textContent = 'Exit';
|
||||
} else {
|
||||
document.exitFullscreen();
|
||||
fsButton.querySelector('span').textContent = 'Fullscreen';
|
||||
}
|
||||
});
|
||||
|
||||
document.addEventListener('fullscreenchange', () => {
|
||||
if (!document.fullscreenElement) {
|
||||
fsButton.querySelector('span').textContent = 'Fullscreen';
|
||||
}
|
||||
setTimeout(scaleIframe, 75);
|
||||
});
|
||||
|
||||
scaleIframe();
|
||||
window.addEventListener('resize', () => {
|
||||
setTimeout(scaleIframe, 50);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
{{< /rawhtml >}}
|
||||
>
|
||||
> My homelab has constantly been evolving throughout the years. I have moved to this liveview presented by `homelabel`. For visual representation of my past network and hardware layouts, see the [Infrastructure Diagrams](diagrams.md).
|
||||
|
||||
---
|
||||
|
||||
## Physical Hardware
|
||||
|
||||
### Compute and virtualization
|
||||
|
||||
@@ -43,7 +178,7 @@ This document outlines the internal infrastructure of the **wompmacho** homelab.
|
||||
* **UPS**: CyberPower CP1500PFCLCD (1500VA/1000W, Sine Wave).
|
||||
* **Smart Control**: TP-Link Tapo P115 Smart Plugs (15A/1800W Max).
|
||||
|
||||
### Detailed hardware specifications
|
||||
### Hardware Specs
|
||||
|
||||
#### Storage node (`truenas`)
|
||||
|
||||
@@ -115,79 +250,79 @@ This document outlines the internal infrastructure of the **wompmacho** homelab.
|
||||
|
||||
The Proxmox virtualization host (`laptop-proxmox`) is an entirely separate physical node from the TrueNAS storage server. They communicate with each other primarily over the 10GbE backbone switch.
|
||||
|
||||
### Proxmox node (`laptop-proxmox` - `10.0.0.142`)
|
||||
**(`laptop-proxmox` - `10.0.0.142`)**
|
||||
|
||||
| ID | Type | Hostname | IP | Role |
|
||||
| --- | ---- | --------------- | ---------- | ------------------------------- |
|
||||
| - | LXC | **pihole** | 10.0.0.11 | DNS Sinkhole / Local DNS |
|
||||
| - | VM | **docker** | 10.0.0.190 | Main Docker Host (Ubuntu 24.04) |
|
||||
| - | VM | **pterodactyl** | 10.0.0.110 | Game Server Panel (Debian) |
|
||||
| ID | Type | Hostname | IP | Role |
|
||||
| --- | ---- | --------------- | ---------- | ------------------------------------------ |
|
||||
| - | LXC | **pihole** | 10.0.0.11 | DNS Sinkhole / Local DNS |
|
||||
| - | VM | **docker** | 10.0.0.190 | Main Docker Host (Ubuntu 24.04) |
|
||||
| - | VM | **pterodactyl** | 10.0.0.110 | Game Server Panel (Debian) |
|
||||
| - | LXC | **invidious** | 10.0.0.217 | Invidious Private YouTube Proxy Web Client |
|
||||
|
||||
## Docker services
|
||||
|
||||
These services run on the main Docker Host VM (`10.0.0.190`) and are proxied via Nginx Proxy Manager (SSL via Cloudflare).
|
||||
|
||||
| Container Name | Mapped Ports | Access | Proxy Route / Domain | Description / Role |
|
||||
|---|---|---|---|---|
|
||||
| **nginx-proxy-manager** | 80, 81, 443 | Internal/VPN | `http://nginx/` | Reverse proxy manager dashboard (Port 81) and SSL termination |
|
||||
| **gluetun** | 8181, 6565, 6881, etc. | Internal/VPN | - | VPN Gateway for other containers |
|
||||
| **portainer** | 8000, 9000, 9001, 9443 | Internal/VPN | `http://portainer/` | Docker container management GUI |
|
||||
| **cloudflare-ddns** | - | Internal/VPN | - | Automatically updates dynamic IP to Cloudflare DNS |
|
||||
| **immich_server** | 2283 | Public | `immich.wompmacho.com` | Photo/Video backup and gallery server |
|
||||
| **immich_postgres** | 5432 (Internal) | Internal/VPN | - | Database for Immich gallery |
|
||||
| **immich_redis** | 6379 (Internal) | Internal/VPN | - | Redis cache for Immich gallery |
|
||||
| **immich_machine_learning** | - (Internal) | Internal/VPN | - | AI Machine Learning inference backend for Immich |
|
||||
| **vaultwarden** | 9998, 9999 | Public | `vaultwarden.wompmacho.com` | Self-hosted Bitwarden password manager |
|
||||
| **gitea** | 222, 3001 | Public | `git.wompmacho.com` | Internal Git repository host |
|
||||
| **gitea-db-1** | 5432 (Internal) | Internal/VPN | - | PostgreSQL Database for Gitea |
|
||||
| **gitea_runner** | - | Internal/VPN | - | CI/CD Action Runner for Gitea pipelines |
|
||||
| **frigate** | 5000, 8554, 8555, 8971 | Public | `frigate.wompmacho.com`, `http://frigate/` | AI NVR actively recording Amcrest IP camera |
|
||||
| **homepage** | 7676 | Internal/VPN | `http://homepage/` | Navigation dashboard |
|
||||
| **docs-public** | 9895 | Public | `wiki.wompmacho.com` | Nginx serving public Hugo documentation |
|
||||
| **docs-private** | 9897 | Internal/VPN | `http://private/` | Nginx serving private Hugo documentation |
|
||||
| **paperless-ngx** | 3003 | Internal/VPN | `http://paperless/` | Document management system web interface |
|
||||
| **paperless-broker** | 6379 (Internal) | Internal/VPN | - | Redis message broker for Paperless-ngx task queue |
|
||||
| **paperless-db** | 5432 (Internal) | Internal/VPN | - | PostgreSQL backend database for Paperless-ngx |
|
||||
| **audiobookshelf** | 13378 | Public | `audiobookshelf.wompmacho.com` | Audiobook and podcast server |
|
||||
| **openai** (formerly open-webui) | 3007 | Internal/VPN | `http://openai/`, `http://gemma/` | OpenAI-compatible API gateway and LLM web interface |
|
||||
| **reaper** | 3010 | Internal/VPN | `http://reaper/` | Automated Reaper DAW interface in a web browser (currently in maintenance) |
|
||||
| **dev** (code-server) | 8443 | Public | `dev.wompmacho.com` | VS Code remote development environment running directly on the host |
|
||||
| **slopsmith-web** (formerly slopsmith) | 10101 | Internal/VPN | `http://slopsmith/` | Custom internal application |
|
||||
| **linkstack** | 8190 | Public | `wompmacho.com`, `www.wompmacho.com` | Personal link landing page mapped to port `8190` |
|
||||
| **torrent** (via Gluetun) | - | Internal/VPN | `http://torrent/` | qBittorrent client routed through VPN container |
|
||||
| **nicotine** (via Gluetun) | - | Internal/VPN | `http://nicotine/` | Soulseek client routed through VPN container |
|
||||
| **navidrome** | 4533 | Internal/VPN | `http://music/` | Personal music streaming server |
|
||||
| **musicbrainz_picard** (formerly picard) | 5800 | Internal/VPN | `http://picard/` | MusicBrainz Picard tagger GUI |
|
||||
| **dozzle** | 4343 | Internal/VPN | `http://dozzle/` | Real-time Docker log viewer |
|
||||
| **guacamole** | 8080 | Public | `guac.wompmacho.com` | Apache Guacamole client for browser-based remote desktop |
|
||||
| **guacd** | 4822 (Internal) | Internal/VPN | - | Guacamole proxy daemon for RDP/SSH/VNC protocol handling |
|
||||
| **guac-postgresql** | 5432 (Internal) | Internal/VPN | - | PostgreSQL backend database for Guacamole |
|
||||
| **neko** | 8282, 52000-52100 (UDP) | Public | `neko.wompmacho.com` | WebRTC streaming virtual browser room |
|
||||
| **homelable-frontend** | 9444 | Internal/VPN | `http://homelable/` | Homelable interactive network visualizer frontend |
|
||||
| **homelable-backend** | 9445 | Internal/VPN | - | Homelable API backend querying homelab network states |
|
||||
| **homelable-mcp** | 8001 | Internal/VPN | - | Homelable MCP server exposing network state to LLMs |
|
||||
| **discodrome** | - (Internal) | Internal/VPN | - | Music tagging and catalog indexing backend |
|
||||
| **npm-sync** | - (Internal) | Internal/VPN | - | Sidecar daemon monitoring Docker socket to sync proxy records |
|
||||
| **pihole-dns-shim** | - (Internal) | Internal/VPN | - | Sidecar daemon monitoring Docker socket to sync DNS records |
|
||||
| Container Name | Mapped Ports | Access | Proxy Route / Domain | Description / Role |
|
||||
| ---------------------------------------- | ----------------------- | ------------ | ------------------------------------------ | -------------------------------------------------------------------------- |
|
||||
| **nginx-proxy-manager** | 80, 81, 443 | Internal/VPN | `http://nginx/` | Reverse proxy manager dashboard (Port 81) and SSL termination |
|
||||
| **gluetun** | 8181, 6565, 6881, etc. | Internal/VPN | - | VPN Gateway for other containers |
|
||||
| **portainer** | 8000, 9000, 9001, 9443 | Internal/VPN | `http://portainer/` | Docker container management GUI |
|
||||
| **cloudflare-ddns** | - | Internal/VPN | - | Automatically updates dynamic IP to Cloudflare DNS |
|
||||
| **immich_server** | 2283 | Public | `immich.wompmacho.com` | Photo/Video backup and gallery server |
|
||||
| **immich_postgres** | 5432 (Internal) | Internal/VPN | - | Database for Immich gallery |
|
||||
| **immich_redis** | 6379 (Internal) | Internal/VPN | - | Redis cache for Immich gallery |
|
||||
| **immich_machine_learning** | - (Internal) | Internal/VPN | - | AI Machine Learning inference backend for Immich |
|
||||
| **vaultwarden** | 9998, 9999 | Public | `vaultwarden.wompmacho.com` | Self-hosted Bitwarden password manager |
|
||||
| **gitea** | 222, 3001 | Public | `git.wompmacho.com` | Internal Git repository host |
|
||||
| **gitea-db-1** | 5432 (Internal) | Internal/VPN | - | PostgreSQL Database for Gitea |
|
||||
| **gitea_runner** | - | Internal/VPN | - | CI/CD Action Runner for Gitea pipelines |
|
||||
| **frigate** | 5000, 8554, 8555, 8971 | Public | `frigate.wompmacho.com`, `http://frigate/` | AI NVR actively recording Amcrest IP camera |
|
||||
| **homepage** | 7676 | Internal/VPN | `http://homepage/` | Navigation dashboard |
|
||||
| **docs-public** | 9895 | Public | `wiki.wompmacho.com` | Nginx serving public Hugo documentation |
|
||||
| **docs-private** | 9897 | Internal/VPN | `http://private/` | Nginx serving private Hugo documentation |
|
||||
| **paperless-ngx** | 3003 | Internal/VPN | `http://paperless/` | Document management system web interface |
|
||||
| **paperless-broker** | 6379 (Internal) | Internal/VPN | - | Redis message broker for Paperless-ngx task queue |
|
||||
| **paperless-db** | 5432 (Internal) | Internal/VPN | - | PostgreSQL backend database for Paperless-ngx |
|
||||
| **audiobookshelf** | 13378 | Public | `audiobookshelf.wompmacho.com` | Audiobook and podcast server |
|
||||
| **openai** (formerly open-webui) | 3007 | Internal/VPN | `http://openai/`, `http://gemma/` | OpenAI-compatible API gateway and LLM web interface |
|
||||
| **reaper** | 3010 | Internal/VPN | `http://reaper/` | Automated Reaper DAW interface in a web browser (currently in maintenance) |
|
||||
| **dev** (code-server) | 8443 | Public | `dev.wompmacho.com` | VS Code remote development environment running directly on the host |
|
||||
| **slopsmith-web** (formerly slopsmith) | 10101 | Internal/VPN | `http://slopsmith/` | Custom internal application |
|
||||
| **linkstack** | 8190 | Public | `wompmacho.com`, `www.wompmacho.com` | Personal link landing page mapped to port `8190` |
|
||||
| **torrent** (via Gluetun) | - | Internal/VPN | `http://torrent/` | qBittorrent client routed through VPN container |
|
||||
| **nicotine** (via Gluetun) | - | Internal/VPN | `http://nicotine/` | Soulseek client routed through VPN container |
|
||||
| **navidrome** | 4533 | Internal/VPN | `http://music/` | Personal music streaming server |
|
||||
| **musicbrainz_picard** (formerly picard) | 5800 | Internal/VPN | `http://picard/` | MusicBrainz Picard tagger GUI |
|
||||
| **dozzle** | 4343 | Internal/VPN | `http://dozzle/` | Real-time Docker log viewer |
|
||||
| **guacamole** | 8080 | Public | `guac.wompmacho.com` | Apache Guacamole client for browser-based remote desktop |
|
||||
| **guacd** | 4822 (Internal) | Internal/VPN | - | Guacamole proxy daemon for RDP/SSH/VNC protocol handling |
|
||||
| **guac-postgresql** | 5432 (Internal) | Internal/VPN | - | PostgreSQL backend database for Guacamole |
|
||||
| **neko** | 8282, 52000-52100 (UDP) | Public | `neko.wompmacho.com` | WebRTC streaming virtual browser room |
|
||||
| **homelable-frontend** | 9444 | Internal/VPN | `http://homelable/` | Homelable interactive network visualizer frontend |
|
||||
| **homelable-backend** | 9445 | Internal/VPN | - | Homelable API backend querying homelab network states |
|
||||
| **homelable-mcp** | 8001 | Internal/VPN | - | Homelable MCP server exposing network state to LLMs |
|
||||
| **discodrome** | - (Internal) | Internal/VPN | - | Music tagging and catalog indexing backend |
|
||||
| **npm-sync** | - (Internal) | Internal/VPN | - | Sidecar daemon monitoring Docker socket to sync proxy records |
|
||||
| **pihole-dns-shim** | - (Internal) | Internal/VPN | - | Sidecar daemon monitoring Docker socket to sync DNS records |
|
||||
|
||||
## Truenas Services
|
||||
|
||||
These services are hosted on the TrueNAS node (`truenas`) and proxied via the Docker VM (`10.0.0.190`).
|
||||
|
||||
| Container Name | Mapped Ports | Access | Proxy Route / Domain | Description / Role |
|
||||
|---|---|---|---|---|
|
||||
| **Sonarr** | 30027 | Internal/VPN | - | TV Show Management |
|
||||
| **Radarr** | 30025 | Internal/VPN | - | Movie Management |
|
||||
| **Lidarr** | 30014 | Internal/VPN | - | Music Management |
|
||||
| **Readarr** | 30045 | Internal/VPN | - | Book Management |
|
||||
| **Prowlarr** | 30050 | Internal/VPN | - | Indexer Management |
|
||||
| **Bazarr** | 30046 | Internal/VPN | - | Subtitle Management |
|
||||
| **Jellyfin** | 30013 | Internal/VPN | - | Media Streaming Server |
|
||||
| **Jellyseerr** | 30042 | Public | `jellyseer.wompmacho.com` | Media Requests dashboard |
|
||||
| **calibre** | 32015 | Internal/VPN | calibre | E-book management and calibre content server |
|
||||
| Container Name | Mapped Ports | Access | Proxy Route / Domain | Description / Role |
|
||||
| -------------- | ------------ | ------------ | ------------------------- | -------------------------------------------- |
|
||||
| **Sonarr** | 30027 | Internal/VPN | - | TV Show Management |
|
||||
| **Radarr** | 30025 | Internal/VPN | - | Movie Management |
|
||||
| **Lidarr** | 30014 | Internal/VPN | - | Music Management |
|
||||
| **Readarr** | 30045 | Internal/VPN | - | Book Management |
|
||||
| **Prowlarr** | 30050 | Internal/VPN | - | Indexer Management |
|
||||
| **Bazarr** | 30046 | Internal/VPN | - | Subtitle Management |
|
||||
| **Jellyfin** | 30013 | Internal/VPN | - | Media Streaming Server |
|
||||
| **Jellyseerr** | 30042 | Public | `jellyseer.wompmacho.com` | Media Requests dashboard |
|
||||
| **calibre** | 32015 | Internal/VPN | calibre | E-book management and calibre content server |
|
||||
|
||||
## Self-Hosted AI Infrastructure
|
||||
## Self-Hosted AI Infra
|
||||
|
||||
The lab includes a distributed self-hosted AI architecture utilizing the high-speed local network:
|
||||
|
||||
|
||||
@@ -1,114 +0,0 @@
|
||||
---
|
||||
author: wompmacho
|
||||
tags: []
|
||||
title: Hugo Special Markdown Codes
|
||||
description: Available Shortcodes, and other resources for configuration.
|
||||
date: '2025-03-27'
|
||||
lastmod: '2025-03-28'
|
||||
---
|
||||
|
||||
## Available Shortcodes
|
||||
|
||||
### Project Shortcodes
|
||||
|
||||
Custom shortcodes defined in `layouts/shortcodes/`.
|
||||
|
||||
* **`include`**: Inject the contents of external files into your page. Supports local Hugo content paths and absolute paths mounted from the host (e.g., `/srv/configs/...`, `/srv/dev/hugo/wiki/...`).
|
||||
|
||||
**CRITICAL: Angle Brackets (`< >`) vs. Percentage Signs (`% %`)**
|
||||
* Use **`{{%/* include ... */%}}`** when you want the included text to be **parsed as Markdown**. This is required when including other `.md` files so their headers, lists, and links render properly.
|
||||
* Use **`{{</* include ... */>}}`** to output the raw text directly *without* Markdown processing.
|
||||
|
||||
**Example 1: Including another Markdown file**
|
||||
```markdown
|
||||
{{%/* include "/srv/dev/hugo/wiki/README.md" */%}}
|
||||
```
|
||||
|
||||
**Example 2: Including raw code into a Code Block**
|
||||
Wrap the shortcode in standard Markdown code fences to syntax-highlight an external configuration file:
|
||||
````markdown
|
||||
```yaml
|
||||
{{%/* include "/srv/configs/docker_compose/homepage/docker-compose.yaml" */%}}
|
||||
```
|
||||
````
|
||||
* **`video`**: Embed local or remote videos.
|
||||
* Usage: `{{/* video src="path/to/video.mp4"*/}}`
|
||||
* **`rawhtml`**: Insert raw HTML content.
|
||||
* Usage: `{{/* rawhtml*/}}<div>Your HTML here</div>{{/* /rawhtml*/}}`
|
||||
|
||||
### Escaping Shortcodes (For Documentation)
|
||||
|
||||
When writing documentation *about* shortcodes (or anytime you need to display `{{< >}}` or `{{% %}}` without Hugo executing them), you **MUST** use Hugo's built-in comment syntax inside the delimiters.
|
||||
|
||||
**The Rule:** Place `/*` immediately after the opening delimiter, and `*/` immediately before the closing delimiter. **No spaces are allowed between the delimiter and the comment marker.**
|
||||
|
||||
* **Correct (Angle Brackets):** `{{</* shortcode_name */>}}`
|
||||
* **Correct (Percentage Signs):** `{{%/* shortcode_name */%}}`
|
||||
* **Correct (Inner only):** `{{/* shortcode_name */}}` (If you just want to show the generic brackets without `< >` or `% %`)
|
||||
|
||||
**Common Mistakes that break the build:**
|
||||
* ❌ `{{< /* shortcode */ >}}` (Spaces around the comment markers cause parsing errors or unrecognized characters)
|
||||
* ❌ `{{/*< shortcode >*/}}` (Comment markers placed outside the inner delimiters)
|
||||
* ❌ `{{` (Using HTML entities is unnecessary, harder to read in source, and can break copy-pasting)
|
||||
|
||||
### Theme Shortcodes (Blowfish)
|
||||
Commonly used shortcodes from the [Blowfish theme](https://blowfish.page/docs/shortcodes/).
|
||||
|
||||
* **`alert`**: Display a callout/alert box.
|
||||
* Usage: `{{/* alert icon="circle-info"*/}}Your message here.{{/* /alert*/}}`
|
||||
* **`badge`**: Display a small badge.
|
||||
* Usage: `{{/* badge*/}}New{{/* /badge*/}}`
|
||||
* **`icon`**: Display an icon from the theme's icon set.
|
||||
* Usage: `{{/* icon "github"*/}}`
|
||||
* **`button`**: Create a styled button.
|
||||
* Usage: `{{/* button href="https://google.com" target="_self"*/}}Click Me{{/* /button*/}}`
|
||||
* **`mermaid`**: Render Mermaid.js diagrams.
|
||||
* Usage: `{{/* mermaid*/}}graph TD; A-->B;{{/* /mermaid*/}}`
|
||||
* **`timeline`**: Create a vertical timeline.
|
||||
* Usage: `{{/* timeline*/}}{{/* timelineItem ...*/}}{{/* /timeline*/}}`
|
||||
|
||||
---
|
||||
|
||||
## Markdown Callouts (Admonitions)
|
||||
|
||||
We use `hugo-admonitions` which follows the [GitHub/Obsidian alert syntax](https://github.com/orgs/community/discussions/16925).
|
||||
|
||||
### Basic Syntax
|
||||
|
||||
```markdown
|
||||
> [!TYPE] Title (Optional)
|
||||
> Content here.
|
||||
```
|
||||
|
||||
### Foldable Callouts
|
||||
|
||||
Use `+` for expanded by default or `-` for collapsed.
|
||||
```markdown
|
||||
> [!TYPE]+ Foldable Title
|
||||
> This callout is expanded by default.
|
||||
```
|
||||
|
||||
### Supported Types
|
||||
|
||||
The following types are mapped to specific icons and colors:
|
||||
|
||||
| Type | Icon | Description |
|
||||
| :---------- | :-------------- | :---------------------------------------- |
|
||||
| `note` | Pen | General information (default). |
|
||||
| `abstract` | Lines | Summaries or abstracts. |
|
||||
| `info` | Info Circle | Informational notes. |
|
||||
| `tip` | Lightbulb | Helpful tips or suggestions. |
|
||||
| `success` | Check Circle | Successful outcomes or "done" states. |
|
||||
| `question` | Question Circle | Questions or areas needing clarification. |
|
||||
| `warning` | Triangle Excl. | Warnings to pay attention to. |
|
||||
| `failure` | X Circle | Failed outcomes. |
|
||||
| `danger` | Triangle Excl. | Critical warnings. |
|
||||
| `bug` | Bug | Known issues or bugs. |
|
||||
| `example` | Teacher | Examples and use cases. |
|
||||
| `quote` | Quote | Important quotes. |
|
||||
| `important` | Excl. Circle | Critical information. |
|
||||
| `caution` | Triangle Excl. | Use with caution. |
|
||||
| `todo` | List Check | Tasks or items to be done. |
|
||||
| `hint` | Lightbulb | Hints or clues. |
|
||||
|
||||
---
|
||||
162
resume.md
162
resume.md
@@ -2,66 +2,78 @@
|
||||
title: Resume
|
||||
description: job history & resume
|
||||
author: wompmacho
|
||||
date: 2024-07-12 02:40:50.769000+00:00
|
||||
lastmod: 2025-02-08
|
||||
date: 2026-07-03 00:00:00.000000+00:00
|
||||
lastmod: 2026-07-03
|
||||
tags: []
|
||||
---
|
||||
|
||||
{{< rawhtml >}}
|
||||
<table id="resume-table">
|
||||
<table id="resume-table" style="background-color: rgba(33, 33, 33, 0.6); padding: 10px; border-radius: 8px;">
|
||||
<!----------------------------------Experience--------------------------------->
|
||||
<tr>
|
||||
<td colspan="3" class="header header-google-red">Experience</td>
|
||||
</tr>
|
||||
|
||||
<tr class="section-header">
|
||||
<td colspan="2" class="role">Special Projects Lead (DT L3) - <span class="google-blue">G</span><span class="google-red">o</span><span class="google-yellow">o</span><span class="google-blue">g</span><span class="google-green">l</span><span class="google-red">e</span></td>
|
||||
<td class="dates">October 2024 - <span class="google-green">Current</span></td>
|
||||
<td colspan="2" class="role">Special Projects Lead - <span class="google-blue">G</span><span class="google-red">o</span><span class="google-yellow">o</span><span class="google-blue">g</span><span class="google-green">l</span><span class="google-red">e</span></td>
|
||||
<td class="dates">September 2024 – Present</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<p>
|
||||
HwOps Special Projects Lead; Resolve technical incidents and escalations by performing analysis utilizing existing data models or leveraging custom built data infrastructure to formulate and interpret data to reach specific conclusions and next steps. Develop detailed reports and intuitive dashboards, communicating key insights for data driven analysis. File bugs against products, documentation, and procedures by documenting desired behavior or steps to reproduce, and driving bugs to resolution. Suggest code-level resolutions for complex issues by leveraging tools, tool development and effective communication with stakeholders. Identify opportunities to build or enable solutions that improve, support or empower OMs, Site Leads & DTs to solve issues by using self-service tools and documentation. Fostered team growth through mentorship, training course facilitation, collaboration with internal training teams, and technical writing development.
|
||||
</p>
|
||||
<ul>
|
||||
<li><strong>Technical Incidents & Escalation Analysis:</strong> Resolve technical incidents and escalations by performing analysis utilizing existing data models or leveraging custom-built data infrastructure to formulate next steps to reach conclusions, such as troubleshooting complex platform failures.</li>
|
||||
<li><strong>Operational Analysis:</strong> Develop detailed reports, data pipelines, and multiple dashboards to communicate key insights for data-driven analysis, including managing the Site Health Dashboard and automating alerts and reporting processes.</li>
|
||||
<li><strong>Code-Level Resolution & Tooling:</strong> Resolutions for complex issues by leveraging tool development and scripting, including migrating core incident tools to Go command-line utilities and resolving root-cause bugs in global connection sessions.</li>
|
||||
<li><strong>Workflow Automation Solutions:</strong> Identify opportunities to build or enable solutions that improve, support, or empower team operations, such as designing and scripting a web-based PTO and Overtime Management scheduling application.</li>
|
||||
<li><strong>Mentorship & Technical Coaching:</strong> Foster team growth and professional development by leading training courses, facilitating technical study sessions, and providing 1-on-1 coaching as an official corporate mentor, and served as a primary author on multiple technical training resources.</li>
|
||||
<li><strong>Operational Visualization & GCP Integration:</strong> Developed an HTML/SVG-based operational boundary visualization platform, creating custom Google Cloud Platform (GCP) projects and uploading facility layouts to help teams track operational zones.</li>
|
||||
<li><strong>Technical Documentation:</strong> Authored and maintained critical site-wide documentation, playbooks, and standard operating procedures (SOPs), consolidating technical procedures to standardize execution processes.</li>
|
||||
<li><strong>Project Coordination:</strong> Audited long-standing task queue blockages and built standard tracking sheets to assist building leads, managed weekend staffing assignment workflows, and coordinated weekly status snapshots for operations reviews.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class="section-header">
|
||||
<td colspan="2" class="role">Data Center Technician (DT L2) - <span class="google-blue">G</span><span class="google-red">o</span><span class="google-yellow">o</span><span class="google-blue">g</span><span class="google-green">l</span><span class="google-red">e</span></td>
|
||||
<td class="dates">July 2023 - October 2024</td>
|
||||
<td colspan="2" class="role">Operations Engineer / Infrastructure Technician - <span class="google-blue">G</span><span class="google-red">o</span><span class="google-yellow">o</span><span class="google-blue">g</span><span class="google-green">l</span><span class="google-red">e</span></td>
|
||||
<td class="dates">July 2023 – September 2024</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<p>
|
||||
Site Operations hardware maintenance and networking, resolving critical issues and collaborating cross-functionally to address SLO deviations. Built and led an internal escalation team for weekend/holiday support, creating resources and onboarding leaders. Developed and documented new processes, championed project documentation, and contributed to technician hiring, onboarding, and training. Mentored Googlers and facilitated training programs. Transitioned into Leader Role as a Maintenance Lead / Escalation Point of Contact.
|
||||
</p>
|
||||
<ul>
|
||||
<li><strong>API Integration Scripts:</strong> Wrote a command-line location tool integrated with internal inventory and location-tracking APIs, enabling active field engineers to query and identify server locations.</li>
|
||||
<li><strong>Technical Documentation Strategy:</strong> Created troubleshooting and diagnostic guides that became the official training reference for the introductory systems diagnostic course, upskilling peer trainees via internal mentoring circles.</li>
|
||||
<li><strong>Feature Integration Proposals:</strong> Drafted and presented feature requirement requests to the global operations advisory board to enable partial repairs in host provisioning systems, solving database transaction blockers across multiple regions.</li>
|
||||
<li><strong>System Daemon Debugging & Patching:</strong> Root-caused proprietary server node reboot failures during system burn-in, posting a terminal hotfix that resolved blocked machines across multiple sites and led to a global systemd configuration patch.</li>
|
||||
<li><strong>Telemetry Dashboards:</strong> Setup daily business intelligence dashboard reports pulling weekly engineer output metrics to track site resource allocation and backlogs.</li>
|
||||
<li><strong>Incident Tracking Frameworks:</strong> Launched a dedicated security incident tracking framework, reducing data-security incident resolution cycles and building ticket tracking workflow components.</li>
|
||||
<li><strong>Critical Incident Troubleshooting:</strong> Handled urgent hardware and networking escalations (VLAN switches, remote management unit NIC timeouts, MAC address configuration issues in host provisioning systems) to maintain system SLOs.</li>
|
||||
<li><strong>Shell Scripting Automation:</strong> Developed and deployed custom utility scripts to automate local environment setups, handle diagnostic commands, and organize system profile aliases for engineering teams.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!---------------------------------Consulting---------------------------------->
|
||||
<tr>
|
||||
<td colspan="3" class="header header-google-yellow">Consulting / Freelance / Helping out Family</td>
|
||||
</tr>
|
||||
|
||||
<tr class="section-header">
|
||||
<td colspan="2" class="role">Porch Light Properties LLC</td>
|
||||
<td class="dates">Jun 2020 - Jul 2023</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<p>
|
||||
Developed and implemented long-term systems, development, and planning strategies, including rebranding initiatives. Served as Hiring Manager, overseeing onboarding, system administration, and policy management. Managed social media, website development/design, SEO, and marketing campaigns (including Facebook Ads). Utilized Google Analytics and oversaw technology/security initiatives and traditional marketing.
|
||||
</p>
|
||||
<ul>
|
||||
<li>Developed and implemented long-term systems, development, and planning strategies, including rebranding initiatives.</li>
|
||||
<li>Served as Hiring Manager, overseeing onboarding, system administration, and policy management.</li>
|
||||
<li>Managed social media, website development/design, SEO, and marketing campaigns (including Facebook Ads).</li>
|
||||
<li>Utilized Google Analytics and oversaw technology/security initiatives and traditional marketing.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class="section-header">
|
||||
<td colspan="2" class="role">Videography, Photography, Film Media, Drone Services</td>
|
||||
<td class="dates">Jun 2020 - Jan 2023</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<div class="iframe-wrapper" style="display: flex; flex-direction: row; align-items: center; justify-content: center;">
|
||||
@@ -69,52 +81,75 @@ tags: []
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class="section-header">
|
||||
<td colspan="2" class="role">Tabora Farm and Winery</td>
|
||||
<td class="dates">Dec 2019 - May 2020</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<p>
|
||||
Managed social media, website development/design, and SEO. Oversaw tax and licensing compliance for interstate wine shipments.
|
||||
</p>
|
||||
<ul>
|
||||
<li>Managed social media, website development/design, and SEO.</li>
|
||||
<li>Oversaw tax and licensing compliance for interstate wine shipments.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<!---------------------------------Freelance----------------------------------->
|
||||
<!-- <tr>
|
||||
<td colspan="3" class="header header-google-green">Freelance</td>
|
||||
</tr> -->
|
||||
|
||||
<!---------------------------------JOBs---------------------------------------->
|
||||
<!---------------------------------JOBs Continued------------------------------>
|
||||
<tr>
|
||||
<td colspan="3" class="header header-google-blue">Work Experience Continued</td>
|
||||
</tr>
|
||||
|
||||
<tr class="section-header">
|
||||
<td colspan="2" class="role">Operations Engineer - <span class="twitter-blue">Twitter</span> Inc.</td>
|
||||
<td class="dates">Apr 2015 - Sep 2017</td>
|
||||
<td colspan="2" class="role">Datacenter Operations Engineering Lead - <span class="twitter-blue">Twitter</span> Inc.</td>
|
||||
<td class="dates">March 2015 – September 2017</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<p>
|
||||
Led site operations teams and provided on-call support for multiple data centers/POPs, consistently exceeding SLOs goals. Managed, hired, onboarded, and trained operations engineers and staff. Served as a Twitter liaison and brand ambassador, reporting on emerging technologies. Provided on-site support to engineering teams, proactively monitored services, and managed projects including repairs, decommissioning, upgrades, installations, networking, and maintenance.
|
||||
</p>
|
||||
<ul>
|
||||
<li><strong>Site Uptime Leadership:</strong> Provided on-site and remote on-call support for multiple regional data centers and points of presence (POPs) across Sacramento, Santa Clara, and Atlanta, consistently exceeding service SLO targets.</li>
|
||||
<li><strong>Infrastructure Project Management:</strong> Managed lifecycle schedules for site maintenance projects, including software upgrades, switch deployments, decommissioning runs, and hardware repairs.</li>
|
||||
<li><strong>Cross-Functional SRE Support:</strong> Collaborated with network engineering and site reliability teams to triage local network outages and server failures, restoring high-availability services.</li>
|
||||
<li><strong>Team Leadership:</strong> Supervised, hired, onboarded, and trained a dedicated site engineering team, coordinating work schedules and career development profiles.</li>
|
||||
<li><strong>Technical Ambassadorship:</strong> Represented the company as a technical liaison at industry conferences and events, reporting back to stakeholders on emerging infrastructure technologies.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class="section-header">
|
||||
<td colspan="2" class="role">Operations Technician (OTA/OA) - <span class="google-blue">G</span><span class="google-red">o</span><span class="google-yellow">o</span><span class="google-blue">g</span><span class="google-green">l</span><span class="google-red">e</span></td>
|
||||
<td class="dates">Nov 2012 - Mar 2015</td>
|
||||
<td colspan="2" class="role">Operations Technician - <span class="google-blue">G</span><span class="google-red">o</span><span class="google-yellow">o</span><span class="google-blue">g</span><span class="google-green">l</span><span class="google-red">e</span></td>
|
||||
<td class="dates">November 2012 – March 2015</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<p>
|
||||
Supported multiple sites on critical infrastructure projects, including server repairs, hardware qualifications, QA, NPI, HAT, disk sanitization, project management, decommissioning, upgrades, and backup library maintenance. Collaborated effectively to maintain Google's infrastructure and ensure operational excellence.
|
||||
</p>
|
||||
<ul>
|
||||
<li><strong>Datacenter Operations & Repairs:</strong> Executed over 11,000 maintenance and component swap actions across thousands of unique server systems, maintaining an 89% hardware intervention completion rate.</li>
|
||||
<li><strong>Daily Swaps Record:</strong> Achieved a site-wide operational record for the highest volume of server swaps completed during a single 12-hour shift (over 200 swaps).</li>
|
||||
<li><strong>Security Storage Sanitization Project:</strong> Sanitized and destroyed thousands of decommissioned solid-state drives (SSDs) and hard-drive backlogs, successfully clearing historical data security queues in compliance with strict compliance standards.</li>
|
||||
<li><strong>Tape Library Migrations:</strong> Led large-scale data retention transition workflows, migrating tens of thousands of archive tapes between storage libraries while troubleshooting and resolving hardware drive failures.</li>
|
||||
<li><strong>New Product Introduction (NPI) Hardware Qualification:</strong> Partnered with hardware testing engineers to validate and qualify network switch frameworks, testing high-performance line card interfaces and optical cabling platforms.</li>
|
||||
<li><strong>Automated Materials Handling Pilot:</strong> Acted as primary operator and workflow subject for the operations deployment guide of custom datacenter logistics platforms.</li>
|
||||
<li><strong>Fiber Infrastructure Optimization:</strong> Resolved connection trace failures in high-density fiber-optic distribution frames and consolidated inventory under a large-scale sorting audit.</li>
|
||||
<li><strong>Technical Onboarding & Training:</strong> Onboarded and mentored dozens of contract workers and team members on platform upgrades, hardware diagnostics, and operational workflows, boosting overall team velocity.</li>
|
||||
<li><strong>Deployments and Decommissioning:</strong> Decommissioned network switches and fiber runs, participated in decommissioning server clusters, including containerized mobile data center modules.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!---------------------------------Projects------------------------------------>
|
||||
<tr>
|
||||
<td colspan="3" class="header header-google-yellow">Technical Projects</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<ul>
|
||||
<li><strong>Homelab Infrastructure & Automation:</strong> Automated reverse proxy and custom DNS record allocation in a home server setup by scripting sidecar daemons (npm-sync and pihole-dns-shim) that read Docker socket events and execute API modifications natively via YAML labels.</li>
|
||||
<li><strong>Self-Hosted AI & Developer Stack:</strong> Served Gemma model backends via Ollama on a custom local compute host, integrating them with code-server environments via automated Model Context Protocol (MCP) shell execution triggers.</li>
|
||||
<li><strong>Hypervisor Virtualization:</strong> Unified a multi-node cluster employing Proxmox VE (Debian) hypervisors and a TrueNAS ZFS RAIDZ2 pool over a high-speed network backbone.</li>
|
||||
<li><strong>Docker Container Orchestration:</strong> Managed, deployed, and supported 50+ containerized services and game servers (including Gitea, Pterodactyl, and local database managers) on a Docker host VM, using automated socket-sync configurations to manage routing and DNS.</li>
|
||||
<li><strong>Hugo static documentation Pipeline:</strong> Frontend Vendor Decoupling (vendored the Blowfish style layout), Module Mount Mapping (mapped absolute paths outside local workspace), Build Automation CI/CD (programmed Gitea Actions deployment pipelines).</li>
|
||||
<li><strong>MeowTab MIDI Editor (REAPER DAW Extension):</strong> Engineered a visual guitar fretboard editor using ReaImGui; dual-layer MIDI sync; headless testing sandbox with Docker/Busted Lua.</li>
|
||||
<li><strong>Guitar Tab Downloader:</strong> Developed CLI tool in Go/TypeScript; range query engine for Songsterr networks.</li>
|
||||
<li><strong>Web-to-Markdown Scraper:</strong> Go tool utilizing go-readability filters to parse HTML and discard noisy sidebars/ads; concurrent asset downloading using Goroutines.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -122,49 +157,46 @@ tags: []
|
||||
<tr>
|
||||
<td colspan="3" class="header header-google-red">Education</td>
|
||||
</tr>
|
||||
|
||||
<tr class="section-header">
|
||||
<td colspan="2" class="">Pennridge High School</td>
|
||||
<td class="dates">2004 - 2009</td>
|
||||
</tr>
|
||||
|
||||
<tr class="section-header">
|
||||
<td colspan="2" class="">Georgia State University - Computer Science</td>
|
||||
<td class="dates">2012 - 2017</td>
|
||||
</tr>
|
||||
<tr class="section-header">
|
||||
<td colspan="2" class="">Pennridge R.C. High School</td>
|
||||
<td class="dates">2004 - 2009</td>
|
||||
</tr>
|
||||
|
||||
<!---------------------------------Skills & CERTS------------------------------>
|
||||
<tr>
|
||||
<td colspan="2" class="header header-google-yellow">Skills</td>
|
||||
<td colspan="1" class="header header-google-green">Certificates</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<ul>
|
||||
<li>Leadership, Mentoring</li>
|
||||
<li>UNIX / Linux / OS</li>
|
||||
<li>Networking, TCP/IP, DNS, DHCP</li>
|
||||
<li>Technical Writing & Documentation</li>
|
||||
<li>SQL, HTML, CSS, JS</li>
|
||||
<li>Java, Golang, Shell Scripting</li>
|
||||
<li>Docker, VMs, Baremetal</li>
|
||||
<li><strong>Languages & Scripts:</strong> Go (Golang), Java, Bash, Python, SQL, JavaScript, HTML, CSS</li>
|
||||
<li><strong>Full-Stack & Platforms:</strong> Spanner, Docker, Docker Compose, Proxmox, Google Cloud Run, Svelte/Sapper</li>
|
||||
<li><strong>CI/CD & DevOps:</strong> Gitea Actions, Git, Cloud IDEs, Version Control Systems (VCS), Code Review Systems, Technical Documentation Portals (Hugo/Markdown), Build Systems (Bazel), CI/CD Automation</li>
|
||||
<li><strong>Systems & Networks:</strong> Linux/Unix Administration, OPNsense, Reverse Proxy DNS (Pi-hole), Nginx Proxy Manager, Cloudflare</li>
|
||||
<li><strong>Observability & AI:</strong> Prompt Engineering, Agentic Tooling models</li>
|
||||
</ul>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<ul>
|
||||
<li>LPIC-1 - Linux Professional Institute</li>
|
||||
<li>SUSE Certified Linux Administrator (SUSE CLA)</li>
|
||||
<li>Small Unmanned Aircraft System (Part 107)</li>
|
||||
<li>Google: AI for Data Analysis (Issued Jun 2026)</li>
|
||||
<li>Google: Maximize Productivity With AI Tools (Issued Jun 2026)</li>
|
||||
<li>Google: AI for Writing and Communicating (Issued Jun 2026)</li>
|
||||
<li>Google: Introduction to AI (Issued Jun 2026)</li>
|
||||
<li>LPIC-1: Linux Professional Institute (Feb 2014–Feb 2019)</li>
|
||||
<li>SUSE Certified Linux Administrator (SUSE CLA) (Feb 2014–Feb 2019)</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="center">
|
||||
{{< button href="/downloads/2025_Resume_Michael_Braicu.pdf" target="_self" >}}
|
||||
{{< button href="/downloads/2026_Michael_Braicu_Resume.pdf" target="_self" >}}
|
||||
PDF Download
|
||||
{{< /button >}}
|
||||
</div>
|
||||
|
||||
BIN
static/downloads/2026_Michael_Braicu_Resume.pdf
Normal file
BIN
static/downloads/2026_Michael_Braicu_Resume.pdf
Normal file
Binary file not shown.
BIN
static/images/backgrounds/default.gif
Normal file
BIN
static/images/backgrounds/default.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 179 KiB |
@@ -1,5 +1,6 @@
|
||||
---
|
||||
draft: true
|
||||
bodyClass: has-bg
|
||||
draft: false
|
||||
title: Stream
|
||||
author: wompmacho
|
||||
tags: []
|
||||
|
||||
Reference in New Issue
Block a user