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
AMD hint naar komst van nieuwe Xbox in 2027
© Reshift Digital BV
Huis

AMD hint naar komst van nieuwe Xbox in 2027

AMD lijkt te hinten naar de mogelijkheid dat de volgende generatie Xbox-console in 2027 verschijnt.

Tijdens de bekendmaking van fiscale kwartaalcijfers meldde Lisa Su, de ceo van AMD, het volgende (via PC Mag): "Qua producten loopt Valve op schema om begin dit jaar de op AMD-technologie draaiende Steam Machine uit te brengen, en de ontwikkeling van Microsofts volgende generatie van Xbox met een deels op maat gemaakte SoC boekt progressie om een release in 2027 te ondersteunen."

Met SoC bedoelt Su 'system-on-a-chip', waarbij de meeste componenten die nodig zijn voor een computer of console op een allesomvattend circuit geplaatst worden. Dit is meestal de standaard bij spelcomputers.

2027 of later?

Microsoft kondigde eerder al aan dat het samen met AMD aan een nieuwe console werkt, maar een precieze releasedatum werd toen niet gegeven. Gezien Su's opmerking, lijkt AMD dus te verwachten dat de spelcomputer in 2027 verschijnt.

Dit terwijl de PlayStation 6 - Sony's nieuwe console - volgens geruchten mogelijk intern wordt uitgesteld zodat het pas later dit decennium verschijnt. Dit deels vanwege de stijgende kosten voor RAM in verband met de benodigdheden voor het draaiende houden van AI in combinatie met het huidige economische milieu. Officieel is niet bekend wanneer de PS6 uit moet komen, maar in deze column stelden we onlangs dat het geen slecht idee is om de console pas over een aantal jaar uit te brengen.

Wat weten we over de nieuwe Xbox?

Microsoft bevestigde eerder al dat de volgende Xbox veel eigenschappen zal delen met pc's. Zo zouden er meerdere gamewinkels op beschikbaar komen naast de Xbox Store zelf - net zoals de uitgekomen ROG Xbox Ally dus. Dat zou betekenen dat bijvoorbeeld Steam en Epic Games Store ook op het apparaat te bezoeken zijn, en er via die weg pc-games gekocht kunnen worden.

Begin dit jaar kwamen er ook geruchten naar buiten dat de nieuwe Xbox-interface zou draaien op de Full Screen Experience van de Xbox pc-app, dat onderdeel uitmaakt van Windows. De volgende Xbox zou volgens geruchten draaien op de AMD Magnus APU, die inderdaad CPU en GPU in één chip combineert.

Nieuw op ID: het complete plaatje

Misschien valt het je op dat er vanaf nu ook berichten over games, films en series op onze site verschijnen. Dat is een bewuste stap. Wij geloven dat technologie niet stopt bij hardware; het gaat uiteindelijk om wat je ermee beleeft. Daarom combineren we onze expertise in tech nu met het laatste nieuws over entertainment. Dat doen we met de gezichten die mensen kennen van Power Unlimited, dé experts op het gebied van gaming en streaming. Zo helpen we je niet alleen aan de beste tv, smartphone of laptop, maar vertellen we je ook direct wat je erop moet kijken of spelen. Je vindt hier dus voortaan de ideale mix van hardware én content.

▼ Volgende artikel
Je NAS veilig bereiken via een VPN-server, Tailscale of Cloudflare-tunnel
© ER | ID.nl
Huis

Je NAS veilig bereiken via een VPN-server, Tailscale of Cloudflare-tunnel

Wil je een NAS op afstand gebruiken, dan doe je dat liefst natuurlijk veilig. Bijvoorbeeld door een VPN-server op te zetten, of een tunnel met extra toegangscontrole. Hiervoor zijn diensten als Tailscale en Cloudflare heel geschikt. In deze masterclass nemen we de beste opties met je door. We leggen uit wat de voor- en nadelen zijn en hoe je ze kunt gebruiken in combinatie met een NAS.

