Architecture

Lab architecture tour

How NB Cloud is built — from hardware to browser. Public-safe overview; no credentials or internal-only paths.

At a glance

Three Proxmox VE nodes form a cluster running 80+ LXCs and VMs. Block storage for workloads sits on replicated Ceph; bulk user data (media, photos, Nextcloud) on TrueNAS ZFS over NFS. Inbound traffic passes through Cloudflare, terminates at a reverse proxy, and authenticates via Authentik where required. Proxmox Backup Server snapshots systems on-site; library data and PBS archives replicate to Cloudflare R2 offsite.

┌─────────────────────────────────────────────┐ │ Users — browser, phone, media apps, TAK │ └────────────────────┬────────────────────────┘ ▼ ┌─────────────────────────────────────────────┐ │ Edge — Cloudflare DNS, Tunnel, WAF │ └────────────────────┬────────────────────────┘ ▼ ┌─────────────────────────────────────────────┐ │ Ingress — NPMplus (HTTPS :443) │ │ Identity — Authentik SSO │ └────────────────────┬────────────────────────┘ ▼ ┌─────────────────────────────────────────────┐ │ Apps — Grafana, Jellyfin, Nextcloud, … │ └────────────────────┬────────────────────────┘ ▼ ┌─────────────────────────────────────────────┐ │ Proxmox cluster + Ceph + TrueNAS + PBS │ └─────────────────────────────────────────────┘

Physical layer

ComponentRole
Dell5820Primary node — most services, GPU for Plex/Jellyfin/AI
DellPrecisionSecond cluster node — capacity and failover
ryzen7-pveHosts TrueNAS & PBS VMs (storage hardware passthrough)
Network gearOmada router/AP, managed switch, UPS monitoring

How a web request flows

  1. You open drive.nbottini.com (Nextcloud).
  2. DNS (Pi-hole at home, Cloudflare from outside) resolves the name.
  3. Traffic hits NPMplus on port 443 with a valid TLS certificate.
  4. Authentik enforces login where the app lacks native OIDC (forward authentication at the proxy).
  5. Proxy forwards to the Nextcloud container on the LAN.
  6. Files come from TrueNAS over NFS if needed.

Non-HTTP workloads (e.g. TAK Server on TCP 8089) bypass the HTTP proxy by design; the layered model above applies to the majority of web-facing services.

Service categories

CategoryExamples
PlatformPi-hole, NPMplus, Authentik, Cloudflare Tunnel
Family cloudNextcloud, Immich, Matrix, Jellyfin/Plex
OpsAnsible/Semaphore, Portainer, BookStack, Gitea
ObservabilityPrometheus, Grafana, Uptime Kuma, Wazuh
Media pipelineRadarr, Sonarr, *arr helpers (automated library)
AIOllama + Open WebUI (local LLM on GPU)

Browse live tiles at home.nbottini.com (access may require invite).

Storage design

For the user-facing explanation (what this means for Immich/Nextcloud), see How we protect your data.

Security model (summary)

Separate test environment

A Mini-Rack cluster (four Proxmox nodes on a different subnet) exists for experiments and training — isolated from production Main-Cluster.

Go deeper: Team members with BookStack access should read Homelab Academy → Nick's Lab Architecture Tour for chapter-length detail and operator pointers.