ID.nl logo
Zelf creatief met kunstmatige intelligentie
© Reshift Digital
Huis

Zelf creatief met kunstmatige intelligentie

Na een wat schoorvoetend begin maakt kunstmatige intelligentie (AI) de laatste jaren grote sprongen, zowel in het bewerken van bestaand beeld als in het creëren van nieuw materiaal. In dit artikel inventariseren we de stand van zaken en gaan we zelf met wat tools aan de slag.

Wanneer we opgroeien, zijn er twee vaardigheden die we vrijwel automatisch aanleren: het interpreteren van de wereld die we zien om ons heen en het kunnen benoemen ervan. Het is dan ook niet verwonderlijk dat begrijpend kijken en taalbeheersing al decennialang tot de belangrijkste speerpunten behoren bij de ontwikkeling van AI.

Zo’n tien jaar geleden drong deze vorm van AI voorzichtig binnen in het dagelijks leven via apps die gesproken instructies konden begrijpen, teksten konden vertalen en in realtime kunstjes konden uithalen met je gezicht tijdens een videogesprek.

De laatste jaren is de kwaliteit van AI voor beeldmanipulatie dusdanig toegenomen dat het op steeds grotere schaal commercieel wordt toegepast. Veel ontwikkelingen die nu nog experimenteel zijn, zullen die weg spoedig volgen.

We kijken naar de stand van zaken en gaan zelf aan de slag met dé ontwikkeling voor de komende jaren: het maken van beeld op basis van tekst.

01 Fotomanipulatie

Jarenlang moesten we alles zelf doen als het ging om fotobewerking. Vervolgens verschenen voorzichtig handige hulpjes zoals het automatisch optimaliseren van helderheid en belichting, en later de broodnodige assistentie bij het selecteren van objecten met ingewikkelde vormen. Toch waren dat niet meer dan betrekkelijk eenvoudige (wiskundige) trucjes.

In de nieuwste software voor fotobewerking heeft AI ook zijn intrede gedaan. Voor bijvoorbeeld Photoshop gebeurt dat nog enigszins mondjesmaat door middel van bijvoorbeeld slim vergroten (Super Resolution) en om automatisch de scherptediepte van een afbeelding achteraf aan te passen. Een bedrijf als Skylum zet echter volop in op deze nieuwe ontwikkelingen. Vorig jaar bespraken we van deze makers al Luminar AI, dat het onderwerp in foto’s kan herkennen en waarmee je op basis daarvan bijvoorbeeld razendsnel en simpel portretten kunt optimaliseren. Inmiddels is het nieuwste speeltje van Skylum verkrijgbaar onder de naam Luminar Neo. De AI daarin kan automatisch stof en krassen verwijderen, en hoogspanningsleidingen uitgummen. Belangrijker is echter dat het voor- en achtergrond kan herkennen, en op basis daarvan kun je scènes eenvoudig opnieuw belichten om het onderwerp van het scherm te laten spatten.

©PXimport

02 Creatief

Waar praktische fotobewerking met behulp van AI een zeer recente ontwikkeling is, zijn er al heel wat langer technieken beschikbaar om afbeeldingen creatief te lijf te gaan. Waar we het jarenlang moesten doen met vaak maar matig overtuigende filters om bijvoorbeeld een foto om te zetten naar een tekening of olieverfschilderij, kunnen we nu de complete stijl van een willekeurige afbeelding (vaak een kunstwerk) overzetten naar onze eigen foto’s.

Deze techniek, Style Transfer geheten, vloeit voort uit onderzoek van Google naar de manier waarop gelaagde neurale netwerken informatie opslaan en verwerken. Elke laag kijkt naar een ander aspect van een afbeelding en door de juiste beeldkenmerken van één afbeelding over te zetten, kun je de visuele stijl kopiëren. Dit onderzoek resulteerde ook in Deep Dream Generator, een online toepassing waarmee je AI naar een foto kunt laten kijken. De patronen die een bepaalde laag in het neurale netwerk in die foto meent te zien, worden vervolgens aan de foto toegevoegd. Herhaal je dit proces, dan kun je verbluffende en vaak psychedelische afbeeldingen maken.

©PXimport

Met Deep dream kun je verbluffende en vaak psychedelische afbeeldingen maken

-

03 Zien = maken

Wanneer we afbeeldingen zoeken met bijvoorbeeld Googles zoekmachine, dan doen we dat met een zoekopdracht in tekst. Uiteraard is het ondoenlijk voor de makers van een zoekmachine om alle geïndexeerde afbeeldingen van trefwoorden te voorzien en dus gebeurt door middel van AI. Deze AI is in eerste instantie getraind door afbeeldingen (met omschrijving) uit een zorgvuldig en met de hand samengestelde dataset te bekijken. Aan deze training werken wijzelf regelmatig mee wanneer we op een website moeten bewijzen dat we geen robot zijn en bijvoorbeeld alle stoplichten in een raster met negen plaatjes moeten identificeren.

Elke kleuter kan op zeker moment een menselijk poppetje tekenen omdat het al heel wat mensen heeft gezien en de globale kenmerken daarvan (twee armen, twee benen, enzovoort) in de hersenen zijn gecodeerd. Het is dan ook niet verwonderlijk dat op zeker moment een AI, die getraind was op een bepaald type afbeeldingen zoals gezichten, kon worden gebruikt om vanuit de opgedane kennis nieuwe portretten te genereren. Deze techniek wordt toegepast op de inmiddels overbekende site www.thispersondoesnotexist.com (met aanverwante sites voor onder andere katten, paarden en kunstwerken).

04 Generative Adverserial Network

De website die portretten genereert, maakt gebruik van een AI die StyleGAN2 heet. Deze is ontwikkeld door Nvidia, dat een belangrijke speler is in de AI-markt omdat de grafische kaarten van dit merk niet alleen hoogwaardig beeld kunnen genereren, maar ook alles aan boord hebben om efficiënt neurale netwerken te kunnen gebruiken.

Een GAN (Generative Adverserial Network) is een van de populairste methoden om AI zelf beeld te laten genereren door twee AI’s het tegen elkaar te laten opnemen in een soort wedstrijd waarbij ze elkaars prestaties naar steeds grotere hoogtes stuwen.

