How to Print?

To print this page or save it as a PDF, press CTRL + P or File > Print > Destination > Save as PDF

Voorbereiding van de workshop

Ben je bezig met de voorbereiding van een workshop over mobiele webservers? Zo ja, dan vind je hieronder een aantal tips en trucs die tijdens eerdere workshops zijn verzameld. Om je zo goed mogelijk voor te bereiden op de workshop, raden wij je sterk aan om de tutorial van tevoren een paar keer door te nemen, bij voorkeur op verschillende Android-modellen. Op die manier zul je je meer op je gemak voelen bij het oplossen van problemen.

Aanpassing aan het niveau van de groep

Afhankelijk van het technologische kennisniveau van je deelnemers, kun je de workshop aanpassen om deze toegankelijker te maken. In plaats van dat iedereen een webserver op zijn of haar (oude) smartphone bouwt, kun je bijvoorbeeld groepen maken met deelnemers van verschillende niveaus, zodat ze elkaar kunnen helpen. Je kunt er ook voor kiezen om de server op slechts één telefoon te bouwen, vooral als je publiek niet vertrouwd is met touchscreens.

Ten slotte is er ook een webserver-app die kan worden gedownload via F-Droid en die ook html-bestanden kan weergeven. Hierdoor kun je zich meer concentreren op het theoretische gedeelte en het aanpassen van een HTML-bestand in plaats van de terminal. In dat geval is Termux niet nodig. Download IWS Lightweight webserver

Workshopbronnen

Naast de online tutorial op deze website hebben we verschillende aanvullende documenten voor de workshop opgesteld. Ten eerste is er een geannoteerde versie van de tutorial voor de facilitator om de workshop zo goed mogelijk te begeleiden:

Opbouw van de workshop

De workshop is bedoeld om door één of twee facilitators te worden gegeven aan een publiek van ongeveer 10 personen. De online tutorial kan op een beamer worden geprojecteerd, terwijl de deelnemers meekijken op hun telefoon en met hun eigen hand-outs. De facilitator(s) kunnen de geannoteerde versie op hun eigen laptop bewaren.

Benodigde materialen

  • Oude Android-smartphones meegebracht door deelnemers
  • Beamer/scherm
  • Laptop voor facilitator Optioneel, maar beter:
  • Externe toetsenborden met bluetooth, micro-USB- of USC-C-aansluiting, zoda je deze op je telefoon kunt aansluiten om gemakkelijker te kunnen typen.
  • Een paar oude Android-telefoons waarop Termux en Nginx al zijn geĂŻnstalleerd: in geval van problemen met de telefoon van een deelnemer, kunnen ze deze als back-up gebruiken.

Voordat we beginnen - Wat hebben we nodig?

Een smartphone

Deze tutorial is gemaakt voor Android smartphones en tablets van de laatste 10 yaar (2015-2025). Als je telefoon ouder is dan 10 jaar, geen Android telefoon is, of als je met een laptop werkt, kijk beneden voor de alternatieven.

Je kunt je dagelijkse telefoon gebruiken of een ouder apparaat dat met “pensioen” is. Het kan een beetje beschadigd zijn maar de volgende functies zijn nodig:

  • Android 5 of hoger (Het liefst Android 7 of hoger) (kijk in Instellingen > Over dit Apparaat)
  • De Wi-Fi werkt.
  • De oplaadpoort werkt. 

Optioneel maar beter:

  • Het touchscreen werkt, ook al is het misschien gebarsten. Als je geen werkend scherm hebt, bekijk dan deze oplossingen.
  • De batterij werkt, of je hebt een externe batterij.

Twee oude mobiele telefoons waarop een webserver draait
Figure 1: Twee oude mobiele telefoons waarop een webserver draait

Alternatieven

iPhones en iPads

Termux — de app die we in deze tutorial gebruiken — is niet beschikbaar op iOS, maar er is een alternatieve app genaamd iSH beschikbaar op iOS 11 en @hoger. Er zijn online enkele tutorials over webservers beschikbaar (met iSH en python webserver).

PostMarketOS

Als je Android-telefoon gewoon te oud is, niet kan worden bijgewerkt of als je op zoek bent naar een andere (radicale) aanpak, kijk dan eens naar PostMarketOS.

PostMarketOS is een alternatief Linux-besturingssysteem dat gratis, open source en door de gemeenschap wordt onderhouden. Je kunt het installeren als vervanging voor Android en zo de levensduur van je telefoon verlengen tot voorbij de geprogrammeerde veroudering van de software (gebrek aan updates). Je kunt dan eenvoudig de webserversoftware van jouw keuze installeren door een Linux-webserverhandleiding te volgen.

meer informatie wordt hier later toegevoegd.

Laptops

Als je geen reserve-telefoon hebt, maar wel een reserve-laptop, kun je daar Linux op installeren en ook een webserver op draaien. Zoek naar een handleiding “nginx installeren op Linux”.

Je telefoon terugzetten naar fabrieksinstellingen + Google’s FRP (optioneel)

Deze stap is optioneel, maar het kan handig zijn om je telefoon op te schonen voordat je die als webserver gaat gebruiken. Zo krijg je meer opslagruimte en voorkom je dat andere apps te veel rekenkracht gebruiken.

Zoek hiervoor online naar apparaatmodel + fabrieksinstellingen herstellen. Je vindt dan instructies hoe je bij de opstartmodus van je smartphone komt, waar je telefoon wissen of fabrieksinstellingen herstellen kunt selecteren. Een goede website is Hard Reset.

Voordat je je telefoon reset:

  • Maak een back-up van de inhoud die je wil bewaren, deze wordt namelijk gewist.
  • Zorg ervoor dat je alle Google-accounts loskoppelt in Instellingen > Accounts. Anders loop je het risico dat de FRP-beveiliging van Google je vraagt om opnieuw in te loggen op het vorige Google-account, waardoor je telefoon (bijna) onbruikbaar wordt. Dit maakt het moeilijker om te beginnen met een telefoon die je hebt gekocht of van iemand anders hebt gekregen.

Smartphone instellen

Zorg ervoor dat je telefoon:

  • Toegankelijk is (je hebt het wachtwoord)
  • Verbonden is met internet via een wifi-netwerk
  • Is uitgerust met een webbrowser (bijvoorbeeld Mozilla Firefox of Chromium).

Workshop Kick-Off

Teken het internet voor mij!

We beginnen de workshop met een korte gezamenlijke oefening: “Teken het internet voor mij”.

  • (5 min) We vragen de deelnemers om in 3 minuten snel op een stuk papier te tekenen hoe zij denken dat het internet eruitziet. Het idee is om snel te werken en hun eerste indruk vast te leggen, ook al weten ze het niet of zijn ze bang om het verkeerd te doen.

  • (10 min) Daarna maken we een korte ronde waarin iedereen laat zien wat hij of zij heeft getekend, terwijl de workshopbegeleider de woorden/ideeĂ«n die vaak terugkomen op een whiteboard/papier noteert (bijv. cloud, server, Instagram, Meta, computer, netwerk, enz.).

Als we klaar zijn, neemt de begeleider de tijd om de vorm van het internet uit te leggen met een presentatie (zie: De echte vorm van het internet).

De (echte) vorm van het internet

Facilitator

Afhankelijk van de resultaten van de tekening en het kennisniveau van de deelnemers, moet de presentatie mogelijk worden aangepast (meer of minder informatie delen).

De volgende reeks afbeeldingen geeft een introductie van hoe het internet er werkelijk uitziet, buiten de gebruikelijke diagrammen en pictogrammen die we vaak zien.

Google-zoekresultaten voor “wat is het internet?”. We zien dat het internet meestal wordt weergegeven als een vage grafiek, met een luchtig/glanzend/futuristisch uiterlijk.
Figure 2: Google-zoekresultaten voor “wat is het internet?”. We zien dat het internet meestal wordt weergegeven als een vage grafiek, met een luchtig/glanzend/futuristisch uiterlijk.

Facilitator

