ID.nl logo
Maak je eigen VPN met WireGuard en Tailscale
© arrow - stock.adobe.com
Huis

Maak je eigen VPN met WireGuard en Tailscale

Bij het opzetten van een VPN-server kun je het jezelf heel makkelijk óf heel moeilijk maken, er is niet echt een tussenweg. Het populaire WireGuard is daarop geen uitzondering.

In dit artikel behandelen we twee toegankelijke installatiemethodes op een VPN op te zetten:

  • WireGuard Easy via Docker
  • Tailscale

Meer weten over Docker? Instapcursus Docker Desktop: geen gedoe met losse applicatiebestanden

Er zijn de laatste jaren veel initiatieven geweest om het opzetten van een VPN-server te vereenvoudigen. Ze besparen je de tijd en moeite van een volledig handmatige configuratie, waarbij je bijvoorbeeld privésleutels en publieke sleutels moet maken en (diep) in de configuratie voor het netwerk en de gebruikers moet duiken. Helaas is met PiVPN zo’n initiatief verdwenen. De tool bood verbindingen via OpenVPN en WireGuard aan met beheer via de Opdrachtprompt, op een Raspberry Pi en onder Debian of Ubuntu. Onlangs werd de ontwikkeling stopgezet, al verschijnen er nog wel kritieke updates. Er zijn gelukkig goede alternatieven. Zo kun je met WireGuard Easy relatief snel een VPN-server in het netwerk opzetten. Daarvoor gebruik je Docker Compose. Heel praktisch is de mogelijkheid om gebruikers via een dashboard in je browser te beheren. En door een QR-code te scannen zet je in een handomdraai een verbinding vanaf een smartphone op. Geholpen door Docker Compose zijn ook andere slimme combinaties mogelijk, bijvoorbeeld met Unbound en Pi-hole. Je hebt dan niet alleen een VPN-server, maar ook een privacyvriendelijke DNS en kunt advertenties blokkeren. Heb je toch nog moeite om alles aan de praat te krijgen, dan kan Tailscale, dat gebruikmaakt van de WireGuard-technologie, redding bieden. Het is een soort ‘cheat code’ voor supereenvoudige verbindingen tussen je apparaten. Het prikt door elke firewall heen, terwijl het op de achtergrond gewoon met WireGuard werkt. We laten aan het einde van dit artikel kort zien hoe je met deze tool kunt werken.

WireGuard-protocol: snel en efficiënt Bij het opzetten van een VPN-verbinding is OpenVPN een van de belangrijkste protocollen. Het opensource WireGuard wint echter snel terrein. Kenmerkend zijn de efficiëntere code, snellere verbindingsopbouw en hogere doorvoersnelheid. Ter illustratie: WireGuard kent maar zo’n 4.000 regels code, tegenover zo’n 600.000 voor OpenVPN met OpenSSL. WireGuard kreeg mede daardoor ook de goedkeuring van Linux-voorman Linus Torvalds, die de codebase in 2018 een ‘work of art’ noemde in vergelijking met de alternatieven. Het is uitgebracht onder GPLv2, dezelfde licentie als Linux. En sinds 2020 maakt het – vanaf versie 5.6 – standaard deel uit van de Linux-kernel. WireGuard bereikt de hoge prestaties onder meer door moderne cryptografie toe te passen. De laatste jaren kiezen steeds meer VPN-providers voor het protocol. Je kunt het ook zelf gebruiken voor een VPN-server in je netwerk. Ook zijn er tools als Tailscale die het opzetten van de verbinding vereenvoudigen, maar op de achtergrond wel gebruikmaken van WireGuard.

Het snelle en efficiënte WireGuard-protocol wordt steeds meer de standaard.

1 Wat gaan we doen

WireGuard staat centraal in dit artikel. Je kunt hier op meerdere manieren gebruik van maken. We beginnen met een eigen VPN-server in je netwerk. Daarmee heb je alles onder controle. Op afstand, bijvoorbeeld vanaf je vakantieadres, kun je hiermee verbinden, zodat je veilig kunt internetten of toepassingen op je lokale netwerk kunt gebruiken. We gaan hiervoor met het gebruiksvriendelijke WireGuard Easy aan de slag via Docker Compose. Als alternatief laten we zien hoe je WireGuard als add-on binnen Home Assistant OS kunt installeren. De server willen we via een gemakkelijk te onthouden hostnaam kunnen bereiken, daarvoor gebruiken we Duck DNS. Dat verhelpt ook meteen verbindingsproblemen bij een dynamisch ip-adres. Ook laten we zien hoe je de clients kunt instellen, wat vaak zo makkelijk is als het scannen van een QR-code. Loop je toch nog tegen beperkingen aan, dan kan Tailscale redding bieden. Deze tool behandelen we aan het eind van dit artikel. Alle instructies kun je overigens ook op een VPS-server uitvoeren, waarmee je een alternatief hebt voor een betaalde VPN-dienst.

Voor het opzetten van een VPS-server, lees dit artikel: Zo zet je in een handomdraai je eigen virtual private server op

©FABIO PRINCIPE

Een VPN-server kun je onder meer gebruiken tijdens je vakantie.

2 Wat heb je nodig

