MB-lab

PCB 3d-printer server

MB-lab

Hosting platform (2026)

Uitgevoerde taken

  • Automatiseren VM deployment met OpenTofu
  • Automatiseren VM deployment met Gitlab CI/CD pipelines
  • Hosten applicaties op Kubernetes cluster
  • Hosten applicaties met ArgoCD

Project

Om meer te leren over automatisering en Kubernetes heb ik op mijn homeserver een hostingplatform gebouwd. Dit platform maakte gebruik van de CI/CD pipeline in Gitlab om automatisch een Talos cluster op te bouwen. Dit wil zeggen dat wanneer een nieuwe configuratie gepushed wordt naar Gitlab, er automatisch een proces werd gestart waardoor veranderingen in de configuratie werden doorgevoerd. Deze veranderingen konden bijvoorbeeld zijn dat er Virtuele Machines (VM's) toegevoegd moeten worden, er meer RAM of meer CPU's toegevoegd moeten worden aan deze VM's ... De werking van het platform was als volgt:


Gitlab repository met CI/CD pipeline
Om te beginnen had ik een Gitlab repository aangemaakt. Deze diende om de code op te slaan, aan versiebeheer te doen, en gebruik te maken van de Gitlab CI/CD pipelines. Wanneer een nieuwe update van de configuratie werd doorgepushed naar de Gitlab repository, begon de pipeline te lopen.

Opentofu en Gitlab runner
OpenTofu is een opensource project, gemaakt om infrastructuur (VM's, containers, permissies ...) op te stellen als code. Dit zorgt ervoor dat implementaties in cloud systemen of hypervisors geautomatiseerd kunnen worden. De Gitlab pipeline die ik had opgesteld startte OpenTofu in een container op een aparte VM. Deze VM had toegang tot mijn Proxmox omgeving. Hierdoor kon deze automatisch VM's op mijn proxmox omgeving opbouwen en beheren. Als de container werd opgestart, begon deze automatisch een Kubernetes cluster op mijn Proxmox omgeving te implementeren en configureren.

Talos OS
Het OS dat ik gebruikte voor mijn kubernetes cluster VM's was Talos. Deze OS is speciaal ontwikkeld voor Kubernetes en kan enkel bestuurd worden door middel van API's. Rechtstreekse toegang via bijvoorbeeld ssh of een console is niet mogelijk. Dit zorgt voor een veel kleinder aanvalsoppervlak. Talos is ook een "immutable" OS. Kort gezegd betekent dit dat er geen veranderingen kunnen gebeuren in de kern van het OS, wat de aanvalsoppervlak ook weer verder verkleint.

ArgoCD
ArgoCD is een applicatie gemaakt om andere applicaties via GitOps te implementeren in de Kubernetes cluster. ArgoCD werd automatisch geinstalleerd door OpenTofu bij het opbouwen van de Kubernetes cluster. Hierdoor kon via een nieuwe Gitlab repositorie die werd gekoppeld aan ArgoCD, makkelijk applicaties worden opgestart en beheerd. Dit met een duidelijke User Interface die voorzien wordt door ArgoCD.

Schoolprojecten

CTF Bsides Limburg (2026)

Uitgevoerde taken

  • Radio opdrachten uitwerken
  • Tempest opdracht uitwerken
  • Hardware hacking opdrachten uitwerken

Project

BSides Limburg is een conferentie voor mensen geïnteresseerd in de wereld van cyber security. Op BSides Limburg komen gastsprekers uit verschillende werkvelden. Zo waren er in 2026 sprekers over cyber security in de industriele sector, het verdedigen van cloud platformen en het belang van cyber security in de ruimte. Voor deze editie had BSides graag een uitdagende en gevarieerde "capture the flag" oftewel CTF. Een CTF zijn een reeks uitdagingen die deelnemers moeten proberen op te lossen aan de hand van hun eigen IT en hacking skills. Hiervoor is BSides Limburg bij ons terecht gekomen, om deze uitdagingen uit te werken. Een paar uitdagingen die ik hiervoor had voorzien zijn:


TEMPEST uitdaging
Elektronische schakelingen of apparaten zenden elektromagnetische straling uit. Deze straling bevat informatie over de werking van het systeem. Door middel van een RTL-SDR kan deze straling opgevangen worden en met behulp van een tool dat online te vinden is, kan de uitgezonden straling van een computerscherm opnieuw omgevormd worden tot zichtbare data. Voor de uitdaging had ik een computerscherm geplaatst die de vlag liet zien. Dit scherm heb ik daarna bedekt zodat de vlag niet meer zichtbaar was, maar deze data wel nog uitgezonden werd. Nu moesten de deelnemers enkel nog het juiste programma vinden en instellen. Hieronder een video om de werking hiervan te demonstreren:

Radio uitdagingen
Deze twee uitdagingen bestonden uit het ontvangen en ontcijferen van twee verschillende berichten. Deze berichten werden gegenereerd door een Python script op een OrangePi en verzonden door middel van een TidRadio TD-H3. Deze uitzending kon worden opgevangen door middel van een "software defined radio", en diende daarna ontcijferd te worden. Één bericht was gecodeerd door middel van morse code, en het ander maakte gebruik van grey codering. In het bericht stond een vlag die de deelnemers konden inwisselen voor punten.

Rubber ducky uitdagingen
Een "rubber ducky" is een usb-stick die malicious code draait op een computer wanneer deze wordt ingeplugd. Voor deze uitdaging had ik een aantal RaspberryPi Pico's voorzien. De bedoeling was dat de deelnemers hier een eigen Rubber Ducky van zouden maken. Dit door een voorgeprogrammeerde firmware te installeren, bedoeld om snel Ducky Scripts te kunnen schrijven. Hierna moesten ze zelf een printplaatje solderen om op een RaspberryPi Pico te bevestigen, en zo zonder muis of toetsenbord een bestand uit een computer te vissen en zo de vlag te bemachtigen.

Opmaken Threatmodel voor security audit (2026)

Uitgevoerde taken

  • informatie vergaren bij klant
  • Opmaken van threat model

Project

Voor een Security audit bij een bedrijf (naam vertrouwelijk) heb ik een threat model samengesteld om de fysieke beveiliging verder op te bouwen. Dit threat model heb ik gestript van alle details en is vrij te gebruiken als basis of als voorbeeld van hoe een threatmodel zou kunnen werken. Mijn exemplaar is bedoeld om te analyseren welke ruimtes er zijn, voor wie deze toegankelijk zijn. Hierna kan aan de hand van een analyse bepaald worden welk risico er is als bepaalde personen toegang hebben tot deze ruimtes. Deze risico's kunnen aan de hand van een dreigingsanalyse met de STRIDE methodiek bepaald worden waar ingegrepen moet worden. Als er maatregelen zijn genomen kunnen deze meegenomen worden in de volgende iteratie om de totale risico score te beïnvloeden.

Download hier de algemene versie: threatmodel


Stemsysteem (2025)

Uitgevoerde taken

  • Project management
  • Scrum master
  • Continu testen

Project

Dit project was een groepswerk een stemsysteem te maken tijdens het eerste jaar van mijn bachelor opleiding. Het systeem maakte gebruik van RFID kaartlezers, een stem pagina en een backend systeem. Het concept was dat je bij het binnenkomen van de wedstrijd een stemkaart krijgt, de deelnemende opstellingen bekijkt, en aan een stemkiosk je stem gaat uitbrengen. Het systeem was makkelijk op te zetten door middel van een docker container die een webpagina starten met persistente opslag voor als het systeem plots zou uitvallen.

Mijn voornaamste bijdragen was het managen van het project. We maakte gebruik van scrum en Jira. Mijn taak was het scrum bord bijhouden, zorgen dat de verschillende puzzelstukken in elkaar paste en de verschillende onderdelen testen als deze klaar waren.



Hosting systeem (2025)

Uitgevoerde taken

  • Project management
  • Scrum master
  • Opzetten van hosting omgeving
  • Automatiseren van hosting omgeving

Project

Een tweede project tijdens het eerste jaar van mijn bachelor opleiding was als groepswerk een hostingplatform maken. Dit platform moest automatisch een simpele web applicatie met frontend, backend en database kunnen opstarten. We maakten gebruik van een git repository om de applicatie automatisch op een kubernetes cluster uit te rollen.

Ondanks dat ik in dit project projectleider was, heb ik ook veel technische ervaring kunnen opdoen. Dit in de automatisering van de infrastructuur. Hiervoor maakte ik gebruik van Terraform om de virtuele machines aan te maken, van ansible om deze machines te configureren, en van Puppet om de staat van de machines continu te controleren en bij te stellen indien nodig. Deze setup zorgde ervoor dat elke virtuele machine bij opstart beveiligd was, en dat deze beveiliging gewaarborgd werd.



Werkplekleren

Mijn graduaatsopleiding Internet Of Things heb ik afgesloten met 4 maanden in het werkveld mee te lopen. Dit heb ik mogen doen bij Absolem. Meer info over dit bedrijf vind je op de stage pagina. Tijdens deze 4 maanden heb ik de kans gekregen mee te werken aan verschillende projecten binnen absolem. Het verschil met de stage die ik bij Absolem heb afgerond en het werkplek leren is dat ik bij deze projecten eerder een ondersteunende functie had en bij mijn stageproject meer verantwoordelijkheid over het project had.

Lab-sens (2024)

Uitgevoerde taken

  • Schrijven van Python code
  • Ontwerpen van PCB voor SBC en ADC
  • Hardware installeren
  • Opzetten van Docker containers voor Python script
  • Influx database en grafana visualisatie

Project

Voor deze opdracht demonstreerde ik de mogelijkheden van Internet of Things (IoT) in het laserlaboratorium. Hier genereren verschillende laseropstellingen veel warmte. Deze warmte wordt gereguleerd door middel van een waterkoeler. Wanneer deze warmte teveel wordt voor de koeler schakelen de lasers zich automatisch uit om oververhitting te voorkomen. Dit vertraagt het werk van de collega's, die moeten wachten tot het systeem afkoelt. Project Lab-Sens verzamelt data over de machines waardoor we kunnen identificeren welke opstellingen het water te veel opwarmen en later ook hoe factoren zoals temperatuur, vochtigheid en trillingen de testresultaten beïnvloeden. Dit project toont aan hoe IoT praktische problemen kan oplossen, de workflow kan verbeteren en de efficiëntie in het laboratorium kan verhogen.


Laser Driver (2024)

Uitgevoerde taken

  • Uitwerken modulaire software
  • Programmeren Beckhoff PLC in structured language (ST)
  • PLC-programmeren

Project

Voor een project voor een chipfabrikant gebruiken we een industriële computer om de gehele opstelling te besturen, bestaande uit diverse modules zoals de laser, verschillende veiligheidsschakelaars en de koeler. In dit project kreeg ik de opdracht om de software voor deze fase mee te ontwikkelen, specifiek voor de laser. Dit betekende dat ik niet alleen een nieuwe programmeertaal moest aanleren, maar ook gebruik moest maken van een template die Absolem standaard hanteert voor machineprogrammering. Daarnaast hielp ik bij het ontwerpen van een modulaire structuur die het eenvoudiger maakt om toekomstige lasers te programmeren en in gebruik te nemen. Deze aanpak zorgt ervoor dat de machine herbruikbaar wordt voor verschillende opstellingen. Door de laser als een afzonderlijke module gemakkelijk vervangbaar en uitwisselbaar te maken met andere lasermodules, wordt het ontwerp van nieuwe opstellingen en machines veel flexibeler en efficiënter.


Laser Controllers (2024)

Uitgevoerde taken

  • Lezen en werken met elektrische schema's
  • Aansluiten van elektrische apparatuur
  • Leggen en aansluiten van bekabeling
  • Op maat maken van bepaalde bevestigingen

Project

Bij Absolem heb ik meegewerkt aan de vervanging van een laser die aan het einde van zijn levensduur was. De laser, die werd gebruikt voor het produceren van testcapsules voor lekdetectie in de farmaceutische industrie, viel helaas uit voordat de vervanger klaar was. Omdat de klant wekelijks een tiental capsules verwachtte, moest de ontwikkeling van de nieuwe laser in een stroomversnelling komen. Mij werd gevraagd om de nieuwe lasercontroller te monteren. Deze controller bestaat uit een 19-inch serverkast die de laser van voeding en aansturing voorziet. Na deze montage voerde ik een soortgelijke taak uit voor een ander project, deze is bedoeld voor proefopstellingen. Ik monteerde de controllers aan de hand van schema's die door collega's waren getekend. Dit maakte het mogelijk om eventuele aanpassingen te bespreken om de montage te vereenvoudigen.


CO2 sensor (2024)

Uitgevoerde taken

  • Opzoeken componenten
  • Tekenen elektrisch schema
  • Maken van protoboardje
  • Tekenen van bevestiging
  • Kalibreren van de sensor

Project

Bij Absolem werken we aan een opstelling om medicatie langer te bewaren door deze onder een gecontroleerde atmosfeer op te slaan, bestaande uit een mengsel van stikstof en CO2. De opstelling creëert eerst een vacuüm en vult dit vervolgens met het juiste gasmengsel. Omdat de houdbaarheid van de medicatie sterk afhankelijk is van deze gasmengeling, moet de stikstof/CO2-verhouding tijdens het vullen van het vacuüm nauwkeurig gecontroleerd worden. Daarom kreeg ik de taak om een CO2-sensor te selecteren die zo vroeg mogelijk in het proces het percentage kan meten. De gekozen sensor kan dit vanaf 0,5 bar. Nadat ik de sensor had besteld en de benodigde hardware had voorbereid om de signalen te verwerken en uit te lezen, werd dit project tijdelijk gepauzeerd om aan de lasercontrollers te werken. Op dit moment kunnen we de metingen uitvoeren, deze versterken met een operationele versterker (op-amp) en uitlezen via een AD-converter. Wat nog moet gebeuren is het juiste interpreteren van het signaal met behulp van een vermenigvuldigingsfactor en het berekenen van deze factor.


High-powered led (2024)

Uitgevoerde taken

  • Opzoeken componenten
  • Tekenen elektrisch schema
  • Tekenen PCB

Project

Een andere opdracht die ik heb aangenomen was het ontwerpen van een LED-driver voor lekdetectie. Deze driver zou worden gebruikt om high-power LED's door leidingen te laten schijnen, zodat een speciale camera kon controleren of de lichtstralen aan de buitenkant zichtbaar waren. Voor dit project ontwierp ik een eigen PCB om de SMD-LED van stroom te voorzien. Het uiteindelijke ontwerp realiseerde ik met hulp van een collega. Omdat het om een high-power LED gaat, produceert deze relatief veel warmte tijdens gebruik. Daarom koos ik voor een aluminium PCB, die voldoende koeling zou bieden om oververhitting te voorkomen. Helaas werd door een bestelfout een PCB met een plastic afwerking geleverd, wat een aanzienlijke vertraging veroorzaakte en het onmogelijk maakte om de driver voor dit project te gebruiken. Gelukkig zijn de tekeningen niet verloren gegaan. SMD-LED's worden steeds vaker in projecten gebruikt, en de tekeningen kunnen eenvoudig worden aangepast voor andere opstellingen met verschillende LED's.