Deel dit onderwerp alstublieft!

Docker Containers op MikroTik

Docker Containers op Mikrotik 

Docker Containers op MikroTik heb je hiervan al gehoord? De kans is groot dat je dit al wist, maar misschien weet je nog niet precies hoe je ermee aan de slag moet. In deze blogpost leg ik uit hoe je programma's kunt installeren op je MikroTik router via Docker container zonder dat je hiervoor een Raspberry Pi of een aparte mini-pc nodig hebt. Met Docker containers kun je eenvoudig extra functionaliteit toevoegen aan je router. Je hoeft alleen maar een container aan te maken op je MikroTik router, het gewenste programma te installeren, en je bent vertrokken. Enkele populaire toepassingen zijn bijvoorbeeld Pi-hole, ThingsBoard, Uptime Kuma, AdGuard, en nog vele andere.

Docker Containers op Mikrotik

Waarom is docker container op Mikrotik zo interessant?

  • Ruimtebesparing: je hebt geen extra hardware meer nodig.
  • Energiezuinig: je router staat toch al aan, dus je vermijdt extra stroomverbruik van aparte toestellen.
  • Altijd beschikbaar: je router draait 24/7, ideaal voor taken die continu beschikbaar moeten zijn.
  • Geen extra kosten: je hoeft geen aparte apparaten aan te kopen je bestaande MikroTik router volstaat.

Klinkt goed? In deze blogpost leg ik stap voor stap uit wat de vereisten zijn om containers te gebruiken op je MikroTik router, en hoe je ermee aan de slag kunt.

Zijn er ook nadelen?

Hoewel Docker containers op een MikroTik router heel wat voordelen bieden, zijn er ook enkele belangrijke beperkingen waar je rekening mee moet houden:

  • Beperkte hardwarecapaciteit: niet alle MikroTik-routers ondersteunen containers, en zelfs bij compatibele modellen is de rekenkracht, opslag en RAM eerder beperkt. Zware toepassingen zijn dus uitgesloten.
  • Herconfiguratie bij updates: als je een update uitvoert van een container (bijvoorbeeld een nieuwe versie van Pi-hole of AdGuard), wordt de oude container meestal verwijderd en vervangen door een nieuwe. Hierdoor moet je het programma vaak volledig opnieuw configureren, tenzij je zelf zorgt voor een goede back-up van de configuratiebestanden.
  • Beveiligingsverantwoordelijkheid: jij bent zelf verantwoordelijk voor de veiligheid van de container en de applicatie die je draait. Denk aan poortbeveiliging, gebruikersbeheer en updates de router beschermt dit niet automatisch.
  • Geen volwaardige Docker CLI: de Docker functionaliteit op MikroTik is beperkt in vergelijking met klassieke Docker installaties op Linux. Je moet werken via het MikroTik terminal of via scripts, wat een leercurve kan vereisen.
  • Beperkte community ondersteuning: omdat dit een relatief nieuwe functie is op MikroTik, is de beschikbare documentatie en ondersteuning beperkter dan bij andere platformen zoals Raspberry Pi of Ubuntu.

Zorg voor een goede workflow waarbij je bijhoudt welke containers je draait, welke configuraties je gebruikt, en hoe je deze snel opnieuw kunt opzetten bij een upgrade of storing. Je ziet dat Docker Containers op MikroTik meer inhoud dan gedacht is het niet?


Wat is een Docker container?

Een Docker container is een virtueel geïsoleerde omgeving waarin een programma draait, volledig los van het basissysteem. Het grote voordeel? Zelfs als een container crasht of corrupt raakt, blijft je MikroTik router stabiel functioneren. De werking van het besturingssysteem wordt niet beïnvloed, dat biedt een gerust gevoel. Het opzetten is eenvoudig: je maakt een container aan, schrijft een image van een gewenst programma erin, en klaar. Geen complexe installaties of configuraties op het systeem zelf. Denk eens aan de mogelijkheden die dit opent: je kunt tal van tools installeren zoals Pi-hole, AdGuard, Uptime Kuma of zelfs eigen toepassingen, rechtstreeks op je router. En heb je een bepaalde container niet meer nodig? Dan verwijder je die net zo gemakkelijk zonder restanten, zonder impact op je router. De router blijft gewoon zijn werk doen. Efficiënt, veilig én flexibel. Maar let op: er zijn wel enkele belangrijke aandachtspunten. Niet elke MikroTik router ondersteunt containers, en er zijn specifieke voorwaarden waaraan je moet voldoen. Lees verder in deze blogpost om precies te weten wat je nodig hebt voordat je aan de slag gaat met Docker op MikroTik.

Voorwaarden om Docker containers te draaien op een MikroTik router

Niet elke MikroTik router is geschikt om Docker containers te draaien. Je hebt een model nodig dat is uitgerust met één van de volgende architecturen:

  • ARM
  • ARM64
  • x86