Dit soort netwerken wordt inmiddels al volop toegepast om bijvoorbeeld zwartwit-foto’s in te kleuren, plaatjes te vergroten en bepaalde soorten afbeeldingen te creëren als in de eerdergenoemde voorbeelden.

05 Contrastive Language-Image Pre-training

Zoals gezegd, is het kunnen benoemen van wat een AI ziet al jaren onderwerp van onderzoek. Zoekmachines hebben dergelijke AI’s nodig om geautomatiseerd afbeeldingen te kunnen indexeren.

Een van de spectaculairste ontwikkelingen op dit gebied heet CLIP (Contrastive Language-Image Pre-training). Voorgaande AI’s waren afhankelijk van het leren herkennen van objecten aan de hand van zorgvuldig en met de hand samengestelde datasets van afbeeldingen en hun beschrijving in een beperkt aantal categorieën (mensen, auto’s, bloemen enzovoort). CLIP (waarvan de oorspronkelijke versie is getraind met ruim 400 miljoen tekst-beeldcombinaties) heeft echter een dusdanig brede kennis dat het tot op zekere hoogte ook afbeeldingen kan omschrijven in categorieën die het nooit eerder heeft gezien. Dit wordt zero shot learning genoemd.

06 GAN + CLIP

Combineer je de kennis van CLIP met een GAN als beeldgenerator, dan wordt het pas echt interessant. De IT-wereld stond een jaar geleden dan ook op zijn kop toen OpenAI ons een kijkje gaf in zijn nieuwste hoogstandje DALL-E.

DALL-E is een gigantisch neuraal netwerk dat beelden creëert aan de hand van een korte omschrijving in tekst. ‘Een fauteuil in de vorm van een avocado’ maakte wereldwijd furore toen dit systeem werd gepresenteerd. Niet alleen liet het een overtuigend zitmeubel zien, maar het maakt desgevraagd duizenden verschillende!

De rol van CLIP in dit alles is dat het als een soort jury fungeert. Het rangschikt de gegeneerde afbeeldingen op relevantie en stuurt de AI die het beeld genereert de goede kant op.

Helaas heeft OpenAI op dit moment de code voor DALL-E nog niet vrijgegeven omdat er volop discussie is over de gevolgen van dit soort AI (zie kader ‘Mogelijke gevolgen’).

©PXimport

CLIP fungeert als jury en stuurt de AI die het beeld genereert de goede kant op

-

Mogelijke gevolgen

Veel opensource-AI is op dit moment nog niet in staat om voor elke gegeven opdracht coherente resultaten te produceren. Een AI die speciaal getraind is op gezichten levert vrijwel perfecte portretten, maar vraag je het aan een algemeen TTI-systeem (Tekst To Image), dan moet je niet vreemd opkijken als het resultaat twee neuzen heeft. Deze systemen worden echter snel beter en spoedig kun je vrijwel elk soort afbeelding maken dat je hebben wilt. Wat de gevolgen daarvan zullen zijn voor fotografen en illustratoren is nauwelijks te overzien.

We kennen allemaal de ophef rond het fenomeen deepfake. Nu nog werkt dat vooral op basis van het vervangen van gezichten in bestaande video’s door middel van AI. Zodra AI echter zelf fotorealistische beelden kan genereren, zullen volledig door AI gemaakte video’s volgen.

Uiteraard zijn er ook volop positieve kanten te noemen. Zo zullen games in rap tempo nog levensechter worden omdat AI 3D-omgevingen in realtime kan vervangen door decors die echt lijken. Oude en krakkemikkige archiefbeelden worden ondertussen in hoog tempo ingekleurd, ontkrast en omgezet naar een hogere resolutie. Naast deze praktische zaken, zien we de opkomst van een geheel nieuwe kunstvorm.

©PXimport

07 Concurrentie

DALL-E mag dan nog niet beschikbaar zijn, dat wil niet zeggen dat we niet zelf met Tekst To Image (TTI) aan de slag kunnen. Al snel verschenen namelijk opensource-oplossingen op basis van CLIP en minder geavanceerde beeldgenerators. Aanvankelijk waren deze alleen online toegankelijk via het Google Colab-platform (zie kader ‘Werken met Colab’), maar al snel kwamen er varianten met een gebruiksvriendelijkere interface.

Zo scoort Visions of Chaos hoog op het gebied van gebruiksgemak en het aantal ondersteunde AI-toepassingen. Hoewel deze software oorspronkelijk is bedoeld als fractal-programma kun je er tegenwoordig tientallen verschillende AI-modellen in draaien. Dit vereist wel een stevige Nvidia-kaart met liefst 12 GB VRAM of meer. Omdat niet iedereen daarover beschikt, bekijken we eerst wat online-alternatieven.

Werken met Colab

Het gros van de opensource AI-toepassingen is gemaakt in Python (waarvan je overigens geen kennis hoeft te hebben). Is je hardware niet krachtig genoeg om deze programma’s lokaal te gebruiken, kies dan uit de vele Python-scripts die beschikbaar zijn op het Google Colab-platform en die je zelfs vanaf je mobiel zou kunnen gebruiken.

Op https://softologyblog.wordpress.com vind je links naar Colab-versies van vrijwel alle scripts die ook in Visions of Chaos beschikbaar zijn. Als voorbeeld gaan we naar het script voor Multi-Perceptor VQGAN+CLIP v3.

Elk Colab-script bestaat uit cellen met programmacode en deze hoef je alleen cel voor cel uit te voeren door op de afspeelknop te klikken. Lees daarbij wel goed de instructies en wacht met de volgende cel tot de vorige klaar is (groen vinkje), wat voor de initialisatie enkele minuten duurt.

Ben je aangekomen bij Do the run, dan vul je daar de tekst in voor wat je wilt zien en kies je het menu Runtime / Alles Uitvoeren. Na enkele minuten zal nu het eerste beeld verschijnen. Ben je tevreden, dan kies je Runtime / Uitvoering Onderbreken en sla je het laatst gegenereerde plaatje op. Voor nieuwe afbeeldingen hoef je alleen de parameters in de cel Do the run te wijzigen en deze te starten.

©PXimport

08 Zelf proberen

Kijk bijvoorbeeld eens bij Wombo Dream als je zelf wilt spelen met TTI. Hier kun je simpelweg een Engelse omschrijving invoeren en na het kiezen van een stijl krijg je binnen een minuut de gegenereerde afbeelding te zien. Wombo is snel en biedt een hoge resolutie.