Voor de installatie van WireGuard als VPN-server heb je een Linux-server met Docker Compose in je netwerk nodig. Hier worden geen bijzondere eisen aan gesteld. Je zou een recente Raspberry Pi kunnen gebruiken of een eenvoudige Intel Celeron J4125, N100 of N5105. Zulke systemen moeten een 500megabit-verbinding gemakkelijk kunnen verdragen. Bij de juiste instellingen zal de doorvoersnelheid met of zonder VPN zelfs nauwelijks afwijken.

Voor toegang tot je VPN-server is het wel nodig om een poort in je netwerk open te zetten. Ook moet je de clients die verbinding gaan maken vooraf instellen. Het is voor WireGuard belangrijk dat je een ‘echt’ publiek IPv4-adres hebt zonder het zogeheten Carrier-Grade NAT ofwel CGNAT (zie het kader ‘CGNAT verhindert inkomende verbindingen’). Hoewel CGNAT vooral op mobiele netwerken wordt ingezet, passen enkele internetproviders, zoals Delta, het ook op het vaste netwerk toe.

Voor het opzetten van een verbinding via Tailscale is de belangrijkste eis dat de twee apparaten een internetverbinding hebben. Het werkt dus overal door elke firewall heen en heeft ook geen last van CGNAT of vergelijkbare beperkingen.

Tailscale heeft geen last van firewalls of andere beperkingen.

CGNAT verhindert inkomende verbindingen Bij CGNAT (Carrier-Grade NAT) krijg je geen echt publiek ipv4-adres, maar een privé ipv4-adres. Er zit dus een soort poortwachter tussen. Die zorgt ervoor dat het achterliggende publieke ipv4-adres feitelijk wordt gedeeld met soms wel duizenden anderen. Dit staat het verbinden met je eigen servers vanaf internet in de weg. Delta sluit daarom overigens wel klanten uit die portforwarding benutten.

Je kunt eenvoudig controleren of CGNAT wordt gebruikt. Controleer bijvoorbeeld het privé-ip-adres dat jouw router heeft gekregen. Bij CGNAT komt dit meestal uit het adresblok 100.64.0.0/10 dat hiervoor is gereserveerd. Dit omvat de adressen 100.64.0.0 t/m 100.127.255.255. Vergelijk het met je werkelijke publieke ipv4-adres (raadpleeg bijvoorbeeld www.whatismyip.com). Als dat hetzelfde adres is, wordt er geen CGNAT gebruikt. Als alternatief kun je een traceroute uitvoeren via de Opdrachtprompt in Windows. Geef de opdracht tracert met daarachter het publieke ipv4-adres. Als er maar één knooppunt is, wordt er geen CGNAT gebruikt.

3 WireGuard Easy

WireGuard Easy, gemaakt door een Nederlander (Emile Nijssen), is een van de eenvoudigste methodes voor het opzetten van een VPN-server. Niet alleen kun je het met Docker of via een configuratiebestand voor Docker Compose snel installeren, je krijgt er ook nuttige extra’s bij. Zo kun je via een dashboard gebruikers bekijken, toevoegen, bewerken of verwijderen. Je kunt ook per gebruiker het configuratiebestand downloaden waarmee verbinding kan worden gemaakt of eenvoudigweg een QR-code weergeven voor ditzelfde doel. Tot slot krijg je inzicht in de verbonden gebruikers en het verkeer.

Voor onze VPN-server werken we met het gebruiksvriendelijke WireGuard Easy.

4 Registratie bij Duck DNS

Duck DNS is een dynamische DNS-provider (ook wel DDNS genoemd). Het is een gratis dienst die ervoor zorgt dat je altijd via een eenvoudig te onthouden hostnaam verbinding kunt maken met je internetverbinding thuis. Het werkt met zowel een vast als dynamisch ip-adres. Als het ip-adres wisselt, wordt dit automatisch bijgewerkt via een toepassing in je netwerk (dit activeren we in de volgende stap). Om Duck DNS te gebruiken, ga je naar www.duckdns.org. Maak een account aan door in te loggen met één van de genoemde diensten (zoals Google of GitHub) en volg de instructies. Op het laatste scherm zie je een token die je in de volgende stap nodig hebt voor het bijwerken van je ip-adres. Ook kun je hier tot vijf subdomeinen toevoegen. Vul bij sub domain een eerste subdomeinnaam in en klik op add domain. Als voorbeeld gebruiken we de naam mcvpn waarmee de volledige hostnaam mcvpn.duckdns.org wordt. Welk ip-adres initieel wordt gebruikt, kun je nu aflezen. Ook kun je het controleren door de Opdrachtprompt in Windows te openen en de opdracht ping subdomein.duckdns.org in te voeren. Als het goed is, zie je het ip-adres van jouw internetverbinding.

Met Duck DNS kun je een gratis DDNS-adres verkrijgen.

5 Bijwerken ip-adres

Zeker als je een wisselend ip-adres hebt, is het raadzaam om dit automatisch bij te werken via een toepassing in je netwerk. Op de website van Duck DNS vind je diverse installatiemethodes. Omdat we WireGuard Easy via Docker Compose installeren, ligt het voor de hand om Duck DNS ook via Docker Compose bij te werken.

Je kunt WireGuard optioneel ook als add-on voor Home Assistant installeren (zie het kader ‘WireGuard via Home Assistant’). In dat geval is het slim om ook een add-on voor Duck DNS te gebruiken.

