Docker laat je een homelab gebruiken als een herhaalbaar applicatieplatform door elke service, poort, netwerk en pad voor persistente data te definiëren vóór de uitrol.
Op een NAS of thuisserver betekent dit dat je DNS-filtering, monitoring, media, bestandsynchronisatie, dashboards en andere zelf-gehoste apps kunt draaien zonder elke afhankelijkheid direct op de host te installeren. Het praktische doel is niet alleen om een container één keer te starten. Het is om een stack te bouwen die herstarts overleeft, zijn data behoudt tijdens updates, alleen bereikbaar blijft waar bedoeld, en kan worden hersteld als er iets misgaat.
Wat Docker doet in een homelab
Docker verpakt een applicatie en zijn runtime-afhankelijkheden in een image, en start die image vervolgens als een container. De host levert nog steeds de CPU, het geheugen, opslag en netwerk, maar elke service krijgt een gedefinieerde omgeving die makkelijker te reproduceren is dan een lange lijst handmatige installatie-stappen.
Vijf concepten verklaren het grootste deel van de Docker-configuratie die je in een homelab zult gebruiken:
| Docker concept | Wat het betekent | Waarom het thuis belangrijk is |
|---|---|---|
| Image | De verpakte template die wordt gebruikt om een service te creëren | Je kunt dezelfde applicatieversie opnieuw downloaden na een rebuild |
| Container | Een draaiende instantie van een image | Je kunt de app stoppen, vervangen of opnieuw aanmaken zonder de host opnieuw te installeren |
| Poort | De host- en container-eindpunten die worden gebruikt om een service te bereiken | Je bepaalt of een app lokaal, binnen het LAN of op afstand beschikbaar is |
| Volume of bind mount | Opslag buiten de wegwerpbare containerlaag gehouden | Configuraties, databases en accountgegevens overleven updates |
| Netwerk | Een communicatiegrens voor gerelateerde containers | Apps kunnen elkaar bereiken via servicenaam zonder elke poort te publiceren |
Een container moet als vervangbaar worden beschouwd. Je Compose-bestand, omgevingsinstellingen en persistente data zijn de onderdelen die de service herstelbaar maken.
Wat je nodig hebt voordat je Docker installeert

Begin met beslissen waar Docker zal draaien. Een NAS-besturingssysteem kan een visuele app-manager bieden, terwijl een standaard Linux thuisserver meestal Docker Engine en de Compose-plugin via de opdrachtregel gebruikt. Een virtuele machine kan ook werken als je Docker gescheiden wilt houden van de basis-hypervisor.
| Hosttype | Aanbevolen werkwijze | Belangrijkste om te verifiëren |
|---|---|---|
| NAS met een Docker app-manager | Gebruik de GUI, maar documenteer poorten, mounts en omgevingswaarden | Je kunt de app-gegevens buiten de container lokaliseren en back-uppen |
| Linux thuisserver | Docker Engine plus Docker Compose | De Docker-service start automatisch na een herstart |
| Virtuele machine | Installeer Docker binnen een speciale Linux VM | De VM heeft stabiele opslag, netwerk en voldoende gereserveerd geheugen |
- Bevestig of de host amd64 of arm64 gebruikt zodat je compatibele images kiest.
- Reserveer een stabiel LAN-adres via DHCP-reservering of een statisch IP-adres.
- Maak één persistente locatie voor containerconfiguraties en databases, gescheiden van grote mediashares.
- Kies ofwel Compose-projecten of een visuele manager als primaire workflow in plaats van ongedocumenteerde methoden te mengen.
- Bepaal welke services alleen binnen het LAN blijven en welke mogelijk later externe toegang nodig hebben.
- Kies een tweede opslaglocatie voor back-ups van Compose-bestanden en persistente data.
Wanneer de host zelf nog wordt gepland, kan de gids op hoe je een thuisserver bouwt en instelt helpen om de opslag, het netwerk en het besturingssysteemfundament vast te leggen voordat Docker wordt toegevoegd.
Installeer Docker en Verifieer de Host
De installatiemethode hangt af van het besturingssysteem, maar de validatiereeks moet consistent blijven. Sommige NAS-platforms bundelen Docker achter een app-interface. Een Linux-host vereist normaal gesproken Docker Engine en de Compose-plugin, terwijl Windows en macOS beter geschikt zijn om te leren of testen dan voor een permanent draaiende NAS-service.
Een beginnersvriendelijke Docker homelab setup toont de nuttige volgorde van het installeren van Docker, het draaien van een eerste container, het organiseren van projectmappen en het verplaatsen van herhaalbare services naar Compose. Gebruik die volgorde als kader en volg vervolgens de installatie methode die vereist is door je eigen NAS of Linux-distributie.
Controleer Docker en Compose
Open na de installatie een terminal op de host en bevestig dat zowel Docker als Compose reageren:
docker --version
docker compose version
Als een van beide commando's ontbreekt, stop dan hier en repareer de installatie voordat je applicatiemap maakt. Bevestig op Linux ook dat de Docker-service automatisch start en dat het account dat voor beheer wordt gebruikt beschermd is. Toegang tot de Docker-daemon is feitelijk administratieve toegang tot de host.
Start een Wegwerp-Validatiecontainer
Gebruik een tijdelijke container om te bevestigen dat de daemon een afbeelding kan downloaden en starten:
docker run --rm hello-world
Een succesvol resultaat bevestigt het basispad van de commandoregelclient naar de Docker-daemon en afbeeldingsregister. De --rm optie verwijdert deze testcontainer nadat deze is gestopt, zodat deze geen onderdeel wordt van je permanente stack.
Bevestig de Basis Admin-commando's
docker ps
docker ps -a
docker images
docker ps toont actieve containers, docker ps -a bevat gestopte containers, en docker images toont afbeeldingen die op de host zijn opgeslagen. Deze drie weergaven zijn vaak voldoende om te bepalen of een probleem wordt veroorzaakt door een container die is gestopt, een afbeelding die nooit is gedownload, of een service die nooit is aangemaakt.
Implementeer je eerste Docker Compose-stack