Een NAS is breed inzetbaar en bij veel huishoudens de spil in het netwerk. Je kunt niet alleen je documenten centraal bewaren, maar ook bijvoorbeeld media streamen naar je tv, foto’s bekijken op je tablet en talloze extra toepassingen installeren. Heb je (een deel van) deze toepassingen ook af en toe op afstand nodig? Het openzetten van een poortje in de router of het gebruik van een reverse proxy kan daarvoor een prima optie zijn. Maar publieke toegang is niet altijd nodig. Er zijn betere opties als je vooral voor jezelf goed beveiligde externe toegang tot je NAS nodig hebt. Een eenvoudige optie is een cloudservice van de fabrikant, zoals Synology QuickConnect. Betere en veiligere opties zijn een VPN-server met een protocol als OpenVPN of WireGuard, Tailscale (dat op de achtergrond met WireGuard werkt) of een Cloudflare-tunnel. In deze masterclass leggen we uit hoe je ze gebruikt. Wat je kiest, hangt ook af van je doel. Bij elke optie behandelen we de eventuele beperkingen. Voordat je begint, is het ook verstandig de beveiliging van je NAS nog even door te lichten (zie kader).

Optimale beveiliging voor je NAS

Bij het openstellen van je NAS is een goede beveiliging extra belangrijk. Ongeoorloofde toegang tot je NAS zul je altijd willen voorkomen. Gebruik altijd sterke wachtwoorden voor je gebruikersaccounts. Deactiveer bovendien de algemene accounts zoals admin en guest. Zet tweestapsverificatie aan. Hierbij wordt na het inloggen om een extra toegangscode gevraagd die je kunt genereren met een app op je smartphone. Op vertrouwde apparaten hoef je dat maar één keer te doen. Bij Synology vind je deze opties in je configuratiescherm, onder Beveiliging / Account. Je kunt kiezen voor welke gebruikers dit moet worden ingeschakeld. Bij QNAP ga je hiervoor in je configuratiescherm naar Systeem / Beveiliging. Open dan het tabblad Verificatie in 2 stappen. Maak ook gebruik van de ingebouwde firewall van je NAS, waarin je toegangsregels kunt instellen! In deze masterclass geven we daar tips voor. Zorg ten slotte dat je een goede back-upstrategie hebt voor de bestanden op je NAS.

Het is verstandig om tweestapsverificatie aan te zetten op je NAS.

Wat is een cloudservice?

Via een cloudservice kun je toegang tot een NAS vereenvoudigen door een soort tunnel op te zetten. Bij Synology heet dit QuickConnect, QNAP noemt het myQNAPcloud link. Hierbij wordt vanaf de NAS een uitgaande verbinding opgezet met een server, waardoor het firewalls omzeilt (ook die in je NAS!). De NAS geef je een herkenbare naam, ook wel QuickConnect ID of QNAP ID genoemd, die je ook gebruikt om te verbinden. Hierbij wordt eerst geprobeerd rechtstreeks verbinding te maken, wat ook het meest efficiënt is. Als dat mislukt, wordt de verbinding automatisch omgeleid via een relayserver, die als tussenpersoon het verkeer doorstuurt. De snelheid kan dan minder hoog zijn. We noemen hieronder alleen de dienst van Synology, omdat het een betere bescherming biedt en een betere reputatie heeft dan myQNAPcloud link. Zorg wel altijd zelf voor een goede basisbeveiliging. Overweeg veiligere methoden zoals een VPN of Tailscale. Het is veiliger en je bent niet afhankelijk van andere partijen (zoals een relayserver).

Diensten als myQNAPcloud link creëren een soort tunnel naar je NAS.

Synology QuickConnect

Bij Synology QuickConnect koppel je eerst je NAS aan een Synology-account. Daarna kun je een QuickConnect ID kiezen. Je NAS is daarna bereikbaar vanuit de Synology-apps of een browser via het adres https://quickconnect.to/ met daarachter de QuickConnect ID. Dit werkt ook bij een dynamisch ip-adres, dus je hoeft niet apart een Dynamic DNS-functie (DDNS) te gebruiken. Om QuickConnect te gebruiken open je Configuratiescherm. Ga dan naar Externe toegang. Zet een vinkje bij QuickConnect inschakelen. Hierna moet je je aanmelden met je Synology-account of een nieuw account maken. Vervolgens kies je een QuickConnect ID. Via de instellingen kun je nog kiezen of de relayserver mag worden gebruikt en welke toepassingen via QuickConnect toegankelijk zijn.

Via de instellingen kies je welke toepassingen toegankelijk moeten zijn.

Wat is VPN?

