Van trage NAS naar volwaardige homelab-server - met AI als hulpmiddel
Intro
Op dit moment draaien er zo'n vijftig containers op een compacte mini-pc in mijn meterkast. Mijn NAS en server voelen als één systeem dankzij NFS-mounts. Alles is bereikbaar via nette domeinnamen, zowel intern (*.lan) als extern (*.sanderveldscholten.nl). Mijn laptop thuis doet AI-taken voor de server. Home Assistant praat via een USB-dongle in de server en schakelt de lampen.
Een jaar geleden wist ik net hoe ik moest SSH'en en een bestand openen in nano.
Dit is het verhaal van die migratie, en hoe AI hielp om het gat te overbruggen tussen wat ik wilde bouwen en wat ik zelf kon uitvoeren.
Niet zo technisch? Klik hier voor de simpele uitleg
Dit is de korte versie in gewone taal.
1. Het probleem
Ik had een netwerkschijf (NAS) waarop ik ook allerlei programma's liet draaien. Maar een NAS is eigenlijk bedoeld voor opslag, niet voor het draaien van tientallen apps tegelijk. Het werd traag en liep tegen grenzen aan.
2. De oplossing
Ik kocht een compacte mini-pc (de HP EliteDesk) die wél geschikt is als server. De NAS doet nu alleen nog opslag. De mini-pc draait alles.
3. Het probleem met de oplossing
Op zo'n server draait Linux. Ik kende Linux nauwelijks. Alles zelf uitzoeken zou maanden kosten.
4. Wat AI deed
AI hielp me bij elke stap: welke hardware te kopen, hoe Linux in te richten, hoe ik mijn apps kon overzetten. In plaats van uren zoeken op internet kreeg ik direct werkende oplossingen, en als iets fout ging, debugden we het samen.
5. Het resultaat
Een thuis-server die ik volledig begrijp en zelf kan beheren, omdat ik al doende heb geleerd. Niet ondanks AI, maar dankzij AI.
TL;DR: Ik migreerde van een Synology DS918+ naar een HP EliteDesk 800 G5 Mini met Debian Linux. Ruim vijftig Docker-containers, NFS-mounts naar de NAS, Nginx Proxy Manager met wildcard DNS, Tailscale voor toegang vanaf overal en Home Assistant met USB ZHA-dongle. Mijn Linux-kennis bij aanvang: SSH, ls, cd, nano. De rest leerde ik al doende, met hulp van Claude.
De aanleiding
Mijn Synology DS918+ was jarenlang mijn thuisbasis. Opslag, backups, en langzaam ook steeds meer Docker-containers: Plex, Home Assistant, een arr-stack, immich. Het werkte, maar steeds minder goed.
Het probleem is structureel: een NAS draait een Linux-versie waar Synology bewust beperkingen in heeft aangebracht. Dingen die op een gewone Linux-server vanzelfsprekend zijn, zoals kernel-modules, USB-passthrough, NFS-exports en serieuze netwerkconfiguratie, zijn op een Synology omslachtig of onmogelijk. En naarmate je meer containers draait, merkt het systeem dat het eigenlijk bedoeld is voor opslag, niet voor compute.
Op een gegeven moment was de keuze duidelijk: óf accepteren wat de NAS kan, óf een echte server neerzetten en de NAS terugbrengen naar waar hij goed in is. Mag je raden wat ik ging doen.
De hardware kiezen
Ik wist dat ik een kleine, stille machine wilde die weinig stroom verbruikt maar genoeg kracht heeft voor tientallen containers.
Samen met Claude heb ik de opties doorgenomen. Wat zijn de afwegingen tussen een NUC, een mini-pc en een refurbished zakelijke machine? Welke generatie processor is goed genoeg? Hoeveel RAM voor dit aantal containers? Wat zijn de valkuilen bij tweedehands zakelijke hardware?
Dat gesprek leidde tot de HP EliteDesk 800 G5 Mini via V&A op tweakers.net: een refurbished zakelijke mini-pc, stil, zuinig, uitbreidbaar en met voldoende kracht voor alles wat ik wilde draaien. Hij past in één hand.
Linux installeren
Mijn Linux-kennis bij aanvang was eerlijk gezegd bescheiden. Ik SSH'te af en toe in mijn webserver bij KimSufi: ls, cd, iets aanpassen in nano. Dat was het wel zo'n beetje.
Debian installeren op de EliteDesk, de basisinrichting doen, Docker Compose opzetten, gebruikers en rechten goed instellen, NFS-mounts configureren: dat is allemaal goed uitvoerbaar als je weet wat je doet. Ik wist dat het moest en kon, maar hoe zou me veel tijd kosten.
Wat AI hier deed was de brug slaan tussen het conceptuele en het uitvoerbare. Ik begreep wat ik wilde; Claude gaf me de exacte commando's en configs om het te doen. Niet als blinde copy-paste, maar met uitleg erbij zodat ik begreep wat er gebeurde. Na de vijfde container begon ik de patronen te herkennen en configs zelf aan te passen.
De migratie
Container voor container, compose-file voor compose-file. Elke service had zijn eigen kleine uitdagingen: volumes goed mappen, environment variables overzetten, netwerken koppelen, poorten vrijmaken.
Het verrassendste moment was Home Assistant. Ik had verwacht dat de combinatie van een USB ZHA-dongle (SkyConnect), device passthrough in Docker en het overzetten van een bestaande configuratie een dagklus zou zijn. Het was het niet. USB passthrough in een Docker Compose-file bleek een kwestie van één regel, en de HA-configuratie die op de NAS stond was direct bruikbaar op de nieuwe server. Alles, lampen, schakelaars en automatiseringen, werkte meteen.
Naarmate de migratie vorderde merkte ik dat ik steeds minder hoefde te vragen. Ik herkende de structuur van een compose-file, wist welke dingen ik moest aanpassen en ging zelf aan de slag. AI werd minder een instructeur en meer een klankbord en een assistent die de code voor me snel kon schrijven.
De architectuur
De migratie was ook een kans om dingen beter te doen dan ze op de Synology waren. Niet alles overgooien, maar bewust nadenken over de inrichting.
NAS als pure opslag
De DS918+ doet nu alleen nog wat hij goed kan: opslag. Alle media, Docker-volumes en projectbestanden staan op de NAS, gemount via NFS op de EliteDesk. Voor containers zijn de mappen gewoon beschikbaar alsof ze lokaal zijn. De twee machines voelen als één systeem.
Nginx Proxy Manager + wildcard DNS
Dit is waar ik het meest trots op ben. Nginx Proxy Manager als centrale reverse proxy, gecombineerd met AdGuard Home voor lokale DNS. Elke container krijgt een nette domeinnaam: plex.lan, immich.lan, git.lan. Geen poortnummers onthouden, geen uitzonderingen.
Diezelfde setup werkt ook naar buiten: via *.sanderveldscholten.nl zijn een aantal diensten bereikbaar vanaf internet, met SSL via Let's Encrypt. Nextcloud draait zo bijvoorbeeld gewoon op een eigen subdomein.
Tailscale
De EliteDesk is een Tailscale-exitnode en subnet-router voor mijn thuisnetwerk. Waar ik ook ben, ik kom via Tailscale op mijn thuis-omgeving alsof ik er zit. Mijn laptop met RTX 4070 doet AI-taken voor services op de server. Immich gebruikt de GPU van de laptop voor machine learning terwijl de container zelf op de EliteDesk draait.
Homepage, Forgejo, Uptime Kuma en thuiswiki
Homepage geeft me één overzicht van alles wat draait, met statussen en snelkoppelingen. Forgejo is mijn eigen git-server voor persoonlijke projecten, van mij geen GitHub voor privécode. Uptime Kuma houdt bij of alles bereikbaar is en stuurt een melding op Telegram als dat niet zo is. En DokuWiki draait als thuiswiki: recepten, handleidingen en aantekeningen, alleen bereikbaar binnen het thuisnetwerk.
wiki.lan.De rol van AI: eerlijk verhaal
Net als bij andere projecten wil ik hier geen marketingverhaal van maken. Wat deed AI hier nou echt?
Wat AI goed deed
- Architectuur meedenken. Van "ik wil een server" naar een concrete inrichting met afgewogen keuzes: welke hardware, hoe NFS opzetten, hoe DNS en proxy samenwerken.
- Scripts en configs leveren. In plaats van uren zoeken op Stack Overflow kreeg ik direct werkende compose-files en bash-commando's. Ik leer al doende; dat ging hier heel snel.
- Foutmeldingen debuggen. Ik gooide foutmeldingen in de chat en we kwamen samen tot oplossingen. Dat scheelt enorm veel tijd en frustratie.
- Geduldig uitleggen. Dezelfde vraag op drie manieren stellen werkt prima. Geen Stack Overflow-commentaar dat je de documentatie had moeten lezen.
Wat AI niet deed
- Foutloos werken. Claude draait soms vast in een oplossingsrichting die niet werkt. Een welgemikte extra opmerking, "je maakt iets simpels nu wel héél complex, kan het niet aan # liggen?", haalt hem daar meestal uit.
- De beslissingen nemen. Welke services ik wilde draaien, hoe ik mijn netwerk wilde inrichten en wat ik belangrijk vond: dat bleef mensenwerk.
- Het idee bedenken. "Ik wil een eigen server" is geen AI-idee.
De echte tijdswinst: niet dat elke stap razendsnel ging, maar dat de drempel van "hoe voer ik dit precies uit" wegviel. Zonder AI had ik maanden kunnen studeren voordat ik ook maar één container goed had draaien. Nu was ik aan het bouwen vanaf dag één, en leerde ik door te doen. En was ik in twee weken in de avonden vrijwel klaar.
Resultaat
Op de EliteDesk draaien nu ongeveer vijftig containers: media, foto's, muziek, recepten, boeken, home automation, AI, git, monitoring, backups en eigen projecten zoals de sprookjesspeler en de leesapp voor mijn zoontje. De NAS staat er (letterlijk) stil naast en levert opslag. Tailscale verbindt alles, ook onderweg. NPM maakt alles bereikbaar met een nette naam.
Maar het resultaat dat me het meest bijblijft is iets anders: ik begrijp wat er draait. Ik kan een nieuwe container opzetten zonder te hoeven vragen. Ik herken foutmeldingen en weet waar ik moet kijken. De migratie was geen eindpunt maar een beginpunt.
Dat is wat er gebeurt als AI niet het werk voor je doet, maar je helpt het te leren terwijl je bouwt.
Vragen / feedback
Als je vragen hebt over de aanpak, de stack of een specifiek onderdeel, stel ze dan via mijn contactformulier en ik neem contact met je op.