Als het internet moeilijk te begrijpen lijkt, komt dat omdat het grotendeels verborgen is. Verborgen omdat het met opzet zo is, niet alleen omdat het ingewikkeld is. Ten eerste omdat iedereen ons heeft verteld dat het internet “immaterieel”, ‘virtueel’ en “ver weg” is. Precies zoals wanneer we online zoeken: wolken, luchtige tekeningen, grafieken, enz.

 De vorm van internet, kunstproject van Noah Veltman. De kunstenaar wijst er op humoristische wijze op dat internet vaak wordt afgebeeld als een “boon” of een “wolk”.
Figure 3: De vorm van internet, kunstproject van Noah Veltman. De kunstenaar wijst er op humoristische wijze op dat internet vaak wordt afgebeeld als een “boon” of een “wolk”.

Facilitator

Een kunstenaar genaamd Noah Veltman vat dit heel goed samen in deze tekeningencollectie: internet is blijkbaar een ‘boon’ of een “wolk”. Maar hoewel het internet een netwerk is (dat klopt), is het zeker niet “licht” of “schoon”, maar eerder zwaar en vies. Laten we eens kijken waarom.

Deze illustratie geeft het internet weer als een netwerk van verschillende infrastructuren: 1. Servers, 2. Clientapparaten, 3. Routingservers, 4. Elektriciteitscentrales, antennes enz. Illustratie door Marie Verdeil - Licentie CC-BY-SA-NC
Figure 4: Deze illustratie geeft het internet weer als een netwerk van verschillende infrastructuren: 1. Servers, 2. Clientapparaten, 3. Routingservers, 4. Elektriciteitscentrales, antennes enz. Illustratie door Marie Verdeil - Licentie CC-BY-SA-NC

Facilitator

Hoe het web er echt uitziet: A/ Abstract gezien – zoals in deze illustratie – is het een netwerk van computernetwerken. Verschillende soorten computers: 1-Servers, om inhoud te leveren 2-CliĂ«nten: computers die inhoud ophalen (telefoons, laptops, spelconsoles, tv's, maar ook bankkaartmachines, slimme koelkasten, bewakingscamera's, verkeersradars, enz.) 3-DNS (ook bekend als domeinnaamservers): om cliĂ«nten naar servers te leiden, maar ook switches, uitwisselingspunten, enz. 4-Alle infrastructuren die deze verbindingen ondersteunen: elektriciteitscentrales, kabels, antennes, enz.

Afbeelding van de binnenkant van een datacenter. Hier worden uw gegevens opgeslagen. Waarschijnlijk heeft ongeveer 1 op de 10 Amerikanen die deze foto bekijken, ooit een website bezocht die hier werd gehost. Oorspronkelijk was dit het Prodigy en later het SBC Yahoo!; momenteel is het een van de ATandT Yahoo! datacenters. Door smag, gelicentieerd onder CC BY-NC-SA 2.0.
Figure 5: Afbeelding van de binnenkant van een datacenter. Hier worden uw gegevens opgeslagen. Waarschijnlijk heeft ongeveer 1 op de 10 Amerikanen die deze foto bekijken, ooit een website bezocht die hier werd gehost. Oorspronkelijk was dit het Prodigy en later het SBC Yahoo!; momenteel is het een van de ATandT Yahoo! datacenters. Door smag, gelicentieerd onder CC BY-NC-SA 2.0.

Facilitator

Al deze infrastructuren: ze zijn heel tastbaar en bevinden zich om ons heen. De meeste van deze computers/servers staan in datacenters. Datacenters zijn gebouwen waarin computers staan, uitgerust met koelsystemen, energiesystemen, enz.

Datacenters zijn niet alleen in de VS te vinden. We vinden er ook veel in Europa en in Nederland, dat een cruciaal knooppunt is in het Europese internetnetwerk. Agriport Agriport Datacenters in Nederland, ten noorden van Amsterdam. Creative Commons-licentie.
Figure 6: Datacenters zijn niet alleen in de VS te vinden. We vinden er ook veel in Europa en in Nederland, dat een cruciaal knooppunt is in het Europese internetnetwerk. Agriport Agriport Datacenters in Nederland, ten noorden van Amsterdam. Creative Commons-licentie.

Facilitator

Deze datacenters zijn niet alleen in de VS te vinden. Ze zijn overal en worden steeds talrijker, vooral nu AI zo belangrijk wordt. De afbeelding hierboven is afkomstig uit het datacentercluster ten noorden van Amsterdam, in Agriport. Buren van industriële boerderijen, waar het hele jaar door tomaten en paprika's worden geproduceerd.  Datacenters zijn net zo groot en invloedrijk als elke andere fabriek.

Rackservers in een datacenter. “Datacenter” — Gewoon een paar servers in een datacenter. Sean Ellis, gelicentieerd onder CC BY 2.0.
Figure 7: Rackservers in een datacenter. “Datacenter” — Gewoon een paar servers in een datacenter. Sean Ellis, gelicentieerd onder CC BY 2.0.

Facilitator

Binnen: ziet er zo uit: rack servers (planken vol computers), allemaal met elkaar verbonden om hun kracht/snelheid te vergroten. Die rekenprocessen produceren veel warmte.

Internet is niet beperkt tot datacenters. Het is ook een netwerk van enorme kabels, die over de hele wereld lopen, door land en oceaan. Internetkabel onder water bij Cuba - via https://www.cadenagramonte.cu/noticia/en/41724/underwater-cable-trippled-internet-connecting-capacity-in-cuba
Figure 8: Internet is niet beperkt tot datacenters. Het is ook een netwerk van enorme kabels, die over de hele wereld lopen, door land en oceaan. Internetkabel onder water bij Cuba - via https://www.cadenagramonte.cu/noticia/en/41724/underwater-cable-trippled-internet-connecting-capacity-in-cuba

Facilitator

Al deze computers in datacenters moeten worden aangesloten op onze apparaten thuis/op kantoor. Internet bestaat ook uit een heleboel enorme kabels die het mogelijk maken om gegevens met de snelheid van het licht onder de oceaan te versturen.

Elke kabel komt overeen met 1 router in een nabijgelegen appartement. Internetknooppuntkast in Parijs, Frankrijk, CC-BY-SA Marie Verdeil
Figure 9: Elke kabel komt overeen met 1 router in een nabijgelegen appartement. Internetknooppuntkast in Parijs, Frankrijk, CC-BY-SA Marie Verdeil

Facilitator

Deze kabels bevinden zich ook in onze steden. Dit is een internetknooppuntkast in Parijs, Frankrijk. Elke kabel komt overeen met 1 router, waarschijnlijk elk in een appartement. Bedenk eens hoeveel er alleen al in jouw straat/buurt zijn. Als je het zo bekijkt, lijkt het internet ineens ook heel kwetsbaar.

Bovenop de kabels is er een groeiend netwerk van antennes. 5G-antenne in Keulen, Duitsland. Superbass, CC BY-SA 4.0 via Wikimedia Commons
Figure 10: Bovenop de kabels is er een groeiend netwerk van antennes. 5G-antenne in Keulen, Duitsland. Superbass, CC BY-SA 4.0 via Wikimedia Commons

Facilitator