Door een VPN-server te installeren, heb je een ideale voorziening om op afstand je netwerk te bereiken en alle apparaten op dat netwerk, zoals je NAS, netwerkprinters en camera’s. Je installeert de VPN-server op één systeem, zoals een router, server, Raspberry Pi of je NAS. Bij Synology kun je bijvoorbeeld standaard met OpenVPN werken en QNAP ondersteunt het snellere WireGuard. We laten zien hoe je deze opties gebruikt. Na inloggen heb je volledige toegang tot je netwerk en alle toepassingen in het netwerk, alsof je rechtstreeks op het netwerk zit. Voor toegang tot bestanden op je NAS werken daarom alle protocollen als smb, nfs en WebDAV en toepassingen als Synology Drive en QNAP File Station. Je hoeft geen poorten in je router open te zetten, behalve een enkele poort naar de VPN-server.

Bij QNAP kun je standaard werken met WireGuard.

OpenVPN op Synology

Om je Synology-NAS als VPN-server in te zetten, kun je de toepassing VPN Server installeren via Package Center. Gebruik je een firewall, controleer dan of de benodigde poorten toegankelijk zijn. Bij de installatie kun je die aanpassing via een venster direct doorvoeren. Afhankelijk van het protocol moet je ook nog één of meerdere poorten doorsturen van je router naar je NAS. De toepassing ondersteunt PPTP, OpenVPN en L2TP/IPSec. Eigenlijk is vooral OpenVPN interessant. Het is veilig en stabiel, maar niet zo snel als WireGuard. Ook geeft het soms wat uitdagingen bij het opzetten van de verbinding.

Synology ondersteunt meerdere protocollen, waaronder OpenVPN.

Activeren OpenVPN

Om OpenVPN te gebruiken open je VPN Server. Ga dan naar OpenVPN. Zet een vinkje bij OpenVPN-server inschakelen. Bij Dynamisch ip-adres zie je het subnet dat OpenVPN gebruikt. De verbonden clients krijgen een ip-adres in dat bereik. Bij Poort en Protocol zie je dat standaard udp-poort 1194 wordt gebruikt. Die poort moet je doorsturen van je router naar je NAS. Controleer of de poort toegankelijk is in de firewall van je NAS. Voor een goede balans tussen snelheid en veiligheid kun je bij Codering bijvoorbeeld AES-128-CBC kiezen en bij Verificatie de optie SHA256. De optie Compressie op de VPN-koppeling inschakelen mag uit, omdat het weinig snelheidswinst geeft. Zet de optie Clients toegang geven de LAN-server aan, zodat je andere apparaten in je thuisnetwerk kunt bereiken. Zet ook de optie Verifieer TLS auth-sleutel aan. Klik op Toepassen om de instellingen te activeren. Je kunt nu clients gaan configureren.

Bij OpenVPN kun je zelf nog enkele instellingen kiezen.

Profiel voor OpenVPN

Ga naar OpenVPN en kies Configuratie exporteren om het configuratiebestand te exporteren als zip-bestand. Hierin vind je een .ovpn-bestand dat je nodig hebt voor toegang. Je hebt ook een gebruikersaccount nodig bij het inloggen. Onder Rechten kun je aanvinken welke gebruikers toegang hebben en via welke protocollen. Maak eventueel een nieuwe gebruiker voor alleen de VPN-verbinding! Open het bestand VPNConfig.ovpn met een teksteditor. Omdat je de VPN-server extern wilt gebruiken, verander je in onderstaande regel YOUR_SERVER_IP naar je ip-adres van je internetverbinding of de hostnaam als je bijvoorbeeld Dynamic DNS gebruikt. Synology ondersteunt ook Dynamic DNS en geeft bijvoorbeeld een naam.synology.me-adres. Je kunt het activeren in je configuratiescherm onder Externe toegang / DDNS. Het gaat om deze regel:

remote YOUR_SERVER_IP 1194

Je ziet ook de onderstaande optie. Haal hier eventueel het commentaarteken weg als je wilt dat ál het verkeer, dus ook het normale internetverkeer, via de VPN-server gaat. Dat geeft minder goede prestaties, maar is wel veiliger als je bijvoorbeeld een openbare wifi-hotspot gebruikt. Dit is de regel waar je het commentaarteken weg kunt halen:

#redirect-gateway def1

Gebruik dit profiel om verbinding te maken vanaf andere apparaten. Zet hierbij de optie aan dat zonder certificaat verbinding mag worden gemaakt.

WireGuard op QNAP