Maar dat is niet alles. De router moet draaien op RouterOS v7, en meer specifiek vanaf versie 7.4 beta4 of nieuwer. Heb je nog geen RouterOS v7 op je toestel geïnstalleerd? Lees dan eerst [deze blogpost] waarin ik uitleg geef over de overstap van v6 naar v7. Let op: RouterOS v7 verschilt aanzienlijk van v6, niet alleen qua interface, maar ook qua functionaliteit en configuratie. 
Mijn advies: test deze upgrade eerst op een router die niet in productie is. Zo vermijd je onverwachte downtime of configuratieproblemen. Daarnaast wordt het ten zeerste aanbevolen om externe opslag te gebruiken (zoals een USB-stick of SSD via USB) om je container images en data op te slaan. De interne opslag van MikroTik routers is namelijk vaak beperkt en niet geschikt voor langdurig of intensief gebruik door containerapplicaties.

Let op: niet elke MikroTik router is geschikt

Voor het gebruik van Docker containers is voldoende opslagruimte essentieel. De container image moet eerst gedownload en daarna geïnstalleerd worden en dat vraagt om extra ruimte die bij veel MikroTik routers niet intern beschikbaar is. Een belangrijk voorbeeld: de populaire RB4011-serie voldoet niet aan deze vereiste. Deze routers beschikken namelijk niet over een USB-poort, waardoor je geen externe opslag kunt aansluiten. Daardoor vallen ze af voor containergebruik. Wees dus voorzichtig bij de aankoop van een nieuwe MikroTik router als je van plan bent containers te gebruiken.
Mijn aanbeveling: kies een router met een ARM64-architectuur en USB-ondersteuning voor externe opslag. Een uitstekend voorbeeld is de RB5009UG+S+IN. Deze router biedt niet alleen voldoende kracht en opslagmogelijkheden, maar is ook toekomstgericht dankzij zijn ARM64-chipset.
Belangrijk: uiteraard ben ik niet verantwoordelijk voor foutieve aankopen. Denk dus goed na over wat je van je router en je netwerk verlangt, en maak een weloverwogen keuze op basis van je huidige en toekomstige noden.

Hoe installeer je de Container functionaliteit op je MikroTik router?

Voordat je aan de slag kunt met Docker containers op je MikroTik router, moet je eerst de container package installeren. Dit doe je als volgt:

  • Download de extra packages vanaf de officiële MikroTik website. Kies de juiste versie die overeenkomt met jouw RouterOS versie en architectuur (ARM, ARM64 of x86).
  • Pak het ZIP-bestand uit en zoek naar het bestand container.npk.
  • Sleep het container.npk bestand in het Winbox venster van je router.
  • Start je router opnieuw op. Na de herstart wordt de container package automatisch geïnstalleerd.
  • Ga naar het menu "container" of gebruik Winbox om de container functie te activeren.

Voor je begint met configureren: zorg ervoor dat je router goed beveiligd is. Om je op weg te helpen, plaats ik onderaan deze blogpost een video met een basisconfiguratie en enkele praktijkvoorbeelden. 

Niet alle programma’s zijn compatibel en dat is normaal

Het is goed om te weten dat niet elk Docker programma probleemloos zal draaien op een MikroTik router. Dat is logisch: de container moet compatibel zijn met de architectuur en mogelijkheden van de router. Zelfs tussen verschillende ARM architecturen (zoals ARM versus ARM64) kunnen er verschillen zijn in compatibiliteit. Je moet dus goed weten waar je aan begint. Maar laat je hierdoor niet afschrikken. Het mooie aan Docker op MikroTik is dat je vrij kunt experimenteren zonder schade aan te richten. Werkt een container niet zoals verwacht? Verwijder hem gewoon en probeer iets anders uit. Trial-and-error is deel van het proces. Zelf zie ik veel potentieel in de containerfunctionaliteit van MikroTik. Welke kant het opgaat? De toekomst zal het uitwijzen, maar de eerste stappen zijn alvast veelbelovend.

In het volgende deel van deze blog laat ik je zien hoe je de basisconfiguratie voorbereidt. Dit vormt een solide vertrekpunt waarop je later gemakkelijk kunt voortbouwen.

Let op: Docker containers zijn géén virtuele machines

Hoewel Docker containers op een MikroTik router geïsoleerd draaien in hun eigen procesomgeving, moet je weten dat de isolatie niet zo strikt is als bij virtuele machines. Vooral op netwerkvlak delen containers dezelfde infrastructuur. Dat betekent: Als één container wordt gecompromitteerd, kan dit potentieel toegang geven tot andere containers of zelfs je interne netwerk. Daarom is het cruciaal om een paar goede praktijken te volgen:

  • Gebruik altijd de meest recente container-images. Je doet dit niet via een klassieke updatefunctie, maar door de oude container te verwijderen en opnieuw op te bouwen met de nieuwste image.
  • Beperk netwerktoegang van containers via firewallregels. Laat containers enkel verbinding maken met de buitenwereld als dat echt nodig is.
  • Overweeg netwerksegmentatie of VLAN’s als je gevoelige services draait binnen containers.