Voor Docker Compose kun je de onderstaande inhoud als uitgangspunt nemen voor het bestand docker-compose.yml. Zet dit bestand liefst in een eigen map voor Duck DNS.

De waardes voor PUID en PGID kun je onder Linux achterhalen met de opdracht id. Dit is vooral belangrijk voor toegang tot het bestandssysteem op de host. Achter TOKEN= vul je de token in uit je account bij Duck DNS. Achter SUBDOMAINS= vul je het subdomein bij Duck DNS in. Start daarna de toepassing met:

docker compose up -d

Daarmee start de container op de achtergrond. Wil je controleren of alles goed staat, dan kun je de eerste keer eventueel starten met:

docker compose up

Stop de container daarna met Ctrl+C en start deze alsnog op de achtergrond.

Voor het bijwerken van het ip-adres van Duck DNS gebruiken we Docker Compose.

WireGuard via Home Assistant Je kunt WireGuard ook als add-on installeren binnen Home Assistant OS. Je kunt dan Home Assistant (en andere diensten op je netwerk) op afstand via een beveiligde verbinding gebruiken. De installatie is eenvoudig. Ga naar Instellingen / Add-ons en kies Add-on winkel. WireGuard vind je onder het kopje Home Assistant Community Add-ons. Klik erop en kies Installeer. Ga dan naar het tabblad Configuratie. Onder het kopje server vul je achter host: de hostnaam in (zoals mcvpn.duckdns.org) om mee te verbinden. Onder het kopje peers vul je achter name: een naam voor de gebruiker in. Bewaar de aanpassingen en start de add-on. Kijk onder Logboek of alles goed is gegaan. De handigste verbindingsmethode is ook hier via een QR-code. In de map /ssl/wireguard vind je daarvoor onder de gekozen gebruikersnaam het bestand qrcode.png. Je kunt dit openen met een add-on, zoals File editor. In de configuratie van File editor moet je wel de optie Enforce Basepath uitzetten, anders kun je alleen de configuratiemap /config benaderen. Gebruik je Duck DNS, dan kun je aanvullend nog de add-on installeren om je ip-adres up-to-date te houden voor deze dienst.

Met de add-on zet je eenvoudig een WireGuard-tunnel op voor onder meer home Assistant.

6 Installatie WireGuard Easy

We gaan nu WireGuard via Docker Compose installeren. Hierbij nemen dit Docker Compose-bestand als basis. Daarin maken we enkele aanpassingen. Hierna ziet de volledige configuratie er als volgt uit:

Ten opzichte van de standaardconfiguratie veranderen we met LANG=nl de taal voor het dashboard naar Nederlands. Achter WG_HOST hebben we de hostnaam van Duck DNS ingevuld die we in stap 4 activeerden. Als je thuis een vast ip-adres hebt, kun je er ook voor kiezen om eenvoudigweg het ip-adres in te vullen. Ook zou je een (sub)domein via de DNS-instellingen bij je provider kunnen laten verwijzen naar je ip-adres thuis, zodat je dat (sub)domein kunt gebruiken.

De configuratie voor WireGuard Easy voor Docker Compose.

7 Extra parameters

Onder environment: kun je eventueel extra of aangepaste parameters opgeven. Voor een volledig overzicht kun je op de GitHub-pagina van het project kijken. Zo wordt als naam voor de ethernetinterface standaard eth0 gebruikt. Dat is gangbaar op Linux-systemen. Controleer dit eventueel voor jouw situatie met ip a. Je kunt het veranderen via de parameter WG_DEVICE=eth0. Standaard wordt de DNS-server van Cloudflare op 1.1.1.1 gebruikt. Dit kun je wijzigen via WG_DEFAULT_DNS=1.1.1.1. Gebruik bijvoorbeeld 8.8.8.8 voor Google. Verder is het raadzaam een wachtwoord in te stellen voor het dashboard. Dat kan met bijvoorbeeld PASSWORD=geheim. Verder kun je met WG_ALLOWED_IPS= beperken welk verkeer vanaf de client over de VPN-tunnel moet worden gestuurd. Standaard gaat al het verkeer door de tunnel.

Je kunt enkele extra parameters opgeven voor de VPN-server.

8 Poort doorsturen

Voordat je WireGuard kunt starten, moet je nog een poort via je router doorsturen naar de server met WireGuard. De procedure verschilt per router. Eventueel kun je de instructies op www.portforward.com raadplegen. Voor het WireGuard-verkeer wordt standaard udp-poort 51820 gebruikt. Je hoeft daarom alleen het udp-verkeer naar poort 51820 door te sturen naar diezelfde poort op de server met WireGuard. De poort ‘aan de buitenkant’ zou je eventueel kunnen veranderen naar een andere poort, als deze bijvoorbeeld door bepaalde netwerken wordt geblokkeerd.

Voor het dashboard gebruikt WireGuard Easy standaard tcp-poort 51821. Voor die poort is geen portforwarding nodig. Het dashboard is dan weliswaar alleen vanaf je lokale netwerk bereikbaar, maar dat is om veiligheidsredenen wel zo verstandig.

Heb je alles aangepast en de poort doorgestuurd, dan kun je WireGuard Easy starten met:

docker compose up -d
Voor WireGuard moet je een poort doorsturen vanaf je router naar de server.