Wat uitgebreider zijn je mogelijkheden bij NightCafe. Behalve Tekst To Image biedt deze ook Style Transfer. Meer van dit soort diensten vind je in het kader met links aan het einde van deze masterclass.

©PXimport

09 Uitgebreider

Veel meer mogelijkheden vind je bij de pagina’s van https://huggingface.co. Dit is een platform waar organisaties en individuen hun programma’s online toegankelijk maken. Veel daarvan hebben een aanzienlijk uitgebreidere gebruikersinterface dan de diensten die we in de vorige paragraaf noemden, wat ze ideaal maakt voor wie meer diepgang zoekt. Bovendien is het gebruik gratis. Keerzijde is dat je vaak te maken hebt met wachttijden, maar zolang je de pagina open laat, kun je ondertussen iets anders doen.

We noemen twee voorbeeldpagina’s. De eerste vind je via https://kwikr.nl/hfclip en is een van de betere AI-beeldgenerators (CLIP Guided Diffusion). Je kunt hem niet alleen kunt voeden met een tekstprompt, maar ook met een afbeelding om als uitgangspunt te dienen. Bovendien genereert dit AI-script een video waarin je ziet hoe de afbeelding tot stand komt.

Een tweede geavanceerde AI waarmee je bij Huggingface aan de slag kunt, vind je via https://kwikr.nl/hfsg3. Deze AI maakt video’s op basis van de nieuwste versie van StyleGAN. Er zijn varianten die getraind zijn op gezichten, portretten uit de kunstwereld en zelfs landschappen, en in elk van deze categorieën kun je video’s maken waarin losse beelden op adembenemende wijze in elkaar overvloeien.

©PXimport

10 Lokale AI

Beschik je over een geschikte Nvidia-kaart, dan weerhoudt niets je ervan om op je eigen pc met AI aan de slag te gaan. Zoals gezegd moet je hiervoor Visions of Chaos (VoC) installeren. Daarmee ben je er echter nog niet. Je dient allerlei aanvullende componenten te installeren om AI-modellen te kunnen gebruiken. Deze maken namelijk gebruik van PyTorch of TensorFlow, de twee populairste platformen voor AI.

Gedetailleerde installatie-instructies vind je via https://kwikr.nl/instai. Installatie van alle benodigde software is niet moeilijk, maar je bent er wel zo’n twee uurtjes mee zoet. Als de klus is geklaard, kun je Visions of Chaos starten en is de speeltuin geopend.

Je kunt video’s maken waarin beelden op adembenemende wijze in elkaar overvloeien

-

11 Visions of Chaos

In Visions of Chaos vind je de AI in het menu Mode / Machine Learning, die is onderverdeeld in de categorieën PyTorch en TensorFlow. Die laatste bevat als belangrijkste onderdelen Deep Dream en Style Transfer, maar deze zijn ook beschikbaar als PyTorch-variant, dus we concentreren ons op dat platform.

De eerste keer dat je een onderdeel wilt gebruiken zal het de automatisch de benodigde neurale netwerken en Python-scripts downloaden.

Met alle mogelijkheden die je tot je beschikking hebt, kunnen we een jaargang PCM’s vullen, dus we bekijken er slechts een paar.

12 StyleGAN3

Ga om te beginnen naar StyleGAN3. Je ziet dat Model file daar standaard een van de Faces-modellen is. Klik op Generate Image om een willekeurig portret te maken.

Je kunt gegenereerde afbeeldingen manipuleren met behulp van tekst. Zet daarvoor een vinkje bij de bovenste optie, Style with CLIP. Laat de standaardtekst staan en genereer nogmaals een afbeelding.

In het vrijwel oneindige domein van alle mogelijke gezichten heeft de opgegeven instructie het oorspronkelijke portret nu in iets totaal anders veranderd. Genereer je een video, dan zal StyleGAN3 voor het gekozen model beelden in elkaar laten overvloeien (in ons geval gezichten), wat herinnert aan het aloude ‘morphing’, maar dan automatisch en veel vloeiender. Gebruik je CLIP in combinatie met video, dan start deze met een willekeurig portret en zie je hoe dit verandert in iets dat hopelijk voldoet aan de gegeven opdracht. Probeer bijvoorbeeld ‘a caricature of Tom Cruise’. Na het genereren van de beeldjes krijg je een FFmpeg-venster te zien waarmee je ze kunt combineren tot video. Je hebt hier veel bewerkingsmogelijkheden waar we hier niet op in kunnen gaan. Klik voor nu op Build en hoop op de gewenste karikatuur.

©PXimport

13 Text-to-image

Het tweede onderdeel van Visions of Chaos dat we bekijken is de optie Text-to-image. Klik je op de naam achter Script, dan zie je een enorme waslijst aan beschikbare AI’s waarvan de beste van een asterisk zijn voorzien. Allemaal hebben ze zo hun eigen instellingen, maar er zijn ook veel overeenkomsten.

Als voorbeeld gaan we aan de slag met Multi-Perceptor VQGAN+CLIP v3. Hierin worden de gemaakte afbeeldingen beoordeeld door twee verschillende CLIP-modellen voor meer betrouwbaarheid. Laat de standaard inputprompt voor wat hij is en klik op Generate om je eerste TTI-kunstwerk te produceren. Het eindresultaat laat enkele minuten op zich wachten waarbij het beeld tussentijds steeds wordt bijgewerkt. Je kunt het proces overigens versnellen door vooraf Number of cutouts bijvoorbeeld te halveren.

Waar je in StyleGAN bij dezelfde Random Seed hetzelfde plaatje te zien krijgt, is dat bij TTI niet het geval. Hier zorgt het getal er alleen voor dat een nieuw plaatje met dezelfde prompt een vorige niet overschrijft. Je vindt gemaakt beeld overigens in de map Documenten\Visions of Chaos.

Omdat niet elke prompt meteen iets moois oplevert, kun je bij Batch / Input prompt with different seeds meerdere exemplaren achter elkaar genereren. Hier vind je ook de mogelijkheid om een lijst met prompts of willekeurige input op te geven waarmee je je pc een nachtje kunt laten werken.

©PXimport

14 Ingenieur

