Owner, operator, on-call2022–Present50 services, bare metal
Docker Linux Caddy NetBird Vaultwarden Grafana Prometheus Loki Alloy
Why Run Your Own
There’s a specific satisfaction in running your own infrastructure — not as a proof of concept, but as a daily driver. Every service here is something I use. When it goes down, I feel it. That pressure makes you actually care about reliability instead of just talking about it.
The Machine
Single bare-metal box. No cloud provider, no managed service, no abstraction layer I can’t trace. Docker Compose orchestrates everything. The network is flat, storage is local, and backups go to an external drive. I’ve got a second Raspberry Pi handling DNS — DNSGuard and Unbound, with the ability to switch between local recursion and DoT upstream fetching.
Planned for the near term: encrypted offsite backups to AWS Glacier. Cold storage costs pennies per month and gives me an actual safety net if the hardware dies.
What Runs Here
50 services across the machine. A few worth calling out:
Caddy — reverse proxy, auto TLS, routes everything
NetBird — mesh VPN so I can reach this from anywhere
Vaultwarden — self-hosted password manager
Gitea — self-hosted git with CI runner and container registry
Sage — my AI agent (Hermes), runs locally on CUDA GPU, talks to me over Matrix
OpenClaw Gateway — AI agent orchestration
Immich — photo library with ML-powered face recognition (OpenVINO)
Matrix federation — two homeservers (cloudcitadel.in, hanumara.online), both with LiveKit for voice and video
SearXNG — self-hosted metasearch
Home Assistant + Frigate — smart home automation and AI-powered security camera object detection
Folio — this site, built and deployed via Gitea CI/CD. Push to beta branch, Gitea builds the Docker image, pushes to the on-box registry, and deploys via SSH back to this machine. Nothing leaves the box.
Media streaming — Jellyfin with automated library management, subtitles, and analytics
Arcane — Docker management and backup
Camofox — headless browser for automated tasks
AI Pipeline
The AI stuff runs across two machines. My main box runs Open WebUI as the frontend. The actual inference happens on a separate machine with a CUDA GPU running llama.cpp server — quantized GGUF models, mostly Q4_K_M. I use it through OpenCode on my laptop when I’m at a desk, and through my Hermes agent on Matrix when I’m out.
LocalAI runs as a second inference option on the main box, capped to one model at a time. The constraint is intentional — it keeps the memory footprint lean.
Obsidian + CouchDB
CouchDB is here for one reason: live sync of my Obsidian notes. The eventual goal is connecting those notes to my AI agents — giving them context from my actual thinking instead of just public documentation. Not fully built yet, but the plumbing is there.
Observability
This is the part that separates a toy from something you can actually rely on. Every container exports metrics. Alloy collects, Prometheus stores, Grafana visualizes. Loki handles logs. node_exporter, process_exporter, and smartctl_exporter keep an eye on the hardware.
When a container restarts at 2 AM, Grafana alerts me before I notice. The smartctl exporter is the most important — a failing disk doesn’t give you graceful degradation, it gives you silence then data loss. It catches the warning signs.
What I’d Change
Single box, single point of failure. The next step is a second node with automatic failover. At this scale it’s a tradeoff: complexity versus reliability. I’m comfortable here for now.
{"menu":[{"name":"Pages","items":[{"label":"Home","subtitle":"Overview","action":"navigate:/","icon":"page"},{"label":"Career","subtitle":"Timeline & principles","action":"navigate:/career","icon":"page"},{"label":"Projects","subtitle":"All projects","action":"navigate:/projects","icon":"page"},{"label":"About","subtitle":"About Meher","action":"navigate:/about","icon":"page"}]},{"name":"Settings","items":[{"label":"Toggle Theme","subtitle":"","action":"toggleTheme","icon":"theme"}]}],"fuse":{"threshold":0.6,"minMatchCharLength":2,"keys":["label","subtitle","searchableText"]},"projects":[{"title":"Global Payroll Platform","description":"In-house payroll platform across 6 APAC markets, $1.2B annually. I define the technical requirements, coordinate payments integrations, and make sure the engineering teams build what the business actually needs.","tags":["Python","SQL","API Integration","ISO 20022"],"link":"#","image":null,"techStack":["Python","SQL","API Integration","ISO 20022"],"size":"large","domain":"fintech","icon":null,"featured":true},{"title":"Fraud Detection Engine","description":"1.5M payment transactions analyzed. Built automated detection rules that caught the obvious cases — the ones that shouldn't need a human reviewing them. Cut manual validation by 80%. QuickSight dashboards so the non-technical teams could see what was flagged and why.","tags":["Python","QuickSight","Analytics"],"link":"#","image":null,"techStack":["Python","QuickSight","SQL"],"size":"medium","domain":"analytics","icon":null},{"title":"Background Check Revamp","description":"India's background checks were taking four months at the 90th percentile. Candidates would leave. Worked with Legal, Compliance, and Business to renegotiate vendor SLAs, parallelize the workflow, and grow the team from 10 to 45. Cut it to one month, impacted 120K annual hires.","tags":["Operations","Compliance","Process Engineering"],"link":"#","image":null,"techStack":["SQL","QuickSight","VBA"],"size":"medium","domain":"data","icon":null},{"title":"Sovereign Homelab","description":"50 services on bare metal: reverse proxy, DNS, VPN, password manager, photo library, media streaming, AI inference, git CI/CD, smart home, Matrix federation. Full observability via Grafana, Loki, Prometheus, and Alloy. No cloud provider.","tags":["Docker","Linux","Caddy","NetBird"],"link":"#","image":null,"techStack":["Docker","Caddy","NetBird","Vaultwarden"],"size":"large","domain":"infrastructure","icon":null,"featured":true},{"title":"AI Node","description":"Private LLM inference on CUDA GPU. llama.cpp server with quantized models, Open WebUI frontend. Used through OpenCode on my laptop and my Hermes agent on Matrix when I'm out. No cloud APIs, no telemetry.","tags":["CUDA","llama.cpp","Open WebUI"],"link":"#","image":null,"techStack":["Python","CUDA","llama.cpp"],"size":"medium","domain":"ai","icon":null,"featured":true},{"title":"AI & LLM on Your Homelab — A Tutorial","description":"Step-by-step guide to running your own AI inference stack at home. llama.cpp, Open WebUI, Caddy reverse proxy, Matrix integration — everything local, everything yours.","tags":["Tutorial","AI","llama.cpp","Homelab"],"link":"#","image":null,"techStack":["llama.cpp","Open WebUI","Caddy","Docker"],"size":"medium","domain":"ai","icon":null,"featured":false},{"title":"Matrix Citadel","description":"Self-hosted Matrix federation with full voice and video via dual LiveKit servers. Twunnel bridges between two homeservers, JWT auth services, OpenClaw Gateway for AI agent orchestration.","tags":["Matrix","LiveKit","Twunnel"],"link":"https://cloudcitadel.in","image":null,"techStack":["Matrix","LiveKit","Twunnel","OpenClaw"],"size":"medium","domain":"infrastructure","icon":null},{"title":"Media & Photo Stack","description":"Jellyfin streaming with automated library management, subtitles, and analytics. Immich photo library with ML-powered face recognition and reverse image search.","tags":["Jellyfin","Immich","Media Server"],"link":"#","image":null,"techStack":["Jellyfin","Immich","PostgreSQL"],"size":"medium","domain":"infrastructure","icon":null},{"title":"Observability Stack","description":"Full infrastructure telemetry: Grafana dashboards, Loki log aggregation, Prometheus metrics, Alloy collector, plus node, process, and disk health exporters. Monitoring 50 services and bare-metal health in real time.","tags":["Grafana","Prometheus","Loki","Alloy"],"link":"#","image":null,"techStack":["Grafana","Prometheus","Loki","Alloy"],"size":"medium","domain":"infrastructure","icon":null},{"title":"Gitea","description":"Self-hosted git server with CI runner and built-in container registry. This is where the folio lives — code pushed here, the runner builds it, the registry stores the image, and it deploys back to the same machine. Source to production, nothing leaves the box.","tags":["Git","CI/CD","Container Registry"],"link":"https://git.nexusno.de","image":null,"techStack":["Gitea","Docker","CI/CD"],"size":"medium","domain":"infrastructure","icon":null},{"title":"Immich","description":"Photo library with ML-powered face recognition, reverse image search, and automatic duplicate detection. Replaces Google Photos without the telemetry — all the smart features, none of the cloud.","tags":["Immich","ML","Photos"],"link":"#","image":null,"techStack":["Immich","OpenVINO","PostgreSQL"],"size":"medium","domain":"infrastructure","icon":null},{"title":"Home Assistant + Frigate","description":"Smart home automation with AI security camera system. Frigate does hardware-accelerated object detection — people, dogs, cars — on the cameras, not the cloud. Home Assistant ties everything together: lights, sensors, automations, and camera events.","tags":["Home Assistant","Frigate","Smart Home"],"link":"#","image":null,"techStack":["Home Assistant","Frigate","Docker"],"size":"medium","domain":"infrastructure","icon":null},{"title":"SearXNG","description":"Self-hosted metasearch that aggregates results from Bing, Wikipedia, and others without tracking. Replaces the browser search bar — same results, no data broker on the other end.","tags":["SearXNG","Privacy","Search"],"link":"https://search.nexusno.de","image":null,"techStack":["SearXNG","Docker","Valkey"],"size":"small","domain":"infrastructure","icon":null}],"skills":{"tools":["Python","SQL","QuickSight","VBA","Docker","Linux","Kubernetes","Grafana","Prometheus","Loki","Caddy","Matrix"],"standards":["ISO 20022"],"domains":["Payments","Infrastructure","Process Engineering"]},"contact":{"email":"hi@meherchaitanya.com","channels":[{"label":"Email","url":"mailto:hi@meherchaitanya.com","displayText":"hi@meherchaitanya.com","icon":"mail","external":false},{"label":"LinkedIn","url":"https://linkedin.com/in/meherchaitanya","displayText":"meherchaitanya","icon":"linkedin","external":true},{"label":"Matrix","url":"https://matrix.to/#/@meher:hanumara.online","displayText":"@meher:hanumara.online","icon":"matrix","external":true}]}}