Come costruisco il mio laboratorio domestico utilizzando tecnologie Open Source
Benvenuti in questa esplorazione guidata del mio semplice pezzo forte della tecnologia domestica: My Home Lab!. Ha alcuni elementi di design meticoloso e un odore che testimonia la potenza delle tecnologie open source.
Costruire un laboratorio domestico con lo stack tecnologico desiderato può rivelarsi un'impresa gratificante e preziosa per diversi motivi:
- Ideale per sperimentazioni e test S/W: un laboratorio domestico è uno spazio molto più sicuro per sperimentare nuove tecnologie. Puoi danneggiare comodamente il software, le configurazioni del server e persino l'hardware vero e proprio!.
- Come hobby e per interesse personale: per alcuni, il percorso di costruzione e gestione di un laboratorio domestico personale può essere un hobby appagante. Può essere un modo per interagire con la tecnologia a un livello più profondo, perseguendo interessi personali e godendo della soddisfazione di costruire tutto da zero.
- Hub Proof of Concepts: dove altro puoi sviluppare e testare prove di concetti per idee o startup legate alla tecnologia se non in un laboratorio domestico?. C’è bisogno di costose risorse commerciali con prodotti di laboratorio domestico.
- Per creare soluzioni personalizzate: con un laboratorio domestico puoi personalizzare le soluzioni tecnologiche in base alle tue esigenze specifiche, che si tratti di impostare sicurezza e sorveglianza domestica, VPN personale per l'accesso remoto, un server multimediale di intrattenimento, un sistema di automazione domestica, cloud privato o le tue enormi soluzioni di archiviazione dati.
- Apprendimento e sviluppo di nuove competenze: un laboratorio domestico fornisce un ambiente pratico per apprendere nuove tecnologie, sperimentare diverse configurazioni e acquisire esperienza pratica. È un modo eccellente per conoscere il networking, la gestione dei server, la virtualizzazione, la containerizzazione, l'automazione domestica, la sicurezza informatica e molti altri argomenti relativi all'IT.
Architettura di rete My Home Lab (design semplicistico)
L'architettura di un Home Lab dipenderà dalle tue esigenze specifiche, ad esempio dall'attrezzatura che intendi acquistare e dagli obiettivi specifici da raggiungere con il laboratorio. Ecco un semplice progetto della rete del mio Home Lab.
1. Connessione Internet
- Questa è la connessione Internet principale, fornita principalmente dal tuo ISP (provider di servizi Internet).
- È il livello di ingresso nella rete
- Puoi prendere in considerazione l'idea di avere una connessione Internet secondaria/di backup per ridondanza se il tuo laboratorio domestico è fondamentale, ad esempio servizi di hosting consumati esternamente.
- La mia connessione Internet principale è fornita da Safaricom (società Telco con sede in Kenya). Ho intenzione di ottenere una connessione Internet Starlink e magari usarla come principale per il downlink, e Internet Safaricom per l'accesso remoto e l'esposizione di servizi esterni.
- Ho scelto il pacchetto di connessione Safaricom Fiber Internet for Business per ottenere indirizzi IP pubblici e avere il controllo completo sul mio stack di rete.
- Il router è configurato in modalità bridge per consentirmi di configurare gli IP pubblici nel firewall/router esterno non controllato dall'ISP.
- Il router dell'ISP è responsabile dell'instradamento del traffico dalla rete interna a qualsiasi destinazione esterna.
2. Router/Firewall
- Ho acquistato Protectli Vault 4 Port Mini PC da Amazon. È possibile acquistare RAM e disco separatamente per ottenere specifiche migliori.
- Il Mini PC dispone di 4 porte che offrono flessibilità in termini di connessioni (WAN o LAN)
- Ho poi installato pfSense sull'hardware, la guida completa è disponibile a questo link; https://techviewleo.com/install-pfsense-opnsense-on-protectli-vault/
- pfSense è un software firewall e router gratuito basato su FreeBSD
- OPNsense è un'alternativa a pfSense. Non l'ho usato senza motivo. Lo proverò in futuro.
- pfSense ha una serie di servizi configurati: HAProxy per il bilanciamento del carico, servizio DHCP (per l'assegnazione di indirizzi IP dinamici ai dispositivi), NTP per la sincronizzazione dell'ora, Snort (IDS/IPS), OpenVPN per l'accesso remoto al mio laboratorio di casa e client Tailscale ( VPN mesh: https://computingforgeeks.com/joining-pfsense-to-tailscale-headscale-vpn-mesh/)
- Anche la segregazione della rete tramite VLAN viene eseguita su pfSense. Ho 4 VLAN attive: dispositivi ed elettrodomestici IOT, WiFi ospite, WiFi principale, server e VM.
- Regole del firewall configurate per limitare le connessioni Inter-VLAN. Ad esempio, il WiFi ospite può accedere solo al servizio DNS e di filtraggio del traffico nella VLAN della rete dei server. Esistono molte altre regole per vari motivi.
3. Switch
- Ho utilizzato gli switch gestiti UniFi per un maggiore controllo e la possibilità di configurare VLAN (LAN virtuali).
- L'interruttore principale è lo switch Ethernet USW-24-POE
- Ho scelto lo switch Power over Ethernet (PoE) per evitare l'uso di iniettori PoE per gli access point o qualsiasi dispositivo che possa essere alimentato tramite cavo Ethernet.
- Lo switch è gestito tramite UniFi Controller (applicazione di rete) in esecuzione in una VM Ubuntu 20.04: https://computingforgeeks.com/install-unifi-controller-network-application-on-ubuntu/
- L'altro piccolo interruttore è dedicato alla sicurezza domestica
4. Punto/i di accesso
- Un punto di accesso viene utilizzato per estendere la copertura wireless di una rete esistente e aumentare il numero di utenti in grado di connettersi ad essa
- Possiedo due access point UniFi AP AC LR di Ubiquiti Networks – UAP-AC-LR (PoE passivo indoor da 24 V, 2,4 GHz/5 GHz, 802.11 a/b/g/n/ac, 1x 10/100/1000)
- Entrambi sono gestiti utilizzando l'applicazione di rete UniFi
- Punti di accesso WiFi mappati su VLAN come definito in pfSense e configurato in UniFi Switch.
5. Server principale (o server):
- I server principali eseguono applicazioni software di virtualizzazione (Hypervisor)
- Ibrido di hypervisor di tipo 2 e di tipo 1
- Preferisco l'hardware Mini PC per l'uso in laboratorio domestico a causa del basso consumo energetico
- Nel mio rack di server ho 4Intel NUC
- E hardware 7Lenovo ThinkCentre.
- La maggior parte ha CPU Intel Core i7, chiavette RAM DDR4 e SSD NVME.
5.1 Stack di virtualizzazione
- Si tratta di una combinazione di componenti software utilizzati per creare e gestire ambienti virtuali.
- La virtualizzazione aiuta con l'ottimizzazione delle risorse hardware come CPU, memoria e spazio di archiviazione.
- Più macchine virtuali possono condividere l'hardware fisico sottostante, consentendo un utilizzo più efficiente della risorsa
- Nel mio Home Lab utilizzo varie tecnologie di virtualizzazione, vale a dire;
- Macchina virtuale basata su kernel (KVM): 2 nodi
- Proxmox VE versione 8 – 2 nodi
- oVirt in esecuzione su sistema operativo Rocky Linux: 1 nodo
- XCP-ng con Xen Orchestra per l'amministrazione dell'interfaccia utente - 1 nodo
- OpenStack distribuito su Rocky Linux come sistema operativo di base. – 1 nodo
- VMware ESXi e vCenter versione 8 – 3 nodi
- Il server HPE ProLiant DL380 Gen10 è affamato di energia: funziona solo in base alle necessità
6. Servizi
Gestisco numerosi servizi nel mio Home Lab per diverse esigenze personali. Ne elencherò alcuni qui:
6.1 Cluster Kubernetes
- Il mio cluster Kubernetes è alimentato da Flatcar Container Linux come sistema operativo
- Viene distribuito e gestito utilizzando Kubespray
- Dispone di controller Nginx Ingress e Traefik Ingress
- Il sistema di bilanciamento del carico del cluster è MetalLB
- Il registro dei container è Harbour
- Stoccaggio del contenitore: Torre
- Gestione dei certificati nativi del cloud: cert-manager
- GitOps utilizzando ArgoCD
- L'accesso API avviene tramite pfSense utilizzando HAProxy
6.2 Cluster OpenShift
- Alimentato da Fedora CoreOS a livello del sistema operativo
- Utilizzo di OKD – Distribuzione comunitaria di Kubernetes che alimenta Red Hat OpenShift
- La maggior parte dei cluster e delle altre applicazioni sono distribuite in modo nativo OpenShift utilizzando gli operatori
- HAProxy è il bilanciatore del carico per i nodi/API OpenShift
6.3 Gestione e automazione delle infrastrutture
- Servizi di gestione proxy: Nginx Proxy Manager
- Gestione identità e DNS: IPA gratuito
- Strumento di installazione ISO: Ventoy
- IaC di Terraform
- Automazioni Ansible che utilizzano AWX
- Server Git gestito da Gitea
- Adesso gioco con Pulumi
6.4 Monitoraggio e dashboard
- Prometeo con Grafana
- Dashy per la dashboard dei collegamenti al laboratorio domestico
- Tempo di attività: tempo di attività Kuma
6.5 Media domestici/intrattenimento
- Jellyfin
- Server multimediale Plex
6.6 Sincronizzazione dei dati
- Syncthing per sincronizzare i dati tra i miei sistemi/macchine.
6.7 Blocco pubblicità
- Pi-hole
- AdGuardHome
6.6 Domotica
- Domotica intelligente: Home Assistant
- Piattaforma IoT: ThingsBoard (in realizzazione)
6.7 Sicurezza
- SIEM: AlienVaultOSSIM
- Gestione password: Bitwarden
- Rilevamento/prevenzione delle intrusioni: Snort IDS
6.8 Registrazione
- Schierati Graylog e Grafana Loki. Cambio a seconda delle esigenze applicative e dell'idoneità.
- Analizzatore di log: GoAccess
6.9 Future implementazioni del software (in cantiere; non ancora implementate)
- NVR CCTV: NVR Fregata
- Server SFTP con HTTP/S, FTP/S e WebDAV opzionali: Sftpgo
- Sincronizzazione dei repository del sistema operativo: Katello e Foreman
- Responsabile delle finanze personali: Firefly III
- Analytics per siti web: Plausible Analytics o Matomo
- Accesso e desktop remoto: teletrasporto e Rustdesk
- Router di rete/firewall aggiuntivo: Sophos Firewall Home Edition
- SSO: Authelia
- Jump Server (se necessario): Jumpserver
- Foto: Fotoprisma
- VoIP domestico: Asterisk e FreePBX
Alcuni link di installazione:
- https://computingforgeeks.com/creating-ubuntu-and-debian-os-template-on-proxmox-ve/
- https://computingforgeeks.com/install-proxmox-ve-on-debian-12-bookworm/
- https://computingforgeeks.com/deploy-production-kubernetes-cluster-with-ansible/
- https://computingforgeeks.com/how-to-deploy-openshift-container-platform-on-kvm/
- https://computingforgeeks.com/run-ansible-awx-on-kubernetes-openshift-cluster/
- https://computingforgeeks.com/install-configure-traefik-ingress-controller-on-kubernetes/
- https://computingforgeeks.com/deploy-nginx-ingress-controller-on-kubernetes-using-helm-chart/
- https://computingforgeeks.com/deploy-metallb-load-balancer-on-kubernetes/
- https://computingforgeeks.com/how-to-deploy-rook-ceph-storage-on-kubernetes-cluster/
- https://computingforgeeks.com/install-freeipa-server-on-rocky-almalinux/
- https://computingforgeeks.com/deploy-multi-node-okd-cluster-using-fedora-coreos/
- https://computingforgeeks.com/deploy-xen-orchestra-appliance-on-xen-xcp-ng/
- https://computingforgeeks.com/install-xen-orchestra-on-ubuntu-debian-linux/
- https://computingforgeeks.com/how-to-install-ovirt-engine-on-rocky-almalinux/
- https://computingforgeeks.com/installing-xcp-ng-virtualization-platform-steps-with-screenshots/
- e molti altri su computingforgeeks.com e techviewleo.com