9 Gebruikers toevoegen

Het meeste werk is eigenlijk al gedaan. We hoeven alleen nog maar gebruikers toe te voegen. Daarvoor open je je dashboard door je browser te verwijzen naar http://ipadres:51821. Gebruik hiervoor het ip-adres van de server. Als je een wachtwoord hebt ingesteld, moet je dat eerst invullen. Op je dashboard kun je nu een eerste gebruiker toevoegen via Nieuw. Vul een naam in voor de gebruiker en klik op Creëren. Je ziet een schuifje waarmee je de bewuste gebruiker eventueel kunt (de)activeren.

Ook kun je de verbindingsgegevens ophalen. Er zijn twee manieren om een verbinding met je VPN-server op te zetten. Je kunt hier de QR-code weergeven die je kunt scannen met de app op je smartphone. Dit is de makkelijkste optie. Ook kun je het configuratiebestand downloaden. Dit is wat gangbaarder als je een verbinding wilt leggen vanaf een pc of laptop.

Via het dashboard kun je gebruikers toevoegen of verbindingsgegevens ophalen.

10 Verbinding met smartphone

Als voorbeeld zetten we een verbinding op vanaf een Android-smartphone. Dit werkt heel eenvoudig. Installeer allereerst de WireGuard-app. Start de app vervolgens op en klik op het plusteken om een verbinding toe te voegen. Kies dan de optie Scan van QR-code. Maak de QR-code voor de gewenste gebruiker zichtbaar in je dashboard en scan deze vervolgens met de camera van je smartphone. Geef de tunnel een naam. Met een schuifje kun je de verbinding actief maken. Al het verkeer zal dan over de VPN worden gestuurd en je kunt ook alle toepassingen op je thuisnetwerk gebruiken.

Vanaf een smartphone kun je heel eenvoudig verbinden met je VPN-server.

WireHole Wie wat meer wil experimenteren kan WireHole overwegen. Dit is een combinatie van WireGuard, Pi-hole en Unbound. Pi-hole zorgt voor het blokkeren van advertentienetwerken, terwijl Unbound helpt bij het cachen van DNS-verzoeken met aanvullende bescherming van je privacy. De gangbare manier om het te installeren is via Docker Compose. De tool biedt ook een dashboard voor WireGuard, maar in dit geval het alternatieve WireGuard-UI. Daarnaast kun je uiteraard de beheerdersomgeving van Pi-hole benaderen.

Bijzonder leuk en handig: Kasm: experimenteren en veilig werken in een geïsoleerde omgeving

11 Tailscale

Tailscale is erg populair. Het is een van de makkelijkste manieren om al je apparaten te bereiken, ongeacht het netwerk waarop die apparaten zich bevinden. Heb je moeite met het verbinden met je VPN-server, bijvoorbeeld door een verkeerde configuratie van je server of router, dan kan Tailscale een goed alternatief zijn. Het is zonder meer handig om in je gereedschapskist te hebben, bijvoorbeeld om (al dan niet tijdelijk) met een nieuw of vreemd systeem te verbinden.

Surf naar de website van Tailscale en kies Get started. Log nu in met een van de getoonde diensten, zoals Google, Microsoft of GitHub. Deze fungeren als identiteitsprovider. In dit voorbeeld gebruiken we Google. Voor extra bescherming raden we aan tweestapsverificatie voor deze accounts in te stellen. Na het inloggen kun je apparaten toevoegen. Daarvoor installeer je Tailscale op die apparaten en log je in met dezelfde identiteitsprovider. Ze verschijnen dan op je dashboard en je kunt verbindingen tussen de apparaten opzetten. We zullen dit voor een Windows-pc en Linux-systeem laten zien.

Na je registratie bij Tailscale kun je 14 dagen lang alle functies uitproberen van het Enterprise-abonnement. Wil je de gratis versie van Tailscale gebruiken, kies dan als je bent ingelogd voor de optie Choose personal plan. Merk op dat je nu beperkt bent tot drie gebruikers en honderd apparaten. Maar dat zal voor de meeste gebruikers geen struikelblok zijn.

Om Tailscale te kunnen gebruiken, moet je inloggen met een van de getoonde diensten.

12 Windows-pc toevoegen

We beginnen met het toevoegen van een Windows-pc. Installeer hierop Tailscale. Er zijn geen aanvullende instellingen nodig. Na de installatie hoef je slechts de link te volgen. Via een browser kun je vervolgens inloggen met dezelfde identiteitsprovider, zoals Google in ons voorbeeld. Daarna kun je het systeem, in dit geval de Windows-pc, direct toevoegen aan wat ook wel je tailnet wordt genoemd. De naam van het systeem, in dit voorbeeld werk-pc-mini, wordt door Tailscale overgenomen, en kun je eventueel aanpassen. Je kunt nu een verbinding opzetten met de andere apparaten in je tailnet. Bij die verbindingen wordt op de achtergrond gebruikgemaakt van WireGuard. Maar, hiervoor moeten we natuurlijk eerst nog een tweede apparaat toevoegen.

De Windows-pc is toegevoegd aan het tailnet.

13 Linux-systeem toevoegen

We zullen ook direct een Linux-systeem toevoegen. Dat gaat het gemakkelijkst via een script. Dit vereist de tool curl, die kun je indien nodig installeren met:

