k3s homelab · cluster attivo

Daniele
D'Annibale

Java Backend Developer · Architecture & Cloud Enthusiast

Cluster k3s interamente gestito via GitOps con Fleet + Kustomize. Stack di osservabilità completo, sicurezza Zero Trust e applicazioni custom sviluppate da zero e deployate in produzione.

13 Namespace
38 Workload attivi
272 Manifest YAML
Infrastruttura

Stack Tecnologico

Ogni risorsa vive in Git — nessun intervento manuale. Fleet riconcilia continuamente; Kustomize gestisce base + overlays per ambiente.

Git Pushrepository
Fleetwatch & reconcile
Kustomizebase + overlays
K8s API Serverapply manifests
Cluster Statedesired = actual
Piattaforma
k3s
Kubernetes leggero
Rancher Fleet
GitOps · multi-bundle
Kustomize
Base + overlays
Traefik
Reverse proxy · TLS
Sicurezza & Accesso
cert-manager
TLS automation
Sealed Secrets
Cifrato in Git
Zitadel
OIDC · Code · JWT
Cloudflared
Zero-hole tunnel
Osservabilità
Prometheus
Metriche & alerting
Grafana
Dashboards & viz
Grafana Tempo
Distributed tracing
OTel Collector
OTLP · 3 pipeline
OTel Operator
CRD · operator-managed
Grafana Loki
Log aggregation · 7d
Grafana Alloy
Log collection · k8s events
kube-state-metrics
K8s state metrics
node-exporter
Hardware metrics · DaemonSet
DCGM Exporter
GPU metrics · DaemonSet
CI/CD & Dati
ARC
Self-hosted runners
Docker Registry v2
Private image store
NVIDIA Device Plugin
GPU scheduling
PostgreSQL
Datastore primario
Rancher Backup
Cluster backup operator
Applicazioni

Applicazioni Deployate

Sviluppate da zero o adottate per uso personale — gestite con la stessa pipeline GitOps sul cluster.

⏱️

Time-Ledger

App web per il tracciamento delle ore lavorative. Calcolo straordinari automatico, accrual ferie/ROL, dashboard con widget configurabili, panel admin multi-utente e autenticazione OIDC via Zitadel.

Python 3.13 FastAPI Angular 21 PostgreSQL Prometheus OIDC
📄

Curriculum Vitae

Portfolio online generato da JSON Resume, self-hosted sul cluster. Accessibile pubblicamente con theme Kendall — la stessa pipeline GitOps aggiorna il CV ad ogni push su main.

Node.js 20 JSON Resume Self-hosted
🧭

Helmsman

Lab personale di ricerca e decisione su azioni/ETF costruito su NautilusTrader. Il libro principale è un wallet buy & hold DCA a lungo orizzonte; un portafoglio momentum cross-asset come secondario. Paper-first e di sola lettura — non invia mai ordini. Dashboard FastAPI accessibile via WARP.

Python 3.13 FastAPI NautilusTrader WARP Self-hosted

Fantacalcio Reminder

Bot Telegram che ricorda di schierare la formazione prima della chiusura della giornata di Serie A. Legge il calendario da football-data.org, deriva la deadline dal primo calcio d'inizio utile e avvisa un giorno prima e un'ora prima, gestendo i rinvii.

Python 3.13 Telegram Bot API football-data.org Self-hosted

🤖 Bot Telegram: long polling, nessuna porta esposta e nessun Ingress — stato persistito su PVC.

🗄️

Directus

Headless CMS e data platform open-source self-hosted su PostgreSQL. Interfaccia web (Data Studio) accessibile solo via Cloudflare WARP sulla rete interna.

Headless CMS WARP Self-hosted
✈️

Trek

App self-hosted per il tracciamento dei viaggi. Mappe interattive con Mapbox, arricchimento luoghi via Google Places API, dati meteo integrati (Open-Meteo) e autenticazione OIDC via Zitadel.

Node.js Mapbox OIDC Self-hosted

🔒 Accesso riservato — solo utenti autorizzati in Zitadel

🤖

Docling

Parsing intelligente di documenti PDF e Office con il motore open-source di IBM Research, accelerato da GPU NVIDIA. L'interfaccia è custom — un binario Go che serve insieme API e frontend Angular — scritta perché quella inclusa perdeva i documenti: sveglia il motore prima dell'upload, tiene le immagini fuori dal risultato e conserva le conversioni su disco, riscaricabili.

Go Angular AI / ML GPU NVIDIA Scale-to-zero Sablier Cloudflare Access