Dit aspect is meteen ook een van de nadelen van containers t.o.v. virtuele machines, waar volledige systeemisolatie standaard is. Wil je verder? In het volgende onderdeel van deze blog bekijken we hoe je jouw router voorbereidt op het draaien van Docker containers, inclusief beveiligingsinstellingen.

Belangrijk: MikroTik waarschuwt zelf voor beveiligingsrisico’s

MikroTik is duidelijk in zijn communicatie: Docker containers kunnen een serieus beveiligingsrisico vormen als ze misbruikt worden.
In hun documentatie waarschuwen ze expliciet: “Wanneer een beveiligingsexpert zijn exploit onderzoek publiceert, kan iedereen zo’n exploit toepassen. Iemand kan hierdoor een container image bouwen dat de exploit uitvoert en een Linux root shell aanbiedt. Met deze root shell kan een permanente achterdeur worden achtergelaten in het RouterOS systeem, zelfs nadat de container is verwijderd en de containerfunctie is uitgeschakeld. Als de kwetsbaarheid wordt geïnjecteerd in de primaire of secundaire routerboot (of vendor pre loader), dan kan zelfs Netinstall dit mogelijk niet verhelpen.”
Wat betekent dit concreet?

  • Een kwaadwillige gebruiker kan via een aangepaste container image root toegang krijgen tot je router.
  • Zelfs het verwijderen van de container en het uitschakelen van de functie kan de infectie niet ongedaan maken.
  • In het ergste geval kan de kwetsbaarheid zich nestelen in de bootloader, waardoor zelfs Netinstall geen oplossing biedt.

MikroTik neemt hiermee afstand van verantwoordelijkheid bij misbruik. Je bent als gebruiker dus zelf verantwoordelijk voor het veilig gebruiken van de containerfunctie.

Wat kan je doen?

  • Download alleen container-images van vertrouwde bronnen (bij voorkeur officieel onderhouden images).
  • Gebruik firewallregels om containerverkeer te beperken.
  • Voer regelmatig een audit uit van actieve containers en netwerkverbindingen.
  • Herbouw containers met de meest recente image-versies, en verwijder verouderde instanties.

MikroTik RB1100AHx4 Dude Edition: mijn testplatform

Docker Container op Mikrotik

Op bovenstaande afbeelding zie je de MikroTik RB1100AHx4 Dude Edition, het toestel dat ik gebruikte voor mijn tests met Docker containers op MikroTik. Wat dit model bijzonder maakt:

  • ARM-architectuur, dus compatibel met de container package.
  • Voorzien van interne 60GB SSD opslag (Dude Edition), ideaal voor het draaien van meerdere containers.
  • 13 Ethernetpoorten + PCIe-slot, waardoor deze router ook inzetbaar is voor zware netwerkomgevingen.
Docker container package

Bovenstaande screenshot toont een succesvolle installatie van de container package op een MikroTik RB1100AHx4 Dude Edition. Ook de zerotier package is geinstalleerd. 

Activatie van de container package: fysieke bevestiging vereist

Mikrotik docker containers

Na het uploaden en installeren van de container package via Winbox, moet je deze manueel activeren via de terminal. Maar opgelet: de container functie wordt pas definitief geactiveerd na een herstart, en die herstart moet je fysiek bevestigen. MikroTik doet dit bewust om misbruik op afstand te voorkomen. Er zijn twee opties om dit te doen: 1- Trek de stroomkabel los en sluit die opnieuw aan. 2- Druk kort op de fysieke resetknop van de router.
Let op: je kunt deze activatie niet op afstand uitvoeren via Winbox of SSH. Dit voorkomt dat een aanvaller stiekem docker containers inschakelt zonder fysieke toegang tot het toestel. Na de herstart en fysieke bevestiging is de containerfunctie actief en klaar voor gebruik.


Bridge aanmaken voor Docker-containers

Bridge docker

Om je Docker containers met het netwerk te verbinden, maken we een virtuele bridge aan op de MikroTik router. Deze bridge fungeert als een gateway voor alle containers en biedt toegang tot het internet. In dit voorbeeld gebruiken we de 172.16.1.0/24 IP-range, maar je kunt ook een andere private range kiezen (zoals 192.168.x.x of 10.x.x.x).


Toegang tot het internet via NAT

Mikrotik docker containers

