1. De noodzaak van eigen regie en de keuze voor Kubernetes
Techreuzen hebben tegenwoordig een enorme greep op onze data en privacy. Wanneer je diensten van grote cloudproviders gebruikt, is het vaak volstrekt onduidelijk waar je gegevens fysiek worden opgeslagen, onder welk juridisch regime ze vallen en wie er precies toegang toe heeft. Je geeft de controle volledig uit handen.
Om die regie terug te pakken, kun je gebruikmaken van Nextcloud. Dit is hét open-source alternatief waarmee je al je documenten, bestanden en communicatie in eigen hand houdt. Het grote voordeel: je kunt dit volledig op eigen hardware draaien, zodat je precies weet waar je data zich bevindt.
Waarom kies je in zo'n scenario specifiek voor Kubernetes in plaats van een simpel Docker-scriptje op één server? Omdat je al snel merkt dat een serieuze set aan componenten (bestandsopslaan, database, caching, beveiliging, monitoring) niet op één kwetsbaar punt moet leunen. Kubernetes zorgt voor automatisering op schaal: het verdeelt de belasting, herstelt zichzelf automatisch als er een onderdeel wegvalt (self-healing) en maakt het mogelijk om modulaire diensten strak van elkaar gescheiden te beheren zonder downtime.
2. Actieve Nextcloud Modules
In mijn setup draait Nextcloud niet als een geïsoleerde applicatie, maar is het gekoppeld aan verschillende gespecialiseerde modules om functionaliteit en veiligheid te waarborgen:
- Nextcloud Files (Core): Voor persoonlijke en gedeelde bestandsopslag met volledige controle over versiebeheer en synchronisatie.
- Nextcloud Talk + High Performance Backend (HPB): Voor veilige chat- en videovergaderingen, waarbij de HPB ervoor zorgt dat videostreams soepel en los van de webapplicatie worden verwerkt.
- Keycloak (IdP): Fungeert als centrale Identity Provider voor veilige authenticatie en toegangsbeheer (Single Sign-On).
- ClamAV: Draait op de achtergrond als automatische virusscanner voor alle geüploadde bestanden.
- Grafana, Loki & Uptime Kuma: Vormen samen de observability-stack om logs, metrics en de uptime continu te bewaken.
3. Architectuur en Infrastructuur
De onderliggende infrastructuur draait op een Proxmox-omgeving, waarin het Kubernetes-cluster (aangestuurd via Rancher) wordt gecombineerd met dedicated virtuele machines voor specifieke taken. Het inkomende internetverkeer passeert eerst een strikte firewall, waarna MetalLB en Traefik het verkeer veilig naar de juiste componenten binnen het cluster routeren.
4. Ontwerpkeuzes en motivatie
Bij het opzetten van deze omgeving zijn bewuste architectuurkeuzes gemaakt:
De database buiten het cluster
Hoewel Kubernetes flexibel is, heb ik ervoor gekozen om de MariaDB database op een dedicated virtuele machine te draaien in plaats van binnen het cluster. Dit maakt het beheer van stateful data een stuk betrouwbaarder. Op hypervisor-niveau (Proxmox) kan ik hierdoor eenvoudig snapshots en back-ups maken en terugzetten, volledig afgeschermd achter de firewall.
Geautomatiseerd beheer via GitOps
Er wordt niets handmatig geconfigureerd op de productiesystemen. De volledige configuratie is vastgelegd als code in een eigen Bitbucket-omgeving. ArgoCD leest deze repository uit en synchroniseert de werkelijke status van het cluster automatisch met de gewenste status. Dit garandeert reproduceerbaarheid en voorkomt menselijke fouten.
Veiligheid en netwerkbeheersing
Door gebruik te maken van Cert-Manager voor automatische SSL-certificaten, Traefik als Ingress-controller en een strikte scheiding van netwerkcomponenten, is de omgeving optimaal beveiligd tegen ongeautoriseerde toegang van buitenaf, zonder concessies te doen aan de performance.