Hoe Docker te gebruiken in een Homelab op een NAS of Home Server

Eva Wong is de Technisch Schrijver en en vaste knutselaar bij ZimaSpace. Een levenslange geek met een passie voor homelabs en open-source software, zij is gespecialiseerd in het vertalen van complexe technische concepten naar toegankelijke, praktische handleidingen. Eva gelooft dat zelf-hosting leuk moet zijn, niet intimiderend. Met haar tutorials stelt ze de community in staat om hardware-setup te ontrafelen, van het bouwen van hun eerste NAS tot het beheersen van Docker-containers.

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

Docker homelab voorbereidingschecklist die CPU-architectuur, stabiel LAN IP, back-up bestemming, beheersworkflow, docker-data pad en bereik van externe toegang behandelt.

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.

-15% OFF
Single board computer zimaboard2

Implementeer je eerste Docker Compose-stack

Docker homelab architectuur met een NAS-host, Docker Engine, gebruikersgedefinieerd netwerk, persistente docker-data opslag en verschillende zelf-gehoste services.

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

Veilige Docker externe toegang met HTTPS, een firewall, een reverse proxy en privé interne diensten.

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

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.