Het verzinnen van opdrachten die interessant beeld opleveren, kan een flinke puzzel zijn waarvan de oplossing bovendien per AI verschilt. Niet voor niets wordt deze kunst ‘prompt engineering’ genoemd. Behalve de feitelijke prompt, zoals ‘a landscape’ kun je er kwalificaties aan toevoegen die we modifiers noemen. Voorbeelden zijn: ‘in summer’, ‘at dawn’, ‘by Vincent van Gogh’ of ‘in impressionist style’. Ook kun je modifiers toevoegen voor materialen (‘made of glass’) of technieken (‘a pencil drawing’).

Sommige AI’s werken het best met dit alles in een lange zin (an oil painting of a park by Georges Seurat), terwijl andere het beter doen wanneer de prompt in stukken is gehakt (a park | oil painting | by Georges Seurat). Bij sommige AI’s kun je elementen zelfs extra nadruk geven door direct achter een trefwoord een dubbele punt en een cijfer te zetten waarbij hoger meer nadruk betekent. Alleen met experimenteren kom je er achter wat voor jouw favoriete AI het beste werkt.

15 Volop in ontwikkeling

Hoewel we slechts een fractie van de vele ontwikkelingen hebben kunnen bespreken, is duidelijk dat er volop interessante dingen gebeuren op het gebied van AI voor beeldbewerking. Als het gaat om Tekst To Image, gaan deze zelfs zo hard dat het niet onwaarschijnlijk is dat er al weer betere modellen beschikbaar zijn op het moment dat je dit artikel leest. We kunnen dan ook alleen maar eindigen met een klassieke zin uit de wereld van de strip: wordt vervolgd!

Online bronnen

Naast de in het artikel genoemde links, zijn er veel andere bronnen om zelf aan de slag te gaan of om informatie op te doen. Een kleine selectie:

www.openai.com/blog/dall-e

Informatie over het grootste TTI-systeem DALL-e.

https://kwikr.nl/pestudie

Een studie naar prompt engineering (pdf).

www.artbreeder.com

Maak, combineer en manipuleer afbeeldingen en korte video’s.

www.gaugan.org/gaugan2

Maak fotorealistische landschappen op basis van een schets.

https://kwikr.nl/dalmini

Een TTI-systeem.

https://rudalle.ru/en

Een groot TTI-systeem, het Russische antwoord op DALL-e.

https://kwikr.nl/fbnnr

Facebook-groep met afbeeldingen en video’s die we niet in dit artikel konden tonen.

▼ Volgende artikel
Docker op je NAS: zo draai je Plex, Home Assistant en meer
© Andrii - stock.adobe.com
Huis

Docker op je NAS: zo draai je Plex, Home Assistant en meer

Een NAS is voor de meeste gebruikers veel meer dan een netwerkschijf. Je kunt er eenvoudig extra toepassingen op draaien, bijvoorbeeld voor extra back-upmogelijkheden, productiviteit, multimedia en thuisautomatisering. Daarvoor is het vaak ook krachtig genoeg. Toepassingen kunnen bovendien bestanden op je NAS benutten. De makkelijkste manier om toepassingen te installeren en beheren is via Docker. We laten zien hoe je hiermee werkt op een NAS van Synology of QNAP.

In dit artikel

Je leest hoe Docker op een NAS werkt en waar je op moet letten bij Synology en QNAP. Je ziet hoe je images binnenhaalt, containers opzet en opslag goed regelt met bind mounts en volumes, zodat configuratie en data netjes op je NAS blijven staan. Ook leggen we uit hoe poortkoppelingen werken, wanneer Docker Compose handiger is dan losse containers en hoe je met Portainer het beheer overzichtelijker maakt.

Lees ook: Bouw je eigen dashboard met Homepage: al je webapplicaties overzichtelijk op één plek

Je hebt meestal geen zware server nodig voor toepassingen als Plex, Jellyfin, SABnzbd of Home Assistant. Een NAS is meestal krachtig genoeg. Soms is hooguit wat extra geheugen wenselijk. Zo heb je behalve je opslag ook al je toepassingen centraal. Mis je softwareopties op je NAS, bijvoorbeeld voor back-up of synchronisatie, dan is dat óók eenvoudig op te lossen met extra software. Maar hoe installeer je zulke toepassingen? Soms kun je een pakket installeren, bijvoorbeeld van SynoCommunity. Maar je moet dan precies de juiste variant vinden en er kunnen afhankelijkheden zijn, zoals php of Apache. Met Docker ben je veel flexibeler. Toepassingen zijn niet meer afhankelijk van de inrichting van je NAS en worden bovendien sneller bijgewerkt. Maar hoe werk je hier in de praktijk mee op een NAS? In dit artikel laten we dat zien. We beginnen met algemene uitleg over het werken met Docker op een NAS. Daarna behandelen we het downloaden van images en het maken en configureren van containers. We richten ons daarbij voornamelijk op Synology en QNAP. Heb je een NAS van een ander merk, dan zul je merken dat veel principes hetzelfde zijn. Bij het merk Ugreen lijkt de software bovendien sterk op die van Synology.

Containers of virtuele machines

Bij Docker draait een toepassing in een lichte en geïsoleerde container. De image, het uitgangspunt van een container, bevat alles wat de toepassing nodig heeft. Gegevens worden buiten de container opgeslagen, bijvoorbeeld in een gedeelde map op de NAS zelf. Een update is eenvoudig: je herbouwt gewoon de container op basis van een nieuwe image. Er zijn ook alternatieven, zowel bij QNAP als Synology. Zo kun je met virtuele machines werken, via Virtual Machine Manager (Synology) of Virtualization Station (QNAP). Maar in zo'n virtuele machine moet je een heel besturingssysteem installeren. Daar is een NAS niet altijd krachtig genoeg voor. Iets praktischer zijn de lichtgewicht Linux-containers die je bij QNAP kunt opzetten, maar dat vraagt meer technische kennis. Gevorderde gebruikers kunnen daarnaast bij QNAP vaak Kubernetes inzetten voor containerbeheer. Dat biedt veel mogelijkheden voor schaalbare omgevingen, maar is voor de meeste thuistoepassingen onnodig complex. Om snel een toepassing op je NAS te installeren, is Docker vrijwel ongeslagen.

Wat heb je nodig?

