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 van wat AI daarin wel en niet voor me deed.
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.
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: een NUC, een mini-pc of een refurbished zakelijke machine, welke generatie processor goed genoeg is, hoeveel RAM je nodig hebt voor dit aantal containers en waar je op moet letten 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.
Ik wist wat ik wilde, Claude gaf me de commando's en configs om het te doen, 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 in te richten dan op de Synology. Ik heb daarom niet alles één op één overgezet.
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.Wat AI hier wel en niet deed
Ik wil hier geen reclamepraatje van maken, dus even eerlijk.
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 tijdswinst zat niet in de snelheid per stap. Die zat in het wegvallen van de drempel "hoe voer ik dit uit". Zonder AI had ik maanden kunnen studeren voordat ik ook maar één container goed had draaien. Nu was ik vanaf dag één aan het bouwen en na twee weken avondwerk was ik 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.
Wat me het meest bijblijft: ik begrijp wat er draait. Ik kan een nieuwe container opzetten zonder het te hoeven vragen, ik herken foutmeldingen en weet waar ik moet kijken. Ik had niet verwacht dat ik na twee weken avondwerk zelf een compose-file zou kunnen lezen. Toch is dat wat er gebeurde.
Vragen over de stack of een onderdeel ervan? Stuur me een bericht via het contactformulier.