Internet bestaat ook uit een heleboel satellieten en antennes om overal verbindingen mogelijk te maken, met alle soorten apparaten. Deze infrastructuur groeit ook met de opkomst van draadloze apparaten (autonome auto's, slimme CCTV, enz.). Afbeelding: 5G-antenne in Keulen, Duitsland.

Laten we niet vergeten dat internet en elektriciteit niet overal en altijd beschikbaar zijn. “Dodgy electrics!” Open meters en kabels in een achterafstraatje in Havana door Andy D'Agornen, gelicentieerd onder CC BY-NC-ND 2.0.
Figure 11: Laten we niet vergeten dat internet en elektriciteit niet overal en altijd beschikbaar zijn. “Dodgy electrics!” Open meters en kabels in een achterafstraatje in Havana door Andy D'Agornen, gelicentieerd onder CC BY-NC-ND 2.0.

Facilitator

Hoewel internet voor ons in het mondiale noorden er grotendeels uitziet zoals op de vorige afbeeldingen, is dat niet overal hetzelfde. In Cuba is internet nog steeds niet altijd beschikbaar, wordt het streng gecensureerd en is de bandbreedte laag. Er zijn veel zelfgemaakte verbindingen en doe-het-zelfantennes, zoals de stroommeters op de foto hierboven.

Internet heeft ook energie nodig. Windturbines in aanbouw in het Verenigd Koninkrijk. © Julian Paren (cc-by-sa/2.0) geograph.org.uk/p/7805892 Global Energy-faciliteiten in Nigg, genomen op zondag 23 juni 2024
Figure 12: Internet heeft ook energie nodig. Windturbines in aanbouw in het Verenigd Koninkrijk. © Julian Paren (cc-by-sa/2.0) geograph.org.uk/p/7805892 Global Energy-faciliteiten in Nigg, genomen op zondag 23 juni 2024

Facilitator

Al deze datacenters, satellieten, antennes, uitwisselingspunten, telefoons, laptops en andere apparaten moeten worden gevoed met echte (niet virtuele) energie. Soms zijn dat windturbines zoals in Agriport (hoewel deze groene energiebron wordt gemonopoliseerd, waardoor nabijgelegen dorpen ervan worden beroofd). Soms wordt het rechtstreeks aangedreven door fossiele brandstoffen: kolencentrales, enz. In elk geval: het is een enorme en groeiende voetafdruk van energieverbruik. Vooral omdat het altijd AAN staat!

Meer nog dan energie bestaat het internet uit materialen, voornamelijk metalen die uit de aarde worden gewonnen. Hoewel Congo zeer rijk is aan minerale hulpbronnen, vereist de winning van deze afzettingen veel handarbeid, vaak onder levensgevaarlijke omstandigheden. De winning van kobalt gaat gepaard met mensenrechtenschendingen, zoals onveilige werkplekken, kinderarbeid en gedwongen Congolese arbeid, naast aantasting van het milieu. — Door The International Institute for Environment and Development - Flickr, CC BY 2.5
Figure 13: Meer nog dan energie bestaat het internet uit materialen, voornamelijk metalen die uit de aarde worden gewonnen. Hoewel Congo zeer rijk is aan minerale hulpbronnen, vereist de winning van deze afzettingen veel handarbeid, vaak onder levensgevaarlijke omstandigheden. De winning van kobalt gaat gepaard met mensenrechtenschendingen, zoals onveilige werkplekken, kinderarbeid en gedwongen Congolese arbeid, naast aantasting van het milieu. — Door The International Institute for Environment and Development - Flickr, CC BY 2.5

Facilitator

Last but not least, laten we niet vergeten: Al die computers, kabels, antennes, enz. zijn gemaakt van zeer fysieke materialen. Materialen die moeilijk te verkrijgen zijn, zoals metalen die we overal ter wereld winnen, vaak met schending van de mensenrechten (zoals in Congo, zie afbeelding, maar ook in Chili, Australië en Indonesië) en met enorme vervuiling tot gevolg.

Nu we een beter beeld hebben van de verschillende soorten infrastructuur waaruit het internet bestaat, vragen we ons af: wat is een server precies?

Wat is een server?

Nu we een beetje hebben gezien waaruit het internet bestaat, gaan we inzoomen op het onderdeel dat ons vandaag interesseert: servers

Facilitator

Voordat we naar de volgende reeks afbeeldingen gaan, over servers, kunnen we een korte rondvraag houden onder de deelnemers, met een open vraag:

“We hebben het woord ‘server’ gehoord in de bovenstaande presentatie, maar wat is volgens jou een server, in je eigen woorden?”

In deze afbeelding is elk ‘rek’ een server. “FSN data center backview” door Steve Hulford is gelicentieerd onder CC BY-NC-ND 2.0.
Figure 14: In deze afbeelding is elk ‘rek’ een server. “FSN data center backview” door Steve Hulford is gelicentieerd onder CC BY-NC-ND 2.0.

Facilitator

Het internet bestaat uit computers met verschillende vormen en functies. Materieel gezien zijn servers meestal computers die op rekken staan, zonder schermen, en met kabels zijn verbonden met andere computers. In deze afbeelding is elk “rek” een server.

Hoe een server werkt: informatie of gegevens terugsturen naar clients of andere servers. Illustratie door Marie Verdeil. Licentie CC-BY-SA-NC
Figure 15: Hoe een server werkt: informatie of gegevens terugsturen naar clients of andere servers. Illustratie door Marie Verdeil. Licentie CC-BY-SA-NC

Facilitator

Functioneel: een server doet wat de naam aangeeft. Hij serveert (verzendt) informatie. In de informatica verwijzen we naar clients als de computers die vragen om informatie, bestanden of berekeningen op te halen. In dit voorbeeld vraagt een ‘client’ de server van Wikipedia om het bestand met de voorpagina, waarop de server reageert en het bestand terugstuurt.

Een server hoeft niet per se in een datacenter te staan. Meme met de tekst: “Wat als ik je zou vertellen dat de cloud gewoon iemand anders' computer is?”
Figure 16: Een server hoeft niet per se in een datacenter te staan. Meme met de tekst: “Wat als ik je zou vertellen dat de cloud gewoon iemand anders' computer is?”

Facilitator

In wezen is een server gewoon een computer die is geconfigureerd om met andere computers te communiceren. Hij hoeft niet per se in een datacenter te staan, dat is vooral om redenen van snelheid en energie-efficiëntie. Vroeger hadden de meeste bedrijven en universiteiten hun eigen servers in hun IT-afdeling, waarop hun eigen software draaide. Ze hadden ook een intranet voor het beheer van hun professionele bestanden (een lokaal netwerk).

Een server kan ook thuis worden gebruikt. Club1 installeert een (nieuwe) zelfgehoste server in hun appartement https://club1.fr/nouveau-boitier
Figure 17: Een server kan ook thuis worden gebruikt. Club1 installeert een (nieuwe) zelfgehoste server in hun appartement https://club1.fr/nouveau-boitier

Facilitator

Sommige mensen hebben thuis hun eigen server. Zoals Club1.fr in de afbeelding. Deze in Parijs gevestigde vereniging host websites voor kunstenaars op een server bij een van de leden thuis, in een kast. Hier installeren ze deze in de woonkamer. Dit wordt zelfhosting genoemd.

Low-tech Magazine host hun website op hun eigen minicomputer die op zonne-energie werkt. De server waarop Low-tech Magazine draait. Foto Marie Verdeil (licentie cc-by-sa-nc).
Figure 18: Low-tech Magazine host hun website op hun eigen minicomputer die op zonne-energie werkt. De server waarop Low-tech Magazine draait. Foto Marie Verdeil (licentie cc-by-sa-nc).

Facilitator

Een zelfgehoste server is een manier om meer controle te krijgen over je gegevens (privacyredenen), maar ook meer controle over de infrastructuur. Dit is de server en infrastructuur die de website van Low-tech Magazine, een techno-kritisch online medium, aandrijft.

Zonnepanelen op het balkon van Kris De Decker, oprichter van Low-tech Magazine. Foto Marie Verdeil (licentie cc-by-sa-nc).

Facilitator

De server draait op een kleine 2W-computer, die wordt aangedreven door een enkel zonnepaneel. Als het weer te slecht is, laten ze de batterij leeglopen en schakelen ze de computer uit, in plaats van reservebatterijen en back-upgeneratoren te gebruiken, zoals datacenters doen. 100% uptime heeft ook een prijs, en die is hoog.

De bestanden van de website zijn ook gecomprimeerd. Screenshot: een artikel over lowtech websites op Low-tech Magazine
Figure 19: De bestanden van de website zijn ook gecomprimeerd. Screenshot: een artikel over lowtech websites op Low-tech Magazine

Facilitator

Bijgevolg is de gehoste website sterk gecomprimeerd, zodat deze op dit kleine apparaat past en de inhoud zo licht mogelijk is. Geen video’s, geen tracking, dithered afbeeldingen.

Een webserver kan gewoon je computer zijn, dus waarom niet je telefoon?  Low-tech Magazine-website weergegeven op een laptop uit 2013.  Foto Marie Verdeil (licentie cc-by-sa-nc).
Figure 20: Een webserver kan gewoon je computer zijn, dus waarom niet je telefoon? Low-tech Magazine-website weergegeven op een laptop uit 2013. Foto Marie Verdeil (licentie cc-by-sa-nc).

Facilitator

Kunnen we iets soortgelijks doen om zelf tekst en afbeeldingen te hosten? Ja, met onze telefoons: in wezen een gratis, krachtige, batterijgeoptimaliseerde computer. Dat is wat we nu gaan doen!

“Server” praten tegen mijn telefoon: de terminal

Om onze telefoon in een server te veranderen (dat wil zeggen een computer die informatie kan terugsturen wanneer daarom wordt gevraagd), moeten we een aantal apps installeren. De belangrijkste app heet Termux. Je kunt de technische documentatie ervan raadplegen op deze wiki. Termux is een terminalemulator en een verzameling pakketten. Met deze app kunnen we directe opdrachten geven aan de computer (of telefoon) en andere software (stukjes code verpakt in mappen) downloaden.

Facilitator

In dit deel leggen we uit wat een opdrachtregelinterface (terminal) is en downloaden we Termux.

WTF is een terminal?

Facilitator

Dit theoretische deel (hieronder) kan parallel aan het downloaden van Termux worden gedaan (zie volgende stap). Bijvoorbeeld terwijl we wachten tot de APK (installatiebestand) is gedownload. In dat geval kun je misschien wat sneller werken en enkele afbeeldingen overslaan.

Voordat we verdergaan met de instructies voor het downloaden van Termux, nemen we even de tijd om te begrijpen wat we aan het doen zijn. Zoals we al zeiden, is Termux een terminalemulator, maar wat is een terminal eigenlijk?

Een CLI, Command Line Interface, ook wel terminal genoemd, is een manier om met de computer te communiceren met behulp van tekst, in plaats van knoppen of spraak. Het werkt als volgt:

  1. Een gebruiker typt een opdrachtregel met zijn toetsenbord en drukt op Enter
  2. De computer antwoordt met een andere regel die overeenkomt met de opdracht: een taak uitvoeren, informatie verstrekken, een pakket (pkg) downloaden Bijvoorbeeld:
pkg update 
...
[Pakket installeren......99%]
Pakket succesvol bijgewerkt.

Elke computer is toegankelijk via de CLI in plaats van de meer bekende GUI, de Grafische User Interface die we gewend zijn, met knoppen, afbeeldingen, een muis, een touchscreen, enz. Op Linux en MacOS kunnen we de standaard Terminal-app gebruiken, op Windows is er Windows Powershell of PUTTY.

Een Terminal-venster op een MacOS met het commando echo “some text”: de computer antwoordt met dezelfde tekst.
Figure 21: Een Terminal-venster op een MacOS met het commando echo “some text”: de computer antwoordt met dezelfde tekst.

De “command prompt” is ook de manier waarop we communiceren met computers die geen scherm hebben en/of ver weg staan, zoals servers!

Vóór de democratisering van thuiscomputers en de daaropvolgende uitvinding van de grafische interface werden alle taken op de computer uitgevoerd via tekstopdrachten. Het klikken op knoppen, menu’s en mappen is eigenlijk slechts een “gebruiksvriendelijke” laag die verbergt wat er werkelijk gebeurt. Elke “klik/tik” activeert ook een opdracht of een reeks opdrachten aan de computer, maar we zien de tekst niet meer.

Een deel van de uitvoer van het “HELP”-commando op een VT100-computer uit 1978 Door Autopilot - Eigen werk, CC BY-SA 3.0, (https://commons.wikimedia.org/w/index.php?curid=32815073) Vroege grafische interface op de Apple Lisa uit 1983 (wikimedia: Door Álvaro Ibåñez uit Madrid, Spanje - Apple Lisa (Little Apple Museum), CC BY 2.0, https://commons.wikimedia.org/w/index.php?curid=39544147)
Figure 22: Een deel van de uitvoer van het “HELP”-commando op een VT100-computer uit 1978 Door Autopilot - Eigen werk, CC BY-SA 3.0, (https://commons.wikimedia.org/w/index.php?curid=32815073)

Termux is ook een opdrachtregelinterface, maar dan voor Android-telefoons. Omdat we onze telefoon willen omvormen tot een server, wat niet de hoofdfunctie ervan is, moeten we dit rechtstreeks doen door een opdracht in een terminalvenster te typen. Daarom installeren we Termux.

Termux installeren

Facilitator

    Dit is het praktische gedeelte. Afhankelijk van hun technologische vaardigheden moeten alle deelnemers/groepen deelnemers hun eigen Android-smartphone hebben om de instructies te kunnen volgen. Ze moeten verbonden zijn met wifi. Het is gemakkelijker als ze de volgende QR-code kunnen scannen/de url kunnen intypen om toegang te krijgen tot de pagina. Op die manier kunnen ze ook enkele commando's kopiëren en plakken en de links volgen.

Wat is mijn Android-versie?

Om de juiste versie van Termux te installeren, willen we eerst de Android-versie van onze telefoon bepalen (het besturingssysteem waarop een smartphone draait).

  1. Ga naar de instellingen van je telefoon, scroll helemaal naar beneden en kijk bij Over de telefoon.
  2. Je zou een regel met de Android-versie moeten vinden.

Android-instellingen “Over de telefoon”
Figure 23: Android-instellingen “Over de telefoon”

Te oud voor Termux?

Als je telefoon Android 4 of lager heeft, dan werkt deze tutorial met Termux niet. Maar er zijn andere manieren om deze smartphone een nieuw leven te geven, zie het gedeelte Alternatieven.

Ga naar F-DROID

We downloaden Termux via F-Droid. F-Droid is een app store met alleen open-source apps. Dat betekent dat hun code voor iedereen zichtbaar is, zodat er geen verborgen trackers zijn die je gegevens verzamelen.

Geen Google Play Store

Hoewel je Termux ook in de Google Play Store kunt vinden, werkt het niet hetzelfde als je het daar downloadt.

  1. Ga naar Termux | F-Droid - Gratis en open source Android-app-repository of download F-droid en download de app vervolgens vanaf daar.

  2. Scroll helemaal naar beneden: download de stabiele (aanbevolen) versie (niet de bùtaversie) door Download APK te selecteren. !!! waarschuwing “Android 5 of 6” Als je telefoon op Android 5 of 6 draait, download dan het universele pakket van hier (selecteer [termux-app_v0.119.0-beta.3+apt-android-5-github-debug_universal.apk] (https://github.com/termux/termux-app/releases/download/v0.119.0-beta.3/termux-app_v0.119.0-beta.3+apt-android-5-github-debug_universal.apk))

  3. Tik na het downloaden op de APK op uw apparaat. Als u het niet kunt vinden, ga dan naar uw Bestanden-app, onder Downloads.

Kwaadaardige app?

Uw browser geeft mogelijk een waarschuwing dat .APK gevaarlijk is. Geen paniek! APK is gewoon een type bestand waarmee een app wordt geĂŻnstalleerd. Wees gewoon voorzichtig met waar het vandaan komt, net als alles wat u van internet downloadt.

Termux APK downloaden, aanbevolen versie, klik op de blauwe tekst
Figure 24: Termux APK downloaden, aanbevolen versie, klik op de blauwe tekst

Termux APK downloaden, aanbevolen versie
Figure 25: Termux APK downloaden, aanbevolen versie

Termux installeren: download voltooid
Figure 26: Termux installeren: download voltooid

Klik op ‘Toch installeren’ voor apps die je vertrouwt.
Figure 27: Klik op ‘Toch installeren’ voor apps die je vertrouwt.

  1. Klik op ‘Installeren’ en accepteer.
  2. Tik op installatie van apps van onbekende bronnen toestaan (u hebt dit later nodig) of ga naar de instellingen van de telefoon om apps van derden te kunnen starten en ga terug.
  3. Na de installatie ziet u de Termux-launcher op uw startscherm en in uw App-bibliotheek.

Termux API installeren (optioneel)

Facilitator

Termux API is optioneel en niet nuttig als we alleen een webserver maken voor demonstratiedoeleinden. Voor een breder publiek is het misschien beter om dit over te slaan.

Voor meer geavanceerde toepassingen werkt Termux het beste in combinatie met zijn zusterapp, Termux API. Met Termux API kunt u enkele hardwarefuncties van de telefoon bedienen, zoals trillen, de camera, enz. De documentatie vindt u hier.

Als u Termux API wilt installeren, volgt u de instructies hier voordat u doorgaat naar de volgende stap.

Laatste configuratie

Voordat we commando’s kunnen geven aan onze telefoon via de Termux Terminal, maken we een laatste configuratie voor opslag. Het instellen van Termux-opslag helpt u uw bestanden en mappen bij te houden (meer informatie hier).

Opmerking

Volg voor elke opdracht dezelfde instructies als hiervoor: typ de exacte opdracht, druk op enter en wacht.

  1. Zorg ervoor dat alles up-to-date is (pakketupdate en pakketupgrade)
pkg update && pkg upgrade -y
  1. Sla opslag op:
termux-setup-storage -y
  1. Geef Termux toegang tot de opslag van de telefoon, foto’s, enz.

Bekende bugs

Op sommige oude Samsung-telefoons werd de tekst die we in Termux typten niet weergegeven. We hebben gewoon een gratis en open-source toetsenbord-app gedownload op F-DROID genaamd Simple Keyboard in plaats van de ingebouwde versie van Samsung, en daarmee was het probleem opgelost!

Pauze?

Als we dat nog niet eerder hebben gedaan, is dit een goed moment om even pauze te nemen en bij te praten met deelnemers die problemen ondervinden.

Mijn telefoon als webserver

Een webserver installeren

Nu Termux is geïnstalleerd, kunnen we instructies/opdrachten geven aan onze telefoon buiten de bestaande apps om. Om een server te maken, hebben we webserver-software nodig, een pakket code dat verzoeken van clients (andere computers) kan ontvangen en webcontent kan terugsturen. We gebruiken NGINX {‘Engine X’}, dat veel wordt gebruikt.

NGINX downloaden en uitvoeren

Open Termux op je telefoon, typ + voer het volgende in en wacht:

  1. Installeer nginx
pkg install nginx -y

Waarom een -Y?

In het bovenstaande commando gebruiken we de optie -y. Dit staat voor “Yes” (ja), wat betekent dat we alle configuratievragen willen accepteren, in plaats van handmatig “Y” + enter te typen voor elke prompt.

  1. Start NGINX op met dit commando.
nginx

Hoewel er niets op je telefoon verschijnt (behalve als je een foutmelding krijgt), zou je server nu op de achtergrond moeten draaien!

Enkele handige commando’s bij het werken met NGINX

  • Stop de server; nginx -s stop
  • Vernieuw de server (de inhoud ervan): nginx -s reload
  • Zoek hulp nginx -h

Werkt mijn server?

Om te controleren of je server draait, open je je browserapp en typ je het volgende in de zoekbalk: <http://localhost:8080> en druk je op Enter. Je zou de standaardpagina van NGINX moeten zien verschijnen met de tekst “Welcome to nginx!”

Laten we nu deze standaardwebpagina aanpassen.

veelgemaakte fouten

  • Ik heb http:// niet toegevoegd voor localhost:8080

Nginx installeren in Termux “Welkom bij nginx”-pagina op een telefoon
Figure 28: Nginx installeren in Termux

Een eigen webpagina

Facilitator

Het is misschien een goed idee om even samen te kijken naar wat we hebben gedaan: de server is live, maar we openen het webpagina-bestand gewoon lokaal vanuit de nginx-map. Daarom heet het “localhost”.

Nu onze server live is, gaan we eens kijken wat we zien. Wanneer we een website openen in de browser, halen we eigenlijk een bestand op uit de map van de webserver op die computer.

In wezen is een website gewoon een map met verschillende bestandstypen op een externe computer.

Meestal heet het hoofdbestand van een webpagina index.html. index omdat het een lijst is van alle inhoud van de pagina, maar ook van alle externe bronnen die nodig zijn om de pagina weer te geven, zoals afbeeldingen, video’s, lettertypen, enz. HTML (Hypertext Mark-up Language) is de programmeertaal die wordt gebruikt voor webpagina’s en het belangrijkste bestandsformaat. Er zijn ook andere talen:

  • HTML is bedoeld om inhoud te structureren en een hiĂ«rarchie aan te brengen.
  • CSS is voor stijlen: de lay-out van onze webpagina (kleur, grootte, kolommen maken, enz.).
  • Javascript (.js) is voor interactiviteit: knoppen animeren en omschakelen, dropdown, externe inhoud ophalen, enz.

Facilitator

De bovenstaande uitleg kan worden geĂŻllustreerd door aantekeningen te maken op een whiteboard of een laptop aan te sluiten op een beamer en de ontwikkelaarstools van een website te openen: rechtsklikken > bron (van pagina) bekijken. Er wordt een ander tabblad geopend met het HTML-bestand van die pagina.

Onze aangepaste webpagina

Onze webpagina vinden

Laten we onze webpagina op onze telefoon zoeken. We navigeren door mappen met behulp van Termux. We gebruiken het commando cd pad/naar/map/ om naar onze websitemap te gaan, die door onze webserver is aangemaakt. cd staat voor “change directory” (directory is een ander woord voor map).

  1. Typ + enter
cd $PREFIX/share/nginx/html  
  1. Nu wil je weergeven wat er in deze map staat, met behulp van ls, wat staat voor “list”.
ls

Naar de nginx-bestands-/mapstructuur gaan
Figure 29: Naar de nginx-bestands-/mapstructuur gaan

  1. U zou 2 bestanden moeten zien: index.html en 50x.html. index.html is de hoofdpagina, terwijl 50x.html wordt weergegeven als er een specifieke fout is.

Note

Dat betekent dat ons index.html-bestand zich in de map html bevindt, die zich in de map nginx bevindt, die zich in share bevindt, enz.

map locatie

$PREFIX/share/nginx/html is een aliasnaam voor het pad, een snelkoppeling. Het volledige pad naar onze webpagina is –> /data/data/com.termux/files/usr/share/nginx/html/

Onze webpagina bekijken.

index.html is de webpagina die we in de browser van onze telefoon zien. Laten we deze openen.

  1. We gebruiken het commando nano bestandsnaam.extensie. “nano” is een zeer eenvoudige teksteditor in de terminal.
nano index.html
  1. We hebben het html-bestand in de terminal geopend. Dit is vergelijkbaar met het openen van een .docx-bestand in Office.
   <!DOCTYPE html>
   <html>
   <head>
   <title>Welkom bij nginx!</title>
   <style>
   html { color: dark; }
   body { width: 35em; margin: 0 auto;
   font-family: Tahoma, Verdana, Arial, sans-serif; }
   </style>
   </head>
   <body>
      <h1>Welkom bij nginx!</h1>
      <p>Als u deze pagina ziet, is de nginx-webserver succesvol geĂŻnstalleerd en
      werkt deze. Verdere configuratie is vereist.</p>

      <p>Raadpleeg voor online documentatie en ondersteuning
          <a href="http://nginx.org/">nginx.org</a>.<br/>
      Commerciële ondersteuning is beschikbaar op
          <a href="http://nginx.com/">nginx.com</a>.</p>
   </body>
   </html>

Facilitator

De onderstaande informatie moet worden uitgelegd terwijl het html-fragment op een beamer wordt getoond of op een whiteboard wordt getekend. Meer informatie over HTML hier.

HTML structureert informatie met verschillende waarden binnen “elementen” die worden omgeven door <tags>: de openingstag <p> en de sluitingstag </p>. Hier zien we verschillende elementen die we terugvinden op de weergegeven browserpagina. Binnen het <body>-element bevindt zich een <h1>-tag met een koptekst, enkele <p>-alinea’s en enkele <a>-links.

Binnen de <head> vinden we informatie over de pagina, maar dat is niet de inhoud:

  • <title>...de titel hier...</title>: is de titel die in het browsertabblad wordt weergegeven.
  • <style>color: blue;<style> is waar we CSS-code plaatsen om informatie te geven over de lay-out, kleur, enz.

Lazy typing

We kunnen de tab-knop (met 2 pijltjes) gebruiken om een bestands- of mapnaam automatisch aan te vullen. Begin met het typen van “inde” en druk op de tab-knop, dan wordt het einde van je bestandsnaam “index.html” automatisch ingevuld.

Onze webpagina bewerken.

Laten we wat tekst op de pagina veranderen.

Facilitator

Dit is een creatief moment, laat elke deelnemer binnen een paar minuten zijn eigen tekst en kleur kiezen (zie CSS-kleuren).

  1. Gebruik de pijltjes < > in nano om te navigeren en wat tekst te veranderen.
<h1>Deze webpagina staat op de telefoon van mijn oude vader</h1>
   <p>Als je deze pagina ziet, ben je OP MIJN TELEFOON!</p>

Zet me tussen die tags

Zorg ervoor dat je de HTML-syntaxis respecteert. Elementen moeten tussen tags staan <h1>Je tekst hier</h1>

  1. Wijzig de tekstkleur in <style>
<style>
html { color: orange; 
background: limegreen;
}
</style>

Styling met stijl

Zorg ervoor dat je de CSS-syntaxis respecteert. De stijlinformatie moet tussen <style> Styling komt hier en ALLEEN hier<style> staan. Elke declaratie volgt deze structuur: property : value;, bijvoorbeeld: font-size: 20px;

De webpagina openen op de telefoon
Figure 30: De webpagina openen op de telefoon

HTML-handleidingen

Meer informatie over HTML vindt u op de officiële W3. Maak je eigen website gids, HTML-sectie hier, HTML-webzine hier

CSS-handleidingen

Deze geweldige CSS-bronnen van kunstenaar Doriane Timmermans: declarations.style of deze video

Opslaan, afsluiten en opnieuw laden

Laten we nu opslaan en onze update bekijken:

  1. Druk op CTRL en typ x op het toetsenbord van Termux.
  2. Je krijgt de vraag “Save modified buffer? [Y/n]” (Gewijzigde buffer opslaan? [J/n])
  3. Typ y voor ja en druk op enter. (Typ no om af te sluiten zonder op te slaan).
  4. Ga naar je browser en vernieuw de pagina [http://localhost:8080/index.html].

HTML bewerken in de terminal met het nano-commando Opslaan door op CTRL + x te drukken Ja typen om op te slaan en op Enter drukken Resultaat: mijn webpagina
Figure 31: HTML bewerken in de terminal met het nano-commando

Zie je geen veranderingen?

Als het niet werkt, probeer dan het volgende: 1. Sluit de browser-app, open deze opnieuw en probeer het nogmaals. 2. Start nginx opnieuw, in Termux nginx -s stop, vervolgens nginx. 3. Controleer of je daadwerkelijk wijzigingen hebt aangebracht en opgeslagen in de index html-pagina: nano index.html.

Nginx-fout

Voeg hier het nginx-padrouteringsprobleem van Samsung toe (@ibo of Rein).

Oké, geweldig! Maar dat is niet zo spannend, toch? Ik kan mijn webpagina bekijken op mijn eigen webserver. Ik zou dat bestand ook gewoon in de bestandsbeheerder kunnen openen, daar heb ik geen internet voor nodig. Eigenlijk is uw webpagina al toegankelijk voor andere clients (andere computers), u hoeft hen alleen uw IP-adres te geven.

Waar staat mijn server?

Facilitator

Voordat we daadwerkelijk webpagina’s van andere deelnemers bezoeken, introduceren we het concept van het IP-adres door een vergelijking te maken tussen een IP-adres/webadres en een straatadres. Dit helpt om de fysieke aard van het web te benadrukken: websites staan op servers die zich ergens in een gebouw in de fysieke wereld bevinden.

Wat is een IP-adres?

IP-adres staat voor Internet Protocol-adres, de communicatiemethode die door alle soorten computers/servers op het internet wordt gebruikt (webservers, e-mails, bestandsoverdrachten, enz.). Aangezien het internet een enorm netwerk van computers is, hebben we een unieke manier nodig om elke server te identificeren, zodat we verzoeken naar de server kunnen sturen en de server informatie terug kan sturen naar het juiste apparaat.

Zie het als een straatadres: elk IP-adres is uniek en geeft aan waar die server zich bevindt en hoe je daar kunt komen.

Traditioneel bestaan IP-adressen uit een reeks van vier sets getallen (0 tot 255) gescheiden door een punt. Daarom zijn er adressen variërend van 0.0.0.0 tot 255.255.255.255, dat zijn meer dan 4,3 miljard unieke adressen! Door de exponentiële toename van het aantal apparaten dat online is aangesloten, raken we echter bijna door onze adressen heen. Daarom gebruiken sommige apparaten nu een nieuw, langer IP-adresformaat, IPv6 genaamd (dat er zo uitziet: 2600:1f1c:446:4900::259).

Lokaal versus wereldwijd netwerk

Facilitator

Terugkomend op de tutorial, gaan we het IP-adres van elke telefoon achterhalen, maar eerst moeten we weten wat een privé-IP-adres is en wat een openbaar IP-adres is.

Wat is het IP-adres van mijn server?

In Termux is er een commando om het huidige IP-adres van mijn apparaat te bepalen. We gebruiken het commando ifconfig om de bereikbaarheid van een server te testen. 1. Typ en voer in:

curl ifconfig.me
  1. We krijgen iets als dit:
200.300.304.304

Facilitator

Door iedereen te vragen dit IP-adres op te schrijven en voor te lezen, zien we dat iedereen hetzelfde adres heeft. We leggen uit waarom (hieronder): Nu zou elke telefoon die met dezelfde wifi is verbonden hetzelfde adres moeten krijgen. Waarom is dat zo? Dit is eigenlijk het openbare IP-adres van de wifi-router, het unieke adres dat de router gebruikt om toegang te krijgen tot het internet. Alle verzoeken die we (via het internet) naar externe servers sturen, gaan via onze wifi-router, die de toegangspoort is tot het grote internet, het wereldwijde netwerk. Alle apparaten die via wifi of kabel met de router zijn verbonden, vormen echter ook een netwerk: het lokale netwerk. Als je multiplayer-videogames in LAN (Local Area Network) hebt gespeeld, bijvoorbeeld met een Minecraft-server met je vrienden thuis, is dit je wellicht bekend. Via dit lokale netwerk kunnen we ook op afstand met onze printer communiceren, terwijl we met hetzelfde wifi-netwerk zijn verbonden. In dit lokale netwerk heeft elk aangesloten apparaat ook een uniek IP-adres, zodat de router weet wie verzoeken verstuurt (naar het internet of naar andere apparaten) en het verkeer kan sturen. Dit lokale IP-adres wordt het privé-IP-adres* genoemd. Kort gezegd is het openbare IP-adres het adres van onze router wanneer deze op het internet surft, terwijl een privé-IP-adres** het lokale adres is van elk apparaat in ons thuisnetwerk.

Het kleine internet (uw lokale wifi-netwerk) versus het grote internet
Figure 32: Het kleine internet (uw lokale wifi-netwerk) versus het grote internet

Facilitator

De afbeelding hierboven helpt het concept van een lokaal netwerk te verklaren. Elk apparaat op het lokale netwerk is via wifi (draadloos) of kabel (ethernet) verbonden met de router. Om elk apparaat te kunnen onderscheiden en verzoeken te kunnen ontvangen, wijst de router aan elk apparaat een lokaal IP-adres toe. Alle verzoeken gaan via de router, hetzij om tussen apparaten te communiceren (bijvoorbeeld een computer die bestanden naar de printer stuurt om af te drukken), hetzij via de “gateway” naar het grote internet en terug.

Wat is het privé-IP-adres van mijn telefoon?

In de terminal gebruiken we ifconfig om het privé-adres van ons apparaat te achterhalen: 1. Typ en druk op Enter:

ifconfig

Het commando ifconfig gebruiken 2. In de uitvoer zoeken we naar de regel die begint met wlan0....inet, dit heeft betrekking op de wifi-interface. Na inet staat een IP-adres dat er als volgt uitziet:

192.168.1.255 
  1. Noteer dit adres. Dit is het IP-adres van uw apparaat zolang u verbonden blijft. (Het kan veranderen als u de verbinding verbreekt en vervolgens opnieuw verbinding maakt).

Het lokale netwerk verkennen

Nu we het lokale (privé) IP-adres van onze webserver kennen (waar onze server zich bevindt), kunnen we andere apparaten op het netwerk onze webpagina laten bezoeken!

Facilitator

Nu kunnen we de aangepaste webpagina van elke deelnemer bezoeken. Met een laptop die is verbonden met wifi en een beamer kunnen we elke deelnemer om zijn of haar “adres” (IP-adres) vragen, dit invoeren en aan iedereen laten zien! 1. Gebruik een ander apparaat dan uw telefoonserver om de servers van uw telefoon via het lokale netwerk te bezoeken. 2. Typ in de browser + enter: http:// + 192.168.XX.XX+ :8080 3. Zorg ervoor dat u http:// gebruikt en niet https:// (we hebben nog geen secure SSL-certificaat). 4. U kunt nu uw aangepaste webpagina bekijken.

Een webpagina bezoeken via de telefoon
Figure 33: Een webpagina bezoeken via de telefoon

Facilitator

We kunnen nu nauwkeuriger uitleggen wat er gebeurt. Onze client (telefoon of laptop) vraagt de index.html op bij een bepaald adres. De router stuurt dit verzoek door naar de telefoonserver (met zijn lokale IP). De server “serveert” het index.html-bestand.

De etherbox - een lokale server die etherpad host: software voor het gezamenlijk maken van aantekeningen (een beetje zoals Google Docs)
Figure 34: De etherbox - een lokale server die etherpad host: software voor het gezamenlijk maken van aantekeningen (een beetje zoals Google Docs)

Facilitator

Dit lokale netwerk heeft al veel potentieel. Nu we weten dat dit mogelijk is, zouden veel toepassingen van het internet net zo goed kunnen werken met een lokaal netwerk, zonder dat er een datacenter nodig is. Het QR-codemenu van een restaurant zou bijvoorbeeld op het lokale netwerk kunnen staan, net als lokaal nieuws, enz. Op die manier hoeven gegevens niet te worden opgeslagen en van een externe locatie te worden verzonden. De afbeelding hierboven toont een project van Constant VZW (BE): zij hebben een lokaal netwerk om aantekeningen te maken tijdens een vergadering of workshop. In plaats van de notities op een externe server te bewaren, worden ze hier gehost. Dat zorgt er ook voor dat ze privé blijven, aangezien ze alleen toegankelijk zijn als je binnen het bereik van de wifi bent.

Facilitator

We kunnen de deelnemers een vraag stellen om een discussie op gang te brengen: welke toepassingen van het internet zouden ook op een lokaal netwerk kunnen werken? Welke nieuwe toepassingen kun je je voorstellen?

Online gaan op het grote internet?

Facilitator

Nadat we de relatie tussen client en server hebben begrepen, duiken we in het grotere internet.

Hoewel een lokaal netwerk al potentieel heeft, is het uiteindelijke (althans het oorspronkelijke) doel van het internet om afgelegen plaatsen met elkaar te verbinden en gebruikers toegang te geven tot informatie over de hele wereld.

Er zijn verschillende manieren om een lokale server via het internet open te stellen voor het publiek. In wezen komt het erop neer dat je aan andere servers uitlegt op welk openbaar IP-adres je website te vinden is, zodat bezoekers daar naartoe kunnen worden geleid.

Protip

We kennen het openbare IP-adres van onze router al van eerder. Om veiligheidsredenen houden de meeste internetproviders echter geen vast IP-adres aan voor elk huisnetwerk en het openstellen van ons privĂ©netwerk voor het internet stelt ons bloot aan veiligheidsrisico’s. Er zijn echter veel online tutorials beschikbaar over hoe je dat kunt doen, afhankelijk van je internetprovider/router.

Hoe zit het met de naam van mijn website?

Wacht even! Als ik online ga, gebruik ik nooit een IP-adres. Ik typ gewoon een adres in de zoekbalk of zoek het op met een zoekmachine. Omdat IP-adressen moeilijk te onthouden en te wijzigen zijn (om veiligheidsredenen of omdat een site van de ene server naar de andere verhuist), gebruiken we domeinnamen in webadressen.

Een domeinnaam bestaat uit ten minste twee delen: de domeinnaam, zoals Wikipedia, en de extensie, zoals .org, of (.com, .net, .nl, .fr, enz.). Soms is er ook een subdomein, zoals in of . Een subdomein verwijst meestal naar een onderdeel van een website.

www-subdomein

De meeste websites gebruiken de standaard “www” als subdomein, zoals in www.w3schools.com

Toegang tot bestanden via internet
Figure 35: Toegang tot bestanden via internet

Facilitator

De afbeelding hierboven legt uit hoe we een webpagina via internet kunnen ophalen. Eerst gaat ons verzoek via wifi naar onze router. De router moet uitzoeken welk IP-adres overeenkomt met de domeinnaam. Hij stuurt een zoekopdracht via een DNS, Domain Name Server: deze server kan IP-adressen koppelen aan domeinnamen en stuurt het IP-adres van de server terug. De router kan vervolgens de bestanden opvragen bij de server, die ze levert (terugstuurt). Meer informatie hierover vindt u in dit leuke stripboek: Hoe DNS werkt.

Facilitator

De 2 onderstaande oefeningen zijn optioneel, afhankelijk van de groep/het niveau/de timing. Het idee is om IP-adressen te koppelen aan domeinnamen.

Oefening: IP-adres van bekende websites

In de terminal (Termux) kunnen we een eenvoudig commando gebruiken om het IP-adres van een website (de server) te achterhalen. We gebruiken het commando ping om de bereikbaarheid van een server te testen.

  1. Typ en druk op Enter:
ping wikipedia.org 
  1. Als we online zijn, zouden we nu binnen enkele milliseconden informatie terug moeten krijgen! We zien ook het IP-adres van wikipedia.org, dus 185.15.58.224 (de laatste keer dat we dit controleerden). Als u dit IP-adres in uw browser invoert, komt u ook op Wikipedia terecht: http://185.15.58.224

  2. Om ping af te sluiten, drukt u op CTRL en c op het toetsenbord.

Screenshot van een telefoon met het ping-commando dat feedback van Wikipedia.org teruggeeft
Figure 36: Screenshot van een telefoon met het ping-commando dat feedback van Wikipedia.org teruggeeft

Oefening: Waar staat Wikipedia?

Met behulp van een dienst als IP-location kunnen we een IP-adres koppelen aan een locatie en zien waar bekende websites hun servers hebben staan.

  1. Ga naar IP-location
  2. Typ een IP-adres in (zoals 185.15.58.224 voor Wikipedia)
  3. Kijk op de kaart waar het zich bevindt :)

URL - Het volledige adres van een webpagina

Een url is de naam van het volledige webadres. Het bestaat uit 3 delen. We hebben bijvoorbeeld https://en.wikipedia.org/wiki/Internet/index.html

  • https:// is het communicatieprotocol van het web (webpagina’s op websites, op webservers)
  • en.wikipedia.org is het domein en subdomein
  • /wiki/Internet/ is het pad, de mappen en submappen die we moeten doorlopen om bij de locatie te komen waar ons bestand zich bevindt.
  • index.html is het bestand dat we opvragen, het bestand dat de inhoud van deze pagina bevat en de lijst met alle bronnen die nodig zijn om deze pagina weer te geven (lettertypen, afbeeldingen, stylesheets, databases, enz.). Standaard is dit index.html, dus u hoeft dit niet te schrijven.

!!! opmerking “http VS http’s protocol” http:// staat voor het communicatieprotocol dat we gebruiken. http of (https) is het protocol voor het browsen op websites, terwijl SMTP bedoeld is voor het verzenden van e-mails, enz. :8080 is onze poort, de “plaats” die we proberen te bereiken op onze server. Als ons IP-adres het adres van ons servergebouw was, zou de poort de verdieping zijn waar “NGINX” zijn kantoor heeft.

Er zijn verschillende manieren om “openbaar” te gaan: door een vast openbaar IP-adres te gebruiken en de poorten open te stellen voor het publiek (poortdoorsturing), door een dynamische DNS-tool te gebruiken of door een reverse proxyserver te gebruiken.

Reverse-Proxy

We gaan een reverse proxy gebruiken. Een reverse proxy is een tussenliggende server die al openbaar is en fungeert als tussenpersoon tussen onze lokale webserver en potentiële klanten (andere apparaten).

In deze tutorial gebruiken we de reverse proxy-server van comphost.club in Nederland, zodat we dit enigszins lokaal kunnen houden.

Hoe een reverse proxy werkt
Figure 37: Hoe een reverse proxy werkt

Aan de hand van bovenstaande afbeelding kunnen we uitleggen hoe onze reverse proxy werkt. 1. We maken een “tunnel”-verbinding tussen onze server-telefoon en de proxyserver. 2. Een klant probeert een verbinding te maken en wordt via de DNS (3-4) doorgestuurd naar het IP-adres van de proxyserver. 5. De proxyserver geeft de verbinding door aan de server en stuurt vervolgens het antwoord door naar de klant (6). Dit is vergelijkbaar met hoe een VPN werkt, maar dan zonder de versleuteling.

Configuraties voor reverse proxy’s

Hieronder worden verschillende manieren beschreven om een reverse proxy te maken:

  1. SirTunnel gebruiken op comphost.club, onze zelfgehoste methode.
  2. Localhost.run gebruiken, een freemium online tool waarvoor geen registratie nodig is.
  3. Met behulp van Ngrok, een freemium en krachtige tool waarvoor registratie vereist is.

Er zijn veel (commerciële) reverse proxy-tools, waarvan er een aantal worden vermeld in deze uitgebreide lijst.

1. SirTunnel op comphost.club

Comphost.club draait de reverse-proxy-software SirTunnel, die werkt met het communicatieprotocol SSH.

Warning

Comphost.club-domeinhosting en reverse proxy zijn echter alleen beschikbaar op workshops die worden gehost door CCU. Gelukkig zijn er veel commerciële alternatieven. Je kunt ook kijken naar zelfhosting van je eigen reverse proxy-software op je server.

!!! protip “SSH-protocol” Het Secure Shell Protocol (SSH) wordt doorgaans gebruikt om veilig in te loggen op de command-line interface (CLI) van een externe computer en om opdrachten uit te voeren op een externe server. We kunnen ssh ook gebruiken om onze telefoon op afstand te bedienen via een laptop, zodat we gemakkelijker kunnen typen.

  1. We installeren SSH-software op onze telefoon: OpenSSH:
pkg install openssh -y
  1. We passen onze eigen SirTunnel-opdracht aan op basis van het volgende:
ssh -tR XXXX:localhost:8080 comphost@comphost.club ./sirtunnel.py xx-my-subdomain-name-xx.comphost.club XXXX
  1. We vervangen XXXX door een uniek poortnummer (elke deelnemer moet zijn eigen nummer hebben), bijvoorbeeld 4567

  2. We vervangen xx-my-subdomain-name-xx door een origineel subdomeinadres, bijvoorbeeld brokensamsung

  3. Typ + voer de aangepaste opdracht in Termux in:

ssh -tR 4567:localhost:8080 comphost@comphost.club ./sirtunnel.py brokensamsung.comphost.club 4567

Openssh downloaden in Termux
Figure 38: Openssh downloaden in Termux

Een tunnel maken naar de reverse proxyserver comphost.club
Figure 39: Een tunnel maken naar de reverse proxyserver comphost.club

  1. Als je voor het eerst verbinding maakt, bevestig dan de authenticiteit van de host door “yes” te typen en op Enter te drukken.

  2. Voer het wachtwoord in en druk op Enter.

Facilitator

wachtwoord is workshopbymarieandrein:)

Protip

Wanneer u een wachtwoord in een CLI typt, kunt u dit niet zien. Als u zich zorgen maakt over spelfouten, typ het dan in een ander programma (uw Notitie-app) en kopieer en plak het.

  1. Andere apparaten kunnen nu uw webpagina bezoeken op brokensamsung.comphost.club

Alle mobiele servers die momenteel actief zijn, staan vermeld op de indexpagina van comphost.club.

Probleemoplossing

Toegang geweigerd? Probeer een andere poort (deze is mogelijk bezet)

Een telefoon waarop onze webpagina wordt weergegeven, gehost op brokensamsung.comphost.club
Figure 40: Een telefoon waarop onze webpagina wordt weergegeven, gehost op brokensamsung.comphost.club

localhost.run gebruiken

  1. Typ in Termux het volgende en druk op Enter:
ssh -R 80:localhost:8080 localhost.run
  1. Typ yes + enter om verbinding te maken.

  2. U krijgt een tijdelijke domeinnaam die er ongeveer zo uitziet: https://46dd096d0d85c2.lhr.life. Als u een aangepast domein wilt toevoegen, moet u betalen.

ngrok gebruiken

Ngrok is een Amerikaanse commerciële reverse proxy-tool, dus u moet deze installeren en een account aanmaken.

  1. Installeer ngrok in Termux, typ elke opdracht, druk op enter en ga verder
pkg update -y
pkg install git -y
git clone https://github.com/Yisus7u7/termux-ngrok
cd termux-ngrok
bash install.sh
  1. Meld u aan bij ngrok:
  • Ga naar
  • Meld u aan en verifieer uw e-mailadres.
  1. Kopieer uw auth-token in het relevante gedeelte en voeg het toe aan de configuratie: - Voer de volgende opdracht in en vervang [auth-token] door het auth-token dat u zojuist hebt gekopieerd en geplakt.
ngrok config add-authtoken [auth-token]
  1. Kopieer en plak de opdracht onder statisch domein en verander poort 80 in poort 8080
ngrok http --url=gorilla-champion-tomcat.ngrok-free.app 8080

Controleer de ngrok-configuratie en betaalde abonnementen voor meer geavanceerde configuratie. Bijvoorbeeld om een aangepast domein in te stellen.

Conclusie

Facilitator

Dit is het einde van de begeleide workshop. Het is goed om even de tijd te nemen om dit deel af te ronden. Sommige deelnemers willen misschien vertrekken, terwijl anderen verdergaan met het bewerken van hun webpagina. We kunnen beginnen met de vraag wat voor elke deelnemer de belangrijkste leerpunten zijn in een rondje van korte toespraken. Enkele goede open vragen: Begrijpen ze waarom zelfhosting belangrijk is? Hoe stellen ze zich een internet voor dat draait op kleine hergebruikte apparaten?

De tutorial over mobiele webservers eindigt hier! Bedankt voor het volgen. Als je feedback of vragen hebt, aarzel dan niet om contact op te nemen (zie de pagina Over voor contactgegevens).

Verder gaan

Er zijn aanvullende bronnen te vinden in de sectie Verder gaan. Je kunt ook de Git-repository van Comphost raadplegen voor extra code en voorbeelden.

We zullen enkele updates plaatsen naarmate we de documentatie verder ontwikkelen.