Niet alle modellen van Synology en QNAP ondersteunen Docker. Synology vereist een model met x86-cpu van Intel of AMD. Bij ARM-modellen kun je het soms via een omweg installeren, maar dat is niet officieel en ook niet zonder risico's. Verder hangt het van het model af. Vooral de Plus-series (zoals de DS224+ en DS923+) en hogere modellen ondersteunen Docker. Je kunt het eenvoudig controleren door in Synology Package Center te zoeken naar Container Manager (DSM 7.2 of hoger) of (als je een oudere DSM-versie hebt) naar Docker. Bij QNAP is de toepassing, onder de naam Container Station, beschikbaar via App Center. Het is geschikt voor de meeste niet al te oude modellen. Zowel bij Synology als QNAP is 2 GB werkgeheugen aanbevolen, maar we raden minimaal 4 GB RAM aan. Voor dit artikel gebruiken we een wat oudere Synology DS918+ en QNAP TS-453Be. Beide komen nog goed mee en beschikken over recente software.

Container Manager kun je vinden in Synology Package Center.

Opslag bij Docker

Belangrijke gegevens zoals configuratiebestanden, databases en cachebestanden worden in principe buiten een container bewaard. Dat kan op twee manieren. Normaal zal Docker voor de paden in de container die persistent moeten zijn een anoniem volume gebruiken. Dat krijgt een lange hash als naam. Je kunt ook zelf een naam toewijzen. We noemen dat dan een named volume. Die kun je makkelijker herkennen of hergebruiken in andere containers. De tweede optie is een zogeheten bind mount. Je koppelt dan de persistente paden in de container aan mappen op de host (het systeem waarop Docker draait), zoals je NAS. Zeker bij een NAS van Synology is dat het meest praktisch. Synology verbergt in de webinterface namelijk volumes, ook al zijn ze er wel! Bij een bind mount zie je de bestanden altijd netjes in de gedeelde mappen, zodat jij ze zelf kunt raadplegen of back-uppen.

QNAP maakt volumes met opslag voor een container wél zichtbaar.

Opslag bij een NAS

Voor het organiseren van je bestanden op een NAS gebruik je standaard al gedeelde mappen. Ga je met Docker werken, dan zul je óók zo'n map gebruiken voor de opslag voor je containers. Synology maakt die map standaard onder /docker. Bij QNAP is dat (meestal) /Container. Stel dat je WordPress wilt installeren. Het persistente pad in de container is in dit geval /var/www/html. Daar worden alle websitebestanden opgeslagen. Bij Synology zul je dan een map zoals /docker/wordpress maken die je bij de configuratie koppelt aan het container-pad /var/www/html. Er kunnen ook meerdere paden zijn. SearXNG gebruikt in de container bijvoorbeeld /etc/searxng voor de configuratie (zoals settings.yml) en /var/cache/searxng voor data en cachebestanden. Beide kun je dan koppelen met de NAS, bijvoorbeeld onder /docker/searxng/config en /docker/searxng/cache. Gebruik eventueel de bestandsbeheerder (zoals File Station) om de mappen vooraf aan te maken of aangemaakte bestanden te bekijken!

Het is handiger om gegevens van containers in een gedeelde map te bewaren.
Bestanden op je NAS gebruiken

Het mooie van Docker op een NAS is dat je een container toegang kunt geven tot bestanden op die NAS, zoals foto's, video's, documenten en back-ups. Je koppelt daarvoor gewoon de gewenste gedeelde mappen of submappen. Op die manier kun je bijvoorbeeld de muziekspeler NaviDrome direct toegang tot de muziek op de NAS geven. De muziek kun je daarna netjes georganiseerd bekijken en afspelen via de vlotte webinterface. Het werkt ook samen met verschillende bekende apps. Ook bijvoorbeeld voor video's zijn goede toepassingen beschikbaar, zoals Plex en Jellyfin. Of probeer eens een toepassing als Immich of Photoprism voor je fotobibliotheek.

Met NaviDrome kun je heel handig de muziek op je NAS beluisteren.

Werken met poorten

Containers gebruiken vaak één of meerdere poorten voor bijvoorbeeld een webinterface. Een voorbeeld is de webserver nginx met http-poort 80. Bij de configuratie koppel je die interne poort 80 aan een poort op de host en daarmee je lokale netwerk. Je kunt soms hetzelfde poortnummer (in dit voorbeeld 80) kiezen, maar dat hoeft niet. In dit geval is dat ook af te raden. Liever gebruik je een hogere, vrije poort. Let goed op de bezette poorten van de NAS zelf. Dat zijn er vaak best veel. Een voorbeeld is de veelgebruikte poort 8080 die QNAP voor de webinterface gebruikt. Bij Synology zie je een overzicht van gebruikte poorten in Configuratiescherm / Infocenter op het tabje Service. Bij QNAP ga je naar Systeem / Systeemstatus / Systeemdiensten. Een blok als 6000-6999 is bij beide merken een goede optie. Heb je een container gestart, dan moet je deze vaak even de tijd geven om te starten voordat je de webinterface kunt benaderen via de ingestelde poort.

Je maakt een koppeling tussen poorten op de host en poorten in de container.

Docker Compose

Bij een NAS kun je een container relatief makkelijk via een wizard starten. Maar de details die je opgeeft, zoals poorten en volumes, kun je naderhand niet aanpassen. Wil je iets veranderen, dan zul je een nieuwe container moeten maken met de juiste instellingen. Bij zowel Synology als QNAP kun je ook werken met Docker Compose. Bij Synology heet dit een project, QNAP noemt het een toepassing. Je kunt dan de instellingen voor één of meerdere containers beheren in één yaml-bestand, meestal met de naam docker-compose.yml. Een groot voordeel is dat je dan eenvoudiger achteraf de configuratie kunt aanpassen. Het werken met meerdere containers is bovendien veel overzichtelijker. Je groepeert ze samen in één bestand, ook wel 'stack' genoemd. En je kunt alle containers in één handeling starten, stoppen of verwijderen. Bij problemen zul je overigens wel nog steeds de individuele containers moeten inspecteren (zie kader 'Problemen oplossen').

Via een wizard kies je vooraf de gewenste instellingen voor een container.
Problemen oplossen

