How I Run Projects
I build and operate my own stack end-to-end so I can ship quickly, keep control of reliability, and learn the systems side behind every product decision.
Self-hosted operations topology
Traffic routes through split-horizon DNS and HAProxy into app services, cache, and database, with VPN for secure remote operations.
HAProxy routing
I terminate TLS at HAProxy and route hostnames to supervised app processes on target VMs, with least-connections load balancing across backend pools.
Split-horizon DNS
I run Pi-hole for local hostname resolution in parallel with my public registrar, so LAN traffic reaches HAProxy directly without hairpin NAT loopback failures.
TLS certificate management
I manage certificates and renewals so all public endpoints stay HTTPS-secure by default.
Managed switch + firewall controls
I monitor traffic, segment network paths, and enforce firewall policy from the switch layer.
VPN gateway
I host remote-access VPN entry points so I can operate and maintain systems securely offsite.
PostgreSQL + pgvector + Apache AGE
I run relational, vector, and graph workloads on my own database server for apps and analytics.
Valkey/Redis session cache
I use in-memory caching for session state and fast ephemeral data to keep interactions responsive.
Next.js runtime via PM2 + Docker
One Next.js deploy across two VMs and a desktop, separate machines, not a cloned fleet. HAProxy routes each hostname to the target VM process; PM2 supervises Node and Docker runs supporting services where needed.
Outbound email server
I plan to self-host outbound mail for automation workflows and production notifications.