We zullen laten zien hoe je WireGuard op je QNAP-NAS gebruikt in combinatie met een Windows-client. Voor meer informatie over WireGuard en het opzetten van een aparte VPN-server verwijzen we je naar een eerder artikel dat je kunt lezen via www.kwikr.nl/wgvpn waarin dat uitgebreid aan bod komt. Zorg bij QNAP dat de toepassing QVPN Service is geïnstalleerd via App Center. Open dan de toepassing en ga naar WireGuard. Zet een vinkje bij WireGuard VPN-server inschakelen. Vul een naam in achter Servernaam. Klik achter Persoonlijke sleutel op Codeparen genereren. Noteer de waarde bij Openbare sleutel: die is straks nodig bij de configuratie van clients. Achter Luisterpoort zie je de poort (udp) die je moet doorsturen in de router. Bij DNS Server vul je een openbare DNS-server in (zoals 8.8.8.8) óf een DNS-server in je lokale netwerk. Klik op Toepassen om de instellingen te bewaren. Klik op Peer toevoegen. Hier kun je clients toevoegen (zie volgende stap).

De instellingen voor WireGuard bij een NAS van QNAP.

Client instellen

Elk apparaat dat verbinding met WireGuard maakt, is een zogenoemde peer. Voor het toevoegen van een apparaat kies je bij QNAP de optie Peer toevoegen. Vul een herkenbare naam in. De waarde bij Openbare sleutel komt bij deze ‘peer’ vandaan, die gaan we nu eerst instellen. Installeer en open de Windows-client en kies de optie Add Empty Tunnel. Er worden een privé- en openbare sleutel gegenereerd. Er opent een configuratiebestand met de privésleutel waarin je onder andere deze twee regels ziet:

[Interface]

PrivateKey = +MSQ3D2+M71SotRrWC3hnPyzYSTWNuaxWwc920=

Vul deze configuratie verder aan zoals in het voorbeeld hieronder. Bij Address kies je een vrij ip-adres binnen het VPN-subnet, dat nog niet door een andere peer wordt gebruikt. Je kunt dit voor elke client ophogen, dus 198.18.7.2/32, 198.18.7.3/32, en zo verder. Belangrijk is dat je bij PublicKey de openbare sleutel die QNAP laat zien invult. Bij Endpoint vervang je ipadres door het ip-adres (of de hostnaam) van je internetverbinding thuis. Dit is de configuratie die je moet aanpassen:

[Interface]

PrivateKey = +MSQ3D2+M71SotRrWC3hnPyzYSTWNuaxWwc920=

ListenPort = 51820

Address = 198.18.7.2/32

DNS = 1.1.1.1

[Peer]

PublicKey = KsCc+cRucH4F8T3VdyatvZXjqvunEerBZapulE=

AllowedIPs = 0.0.0.0/0

Endpoint = ipadres:51820

Bewaar de configuratie met Save. Kopieer nu de waarde bij Public key van deze client. Je leest deze af in het hoofdvenster van WireGuard (zorg dat de bewuste tunnel is geselecteerd). Plak deze in QNAP bij Openbare sleutel bij de configuratie van deze peer. Je kunt nu verbinding maken met je Windows-client!

Voltooi de configuratie voor de Windows-client voor WireGuard.

Firewall instellen voor je NAS

Een firewall op je NAS biedt extra bescherming. Bij Synology open je daarvoor Configuratiescherm. Ga dan naar Beveiliging en open het tabblad Firewall. Zet een vinkje bij Firewall inschakelen en kies Toepassen. Bij Firewallprofiel kun je een profiel kiezen of bewerken. Kies Regels bewerken om het huidige profiel aan te passen. Begin met een regel die alle apparaten op het lokale netwerk toestaat. Kies bij die regel bij Poorten de optie Alles. Bij Bron-IP kies je Specifiek ip. Klik daarachter op Selecteren en kies Subnet. Je moet hier het netwerkbereik van je router kennen. In veel gevallen is dat iets als 192.168.1.0 met subnetmasker 255.255.255.0. Dit omvat dan alle adressen van 192.168.1.0 t/m 192.168.1.255. Voeg hierna nog specifieke regels toe voor toepassingen die van buitenaf toegang moeten hebben. In dit voorbeeld staan we bijvoorbeeld SSH toe vanaf een bepaald ip-adres. Heel belangrijk is dat je als laatste een regel toevoegt die alles blokkeert. De regels worden namelijk van boven naar beneden doorlopen en bij de eerste match stopt de verwerking. Het configuratiescherm van QNAP biedt ook een firewall, maar dat is meer een soort toegangsfilter. Voor uitgebreidere opties kun je QuFirewall installeren via App Center.

Het is raadzaam om de firewall op je NAS te gebruiken voor toegangsbeperking.