Heb je een probleem met een container? Open dan het overzicht met containers. Klik vervolgens op de naam van de container. De logboeken die je hier kunt bekijken, geven vaak goede aanwijzingen voor problemen. Ook als je met Docker Compose werkt, zul je bij problemen de individuele containers moeten inspecteren. Soms is het ook weleens handig om opnieuw te beginnen. Stop daarvoor eerst de relevante containers, verwijder de volumes én bestanden die in de gekozen gedeelde mappen zijn gemaakt en start je project opnieuw.

Synology: Docker installeren

Docker is meestal niet standaard geïnstalleerd. Je logt eerst in bij DSM, het besturingssysteem van je NAS. Vervolgens installeer je de toepassing via

Package Center. De toepassing heet Container Manager (sinds DSM 7.2) of (bij een eerdere versie) Docker. Bij de installatie wordt gevraagd om een brugnetwerk te configureren. Dat is het netwerk waarop containers intern communiceren. Je hoeft dit subnet (172.17.0.0/16) niet te veranderen, tenzij dit conflicteert met jouw eigen netwerk (wat heel zeldzaam is).

Installeer de toepassing via de downloadtool van je NAS.

Synology: images downloaden

Om een container met een bepaalde toepassing te starten, heb je een image nodig. Open daarvoor Container Manager en ga naar Register. Hier kun je images op naam opzoeken. Dubbelklik dan op een image om deze te downloaden. Vaak zul je de officiële of populairste optie kiezen. De images van LinuxServer.io zijn ook altijd goed. Omdat ze dezelfde opbouw en documentatie volgen, zijn ze herkenbaar en makkelijk te gebruiken. Je kunt bij het downloaden een tag kiezen. Vaak kies je latest voor de laatste stabiele versie. Alle images die je hebt gedownload, vind je terug onder Image. Als er updates zijn, kun je die daar ook downloaden. Je containers blijven overigens draaien op de versie waarmee ze zijn gemaakt. Pas als je een nieuwe container start, wordt de nieuwe image gebruikt.

Je kunt direct binnen Container Manager de gewenste images downloaden.

Synology: container maken

We gaan als voorbeeld een container voor SearXNG maken, een privacyvriendelijke zoekmachine die live resultaten bij andere zoekmachines ophaalt. Ga hiervoor naar Container en kies Maken. We gebruiken de image searxng/searxng. Bij het maken van de container hoef je bij Algemene instellingen niet veel te veranderen. Wel handig is de optie Automatisch opnieuw starten inschakelen, voor hogere beschikbaarheid. Op het tweede scherm, bij Geavanceerde instellingen, zie je onder het kopje Poortinstellingen dat deze toepassing in de container poort 8080 gebruikt. Bij Lokale poort kies je de lokale poort (op de host), zoals 8080 (of iets anders, als deze al in gebruik is). Na het maken van de container kun je de zoekmachine bereiken via de gekozen lokale poort, zoals http://ip-NAS:8080. Onder het kopje Volume-instellingen maak je zoals eerder toegelicht een bind mount. Koppel /docker/searxng/config met /etc/searxng en koppel /docker/searxng/cache met /var/cache/searxng. Via het venster kun je naar de map op de NAS bladeren om deze aan te wijzen (en eventueel ook aan te maken).

We maken koppelingen tussen gedeelde mappen en volumes in de container.

Synology: lokale bestanden gebruiken

Een van de voordelen is dat toepassingen bestanden op de NAS kunnen gebruiken. We noemden NaviDrome al, een populaire muziekspeler. Bij het maken van deze container koppel je poort 4533 aan de lokale poort, zoals 4533. Bij de volumes moet je opletten. NaviDrome gebruikt /data voor gegevensopslag en /music voor muziek. Koppel bij Volume-instellingen daarom bijvoorbeeld /docker/navidrome/data aan /data. Staat je muziek op de NAS onder /music/albums, dan koppel je precies die map aan /music in de container. Kies hier eventueel voor alleen leestoegang, omdat deze toepassing geen bestanden hoeft te wijzigen. Na het starten van de container zul je het programma even de tijd moeten geven om alle muziek te indexeren.

We geven NaviDrome toegang tot muziek op de NAS.

Synology: project maken

Wil je bij Synology met Docker Compose werken dan ga je naar Project en kies je Maken. Je kunt bij Bron kiezen om zelf een docker-compose.yml te uploaden, maar ook een nieuw bestand maken. Dat laatste heeft meestal de voorkeur. Je kunt de configuratie dan in het venster plakken en meteen nog wat persoonlijke aanpassingen maken. We nemen WordPress als voorbeeld dat twee containers heeft: één voor WordPress zelf en één voor een database (zoals MySQL of MariaDB). Je zet ze samen in één project en beheert ze daarna als geheel, in plaats van als twee losse containers. Bij Naam van project vullen we in wordpress (alleen kleine letters). Bij Pad kiezen we een gedeelde map op de NAS, zoals /docker/wordpress. Bij Bron kiezen we voor het maken van een docker-compose.yml. Hieronder zie je het voorbeeld voor de officiële image voor WordPress, waar we wat aanpassingen in gaan maken voor de NAS:

services:

  wordpress:

    image: wordpress

    restart: always

    ports:

      - 8080:80

    environment:

      WORDPRESS_DB_HOST: db

      WORDPRESS_DB_USER: exampleuser

      WORDPRESS_DB_PASSWORD: examplepass

      WORDPRESS_DB_NAME: exampledb

    volumes:

      - wordpress:/var/www/html

  db:

    image: mysql:8.0

    restart: always

    environment:

      MYSQL_DATABASE: exampledb

      MYSQL_USER: exampleuser

      MYSQL_PASSWORD: examplepass

      MYSQL_RANDOM_ROOT_PASSWORD: '1'

    volumes:

      - db:/var/lib/mysql

volumes:

  wordpress:

  db:

Begin met het maken van een nieuw project.

Synology: configuratie aanpassen

Hoewel de configuratie werkt, zijn enkele aanpassingen wel wenselijk. In het voorbeeld worden twee named volumes gebruikt, terwijl bind mounts handiger zijn, zeker bij Synology. Daarom halen we de onderste drie regels weg. We maken op de NAS de mappen /docker/wordpress/db en /docker/wordpress/html aan. Ten slotte passen we het volume aan voor de twee containers. Voor WordPress wordt dit als volgt:

- /volume1/docker/wordpress/html:/var/www/html

Voor de database passen we het aan naar:

- /volume1/docker/wordpress/db:/var/lib/mysql