Wanneer je Docker containers laat communiceren via een private IP-range zoals 172.16.1.0/24, kunnen ze niet rechtstreeks het internet op. Daarvoor moet je een NAT regel (masquerade) instellen die al het uitgaande verkeer vertaalt naar het publieke IP-adres dat je router van je internetprovider (ISP) heeft gekregen. Deze NAT regel zorgt ervoor dat alle verbindingen vanuit je containers naar buiten toe verlopen via dat publieke IP. Dit is essentieel om bijvoorbeeld DNS query’s, software updates of API verzoeken vanuit je container mogelijk te maken. Ben je nog niet helemaal vertrouwd met NAT configuraties of het instellen van bridges en IP-ranges in MikroTik? Geen zorgen. Onderaan deze blog vind je een reeks video’s waarin ik van A tot Z demonstreer hoe je deze configuratie opbouwt.


Container configureren en image downloaden

docker containers


  • Klik in het linker menu op container, en daarna op config.
  • Geef de registry URL in: https://registry-1.docker.io. Dit is de standaard publieke Docker Registry.
  • Stel een tijdelijke directory in via Tmp dir: Hier geef je de naam van de schijf en map op waar de Docker image tijdelijk wordt opgeslagen.

Nu we de basis hebben gelegd, is het tijd om je eerste container klaar te zetten. Volg deze stappen om de juiste instellingen te maken in Winbox.
Let op: Vanaf dit punt is de verdere configuratie afhankelijk van het specifieke programma dat je installeert (zoals Pi-hole, AdGuard, Uptime Kuma, ...). Elke container vereist eigen parameters, poorten en eventueel een volume mapping. 

Tot slot

Vergeet niet: de basisconfiguratie moet volledig uitgevoerd zijn voordat je verdergaat met het opzetten van individuele containers.
Ik wens je alvast veel succes en plezier met Docker containers op je MikroTik router. Het opent heel wat nieuwe mogelijkheden, zonder extra hardware!

Configuratiescripts: kopiëren, plakken & aanpassen

system/device-mode update container=yes
/interface bridge add auto-mac=yes name=br_docker
/ip address add address=172.16.1.1/24 interface=br_docker network=172.16.1.0
/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1_wan src-address=172.16.1.0/24
/container config set registry-url=https://registry-1.docker.io/ tmpdir=sata1-part1/containers/pull

Om het je gemakkelijk te maken, heb ik alle nodige configuratiescripts online beschikbaar gesteld. Je kunt deze scripts kopiëren en plakken in de MikroTik terminal om snel aan de slag te gaan met je MikroTik Docker container installatie. Let op: In elk script zijn bepaalde onderdelen vetgedrukt weergegeven. Deze moet je aanpassen aan de naam van je eigen opslagmedium (bijvoorbeeld sata1-part1of usb1), anders krijg je foutmeldingen tijdens het installeren van de container. Zorg ervoor dat:

  • Je opslagmedium correct is aangekoppeld en zichtbaar in /disk print.
  • De tijdelijke directory (Tmp dir) verwijst naar een geldige, beschrijfbare map op dat opslag medium.
  • Een klein foutje in het pad kan leiden tot een mislukte installatie. Controleer dus goed alvorens het script uit te voeren.
  • Je voldoende vrije ruimte hebt op het opgegeven medium.

Uptime Kuma installatie

docker containers
/interface veth
 add address=172.16.1.2/24 gateway=172.16.1.1 name=veth_kuma
/interface bridge port
add bridge=br_docker interface=veth_kuma
/container mounts
add dst=/app/data name=kuma src=/sata1-part1/kuma_data
/container
add interface=veth_kuma remote-image=louislam/uptime-kuma:latest mounts=kuma root-dir=sata1-part1/kuma workdir=/app

Home Assistant installatie

/interface veth
 add address=172.16.1.4/24 gateway=172.16.1.1 name=veth_homeassistant
/interface bridge port
add bridge=br_docker interface=veth_homeassistant
/container/envs
add name="envs_homeassistant" key="TZ" value="Europe/Brussels"
/container/mounts
add name="homeassistant" src="/sata1-part1/containers/mounts/homeassistant" dst="/config"
/container
add remote-image="homeassistant/home-assistant:stable" interface="veth_homeassistant" envlist="envs_homeassistant" cmd="python3 -m homeassistant --config /config" hostname="homeassistant" workdir="/config" root-dir="sata1-part1/containers/homeassistant" mounts="homeassistant"

Adguard docker container
/interface veth
 add address=172.16.1.2/24 gateway=172.16.1.1 name=veth_Adguard 
/interface bridge port
add bridge=br_docker interface=veth_Adguard 
/container
add remote-image="adguard/adguardhome" interface="veth_Adguard" root-dir="usb1/adguard



Blijf op de hoogte van mijn nieuwe video tutorials

Deze website maakt gebruik van cookies. Door deze site te blijven gebruiken, accepteert u het gebruik van deze cookies.