Eenmalig docker run commando’s zijn handig voor tests, maar Compose is makkelijker te herhalen, te bekijken, te back-uppen en te migreren. Elk project krijgt zijn eigen map en een compose.yaml bestand dat de image, poorten, opslag, herstartgedrag en netwerk vastlegt.
Maak een projectmap aan
Het volgende voorbeeld maakt een kleine Nginx startpagina. Het is bewust eenvoudig, maar test dezelfde workflow die je zult gebruiken voor een dashboard, mediaserver, monitoringtool of persoonlijke cloud:
mkdir -p ~/docker/start-page/site
cd ~/docker/start-page
printf '<h1>Docker homelab is running</h1>\n' > site/index.html
Elke service in een aparte map houden maakt het makkelijker om het Compose-bestand, de omgevingswaarden en persistente data te identificeren. Een grotere NAS kan een pad gebruiken zoals /docker/start-page of een speciale gedeelde map in plaats van de home-directory.
Maak het Compose-bestand
Maak een bestand met de naam compose.yaml in de projectmap:
services:
start-pagina:
image: nginx:alpine
container_naam: homelab-start-pagina
poorten:
- "8080:80"
volumes:
- ./site:/usr/share/nginx/html:ro
restart: unless-stopped
netwerken:
- homelab
netwerken:
homelab:
driver: bridge
De poortmapping stuurt verzoeken van poort 8080 op de NAS naar poort 80 binnen de container. De bind mount maakt de lokale site map beschikbaar binnen Nginx als alleen-lezen inhoud. Het herstartbeleid brengt de service terug na een normale herstart, tenzij je deze bewust hebt gestopt.
Dit voorbeeld publiceert poort 8080 op de host. Houd routerpoortforwarding uitgeschakeld tijdens het testen. Wanneer de service alleen bereikbaar moet zijn vanaf de Docker-host zelf, bind deze dan aan loopback met 127.0.0.1:8080:80 in plaats daarvan.
Start en verifieer de service
docker compose up -d
docker compose ps
docker compose logs --tail=100
Open http://NAS-IP:8080 vanaf een apparaat op hetzelfde netwerk. De pagina moet “Docker homelab is running.” tonen. Herstart daarna de host één keer en bevestig dat de container automatisch terugkeert.
De commando’s die je het vaakst zult gebruiken zijn:
| Taak | Commando |
|---|---|
| Maak aan of pas wijzigingen toe | docker compose up -d |
| Controleer servicestatus | docker compose ps |
| Volg logs | docker compose logs -f |
| Herstart de stack | docker compose restart |
| Stop en verwijder containers | docker compose down |
| Download nieuwere images | docker compose pull |
Voorkom het toevoegen van -v naar docker compose down tenzij je bewust Compose-beheerde volumes wilt verwijderen. Het verwijderen van de container is routine; het verwijderen van persistente data niet.
Als het besturingssysteem van je NAS een visuele Docker-appmanager biedt, blijven dezelfde velden belangrijk. De interface moet de image, hostpoorten, containerpoorten, gemonteerde paden, omgevingsvariabelen en herstartgedrag zichtbaar maken. Deze NAS-besturingssysteem workflow is handig als je een GUI verkiest maar toch voorspelbare app-paden wilt.
Bewaar Docker-gegevens veilig op een NAS
Containers zijn wegwerpbaar, maar servicegegevens niet. De meeste homelab-fouten na een update komen door een database, accountbestand of applicatieconfiguratie die alleen binnen de containerlaag was opgeslagen. Het opnieuw aanmaken van die container levert dan een schone installatie op in plaats van het herstellen van de originele service.
Een bind mount koppelt een bekend hostbestand of -map aan een container. Een volume wordt door Docker beheerd binnen zijn opslaggebied. Beide kunnen gegevens behouden, maar ze verschillen in zichtbaarheid en back-upworkflow.
| Opslagmethode | Beste keuze op een NAS | Waarom het werkt | Veelvoorkomende fout |
|---|---|---|---|
| Bind mount | Configuraties, uploads en app-gegevens die je zichtbaar wilt hebben in NAS-mappen | Gemakkelijk te inspecteren en op te nemen in normale NAS-back-ups | Een verkeerd pad of hostmachtiging voorkomt dat de app start |
| Genoemd volume | Databases en interne servicestatus | Minder hardcoded hostpaden en schonere Compose-portabiliteit | Het volume kan worden gemist door een back-up op bestandsniveau |
Scheid applicatiegegevens van bulkmedia
Bewaar configuraties, databases, miniaturen, indexen en andere kleine-bestandbelastingen op een aparte docker-data locatie die regelmatig wordt geback-upt. Grote films, foto’s, opnames en downloads kunnen op normale mediashares blijven staan. Deze scheiding maakt de back-upomvang duidelijker en kan voorkomen dat applicatiemetagegevens concurreren met grote sequentiële opslagbelastingen.
Voordat je een echte applicatie uitrolt, noteer je elk hostpad dat in het Compose-bestand wordt gebruikt. Een eenvoudige indeling kan er zo uitzien:
/docker
/app-naam
compose.yaml
.env
/config
/data
Back-up van wat de service recreëert
Back-up van het Compose-bestand, en elk .env bestand, certificaten, aangepaste configuratie en de persistente containergegevens. Afbeeldingen hoeven normaal gesproken niet te worden geback-upt omdat ze opnieuw kunnen worden gedownload. Bescherm omgevingsbestanden zorgvuldig omdat ze wachtwoorden, tokens of databasegegevens kunnen bevatten.
De 3-2-1 back-upregel biedt een nuttig planningsmodel, maar een Docker-back-up is pas compleet als je de stack kunt recreëren en de gegevens kunt herstellen. Test één niet-kritieke herstelactie voordat je homelab afhankelijk wordt van de dienst.
Wanneer je een visuele NAS-interface gebruikt, controleer dan waar de persistente containergegevens worden opgeslagen in plaats van ervan uit te gaan dat de interface deze automatisch beschermt.
Hoe Docker-netwerken werken in een homelab
Docker-netwerken beheersen twee verschillende paden: communicatie tussen containers en toegang vanaf apparaten buiten Docker. Het gescheiden houden van die paden vermindert onnodige poortpublicatie en maakt multi-service stacks makkelijker te begrijpen.
Lees poorttoewijzingen van links naar rechts
In 8080:80, poort 8080 behoort tot de Docker-host en poort 80 behoort tot de container. Apparaten op het LAN verbinden met het NAS-adres en de hostpoort. Docker stuurt het verzoek dan door naar de interne poort van de applicatie.
Publiceer alleen een hostpoort wanneer een browser, telefoon, tv of een ander niet-Docker-apparaat directe toegang nodig heeft. Een database die alleen door een andere container wordt gebruikt, hoeft meestal geen gepubliceerde poort te hebben.
Gebruik aangepaste netwerken voor gerelateerde diensten
Compose kan een door de gebruiker gedefinieerd bridgenetwerk maken voor elke stack. Containers op dat netwerk kunnen elkaar bereiken via servicenaam, wat betekent dat een webapplicatie verbinding kan maken met een dienst genaamd database zonder te vertrouwen op een veranderend container-IP-adres.
Een praktisch voorbeeld van aangepaste Docker-netwerken en containerisolatie laat zien hoe naamresolutie en connectiviteit veranderen wanneer containers op aparte bridgenetwerken worden geplaatst of met meer dan één netwerk verbonden zijn.
Groeperen diensten die echt met elkaar moeten communiceren. Houd niet-gerelateerde stacks op aparte netwerken en publiceer geen interne database, cache of message queue alleen om de containers elkaar te laten zien.
Houd LAN-toegang gescheiden van internettoegang
Een dienst bereikbaar op NAS-IP:8080 op je thuisnetwerk is niet automatisch beschikbaar vanaf het internet. Publieke blootstelling vereist normaal gesproken een router forwarding-regel, een tunnel, een VPN of een ander pad voor externe toegang. Behandel die extra stap als een aparte beveiligingsbeslissing in plaats van onderdeel van elke implementatie.
Stel Docker-diensten veilig bloot