Wat is Tailscale?

Met Tailscale kun je een virtueel privénetwerk maken tussen al je apparaten. Dit gebeurt op basis van identiteit, met bijvoorbeeld een standaard Google-account voor autorisatie. Je kunt alle toegevoegde apparaten benaderen via een intern ip-adres of de toegekende hostnaam. Tailscale gebruikt dezelfde technologie als WireGuard, wat het snel, veilig en betrouwbaar maakt. Je hebt geen centrale server nodig en hoeft ook geen poorten in je router open te zetten. Wel moet je elk apparaat in principe afzonderlijk aan je privénetwerk toevoegen. Dat is eenvoudig, ook voor een NAS, zoals je hieronder ziet. Als alternatief kun je Tailscale ook op één apparaat in je netwerk installeren en dat apparaat als subnetrouter instellen, zodat je via dat ene systeem toegang hebt tot alle andere apparaten in je netwerk. In dat geval hoef je Tailscale niet op elk afzonderlijk apparaat te installeren. Meer uitleg over Tailscale vind je in dit artikel.

Met Tailscale kun je een privénetwerk voor je apparaten maken.

Eerste stappen

Ga naar https://tailscale.com en kies de optie Get started. Log in met een van de ondersteunde identiteitsproviders, bijvoorbeeld een standaard Google-account of een van de andere opties. Hierna wordt automatisch je Tailscale-netwerk, of kortweg tailnet, gemaakt. Dat is een soort privé-VPN-netwerkje waar jouw apparaten deel van uit gaan maken. Als je op een ander apparaat inlogt met datzelfde account, is het bereikbaar vanuit je andere apparaten in dit tailnet. Een gratis account ondersteunt tot drie gebruikers en honderd apparaten.

Log in bij Tailscale met bijvoorbeeld je Google-account.

Apparaten toevoegen

Het toevoegen van apparaten is eenvoudig. Het volstaat om de software te installeren en in te loggen met dezelfde identiteitsprovider. Om Tailscale bijvoorbeeld op een iPad te gebruiken, installeer je eerst de toepassing via de App Store. Hierbij wordt een VPN-configuratie voor je iPad gemaakt. Daarna log je in en zie je een lijst met apparaten in je privénetwerkje, waarbij je ook de namen af kunt lezen.

Op een iPad maakt Tailscale een VPN-profiel aan.

Tailscale op je NAS

Je kunt Tailscale ook op een NAS installeren. Bij Synology zoek je daarvoor in Package Center naar Tailscale. Bij QNAP kun je in App Center terecht. Installeer en open de toepassing. Er wordt gevraagd om in te loggen, waarbij je weer hetzelfde account als hiervoor gebruikt. Zet daarna de verbinding op via Connect. Als je nog een keer de Tailscale-app opent, kun je details zien over het bewuste apparaat, zoals het ip-adres en de hostnaam die je kunt gebruiken om verbinding te maken.

Tailscale is als pakket beschikbaar voor Synology en QNAP.

Wat is een Cloudflare-tunnel?

Bij een Cloudflare-tunnel installeer je op één systeem in je netwerk (bijvoorbeeld je NAS) een klein programma, dat van binnenuit een versleutelde verbinding opzet naar Cloudflare. Daarna kun je toepassingen individueel toevoegen die deze tunnel mogen gebruiken. Daarbij kun je elke toepassing een eigen subdomein geven, zoals nas.domein.nl voor je NAS. De tunnel laat geen netwerkprotocollen zoals SMB en NFS door en WebDAV is een uitdaging. Het is vooral bedoeld voor webverkeer. Je kunt incidenteel wel bijvoorbeeld DS File gebruiken, voor het browsen door je bestanden en kleine uploads of downloads.

Bij Cloudflare kun je gratis een tunnel opzetten voor toegang op afstand.

Domein registreren

Log in bij Cloudflare met een bestaand account of maak een nieuw gratis account. Registreer een domeinnaam via Add / Register a domain of voeg een bestaand domein toe via Add / Connect a domain. In dat laatste geval moet je de DNS-instellingen bij je huidige provider aanpassen, zodat de nameservers naar die van Cloudflare verwijzen. Afhankelijk van de extensie betaal je bij Cloudflare vanaf zo’n 6 dollar per jaar (circa 6 euro) per domein. Je kunt een domein eventueel direct voor meerdere jaren registreren of voor automatische verlenging kiezen. Betalen kan met creditcard of PayPal. In je dashboard vind je je domein terug onder Domain registration / Manage domains.

