Home Lab Setup
Omdat ik toch iets meer wil focussen op mijn home lab dacht ik dat het een goed plan is om een uit eenzetting neer te schrijven van mijn home lab. Het is niet de meest uitgebreide maar het is toch mijn speeltuin.
Zoals het hoort draait mijn home lab op Linux.
Hardware:
Hosts
Voor mijn hosts ben ik gegaan voor materiaal dat ik thuis nog had of kon meekrijgen van het werk. Dit wil zeggen dat mijn originele PVE host al meer dan 10 jaar oud is (aankoopdatum 1 juli 2014). Ik heb dan maar beslist een jaar geleden dat mijn originele PVE host een andere taak mag gaan uitvoeren binnen mijn home lab. Dus heb ik hier mijn back up storage van gemaakt door er TrueNAS scale op te installeren. Echter had ik dan wel een nieuwe PVE host nodig. Hiervoor heb ik dan een oude workstation gebruikt een kwestie van het materiaal een 2de leven te geven.
PVE02:
- CPU: 8 x Intel(R) Xeon(R) CPU E5-1620 v4 @ 3.50GHz (1 Socket)
- RAM:79GB
- Storage:
- Boot disk: 256GB NVME SSD
- DataStore: 3TB x2 in RAID 1
TrueNAS:
- CPU: Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
- RAM: 16GB
- Storage:
- Boot disk: 256GB sata SSD
- Datastore: 3TB x4 in RAIDZ1
Firewall
Mijn eerste firewall was een oude fortigate 60D die ik van een collega heb gekregen voor mijn eindwerk. Deze heb ik in Juli 2024 vervangen door een fortigate 60E. Dit omdat mijn 60D geen updates meer kreeg.
Ik maak ook gebruik van verschillende VLAN’s:
- Guest > 192.168.1.0/24
- IOT (Ongebruikt) > 172.16.6.0/24
- Main > 172.16.1.0/24
- MGMT > 172.16.4.0/24 (management)
- SRV > 172.16.3.0/24
Ik maak ook voor elke VM een MAC reservation. Het IP van de VM is ook altijd de ID van de VM. Mijn MGMT netwerk benader ik via mijn eigen Desktop. Dit doe ik door alleen mijn IP van mijn desktop & laptop toe te laten naar bepaalde netwerken wegens gebrek aan een betere manier. Ik had ook nog een SSL VPN via mijn firewall maar deze heb ik uitgeschakeld toen ik mijn 60D nog gebruikte dit vanwagen de vele Common Vulnerabilities and Exposures CVE’s dat het al had verzameld. 😅. Deze VPN gaat ook niet snel terug komen. Optermijn zou ik wel een Open VPN willen gaan gebruiken dit omdat het een product/ project is dat zijn waarden & veiligheid in het verleden al heeft bewezen. Deze open VPN zou ik dan wel willen draaien op een pfsense firewall. Mijn IOT netwerk word momenteel nog niet gebruikt maar er is wel een plan om dit te gaan gebruiken. IK ben van plan om home assistant op te zetten.
Switchen
Mijn switchen zijn hetzelfde verhaal als mijn firewall & mijn hosts. Ik heb ze gekregen op mijn werk. Dit zijn zeer oude toestellen. Ik vermoed van sommige of ze nog gediend hebben voor Napoleon. Het vreemde dat ik ook heb met deze oude HP/ HPE switchen is dat ik ze niet in mijn management netwerk krijg. Dus het is altijd een hele uitdaging voor hier aanpassingen aan te doen. Mogelijks is het ook meer een ik probleem dan de switchen. Op termijn zou ik ook deze swithen willen vervangen door Unifi switchen. Cisco of Ruckus is wat duur.
Switch | Device name | IP | Location |
---|---|---|---|
hpe 1800-24 (J9028B) | SW01.local.sysadminnotes.be | 172.16.4.3 | Berging |
hpe 1810 - 24 (J9803A) | SW02.local.sysadminnotes.be | 172.16.4.4 | YDH kamer |
HPE officeconnect 1820 | SW03.local.sysadminnotes.be | 172.16.4.5 | Bureau |
Access points
Mijn AP’s zijn 2 Unifi LR’s. Deze dekken mooi heel het huis waar ik momenteel in woon. In de tuin is de dekking niet volledig maar dit moet nog eens bekeken worden. Één van de AP’s bevindt zich helemaal beneden in de berging waar de modem/router staat en de andere staat helemaal boven op de zolder.
Deze AP’s stralen momenteel 2 SSID’s uit: het main & gasten netwerk. Ooit komt hier misschien nog een IOT netwerk bij maar hier bestaat momenteel geen nut voor. Bij nader inzien komt het IOT netwerk toch sneller dan verwacht. Dit zodat mijn chromecast & de GSM’s op dit netwerk kunnen. Dit omdat ik niet 100% vertrouw dat mijn chromecast niet in eens gekke dingen gaat doen.
Iets dat ik wel altijd doe voor ik mijn AP’s update is opzoeken wat de reacties zijn voor deze update. Hier is een Reddit bot voor & sub Reddit. In het verleden waren er nog al veel problemen met de updates van unifi producten.
- 2x UAP AC LR
Software
Hypervisor
Hier ben ik gegaan voor proxmox. Dit omdat mijn host geen hardware raid controller heeft (hoe zou het toch komen 😅). Voor de rest ben ik eigenlijk vergeten waarom ik proxmox heb gekozen over XCP-NG. Ik maak gebruik van de non production repo. Ik heb hier eigenlijk nog nooit echt problemen mee gehad. Ik heb wel al gehad dat als ik VM’s probeer te verwijderen dat deze wel verdwenen maar dat ik nog apart de lock van de VM conf file moet halen en moet verwijderen en als ik een VM verwijderde dat de disks van deze VM’s niet verwijderd werden.
Storage
Voor Storage heb ik 2 verschillende oplossingen.
TrueNAS Ik heb TrueNAS voor mijn back ups van PBS (Proxmox Back Up Server) & hier is ook de vault van mijn Hyper back up. Ik heb nog wat uitzoekwerk te doen om truenas in de vingers te krijgen maar de delen die ik al heb lukken goed.
Synology: Mijn Synology NAS gebruik ik voor archief doeleinde, storage voor sommige containers zoals Paperless, photo storage via Synology Photos & Back ups van mijn Office 365 omgeving (OneDrive, SharePoint & mail)
Containers
Je zou denken dat mijn containers rechtstreeks op mijn PVE host draaien maar doet doen ze natuurlijk niet. Ik draaien mijn containers in een ubuntu VM met docker. Docker lijkt toch praktisch de standaard te zijn. Hier lijkt ook veel vraag naar te zijn. Ik heb ondertussen ook al de meeste van mijn services ondergebracht in een container waardoor ik echt bijna geen VM’s meer heb draaien. Mijn VM setup voor docker is misschien niet ideaal. Mijn boot drive van mijn Docker VM is 100GB. Dit lijkt mij geen goede situatie. Dus op termijn zou ik alles willen migreren naar een andere host zodat ik een aparte disk kan voorzien. Ik maak ook nog heel soms gebruik van Portainer. Dit omdat ik zo ben begonnen met docker. Echter probeer ik hiervan af te stappen omdat ik echt de commando’s probeer te leren.
De services die ik heb draaien via docker containers:
- Actual > budget applicatie
- HomeBox > inventory system
- Nginx proxy manager > reverse proxy
- Gitea > git platform
- Mealie > kookboek web applicatie
- Paperless-ngx > document management
- Minecraft server > Ja een Minecraft server
- Netdata > Monitoring
- FreshRSS > RSS reader
- Syncthing > File sync tool
Back ups
Back ups gebeuren via Proxmox back up server. Er wordt elke avond een back up gemaakt van mijn Unifi controller VM & Docker01. Voor de rest heb ik niet veel VM’s meer. De PBS VM draait op mijn TrueNAS zodat ik niet heel die back up 2 keer over het netwerk moet sleuren. Voor mijn containers zou ik nog een aparte back up oplossing moeten bekijken.
Mijn back up retention policy is ingesteld als volgens:
keep | Vaule |
---|---|
keep last | 14 |
keep daily | 7 |
Keep monthly | 6 |
Keep weekly | 5 |
Keep yearly | 2 |
Ik maak ook back ups van mijn Synology nas via Hyper back up. Dit gebeurt elke nacht rond een uur of 3. Sinds kort heb ik ook een off-site back up voor mijn synology NAS. Als er dan ooit iets fout gaat onsite en mijn onsite back ups zijn niet meer bruikbaar dan heb ik toch nog altijd een off-site back up.
Op termijn ga ik ook al mijn compose files aanpassen zodat ik met een .env file kan werken. Dit maakt het mogelijk dat ik de compose files op Github kan zetten. Dan heb ik daar toch ook een soort van back up van.
Client back ups:
Ik ben momenteel bezig met het schrijven van een script dat via restic dagelijks back ups maakt van mijn clients maakt. Deze worden dan opgeslagen in een restic repository op mijn truenas. Het is dan ook de bedoeling dat ik een email krijg met daar in de melding of de back up gelukt is of niet en hoe groot de back up was. Dit ga ik dan via cron laten lopen op voor mijn windows laptop en via task schedular voor windows pc’s.
Automation
server install:
De installatie van het server OS (Ubuntu server 22.04.2) gebeurd momenteel nog manueel. De algemne installatie (base) gebeurd momenteel via een zelf geschreven Ansible playbook. Een beknopte opsomming kan je hier onder vinden:
- upate apt repo
- creatie Ansible user
- toevoegen van public keys aan authorized_keys file
- toevoegen van sudoers file van Ansible user
- installaties van standaard packages
- net-tools
- unattended upgrades
- Qemu agent
- install cockpit, enable, start service & allow ports in ufw
- toevoegen cofig file voor het tonen van lijn nummers in nano
- toevoegen van custom sshd (limed access to server and disable password authentication)
- enable ufw and allow ssh access
- add config file unattended upgrades
Ik ben ook van plan voor deze of een andere playbook te maken die ik via Ansible pull kan laten lopen zodat als ik algemne config wijzigingen wil aanbrengen ik deze kan laten lopen via Ansible. Hier voor moet alleen nog eens opgesomd worden wat welke server catogorie nodig heeft.
Toekomst plannen:
De basis installatie van mijn servers gaat momenteel redelijk vanzelf. Ik ben ook aan het kijken of ik optermijn de installatie en configuratie van de programma’s kan automatiseren. Dit als ik ooit een server opnieuw moet opzetten van 0 of één extra nodig heb voor een reden dit kan gebeuren via Ansible. De installatie wizard voor het installeren van het OS zelf zou ik ook nog willen weg nemen zodat ik alleen nog de VM zelf zou moeten aanmaken en zelf dit zou misschien nog via Terraform misschien kunnen 😊. Als ik dan nog allemaal in semaphore krijg dan kan het via één klik.
Client install:
De installatie en configuratie van mijn laptop gaat momenteel ook redelijk automatish via ansible pull. Ik heb een ansible playbook geschreven die alle programma’s installeerd die ik gebruik en zo veel mogelijk config voor mij al uitvoerd. Er word ook een cron job toegevoegd die om de 10 minuten gaat checken of er een commit is gebeurd op naar de main branch van mijn github repo. Als dit het geval is word de playbook uitgevoerd en dus de config uitgevoerd & installatie.
Reverse proxy
Mijn reverse proxy is Nginx Proxy Manager. Dit omdat ik origineel mijn Nginx proxy niet aan de praat kreeg. Nginx proxy manager is wel erg gebruiks vriendelijk wat heel erg handig is. Ik ben aan het bekijken of ik mijn reverse proxy ook intern kan gebruik. Dus dat ik naar mijn PVE02 host kan gaan door PVE02.sysadminnotes.be in te type inplaats van https://172.16.4.100:8006
te type wat toch wel een quality of life improvement is. Voor de rest is er maar een hand vol applicaties die ik geexposed heb via mijn reverse proxy:
- Actual
- Mealie
- Paperless
Voor vanaf mijn reverse proxy mijn containers te kunnen bereiken heb ik een apart reverse proxy netwerk aangemaakt en daar alle web servers van mijn services in toegevoegd. Misschien toch maar eens anders om doen.
Monitoring
Voor mijn monitoring zou ik gebruik willen gaan maken van Zabbix. Dit omdat het volgens mijn onderzoek toch de beste all in one monitoring is. Dit omdat ik er zowel mijn PVE, switchen, firewall, VM’s & containers mee wil monitoren. Het is echt wel een zeer uitgebreid programma en ik ga er wel een hele tijd mee bezig zijn voor dit volledig op te zetten naar wens. Dusver heb ik al het SMTP gedeelte kunnen configureren 😊. Een hele tijd ervoor heb ik PRTG gebruikt. Spijtig genoeg draait dit enkel op windows & kan je maximaal 100 sensors hebben. Omdat ik weiger een windows VM op te zetten, ben ik maar gestopt met PRTG.
overige Services
Voor de rest zijn er niet erg veel online services die ik gebruik voor mijn home lab.
SMTP2Go: Ik gebruik dit voor het versturen van e-mails in mijn home lab. Zoals mijn NAS die elke nacht een email stuurt over de status van mijn back up. Op PBS hebt ik dit nog niet werkende gekregen. Hier ben ik wel met bezig.
Microsoft 365: Hier heb ik een Office 365 basic subscription. Ik maak vooral gebruik van Outlook, OneDrive & SharePoint. De rest gebruikte ik ervoor ook maar ik begin steeds meer & meer services zelf te hosten. Zoals van planner naar vikunja & OneNote naar Obsidian. OneDrive naar Nextcloud durf ik tot nu toe niet omdat ik geen off site back up heb voor mijn VM’s. Ik host ook verschillende shared mailboxen via exchange online. Het is altijd leuk om te zeggen aan de kassa dat ze mij mails mogen sturen naar spam@ of nieuwsbrief@ 😂.
virtual machines (VM’s)
Voor mijn VM’s gebruik ik standaard Ubuntu server 20.04 LTS (EOL 4/25). Dus het wordt eens tijd voor te upgraden 😀. Ik configureer ook standaard automatic security updates. Nano is toch ook altijd handig want VI ligt me niet echt 100%. De Qemu agent is ook altijd aanwezig, zo kan ik bepaalde gegevens uitlezen vanuit mijn VM’s. Key based authentication ben ik ook terug opnieuw aan het implementeren. Vor mijn DNS gebruik ik momenteel pi-hole. Dit gebruik ik ook alleen maar als DNS niet voor het blocken van advertenties.
Mijn gebruikte VM’s zijn:
- Unifi (VM ID 102)
- YDH-Docker01 (VM ID 106)
- YDH-Docker02 (VM ID 107)
- PI-hole (VM ID 108)