Intussen zijn we bijna een maand verder nadat ik mijn thuisserver van een versie installatie voorzag. Werkt alles nog steeds zo goed? Wat heb ik intussen anders gedaan dan vroeger?
Tijd voor een kleine terugblik, en een beetje toelichting van het wat en het hoe.
Om met die eerste vraag te beginnen: ja, alles werkt prima. Het enige dingetje waar ik tegenaan liep, was (vermoed ik) een gevolg van mijn eigen keuze. Iets met netwerken en virtual machines.
Het netwerk
Bij de installatie van OpenSUSE krijg je de keuze tussen twee netwerkbeheerders: NetworkManager, die in steeds meer distro's de standaard is, en Wicked, een door SUSE zelf ontwikkeld systeem. Zo'n beetje elke how-to op het grote boze internet gaat ervan uit dat je NetworkManager draait (of het is een verouderde howto die nog over ifup
-scriptjes gaat, brrr), en uiteraard had ik bij installatie van de server de keuze gemaakt voor Wicked. Want waarom ook niet.
Dat leverde een beetje gedoe op toen ik met virtual machines aan de gang ging en die op het algemene netwerk wilde aansluiten - dat werkte niet. Er was niet echt uit te vogelen hoe dat zou moeten werken in Wicked, de documentatie was voor mijn kennisniveau net even te summier, en de keuze om dan maar om te schakelen naar NetworkManager was ook even Een Dingetje™. Uiteindelijk is het wel gelukt en heb ik wat VMs draaien, maar dan niet op een Bridge-netwerk zoals ik dat eerst had, maar via Macvtap. Uiteindelijk maakt dat in praktijk verder niet uit.
Virtual machines
Die draai ik dus! Ja! Voorheen bestond mijn homelab naast de server uit een Raspberry Pi 4 met Home Assistant erop, en daar dan weer een container met Zigbee2mqtt en met Adguard Home naast. Om te voorkomen dat de Pi meer SD-kaartjes zou verstoken dan strikt noodzakelijk, draaide de historie-database van Home Assistant al op de server, dus die harde afhankelijk was er al.
In de nieuwe situatie is dat een VM geworden, dus, met het officiële "Virtual Applicance"-image. Makkelijk met updates, redelijk rap, en dankzij de wonderen van USB passthrough werkt de Zigbee-stick ook gewoon - al lijkt het erop dat kexec daar misschien toch een beetje op blijft hinken. De tijd zal het leren.
VM nummer twee is de Unify Controller die ik al langer draaide, simpelweg een Debian Buster-setupje. Af en toe een update eroverheen, verder doet het niet zo heel veel.
De laatste aanwinst is een kleine Alpine Linux-VM (512MB RAM is genoeg voor iedereen) met AdGuard Home erop. Dat wilde ik los hebben van mijn Home Assistant-setup, zodat dat onafhankelijk van elkaar geupdate en waar nodig gereboot kon worden. Een kleine distro als Alpine beperkt dan de overhead nogal, en bovendien wilde ik altijd al eens met Alpine pielen.
Docker-containers
De docker-containers staan tegenwoordig allemaal vanaf SSD te stampen. Voorheen ging dat niet echt, aangezien de SSD 32GB groot was. Destijds leek dat genoeg en bovendien lagen de prijzen toen nog niet zo laag als nu. Met een nieuwe SSD in de desktop kwam er toevallig eentje vrij die met 120GB nog steeds niet gigantisch, maar wel een stuk werkbaarder is.
Goed, containers op de SSD dus. Dat levert twee merkbare voordelen: alles wat containers aanraakt (starten, stoppen, updaten) gaat een stuk sneller, en de server is ineens een stuk stiller. Voorheen stond er eigenlijk altijd wel iets op een harddisk te pingelen, en hoorde je dus de hele dag door, constant, wat zacht gepruttel uit de meterkast komen. No more.
Dat van die snelheid had ik wel verwacht, maar de stilte is een mooie bonus.
Verder draaien de meeste containers die ik voorheen had, ook nog wel, daar is niet zoveel in veranderd. De Plex-en-vriendjes-combinatie is nu wel allemaal in één docker-compose-file gepropt in plaats van allemaal losse bestanden, maar dat was het dan wel.
Er is wel een container bijgekomen voor Synapse, en ik draai nu mijn eigen homeserver op het Matrix-netwerk. Daar ga ik later nog wel eens op terugkomen. Naast Synapse draai ik nu ook een container met Collabora erin, zodat ik een volledige office-omgeving binnen mijn Nextcloud heb.
Ansible
Ik had in de vorige post al aangegeven dat ik het hele optuigen van de server nu met Ansible doe. Dat blijf ik ook nog steeds doen, uitbreidingen op web-hosting, file shares en dergelijke gaan allemaal via playbooks. De hele uitrol van Docker-containers nog niet, al wil ik dat er ook nog wel in gaan onderbrengen. De vraag is even of ik dan docker-compose blijf gebruiken, of dat ik alles als kale containers inricht. Het voordeel daarvan is dat ik makkelijker zou kunnen overschakelen naar een ander containerplatform, bijvoorbeeld Podman of LXC.
Intussen ben ik ook andere hosts in het netwerk aan het opnemen in de inventory - het uiteindelijke doel is dat zoveel mogelijk hosts straks geautomatiseerd bijgewerkt kunnen worden, dus ook de virtual machines, een eventueel rondslingerende Raspberry Pi, en zelfs de router. Er zullen misschien altijd wat handwerkjes overblijven, maar hoe minder, hoe beter.
Het werken met Ansibe voelt iets bewerkelijker dan direct op de host wroeten - ik moet een playbook samenstellen, de tasks uitzoeken, kijken of ik ergens een collection voor nodig heb en welke, en dan moet dat playbook nog even draaien ook. Aan de andere kant: dat vereist dus iets meer planning en nadenken vooraf (kan nooit verkeerd zijn), en de wijzigingen die ik maak, zijn meteen gedocumenteerd. Op langere termijn maakt het dus weinig uit of heb je er zelfs winst van.
Let's Encrypt
Eén van de dingen die nu nog niet helemaal is geautomatiseerd, is het aanvragen van Let's Encrypt-certificaten. Dat deed ik voorheen met Certbot en de Nginx-plugin (Certbot rommelt dan wat in je Nginx-configuratie voor de HTTP-controle. Niet ideaal als je diezelfde config vanuit Ansible wil laten komen en er dan op de host zelf ineens veranderingen in worden gemaakt.
Begin dit jaar ben ik met mijn domeinen overgestapt van MijnDomein naar TransIP. Die laatste biedt een API, waarmee ik met DNS-controle certificaten kan aanvragen. niet alleen laat dat mijn Nginx-configuratie met rust (jeej), het maakt het ook nog eens mogelijk om wildcard-certificaten aan te vragen (supper jeej). Ik hoef dus niet voor elke vhost die ik wil gebruiken een nieuw certificaat te laten genereren, wat tijd scheelt, de configuratie makkelijker maakt, en bovendien geen informatie meer lekt over de vhosts die ik allemaal gebruik.
Ik heb de eerste test-aanvraag met Acme.sh gedaan, aangezien die een plugin voor de TransIP DNS-API voorhanden had, en dat bevalt verder wel. Dat moet dus nog even in een playbook gegoten worden.
Kortom...
...ja, hij doet het nog. Er blijft nog genoeg te knutselen over, maar dat kan ik stukje bij beetje doen, omdat ik met veel meer vertrouwen een wijziging kan doorvoeren en er op een later moment weer bij terug kan komen en dan ook weet wat er gebeurd is en waarom. Missie nog steeds geslaagd, en tegelijk genoeg voedingsbodem voor nieuwe experimenten in de toekomst.