Registreer tegen lage kosten een domein bij Cloudflare.

Tunnel voorbereiden

Ga via het menu aan de linkerkant naar Zero Trust. Klik dan op Networks en kies Tunnels. Klik op Create a tunnel. Selecteer de optie Cloudflared. Geef je tunnel een naam. Vervolgens moet je een zogeheten connector installeren op één systeem in je netwerk om een tunnel te maken. Alle toepassingen die je straks via de Cloudflare-tunnel gaat publiceren, moeten bereikbaar zijn vanaf dat systeem. Dat is meestal alleen een probleem bij gescheiden netwerken of strikte firewallregels. Installeer Cloudflared volgens de instructies op een systeem dat altijd aanstaat. Dat kan een server of Raspberry Pi zijn, maar óók je NAS, zoals we hieronder toelichten. Hierna komt de tunnel automatisch online.

Maak een tunnel via de website van Cloudflare.

Tunnel op Synology-NAS

Voor de installatie op een NAS heeft Cloudflare geen instructies, maar de procedure is relatief eenvoudig. Kopieer de opdracht die je ziet bij bijvoorbeeld de Windows-installatie en plak deze in een editor. Je ziet hierin een lange string van 184 tekens die meest begint met eyJh…. Dat is de benodigde token. Om Cloudflared op een Synology-NAS te installeren open je Package Center. Ga naar Gemeenschap en kies Cloudflare Tunnel. Klik op Installeren. Nu wordt om de token gevraagd. Je hoeft geen geavanceerde opties te kiezen. Na het voltooien van de installatie is je tunnel klaar voor gebruik.

Vul de token in bij de installatie van de software op je Synology-NAS.

Tunnel bij QNAP

QNAP biedt geen softwarepakket, maar je kunt Cloudflare wel vrij eenvoudig via Docker configureren en starten. Het is het makkelijkst om met Docker Compose te werken. Installeer indien nodig Container Station en open het programma. Ga dan naar Toepassingen en klik op Maken. Bij Naam van de toepassing vul je een herkenbare naam in, zoals cloudflared. Bij YAML-code vul je de onderstaande code in. Achter TUNNEL_TOKEN vul je uiteraard jouw token in. Klik dan op Maken om de tunnel te maken. Dit is de benodigde code:

version: "3"

services:

  cloudflared:

    image: cloudflare/cloudflared:latest

    container_name: cloudflared

    restart: unless-stopped

    network_mode: "host"

    command: tunnel run

    environment:

      - TUNNEL_TOKEN=eyJh...

Bij QNAP kun je Cloudflared het beste via Docker installeren.

Toepassing toevoegen

Je kunt nu elke toepassing via de tunnel beschikbaar maken met een uniek subdomein. Om zo’n zogeheten route aan te maken, ga je binnen Zero Trust naar Networks / Tunnels. Bij Status geeft het systeem als het goed is aan dat de tunnel gezond is. Open het menu (via de drie puntjes) en kies Configure. Ga dan naar het tabblad Published application routes. We nemen de webinterface van een NAS die lokaal bereikbaar is op https://10.0.10.200:5001. Bij Subdomain vul je bijvoorbeeld nas in. Bij Domain kies je een domein. Bij Type kiezen we HTTPS en bij URL vullen we 10.0.10.200:5001 in. Bij de optie HTTPS moet je oppassen. De NAS heeft in ons geval geen echt certificaat. Daarom is het belangrijk om onder Additional application settings / TLS de optie No TLS Verify aan te vinken. Cloudflare zal dan negeren dat het certificaat niet ondertekend is. Klik op Save. Er zal automatisch een DNS-record worden gemaakt en je kunt vrijwel direct op afstand je NAS benaderen.

We maken een route voor de NAS.

Extra beveiliging bij Cloudflare

Na het openstellen van een toepassing via een subdomein kan in feite iedereen die dat adres kent de toepassing benaderen, zoals de webinterface van je NAS. Of ze ook binnenkomen, hangt af van je beveiliging. Een NAS kun je zelf extra beveiligen, bijvoorbeeld met tweestapsverificatie. Maar je kunt toegang óók beperken via Cloudflare zelf. Je kunt bijvoorbeeld regelen dat alleen jij bij de tunnel mag, via een tijdelijke code die je per e-mail ontvangt, of door te verplichten dat je eerst moet inloggen met een specifiek Google-account.