Controleer op jouw NAS of de volumenaam volume1 klopt. Kies ook een betere gebruikersnaam en een sterker wachtwoord voor de database. Let wel op: wat je bij WORDPRESS_DB_USER en WORDPRESS_DB_PASSWORD invult, moet hetzelfde zijn als bij MYSQL_USER en MYSQL_PASSWORD. MySQL maakt met die toegangsgegevens de database, terwijl WordPress ze gebruikt om daar toegang toe te krijgen.

Je kunt de configuratie via een YAML-bestand aanpassen.

Nieuwe NAS? Kijk en vergelijk op Kieskeurig.nl

QNAP: Docker installeren

Om Docker te installeren op je NAS van QNAP log je eerst in bij het besturingssysteem QTS. Daarna installeer je de toepassing via App Center. Je vindt het onder de naam Container Station. De installatie wijst zichzelf. Als je de toepassing de eerste keer start, wordt gevraagd waar je gegevens van containers op wilt slaan. Je kunt de standaardmap /Container accepteren.

Installeer de toepassing via de downloadtool van je NAS.

QNAP: image zoeken en gebruiken

Voor het zoeken van een image open je Container Station en klik je op Verkennen. Hier kun je images op naam opzoeken. Voor Docker gebruik je de resultaten van Docker Hub, de centrale verzamelplek voor Docker-images. Kies bij de gewenste image de optie Implementeer. Je kunt dan een tag kiezen (zoals latest). Vervolgens kun je direct de container configureren. Dit behandelen we in de volgende stap. Voor een overzicht van alle gedownloade images kun je naar Installatiekopieën. Wij installeren ook in dit voorbeeld een container voor SearXNG.

Gebruik voor Docker de resultaten van Docker Hub.

QNAP: container configureren

Bij de configuratie van de container kan de optie Standaardpoort voor web-URL wat verwarrend zijn. In feite maakt Container Station op basis van die poort een klikbare link die je in de webinterface ziet om de container te openen in je browser. Je kunt het dus zien als een soort shortcut. Je moet daaronder dus nog steeds de benodigde poorten openstellen. In dit voorbeeld vul je dus achter Host een poortnummer in, zoals 8000 (8080 is bij QNAP bezet!). Verander de poort bij Container (8080) niet. Vul bij Standaardpoort voor web-URL ook 8000 in, zodat de shortcut ook werkt.

Om andere opties in te kunnen stellen, zoals opslag, klik je op Uitgebreide instellingen.

Let bij de configuratie van de container vooral op de lokale poort.

QNAP: opslag configureren

SearXNG heeft in de container de persistente paden /etc/searxng en /var/cache/searxng. Bij QNAP kun je prima met (anonieme of named) volumes werken. In dit voorbeeld zullen we dat doen voor de wegwerpbare cachebestanden. Voor de configuratiebestanden maken we via File Station vooraf een map aan onder /Container/searxng/config. Achter Volume vullen we nu de naam searxngcache in, in het deel waar bij Container het pad /var/cache/searxng staat. Hier wordt dan een named volume voor gemaakt. We verwijderen de andere optie (met het pad /etc/searxng). Via het pijltje achter Voeg volume toe kiezen we Gekoppelde hostlocatie binden. Blader dan achter Host naar de zojuist gemaakte map (/Container/searxng/config). Achter Container vul je het pad /etc/searxng in. SearXNG zal zijn configuratie nu in de gekozen map bewaren en de cache in een named volume. Rond het maken van de container af. Die zal daarna worden gestart. Onder Volumes zie je alle volumes die zijn gemaakt, zoals searxngcache. Merk op dat In gebruik hier betekent dat het volume is gekoppeld aan een container, en dus niets over de status van de container zegt! Je kunt ongebruikte volumes eventueel verwijderen.

We gebruiken een named volume voor cache en een bind mount voor de configuratie.

QNAP: toepassingen

QNAP ondersteunt het werken met Docker Compose. Hiervoor ga je naar Toepassing en kies je Maken. Bij Naam van de toepassing vul je een herkenbare naam in. Daaronder kun je de yaml-code invullen. Voor SearXNG, ingesteld zoals hiervoor met een bind mount voor de configuratiebestanden en een named volume voor cache, vul je het in zoals hieronder. Let op het absolute pad /share/Container/searxng/config. Dat is hoe je naar die map moet verwijzen. De code is als volgt:

services:

  searxng:

    image: searxng/searxng

    container_name: searxng

    restart: unless-stopped

    ports:

      - "8000:8080"

    volumes:

      - /share/Container/searxng/config:/etc/searxng

      - searxngcache:/var/cache/searxng

volumes:

  searxngcache:

Het maken van eventuele aanpassingen is niet heel intuïtief. Je gaat hiervoor naar Toepassingen en klikt achter de toepassing op het instellingenicoontje. Kies dan de optie Opnieuw maken. Je kunt nu de yaml-code bewerken. Na het maken van de aanpassingen zal een nieuwe container worden opgebouwd met deze nieuwe configuratie.

QNAP ondersteunt ook het werken met Docker Compose.
Beheer containers op je NAS met Portainer

Het kan om meerdere redenen praktisch zijn om Portainer te installeren op je NAS, een grafische webinterface voor het beheer van je containers. Het is wat overzichtelijker en er blijft, zeker in vergelijking met Container Manager van Synology, minder verborgen. Je kunt Portainer gewoon via Docker installeren. Het is handig eerst een map te maken voor Portainer, waar het zijn configuratie persistent kan bewaren. Maak dan een project in Container Manager met de onderstaande configuratie:

services:

  portainer:

    image: portainer/portainer-ce:latest

    container_name: portainer

    restart: always

    ports:

      - "9443:9443"   # HTTPS toegang

      - "9000:9000"   # (optioneel, oudere HTTP-poort)

    volumes:

      - /var/run/docker.sock:/var/run/docker.sock

      - /volume1/docker/portainer:/data

Bij QNAP kun je dezelfde configuratie gebruiken, maar vervang dan /volume1/docker/portainer:/data door /share/Container/portainer:/data. Na het starten zie je op https://ip-NAS:9443 (of http://ip-NAS:9000) de webinterface van Portainer. De eerste keer wordt gevraagd om een wachtwoord aan te maken. Portainer heeft (ook) een kleine leercurve, maar het geeft je veel opties, en werkt op elk systeem hetzelfde.