sudo apt install curl

Daarna kun je Tailscale installeren via het script:

curl -fsSL https://tailscale.com/install.sh | sh

Na de installatie kun je Tailscale starten met het commando:

tailscale up

Je krijgt nu een link te zien die je moet openen in een browser. Log nu opnieuw met bijvoorbeeld Google in, en ook dit systeem zal worden toegevoegd aan je tailnet. In dit voorbeeld onder de naam ubuntu. Het terminalscherm van je Linux-systeem toont direct een melding wanneer het apparaat is toegevoegd.

De website toont de systemen die aan je tailnet zijn toegevoegd.

14 Tailscale gebruiken

Merk op dat elk systeem een eigen ip-adres heeft gekregen dat begint met 100.x.x.x. Je kunt direct verbinding maken tussen alle apparaten. Je kunt bijvoorbeeld pingen vanaf het Linux-systeem naar de Windows-pc met ping werk-pc-mini. Andersom kun je via de Opdrachtprompt op de Windows-pc het Linux-systeem oproepen met ping ubuntu. Als op dat Linux-systeem ook ssh actief is, kun je inloggen met de opdracht ssh gebruiker@ubuntu, bijvoorbeeld ssh root@ubuntu voor de root-gebruiker.

Je ziet hoe eenvoudig Tailscale werkt. Je hoeft je nooit bezig te houden met lastige configuraties of portforwarding. Er is wel een afhankelijkheid van derde partijen. Vind je dat een zwakte? Dan zou je eventueel Headscale kunnen gebruiken, want dat kun je zelf hosten. Dit neemt dan in feite de rol van de Tailscale-servers over.

Vanaf de Windows-pc kun je verbinding maken met het Linux-systeem.
Watch on YouTube
▼ Volgende artikel
AI zonder programmeren: Zo bouw je je eigen chatbot
© ID.nl
Huis

AI zonder programmeren: Zo bouw je je eigen chatbot

Misschien heb je wel eens een vraag gesteld aan een AI-chatbot als ChatGPT, Microsoft Copilot of Perplexity. Maar hoe ontwerp je zelf nu zo'n chatbot? Met de juiste tools is daar zelfs weinig tot geen programmeerwerk voor vereist. We bekijken twee uiteenlopende oplossingen.

Een AI-chatbot is een digitale gesprekspartner die wordt aangedreven door kunstmatige intelligentie. Meestal is de intelligentie gebaseerd op een taalmodel dat is getraind om mensachtige gesprekken te voeren. In tegenstelling tot traditionele op regels gebaseerde chatbots, die alleen vooraf ingestelde antwoorden geven, kan een AI-chatbot vrije tekst begrijpen en ‘natuurlijke’ reacties geven.

In dit artikel kijken we naar het bouwen van een eigen chatbot die je op je desktop of mobiel kunt gebruiken en zelfs op een eigen website kunt plaatsen. We bespreken twee manieren. De eenvoudigste is een no-code chatbotplatform dat het AI-gedeelte achter de schermen afhandelt en je via een gebruiksvriendelijke interface laat bepalen hoe de gespreksflow verloopt. Typische voorbeelden zijn Chatfuel en Chatbot voor zakelijke toepassingen. Daarnaast zijn er de meer toegankelijke Poe en Coze, die we hier behandelen. Onze tweede oplossing is technischer, maar flexibeler. Daarbij gebruik je de Application Programming Interface (API) van een AI-taalmodel om de AI-functionaliteit in je eigen omgeving te integreren. Hiervoor werken we graag met de online omgeving Google Colab.

Poe

Laten we starten met een gebruiksvriendelijke optie: het no-code chatbotplatform Poe (www.poe.com). Je kunt hier ook de app voor desktop of mobiel downloaden en installeren, met vrijwel dezelfde interface en functies als in de browser. De eerste keer maak je een account aan of meld je je aan met je Google- of Apple-account. Via Bots and apps kun je met allerlei AI-chatbots praten, maar in dit geval willen we vooral een eigen chatbot maken. Concreet gaat het om het creëren van een eigen ‘persona’ binnen een gekozen AI-model. Zo’n persona kun je zien als het perspectief, de rol of identiteit die je een AI-bot meegeeft.

Klik hiervoor op Create +. Je krijgt nu verschillende opties, zoals Image generation bot, Video generation bot en Prompt bot. Wij kiezen dit laatste.

Poe bestaat ook als desktop-app en biedt toegang tot vele tientallen AI-modellen.

Creatie

Je hoeft nu eigenlijk alleen maar een onlineformulier in te vullen. We doorlopen kort de belangrijkste onderdelen. Naast het gekozen bottype moet je een naam verzinnen. Omdat deze deel uitmaakt van de url, kies je bij voorkeur een originele, korte naam in kleine letters. Voeg ook een beschrijving toe, die zichtbaar is voor gebruikers van je bot.

Bij Base bot selecteer je een geschikt AI-model, bijvoorbeeld Claude-Haiku-3, GPT-4o-mini, GPT-5 of Grok-4. Afhankelijk van het model gelden er soms beperkingen. Poe-abonnees krijgen doorgaans uitgebreidere toegang tot de duurdere modellen.

