This Site: Self-Hosted Portfolio
Built and deployed from scratch on a self-hosted Arch Linux server, running Caddy as the web server. This project covers everything from server maintenance to real production troubleshooting, not just writing HTML.
- Deployed and configured Caddy with a hardened systemd service, including diagnosing a ProtectSystem sandboxing issue that was silently blocking file reads outside of allowed paths
- Resolved a pacman keyring corruption issue causing mass PGP signature failures across unrelated packages
- Fixed a file ownership conflict after an upstream package split (linux-firmware-nvidia), including safely removing and rebuilding conflicting files
- Corrected a broken mkinitcpio hook (plymouth) that was preventing a clean boot image from being generated after a kernel upgrade
- Diagnosed a Caddyfile address syntax bug (http:80 vs the correct :80) that caused the server to return empty 200 responses instead of serving content
- Deployed content end to end using SSH and SCP from a Windows workstation to the Linux server
Production-Style Monitoring Stack
Deployed Grafana, Prometheus, Node Exporter, and cAdvisor on the homelab server to track bare metal stats and container health, alongside Uptime Kuma for heartbeat monitoring of both the site and the server itself. Both Grafana and Uptime Kuma stay locked down behind Cloudflare Zero Trust.
Hit and resolved an HTTPS redirect loop caused by Cloudflare and Caddy both trying to terminate HTTPS at the same time. Fixed by setting the Caddy server block to plain HTTP and letting Cloudflare handle HTTPS termination at the edge.
Grafana Prometheus Uptime Kuma cAdvisor Node ExporterCloudflare Tunnel & Reverse Proxy
Routed the portfolio site, Grafana, and Uptime Kuma through Cloudflare Tunnel and Caddy, so no public IP address or ports are ever exposed to the internet. Configured Cloudflare Zero Trust to restrict Grafana and Uptime Kuma access to a single authorized account, keeping both locked down from public access.
Cloudflare Tunnel Zero Trust Caddy Reverse ProxyDockerized Service Stack
Containerized the full monitoring stack (Uptime Kuma, Prometheus, Grafana, cAdvisor, and Node Exporter) using Docker Compose for a repeatable, version controlled deployment. All services run alongside each other on the same PowerEdge host, managed as a single stack instead of individual manual installs.
Docker Docker Compose ContainerizationArch Linux Home Server
Self-hosted server running Arch Linux on a Dell PowerEdge with hardware RAID (Avago/LSI MegaRAID controller). Handles ongoing system updates, package management, and ongoing maintenance for the infrastructure behind this site and other self-hosted services.
Fixed a Docker networking issue after a kernel update broke the veth virtual interface module, which was preventing containers from reaching the network.
Arch Linux Hardware RAID System AdministrationActive Directory & Entra Administration
Hands-on management of user accounts, group policy, and hybrid identity between on-prem Active Directory and Entra ID, gained through MSP field engineering supporting multiple small business clients.
Active Directory Entra ID Identity ManagementMSP Field Support & Provisioning
Provisioned and deployed workstations, diagnosed and repaired hardware, and provided on-site network troubleshooting across a range of small business environments as a field engineer.
Provisioning Hardware Networking