Je kunt nu in Portainer alles rondom Docker beheren, zoals containers en images.
▼ Volgende artikel
Liebherr IRd 3900: waarom dit de favoriete inbouwkoelkast van 2025 is
Huis

Liebherr IRd 3900: waarom dit de favoriete inbouwkoelkast van 2025 is

Wat maakt een koelkast de allerbeste van het jaar? Niet een glanzende folder vol beloftes, maar de dagelijkse ervaringen van echte gebruikers. De Liebherr IRd 3900 is door consumenten van Kieskeurig.nl bekroond met de prestigieuze Best Reviewed van het Jaar-award 2025. Van de slimme EasyFresh-technologie tot het fluisterstille ontwerp en de praktische indeling: lees waarom dit model als de absolute favoriet uit de bus kwam en waarom gebruikers er zo enthousiast over zijn.

Partnerbijdrage - in samenwerking met Liebherr

Wie een inbouwkoelkast zoekt, heeft enorm veel keuze, maar één model wist het afgelopen jaar de harten van de Nederlandse consument echt te veroveren. Met zijn doordachte design, gebruiksvriendelijke bediening en bewezen betrouwbaarheid is de Liebherr IRd 3900 uitgeroepen tot Best Reviewed van het Jaar 2025. In dit artikel lees je wat deze inbouwkoelkast zo bijzonder maakt – en waarom gebruikers er zo lovend over zijn.

De stem van de consument: Best Reviewed 2025

De beste keuze volgens consumenten – dat is waar het bij Best Reviewed 2025 om draait. Want niets zegt zo veel als de ervaring van andere gebruikers. Jaarlijks delen duizenden consumenten hun eerlijke mening op Kieskeurig.nl. Hun reviews vormen de basis voor de Best Reviewed-awards. De producten die deze titel verdienen, hebben zich een heel jaar lang bewezen in de praktijk: ze blinken uit in kwaliteit, gebruiksgemak en klanttevredenheid. Absolute consumentenfavorieten dus – en in de categorie inbouwkoelkasten is de Liebherr IRd 3900 de winnaar geworden.

Van EasyFresh tot verstelbare indeling

De Liebherr IRd 3900 is een inbouwkoelkast die laat zien waarom het Duitse merk al jaren bekendstaat om betrouwbaarheid en technische vernieuwing. Deze koelkast combineert een strak, tijdloos design met praktische functies die het dagelijks leven makkelijker maken. Dankzij het EasyFresh-systeem blijven groenten en fruit langer vers: de ideale luchtvochtigheid in de lade voorkomt uitdroging en zorgt dat smaak en textuur behouden blijven. Dat maakt het apparaat niet alleen zuinig in gebruik, maar helpt ook voedsel langer goed te houden en verspilling te beperken.

©Liebherr

Wie de deur opent, merkt direct de doordachte indeling. Het interieur en de deurvakken zijn over de volledige hoogte verstelbaar, zodat je er moeiteloos alles in kwijt kunt wat koel moet blijven: of dat nu hoge flessen zijn of een brede ovenschotel. Fijn daarbij is dat de glazen draagplateaus tot wel 30 kg kunnen dragen. Daarbij zorgt de heldere LED-plafondverlichting voor een perfect overzicht, zelfs wanneer de koelkast vol is. De bediening verloopt via een intuïtief Touch-display, waarmee je supersnel de temperatuur of functies kunt aanpassen. Bovendien is de IRd 3900 voorbereid op SmartHome-toepassingen (accessoire). Liebherr biedt, na registratie, maar liefst 10 jaar garantie op dit model – dat doe je als merk natuurlijk alleen maar wanneer je helemaal overtuigd bent van je product.

©Liebherr

Waarom gebruikers enthousiast zijn

Die combinatie van slimme technologie en gebruiksgemak is ook precies wat consumenten zo waarderen. Uit tientallen reviews op Kieskeurig.nl blijkt dat gebruikers de IRd 3900 een uitzonderlijk hoge gemiddelde score van 9,1 geven. De koelkast wordt geroemd om zijn stille werking – "Dan zet je hem aan en hoor je nagenoeg niets! Heerlijk stille koelkast!" – en om de praktische indeling die volgens velen "fijn en flexibel" is. Ook wat betreft dagelijks gemak scoort de IRd 3900 hoog. "Door het digitale display makkelijk in te stellen naar de gewenste koeltemperatuur", zegt een van de reviewers. Een ander voegt daar nog aan toe: "Mooie heldere verlichting … Makkelijke display, goed zichtbaar en makkelijk te bedienen." Daarnaast valt op dat veel reviewers de energiezuinigheid en afwerking noemen als pluspunten: het apparaat voelt degelijk aan en doet precies wat het belooft.

©Liebherr

Een optelsom van kwaliteiten

De reden dat de Liebherr IRd 3900 de titel Best Reviewed van het Jaar 2025 heeft gewonnen, ligt dus in de optelsom van al deze kwaliteiten. Hij combineert gedegen techniek met praktische voordelen die in het dagelijks leven écht verschil maken. Of het nu gaat om de versheid van producten, het handige display of het overzichtelijke interieur: deze inbouwkoelkast weet consumenten te overtuigen in alles wat ertoe doet. En dat maakt de Liebherr IRd 3900 niet alleen een technisch sterk product, maar vooral een betrouwbare huisgenoot waar mensen jarenlang plezier van hebben.

Een eerlijk oordeel

Natuurlijk is geen enkel product perfect. Gebruikers op Kieskeurig.nl zijn ook kritisch: sommige kopers vinden de groente- en fruitlade aan de kleine kant of noemen dat er sneller condens kan ontstaan. Een paar mensen geven ook aan dat je even moet wennen aan het instellen via het display, en dat de montage van de deur wat meer aandacht vraagt. Tegelijk zie je waarom dat voor de meeste kopers geen struikelblok is. Ze benadrukken vooral hoe stil de koelkast is, hoe ruim hij aanvoelt en hoe makkelijk je de indeling aanpast aan wat je in huis haalt. Daardoor wegen die minpunten voor veel mensen niet op tegen wat je dagelijks merkt: rust in de keuken, goed overzicht en een indeling die je naar eigen wens kunt aanpassen.

Ontdek alle pluspunten van de Liebherr IRd 3900

Op Kieskeurig.nl