Bij Prompt beschrijf je nauwkeurig en uitgebreid hoe de bot moet reageren. De optie Optimize prompt for Previews kun je uitgeschakeld laten. Vul bij Greeting message een welkomstwoord in dat de bot bij elke start toont. Het onderdeel Advanced kun je eigenlijk ongemoeid laten, maar interessant is wel dat je bij Custom temperature het ‘creativiteitsgehalte’ van de bot kunt instellen: hoe hoger de waarde, hoe creatiever en onvoorspelbaarder.

Bij Access kies je de zichtbaarheid van je bot. Wellicht is Only people with the access link de handigste optie, waarna de url zichtbaar wordt en je deze kunt verspreiden. Klik bovenin op Edit picture en kies of ontwerp een passend pictogram. Is alles ingevuld, klik dan onderin op Publish. Je bot is nu klaar voor gebruik. Om je bot te bewerken, hoef je deze maar bij Bots and apps te selecteren en via het knopje met de drie puntjes op Edit te klikken. Ook de optie Delete is beschikbaar.

Geef duidelijk aan wat je bot precies moet doen.
GPT's van OpenAI

Binnen de omgeving van OpenAI (https://chat.openai.com) kun je ook je eigen AI-chatbots maken, de zogeheten GPT’s. Hiervoor heb je wel een plusabonnement nodig (23 euro per maand). Je bent daarbij ook beperkt tot de GPT-modellen van OpenAI, maar je kunt je creaties wel delen via een link of in de GPT-store.

In het kort werkt dit als volgt. Meld je aan en klik links op GPT’s. Klik rechtsboven op + Maken. Via Configureren stel je alles handmatig in, maar via Maken kan het ook ‘al converserend’. Beschrijf kort wat je GPT moet doen en voor wie. Laat de tool een naam en profielfoto voorstellen en beantwoord de vragen om toon en werking af te stemmen. Test je GPT in de preview en ga daarna naar Configureren, waar je naam, beschrijving, instructies en gespreksopeningen ziet. Bij Kennis kun je bestanden uploaden zodat je GPT ook informatie uit je eigen documenten haalt. Via Nieuwe handeling maken koppel je eventueel acties aan externe API’s, gebruik alleen API’s die je vertrouwt. Bevestig met Maken en bepaal hoe je je GPT deelt: Alleen ik, Iedereen met de link of GPT-winkel (in een zelfgekozen categorie). Rond af met Opslaan. Je kunt de link (https://chatgpt.com/g/<code><naam>) daarna kopiëren en verspreiden. Via GPT’s / Mijn GPT’s kun je eerder gemaakte GPT’s bewerken of verwijderen.

Je kunt ook je ook eigen ‘chatbots’ (GPT’s) ontwerpen, gebruiken en met anderen delen.

Poe biedt ook geavanceerdere mogelijkheden als een Server bot-type (waarmee je ook andere API’s kunt aanroepen). Via Knowledge base kun je verder eigen informatiebronnen toevoegen waaruit de bot kan putten. Voor complexere bots gebruiken we toch liever het no-code platform Coze (www.coze.com) dat veel extra opties kent. Meld je aan met je Google-account, klik op + Create in de linkerkolom en daarna op + Create bij Create agent.

Coze

Coze gebruikt de term agent in plaats van bot om duidelijk te maken dat je er een digitale assistent mee kunt maken die niet alleen met een AI-model antwoorden geeft, maar ook geheugen of context kan gebruiken en meerdere kanalen kan bedienen, zoals een website of een Discord-server, maar zover gaan we hier niet.

Vul een passende naam voor je bot of agent in en schrijf een korte maar duidelijke omschrijving, bijvoorbeeld “Deze bot haalt allerlei informatie uit onze eigen documenten rond computerbeveiliging.” Laat Personal geselecteerd bij Workspace en klik linksonder op het knopje om een geschikt pictogram te uploaden of klik op het sterretje om er een te laten genereren. Klik daarna op Confirm.

De start van je eigen AI-chatbot (of agent) in Coze.

Uitwerking

Je komt nu in je dashboard waar je de bot verder vorm kunt geven. Ontwerp de persona door in het linkerdeelvenster een uitvoerige omschrijving van de bot in te vullen. Optimaliseer deze omschrijving snel met het blauwe knopje Auto Optimize prompt rechtsboven. Na bevestiging met Auto-optimize werkt Coze meteen een geoptimaliseerde prompt uit voor de persona. Klik op Replace om deze te gebruiken. In het rechterdeelvenster kun je je bot direct testen. De antwoorden komen uit de kennisdatabank van het geselecteerde model (zoals GPT-4o).



Wil je dat de bot ook uit eigen bronnen put, dan moet je deze eerst uploaden. Dit doe je in het middelste deelvenster, bij

Knowledge, waar je uit Text, Table en Images kunt kiezen. Klik op het plusknopje bij bijvoorbeeld Text en daarna op Create knowledge. Selecteer Text format en geef een naam aan je informatiebundel. Je kunt data ophalen uit bronnen als Notion of Google Doc, maar wij kiezen voor Local documents om eigen bestanden te uploaden. Klik op Create and import en versleep de gewenste documenten naar het venster. Klik daarna op Next (3x) en wat later zijn je documenten verwerkt. Rond af met Confirm en met Add to Agent rechtsboven. Je vindt je informatiebundel nu terug bij Knowledge en de bot put voortaan (ook) uit deze gegevens.

Om je bot beschikbaar te maken, klik je rechtsboven op Publish en daarna op Confirm. Je kunt hem op diverse platformen publiceren, onder meer in de Coze Agent Store. Selecteer een passende categorie en bevestig met Publish.

Laat AI je helpen bij het ontwerpen van een optimale persona.

Extra's

Daarnaast biedt Coze nog diverse andere nuttige opties, zoals talrijke plug-ins. Klik hiervoor op het plusknopje bij Plugins of gebruik het A-knopje om automatisch geschikte plug-ins te laden op basis van je persona-beschrijving. Deze kun je meteen inzetten, eventueel na optimale afstelling via het tandwielpictogram.

Je kunt de functionaliteit van je bot eenvoudig uitbreiden met talrijke plug-ins.

API-sleutels

No code-platformen als Poe en Coze zijn handig, maar wil je meer flexibiliteit en schrik je niet terug voor enige basiscodering, dan werk je beter met de API van een AI-model. Deze fungeert als tussenpersoon die je script en de AI-dienst laat communiceren via een set regels en commando’s. We gaan uit van de API van OpenAI (GPT) en maken eerst een sleutel aan om de API-interface te gebruiken. Ga naar https://platform.openai.com/api-keys, meld je aan met je account (zoals Google) en klik op +Create new secret key. Geef de sleutel een naam, bijvoorbeeld aibot, en klik op Create secret key. Klik daarna op Copy en bewaar de sleutel op een veilige plek. Rond af met Done: de sleutel is nu toegevoegd. Je kunt deze hier op elk moment ook weer intrekken.

Je hebt een sleutel nodig om de API te kunnen gebruiken.

Interactie

Een snelle manier om een script te maken dat deze API aanroept, is via het gratis Google Colab (https://colab.research.google.com), een online notitieboek voor Python. Meld je aan met je Google-account, klik op + Nieuw notebook of ga naar Bestand en kies Nieuw notebook in Drive, en geef het ipynb-bestand (Interactive PYthon NoteBook) een zinvolle naam. Het notebook wordt automatisch in je Google Drive bewaard en is bereikbaar via het pictogram met de oranje cirkels.

Klik nu op + Code voor je eerste codecel, waarmee je de OpenAI-bibliotheek installeert:

!pip install openai

Voer dit uit met het pijlknopje en klik vervolgens op + Code voor de tweede cel met de volgende code:


from openai import OpenAI

client = OpenAI(api_key="<je_API-sleutel>")

response = client.chat.completions.create(

    model="gpt-3.5-turbo",

    messages=[{"role": "user", "content": "Wat weet je over Haarlem( Nederlands)?"}]

)

print(response.choices[0].message.content)


Je laadt hierbij eerst de geïnstalleerde Python-bibliotheek en zet je geheime sleutel in de clientconfiguratie. Vervolgens stuur je een chataanvraag naar OpenAI en bewaar je het antwoord in de variabele ‘response’. Vervolgens haal je de tekst van het (eerste) antwoord op en druk je dit af in de uitvoer van de code-cel.

Een eenvoudige interactie tussen je script en GPT via de API.

Eigen chatbot

 We gaan nu een stap verder en maken er een heuse chatbot van die via een while-lus een doorlopend gesprek kan voeren:


from openai import OpenAI

client = OpenAI(api_key="<je_API-sleutel>")

messages=[

    {"role":"system","content":"Je beantwoordt elke prompt leuk, maar correct, met een rijmschema zoals ABAB of ABBA"}]

while True:

  user_input=input("Jij:")

  if user_input.lower() in ["stop","exit","quit"]:

    break

  messages.append({"role":"user","content":user_input})

  response=client.chat.completions.create(

      model="gpt-4o",messages=messages)

  bot_reply=response.choices[0].message.content

  print("Bot:",bot_reply)

  messages.append({"role":"assistant","content":bot_reply})


Zolang de gebruiker geen stopwoord invoert, blijft de lus actief. De bot antwoordt in de stijl en taal die je zelf hebt vastgelegd in de systeemrol (zie coderegel 3). Met de methode-aanroep messages.append voeg je telkens een nieuw bericht van zowel de gebruiker (user) als de bot (assistant) toe aan de gespreksgeschiedenis.

Mocht je ergens een fout hebben gemaakt in je script, dan is de kans groot dat je via de knop Fout uitleggen nuttige feedback krijgt en met de knop Accepteren (en uitvoeren) de fout zelfs automatisch kunt laten verbeteren.

In het kader ‘Mooi gepresenteerd’ lichten we kort toe hoe je dit script bijvoorbeeld ook op een eigen webpagina kunt laten draaien.

Onze rijmende chatbot wordt wakker geschud vanuit Colab.
Mooi gepresenteerd

Je Colab-script werkt, maar het oogt niet fraai en je wilt het natuurlijk mooi gepresenteerd met anderen delen. Dit doe je het makkelijkst met Gradio, een opensource-Python-bibliotheek waarmee je snel een webinterface rond je script bouwt. Installeer en importeer daarvoor eerst Gradio in je Colab-omgeving:

!pip install -q gradio

import gradio

Via www.kwikr.nl/colabcode vind je de code (als py-bestand) waarmee je rond het Colab-script met Gradio een eenvoudige webinterface genereert. Deze verschijnt in je Colab-omgeving, maar je krijgt ook een publieke url te zien waar je de interface rechtstreeks kunt openen (https://<code>.gradio.live).

Dankzij de volgende aanroep in de laatste coderegel kunnen bezoekers van deze webpagina je chatbot-script ook als PWA-app op hun pc bewaren en starten:

demo.launch(share=True,pwa=True)

Een alternatief is deze webpagina via een <iframe>-instructie in de html-code van je eigen site op te nemen:

<iframe src=https://<code>.gradio.live></iframe>

Gradio heeft een eenvoudige webinterface gecreëerd voor ons chatbotscript.
▼ Volgende artikel
De beste koptelefoon voor in de trein: rustig reizen met noise cancelling
© Svetlana - stock.adobe.com
Huis

De beste koptelefoon voor in de trein: rustig reizen met noise cancelling

Behoefte aan totale rust tijdens je treinreis? De juiste koptelefoon filtert lawaai weg en verhoogt je concentratie. Ontdek waarom active noise cancelling (ANC) niet mag ontbreken. Wij laten je zien welke functies, zoals comfort en lange accuduur, belangrijk zijn voor de forens of gelegenheidsreiziger.

Reizen met de trein kan heerlijk zijn, maar luidruchtige medepassagiers en het gedender over het spoor verstoren nogal eens de rust. Een goede koptelefoon maakt hier het verschil tussen irritatie en ontspanning. Als je op zoek bent naar de beste optie voor onderweg, is er eigenlijk maar één technologie die er echt toe doet: active noise cancelling. In dit artikel lees je waar je precies op moet letten.

Waarom active noise cancelling onmisbaar is

De absolute topprioriteit voor elke treinreiziger is active noise cancelling, oftewel ANC. Deze techniek gebruikt microfoons aan de buitenkant van de oorschelpen om omgevingsgeluid op te vangen en een tegengeluidsgolf te produceren. Vooral het constante, lage gebrom van de treinmotor en de wielen op de rails worden hiermee effectief weggefilterd. Hoewel geen enkele koptelefoon álle geluiden volledig blokkeert, zorgen modellen met hoogwaardige ANC ervoor dat je op een normaal volume naar muziek of podcasts kunt luisteren zonder dat je het volume ongezond hard hoeft te zetten om het lawaai te overstemmen.

Over-ear versus in-ear in het openbaar vervoer

Naast de technologie is de pasvorm van groot belang voor de demping. Over-ear modellen, die volledig over je oren vallen, bieden van nature al een goede passieve isolatie. De oorkussens sluiten je gehoorgang af van de buitenwereld, wat de actieve ruisonderdrukking aanzienlijk ondersteunt. Voor de meeste forenzen is dit de beste keuze. In-ear oordopjes zijn weliswaar compacter en makkelijker mee te nemen, maar laten vaak toch iets meer geluid door omdat ze minder fysieke barrière opwerpen. Als comfort en maximale stilte voorop staan, wint de over-ear variant het sowieso.

©ER | ID.nl

Comfort en accuduur voor lange ritten

Omdat je in de trein vaak langere tijd stilzit, mag de koptelefoon niet gaan knellen. Let daarom goed op de kwaliteit van de hoofdband en de oorkussens; traagschuim (memory foam) is hierbij een aanrader omdat dit materiaal zich naar je hoofd vormt en de druk verdeelt. Daarnaast is de accuduur een belangrijke factor voor de frequente reiziger. Zoek naar modellen die minimaal 20 tot 30 uur meegaan met ANC ingeschakeld. Veel moderne koptelefoons beschikken bovendien over snellaadfuncties, waardoor je na 10 minuten laden weer uren vooruit kunt. Daarmee voorkom je dat je halverwege je reis opeens zonder muziek komt te zitten.

Connectiviteit en handige functies

Een functie die specifiek in de trein van pas komt, is de transparantiemodus. Hiermee versterk je tijdelijk het omgevingsgeluid via de microfoons, zodat je een omroepbericht van de conducteur kunt horen zonder je koptelefoon af te zetten. Ook multipoint-bluetooth is een waardevolle toevoeging voor forenzen die werken tijdens het reizen. Hiermee koppel je de koptelefoon gelijktijdig aan zowel je smartphone als je laptop, zodat je naadloos kunt wisselen tussen een videocall en je favoriete afspeellijst zonder opnieuw verbinding te hoeven maken.

Populaire merken voor noise cancelling koptelefoons

Als we kijken naar de marktleiders op het gebied van ruisonderdrukking, springen een paar namen er direct uit. Sony wordt al jaren geprezen om hun toonaangevende XM-serie, die bekendstaat om uitstekende ANC-prestaties en uitgebreide app-ondersteuning. Bose is de directe concurrent en blinkt vaak uit in draagcomfort en zeer effectieve stilte, wat bijvoorbeeld de QuietComfort-serie enorm populair maakt onder zakelijke reizigers. Voor liefhebbers van een meer audiofiele geluidsweergave is Sennheiser een sterke optie, waarbij geluidskwaliteit en functionaliteit in balans zijn, zoals de Momentum 4. Tot slot kiezen Apple-gebruikers vaak voor de AirPods Max en AirPods Pro vanwege de naadloze integratie met hun andere apparaten, hoewel deze in een aanzienlijk hoger prijssegment vallen.