2nd Year Computer Engineering student from the Philippines, driven by hunger and a will to do the work and learn. I am very obsessed with tech and infrastructure and that's what keeps me to do what I do.
Currently my infrastructure repo private for privacy and security reasons
π― Current Goal: Designing and Building Distributed Systems and Learning and applying System Design Concepts
π‘ Click to expand full infrastructure diagram (June 13, 2026)
---
config:
layout: elk
---
flowchart TB
subgraph Internet["π Public Internet"]
Users["End Users"]
Slack["Slack Channel"]
CloudflareEdge["Cloudflare Edge"]
end
subgraph CI_CD["π GHA CI/CD Pipeline"]
Git["GitHub Repo CI/CD"]
ALint["Ansible Lint"]
Molecule["Molecule Testing"]
CiCheck["Linter/Formatter/StaticAnalysis"]
Trivy["Trivy Security Scan"]
GHCR["Github Registry"]
end
subgraph Tailscale["Tailscale"]
subgraph MainDevices["π₯οΈπ» Main Devices"]
MainPC["MainPC"]
MainLaptop["MainLaptop"]
Ansible["Master Ansible"]
Terraform["Master Terraform"]
Kubectl["Kubernetes Control Plane"]
end
subgraph MainPC["π₯οΈ Personal Computer"]
Ollama["Local Ollama Models"] --> SSH1["SSH Keys"]
end
subgraph MainLaptop["π» Personal Laptop"]
SSH2["SSH Keys"]
end
subgraph Pi5["βοΈ Node - Raspberry Pi 5"]
subgraph SSHD1["π SSHD Configs"]
F2B["Fail2ban"] --> NoIP["No Local IP SSH"] --> Port22["Only on Port 22"] --> UFW["Only allow Tailscale Devices"] --> AKeys["No Key, No Entry"] --> APerms["No Root Login"] --> Access["SSH Completed"]
end
subgraph Docker["π³ Docker Containers"]
DLogs["Docker Logs"]
subgraph DiagramStack["π Compose - Diagram Stack (Observability Experimentation Application)"]
Frontend2["React/Vite Frontend (Diagram)"]
subgraph Backend2["Node.js Backend (Diagram)"]
Nodejs2["Node JS Runtime"]
OTLPDep["OTLP Metrics HTTP"]
OTLPDep2["OTLP Spans HTTP"]
end
Postgres["Postgres DB :5432"]
PostgresExporter["Postgres Exporter :9187"]
end
subgraph ObservabilityStack["π Compose - Observability Stack (LGTM + Alloy)"]
Alloy["Grafana Alloy:12345"]
Prom["Prometheus:9090"]
Loki["Loki:3100"]
Tempo["Tempo:3200"]
Grafana["Grafana Visualization :3030"]
AManager["AlertManager:9093"]
end
end
end
end
subgraph DOKS["βΈοΈ DOKS (3-Node Cluster)"]
ArgoCD["ArgoCD Operator"]
Ingress["Ingress-Nginx Controller"]
TunnelPod["Cloudflared Pod"]
subgraph Workloads["βοΈ Namespaces"]
AppPod["Portfolio Pods (Frontend/Backend)"]
DBPod["Postgres StatefulSet"]
end
end
Workloads -- Kubelet pulls image --> GHCR
ArgoCD -- Updates Manifest --> Workloads
TunnelPod -- Internal K8s Service --> Ingress
Ingress -- Route --> AppPod
AppPod -- Internal Service --> DBPod
CloudflareEdge -- QUIC/HTTPS --> TunnelPod
Git -- CI Check --> ALint & CiCheck
CiCheck --> Trivy
ALint -- Deploy --> Molecule
Molecule -- Deploy --> SSHD1
Trivy -- Build/Push --> GHCR
SSH1 & SSH2 -- Tailscale Tunnel --> SSHD1
Alloy -- Scrape Logs --> DLogs
Alloy -- Remote Write --> Prom
Alloy -- Loki Push --> Loki
Alloy -- OTLP --> Tempo
Prom & Loki & Tempo -- Query --> Grafana
Prom -- Alerting Rules --> AManager --> Slack
Frontend2 -. Frontend Logs/Traces .-> Alloy
OTLPDep & OTLPDep2 -. OTLP Metrics & Spans .-> Alloy
PostgresExporter -- Scrapes Metrics --> Postgres
PostgresExporter -. Metrics :9187 .-> Alloy
From my portfolio blog
- π₯ Telemetry Madness β I let AI generate my observability stack, then watched it fail silently. Rebuilt from first principles with curl, Alloy, and an MVP OpenTelemetry app.
- β±οΈ SRE Steps β Building a reliable kill script to measure real MTTD/MTTR in containerized infrastructure.
- π‘οΈ Imposter Syndrome β Escaping the blackbox with the fundamentals.
I'm looking for internship / entryβlevel opportunities (remote or hybrid). or if you just talk in general about tech or even be my peer then you can message me! (I would be glad to) Let's move forward together!
- π§ stpmacabulos@gmail.com
- π LinkedIn
- π Portfolio, Blogs & Infra