On-demand: il motore GPU resta a 0 repliche a riposo — la UI lo sveglia e attende che sia pronto prima di inviare il documento, così nessun upload si perde durante l'avvio. Il primissimo avvio può richiedere qualche minuto (caricamento modelli).

📑

Stirling-PDF

Suite open-source per la manipolazione di documenti PDF. Offre oltre 50 operazioni: unione, divisione, compressione, conversione, OCR e firma digitale. Deployato per uso personale, accessibile via WARP.

Java Spring Boot Scale-to-zero Sablier WARP

On-demand: a riposo gira a 0 repliche per liberare risorse — si avvia automaticamente al primo accesso e si rispegne dopo l'inattività.

🗺️

FossFlow

Editor di diagrammi open-source (draw.io) self-hosted, accessibile via Cloudflare WARP sulla rete interna. Usato per i diagrammi di architettura del cluster.

draw.io Scale-to-zero Sablier WARP

On-demand: a riposo gira a 0 repliche per liberare risorse — si avvia automaticamente al primo accesso e si rispegne dopo l'inattività.

📝

AFFiNE

Workspace collaborativo self-hosted (documenti, whiteboard e database) in stile Notion/Miro. Stack dedicato con PostgreSQL (pgvector) e Redis. In scale-to-zero via Sablier, accessibile solo via Cloudflare WARP.

Workspace pgvector Scale-to-zero Sablier WARP

On-demand: a riposo gira a 0 repliche per liberare risorse — si avvia automaticamente al primo accesso e si rispegne dopo l'inattività.

Cluster

Stato del Cluster

Metriche raccolte da node-exporter (DaemonSet) ed aggregate in Prometheus. Utilizzo medio — aggiornate ad ogni deploy.

22%
CPU
utilizzo medio
47%
Memoria
utilizzo medio
20%
Disco
utilizzo medio
Tutti i target UPPrometheus · Alloy · Loki · ksm · OTel
0 errori Origin5xx eliminati — Cloudflare WAF
TLS ovunquecert-manager · Let's Encrypt · CA interna
Zero porte aperteCloudflare Tunnel + WARP

Accesso pubblico — Cloudflare Tunnel

Browser*.daniele-dev.com
Cloudflare EdgeWAF · DDoS · TLS
Cloudflaredzero hole nel router
Traefik → ServicesIngress routing
Osservabilità

Prometheus · Grafana · Tempo · Loki

Stack completo sui tre pilastri: metriche, tracing distribuito e log aggregation. Alerting email via Resend con 26 regole attive.

14.963 Serie Prometheus
26 Alert Rules attive
100% Uptime Prometheus
<100ms Latency P99 Time-Ledger
200+ Time entries registrate
100% Email deliverability

Distributed Tracing — OpenTelemetry

FastAPI + OTel SDKauto-instrumentation
OTel CollectorOTLP gRPC
Grafana Tempostorage & query

Log Aggregation — Loki + Alloy

Alloy DaemonSetpod logs · k8s events
Grafana Lokipush API
Grafana ExploreLogQL · trace link
Sicurezza

Defense in Depth

Zero porte aperte sul router, segreti cifrati in Git, container hardened e identità centralizzata — ogni livello copre il precedente.

🌐

Zero Trust Network

Cloudflare Tunnel per accesso pubblico, WARP per remoto privato. Zero porte aperte sul router.

🔐

Sealed Secrets

Segreti cifrati committati in Git. Decifrabili solo dal controller nel cluster — GitOps-safe.

🔑

Zitadel OIDC

IdP self-hosted con Code flow, JWT claims per RBAC e backend PostgreSQL dedicato.

🛡️

Container Hardening

Non-root user, read-only FS, dropped ALL capabilities, no privilege escalation.

🔒

TLS Ovunque

cert-manager gestisce CA interna per LAN e Let's Encrypt via DNS-01 Cloudflare per dominio pubblico.

☁️

Cloudflare WAF

100% richieste malevole mitigate. TLS terminato in edge, DDoS protection, 0 errori 5xx origin.

Knowledge Base

Vault Obsidian

Ogni componente documentato: architettura, deployment, runbook operativi e decision log. Grafo di conoscenza interattivo navigabile da Obsidian con query Dataview live.

100+ Note
9 Progetti
40+ Runbook
2 MOC Dataview
MOC Index
Applicazioni
Monitoring
Utilities
Cluster docs
Passa il mouse su un nodo per esplorare le connessioni