Externe toegang is waar een handig homelab een echt beveiligingsrisico kan worden. De veiligere standaard is om applicatie-interfaces privé te houden op het LAN en alleen een gecontroleerde toegangslayer bloot te stellen wanneer externe toegang nodig is.
Gebruik een VPN voor privé externe toegang
Een privé-VPN of overlay-netwerk stelt goedgekeurde apparaten in staat om thuisdiensten te bereiken zonder elke applicatie direct te publiceren. Dit is vaak de eenvoudigste route voor persoonlijke dashboards, beheerderspanelen, bestands toegang en diensten die slechts door een paar vertrouwde personen worden gebruikt. De gids voor veilige externe toegang behandelt de bredere beslissing voor thuisservers tussen VPN-gebaseerde toegang en publieke webblootstelling.
Gebruik een reverse proxy als het publieke toegangspunt
Als een webservice publiek moet zijn, biedt een reverse proxy één plek voor hostnamen, certificaten, routeringsregels en toegangscontrole. Stel de proxy bloot in plaats van een aparte routerpoort naar elke applicatie door te sturen. Houd databases, admin interfaces en interne servicepoorten zoveel mogelijk op private Docker-netwerken.
Gebruik HTTPS en weloverwogen poortregels
Elke login of sessie die buiten het thuisnetwerk bereikbaar is, moet HTTPS gebruiken. Controleer router forwarding regels regelmatig en verwijder niet meer benodigde entries. Certificaatautomatisering helpt, maar vervangt geen sterke authenticatie, tijdige updates of zorgvuldige controle over welke services publiek zijn.
Update, monitor en herstel de stack
Een Docker homelab blijft beheersbaar als onderhoud een herhaalbare volgorde volgt. Update niet blindelings alle services tegelijk. Begin met een back-up, update één stack, en verifieer de belangrijke paden voordat je naar de volgende applicatie gaat.
Gebruik een gecontroleerde updatevolgorde
cd ~/docker/start-page
docker compose pull
docker compose up -d
docker compose ps
docker compose logs --tail=100
Noteer voor een belangrijke service de werkende image-tag vóór een update zodat je een rollback-referentie hebt. Test na heruitrol de login, gemonteerde opslag, databaseverbinding, LAN-toegang en eventuele reverse-proxy routes. Een “Up” containerstatus bewijst alleen dat het proces draait; het bewijst niet dat de applicatie gezond is.
Let op de signalen die stilletjes veranderen
- Gebruik van systeemschijf door oude images, schrijfbare lagen, logs en achtergelaten data.
- Aantal container herstarts en herhaalde fouten in applicatielogs.
- Onverwachte router forwards of hostpoorten die niet langer nodig zijn.
- Leeftijd van de back-up, grootte van de back-up en of het nieuwste archief geopend kan worden.
- Geheugendruk wanneer extra services worden toegevoegd aan een kleine NAS.
Gebruik opruimcommando’s alleen na het controleren wat ze verwijderen. Ongebruikte images nemen ruimte in, maar agressief opruimen kan ook gecachte lagen of ongebruikte volumes verwijderen die nog belangrijk zijn voor een herstelplan.
Oefen één herstel
Kies een niet-kritieke service, stop deze, verplaats de persistente data, en bouw deze opnieuw op vanuit het Compose-bestand. Herstel daarna de data en bevestig dat accounts, instellingen en de applicatiestatus terugkeren. Een succesvolle herstel is sterker bewijs dan een geslaagde back-up taak.
Veelvoorkomende Docker Homelab Problemen en Oplossingen
| Symptoom | Controleer eerst | Waarschijnlijke oorzaak |
|---|---|---|
| De browser kan de app niet bereiken |
docker compose ps, poorttoewijzing, hostfirewall en NAS IP |
Bevestig dat de container draait en dat de hostpoort niet geblokkeerd of al in gebruik is |
| De container blijft opnieuw opstarten | docker compose logs --tail=100 |
Zoek naar ontbrekende omgevingswaarden, verkeerde paden, databasefouten of permissiefouten |
| Toegang geweigerd op een aangekoppelde map | Host-eigendom, UID/GID en alleen-lezen vlaggen | Stem de applicatiegebruiker af op de directorypermissies in plaats van brede toegang te verlenen |
| Poort is al toegewezen | Andere containers en hostprocessen die die poort gebruiken | Kies een andere hostpoort of stop de conflicterende dienst |
| De image start niet | CPU-architectuur en ondersteuning voor imageplatform | Gebruik een image die de juiste amd64- of arm64-build publiceert |
| Data verdwenen na een update | Volume- en bind-mountdefinities | Herstel de persistente data en verplaats toekomstige status buiten de containerlaag |
| Twee containers kunnen niet communiceren | De netwerken die aan beide diensten zijn gekoppeld | Plaats gerelateerde diensten op hetzelfde gebruikersgedefinieerde netwerk en verbind via servicenaam |
| De NAS-systeemschijf raakt vol | Afbeeldingen, logs, caches en ongebruikte volumes | Identificeer de bron voordat je opruimt en verplaats persistente workloads naar het geplande datapad |
Kies de volgende container voor je homelab
Nadat de eerste Compose-stack een herstart en een kleine update overleeft, voeg je één dienst toe die een echte huishoudelijke behoefte oplost. Elke categorie introduceert een andere operationele les:
| Doel | Dienstcategorie | Wat het leert |
|---|---|---|
| Bekijk of diensten beschikbaar zijn | Uptime monitoring | Gezondheidscontroles, meldingen en persistente configuratie |
| Verminder ongewenste domeinen in het netwerk | DNS-gebaseerde filtering | Stabiele IP-planning, DNS-betrouwbaarheid en alleen LAN-beheer |
| Stream een lokale mediatheek | Mediaserver | Grote bind mounts, permissies, metadata-opslag en hardwarelimieten |
| Bestanden synchroniseren tussen apparaten | Persoonlijke cloud of peer-to-peer synchronisatie | Database persistentie, externe toegang en herstelplanning |
Een DNS-niveau filter is handig wanneer het hele huishouden profiteert van één netwerkdienst. Voor opslagworkflows toont privésynchronisatie van bestanden aan waarom configuraties en databases buiten de wegwerpcontainerlaag moeten blijven. Een Plex mediaserver voegt mediatoestemmingen, metadata-opslag en mogelijke transcodingvereisten toe.
Voeg niet meerdere kritieke diensten tegelijk toe. Een kleine stack met gedocumenteerde paden, beperkte blootstelling en een geteste back-up is nuttiger dan een druk dashboard dat niemand betrouwbaar kan herbouwen.
Veelgestelde vragen
Kan ik Docker gebruiken op een ARM-gebaseerde NAS?
Vaak wel. De image moet een build publiceren voor de NAS-architectuur. Controleer het platform dat door de image wordt aangeboden vóór implementatie, vooral bij kleinere projecten die mogelijk amd64 ondersteunen maar niet arm64. Een architectuurmismatch kan voorkomen dat de container start, zelfs als het Compose-bestand verder correct is.
Hoeveel RAM heeft een Docker homelab nodig?
Er is geen universeel getal omdat een DNS-filter, mediaserver, database en AI-dienst heel verschillende geheugengebruikprofielen hebben. Maak een lijst van de diensten die je wilt draaien, begin met een kleine stack, meet het piekgebruik over meerdere dagen en houd ruimte over voor het besturingssysteem, bestandssysteemcache, updates en tijdelijke pieken.
Heb ik Docker Compose nodig als mijn NAS een GUI heeft?
Nee. Een goed ontworpen GUI kan een eenvoudig homelab beheren, vooral als het elk pad, poort, variabele en herstartinstelling blootlegt. Compose wordt waardevoller wanneer je versiebeheer van configuraties wilt, eenvoudigere migratie, herhaalbaar herstel of meerdere gerelateerde diensten in één stack.
Moet elke container zijn eigen netwerk hebben?
Niet per se. Creëer netwerken rond applicatiegrenzen in plaats van één netwerk toe te wijzen aan elke individuele container. Een webapp en de database kunnen één privé-netwerk delen, terwijl een niet-gerelateerde mediaserver een ander gebruikt. Publiceer alleen de poorten die niet-Docker apparaten nodig hebben.
Wat is de veiligste manier om op afstand toegang te krijgen tot Docker-diensten?
Voor persoonlijk gebruik kan een persoonlijke VPN die je thuis draait de noodzaak verminderen om meerdere applicatiepoorten publiekelijk bloot te stellen. Publieke diensten hebben meestal een reverse proxy, HTTPS, sterke authenticatie, tijdige updates en een weloverwogen beslissing nodig over wat privé blijft.
Hoe weet ik of een Docker-back-up compleet is?
Je moet in staat zijn om de containers uit het Compose-bestand opnieuw te maken en de applicatiestatus te herstellen vanuit de opgeslagen persistente data. Een back-up die alleen afbeeldingen bevat of een Compose-bestand zonder de database- en configuratiemap is voor de meeste stateful diensten niet voldoende.
Bouw een Homelab dat je kunt recreëren
Leren hoe je Docker in een homelab gebruikt gaat minder over het verzamelen van containers en meer over het herhaalbaar maken van elke dienst. Verifieer eerst Docker, houd één Compose-project per applicatie aan, sla de status buiten de container op, publiceer alleen noodzakelijke poorten en test een herstel voordat de dienst belangrijk wordt.
Zodra de eerste stack een herstart, een update en een hersteltest overleeft, voeg je de volgende applicatie toe met dezelfde discipline. Die volgorde verandert een NAS van een plek waar containers toevallig draaien in een thuisserver die je kunt begrijpen, onderhouden en herbouwen.
Zima Campagnecentrum
Meer om te lezen

Hoe Rez Tech zijn eigen persoonlijke cloud bouwt met ZimaBoard 2
Rez Tech bouwt een persoonlijke cloud met ZimaBoard 2, twee lokale schijven, RAID 1 en ZimaOS en test vervolgens bestandstoegang, 4K HDR-media en een...
Silicon Steak verkleint zijn homelab met ZimaBoard 2
Silicon Steak onderzoekt of ZimaBoard 2 een veel grotere homelabmachine kan vervangen door opslag, media afspelen, Minecraft, Pi-hole, zelfgehoste apps en ZimaOS-beheer te testen.

Hoe Smart Life een privécloud bouwt met ZimaBoard 2
Smart Life maakt van ZimaBoard 2 een thuisbestemming voor foto’s en video’s op je telefoon, met aandacht voor de hardware-opbouw, de opslagconfiguratie van ZimaOS,...


