projects

Nexus Homelab

I wanted to host my own services and learn how networking, storage, and security fit together on a real server.

I built a Linux homelab with Docker services, RAID storage, and a custom dashboard that gives me one place to find them.

Nexus service dashboard with resource usage and grouped service tiles
fig. 1The Nexus homepage: CPU, memory and RAID usage above grouped service tiles, using sample data and simulated metrics.

how it works

  1. A Dell OptiPlex runs Linux and Docker, with mdadm RAID 10 across four enterprise drives.
  2. Tailscale connects Nexus, the X1, and the VPS.
  3. The custom Flask homepage groups services and polls their health endpoints.
  4. Prometheus scrapes host and container metrics through node-exporter and cAdvisor, and Alloy ships logs to Loki. A Wazuh manager on Nexus receives events from agents on Nexus and the VPS.

decision

Nexus has no public IP and no forwarded ports. Public traffic reaches a small cloud VM first, which terminates TLS and drops banned IPs before anything crosses the Tailscale mesh to my house.

what went wrong

CrowdSec banned my own uptime monitor, because checking every service each minute looks like a scanner. Unbanning it only lasted until the next check, so I added a whitelist that skips detection for that source.

outcome

Nexus runs 25+ self-hosted services, including Daybreak’s reading app. Its metrics, logs and security events all land on Nexus. Grafana is connected to those sources, but I have not built its dashboards yet.

Docker, Linux (Kali), Tailscale, Nginx, CrowdSec, Wazuh, Prometheus, Grafana, Loki, Ollama, Flask, SQLite

Set in Newsreader and IBM Plex Mono. Toronto, ON, Canada.

© 2026 Prahlad Ranjit