Zoeken op website

Ik heb dit kleine offline internet gebouwd en nu kan ik antwoorden krijgen tijdens een storing


Ik woon op het platteland, dus internet is niet iets dat ik betrouwbaar als 'altijd aan' kan beschouwen. Het kost maar één hevig onweer of een stroomstoring die de back-upbatterijen in de lokale zendmast overtreft om me terug te brengen naar het stenen tijdperk. Het is op zijn minst frustrerend, en er was een oplossing nodig om het gebrek op te vullen terwijl ik wachtte tot het internet terugkwam.

Dus besloot ik een offline mini-internet op mijn laptop te bouwen. Het project begon als een manier om toegang te hebben tot nuttige Linux-commando's en leesmateriaal wanneer ik gedwongen offline was door wat de natuur ook voor mij in petto had. Maar natuurlijk groeide het al snel uit tot een serieus project dat zijn eigen besturingssysteem en virtuele machine verdiende.

Dus mijn "OfflineNet" werd gemaakt, en ik bouwde het binnen een Debian Trixie VM, met een Apache-webserver, Kiwix voor gratis offline wiki-bestanden, een grote lokale bibliotheek en Recoll voor geïndexeerd en snel lokaal zoeken. Nadat het voltooid was, had ik een paar duizend ongeorganiseerde bestanden omgezet in een volledig offline mini-internet dat werkte vanaf zowel de VM als mijn hostmachine.

Ik hield de bouw opzettelijk licht en saai

Debian en XFCE zijn niet glamoureus, maar ze zijn snel en praktisch






Ik gebruikte VMWare Workstation in plaats van VirtualBox voor deze build omdat ik al gasten draaiende had op ESXi en een appliance wilde die ik kon migreren. Voor het besturingssysteem koos ik Debian Linux met een XFCE-desktop omdat ik iets saais en snels nodig had in plaats van iets moois en resource-intensiefs.

De combinatie van Debian en XFCE gaat zeker nooit een schoonheidswedstrijd winnen, maar voor een overlevings-VM is de saaiheid ervan absoluut een voordeel. Het is licht genoeg voor 4GB geheugen, vertrouwd, en eenvoudig genoeg om iets minder lelijk te maken met een donker thema en wat mooie lettertypen.

De enige echte update aan de distributie zelf na het opstarten van de VM en het installeren van Debian was dat het VMware-integratie nodig had, dus installeerde ik OpenVMware-tools om bureaubladresizing en klembordondersteuning in te schakelen:

sudo apt install open-vm-tools open-vm-tools-desktop

De laatste stap voordat de benodigde software werd geïnstalleerd, was het aanmaken van een map in de /home-directory waar de initiële bestanden zouden worden geplaatst voordat ze werden overgebracht naar /var/www/html:

mkdir ~/OfflineNet

Om zich als een mini-internet te voelen, had het eerst een lokale startpagina nodig

Een eenvoudige Apache-webserver en een snelle HTML-pagina brachten alles samen

Om te voorkomen dat het project gewoon een enorme map vol bestanden en mappen was, had het een voorpagina nodig. Ik installeerde een Apache-webserver, maakte een eenvoudige lokale startpagina en gebruikte deze als het dashboard en de landingspagina voor de rest van het project:

  • Kiwix voor het downloaden en aanbieden van educatieve inhoud zoals Wikipedia, StackExchange en Gutenberg.
  • De referentiebibliotheek van PDF-bestanden.
  • Herstelnotities.
  • Recoll-zoekopdracht.
  • Opstartscripts.

Om het een beetje legitiemer te laten lijken, heb ik een hostnaam toegevoegd aan mijn Windows-hostsbestand met PowerShell:

Add-Content -Path "$env:windir\System32\drivers\etc\hosts" -Value "`n192.168.226.134 myofflinenet.local"

En ook naar mijn Linux-hostsbestand:

echo "127.0.0.1 myofflinenet.local" | sudo tee -a /etc/hosts

Op deze manier kon ik myofflinenet.local openen zowel vanuit de VM als vanuit mijn Windows-browser. Deze ene instelling zorgde ervoor dat het fijn en verzorgd aanvoelde, en nu functioneert het ook als een klein lokaal netwerkdienstje.

Kiwix was de sleutel tot het creëren van een offline wiki zonder dat je het hele internet hoeft te downloaden

Ik ontdekte dat het belangrijk was om selectief te zijn, omdat sommige ZIM-bestanden enorm zijn

Kiwix was het platform dat essentieel was om het project als een echte mini-internet te laten aanvoelen, maar ik moest er verstandig mee omgaan. Kiwix stelde me in staat om gecomprimeerde ZIM-bestanden te downloaden die enorme hoeveelheden webinhoud opslaan die bedoeld is om offline te worden bekeken.

Zoals je je kunt voorstellen, kunnen deze bestanden enorm groot worden, en aangezien de VM zelfstandig moest zijn, moest ik selectief zijn over wat ik downloadde. Ik stelde mezelf een limiet van 20 GB en koos nuttige ZIM-bestanden zoals geneeskunde, offline kaarten, doe-het-zelf en enkele Linux-cheat sheets van de website van de Kiwix-bibliotheek.

Het installeren van Kiwix was verfrissend eenvoudig:

sudo apt install kiwix-tools 

Na de installatie kopieerde ik de ZIM-bestanden naar mijn ~/OfflineNet/zim-map. Omdat Kiwix de bestanden lokaal bedient, kon ik ze gewoon openen zodra ik Kiwix startte op poort 8080:

kiwix-serve --port=8080 ~/OfflineNet/zim/*.zim

Dat maakte een lokale wiki aan op http://myofflinenet.local:8080, en ik heb die link toegevoegd aan mijn lokale startpagina en opnieuw gepubliceerd op Apache.

Ik hield de bibliotheekmappen om een goede reden eenvoudig

Wanneer er geen internet is, heb je goed georganiseerde mappenstructuren nodig zodat je je verstand niet verliest

De Kiwix-wiki was super flashy, maar de gewone mappen waren net zo belangrijk omdat ze ook belangrijke informatie bevatten. Ik heb /library, /notes en /downloads aangemaakt in /var/www/html en statische HTML-pagina's gemaakt in elke map die de inhoud vermeldden.

De sleutel was om alles eenvoudig te houden, geen opvallende HTML-effecten, en een mappenstructuur die voor mij logisch was en gemakkelijk te navigeren zonder het gebruik van optimalisatietools. De mappenstructuur was opzettelijk eenvoudig:

mkdir -p ~/OfflineNet/{zim,library,web,notes,scripts}

Apache diende de mappen vervolgens via die eenvoudige lokale paden:

  • http://myofflinenet.local/library/
  • http://myofflinenet.local/notes/
  • http://myofflinenet.local/downloads/

Aangezien de standaarddirectorylijsten van Apache er nog steeds uitzien als een FTP-server uit 1998, heb ik deze vervangen door statische indexpagina's met wat CSS voor de bibliotheek-, notities- en downloadmappen. Ze hadden nog steeds dezelfde eenvoud, alleen wat mooier om naar te kijken.

Recoll heeft duizenden onhandelbare bestanden omgezet in een doorzoekbaar offline platform

Zelfs met de beste bedoelingen is het moeilijk om duizenden PDF's bij te houden zonder enige indexering

Bestanden opslaan is gemakkelijk. Ze zo organiseren dat je ze nog steeds kunt vinden zes maanden later, zonder internet, terwijl je al geïrriteerd bent, is een ander verhaal. Ik besloot dat het project indexering nodig had en een manier om door bestanden te zoeken met trefwoorden. Recoll past perfect bij dit project omdat het bestanden kan vinden en organiseren, zelfs als je de mapstructuur volledig verwijdert.

Ik heb Recoll geïnstalleerd met:

sudo apt install recoll

Toen heb ik het vanuit het Applications-menu uitgevoerd en direct laten wijzen naar ~/OfflineNet en heb ik het alle notities, PDF's, opgeslagen pagina's en lokale documenten laten vinden. Recoll maakt ook trefwoordenlijsten en kan je zoekopdracht aanvullen, zelfs wanneer je offline bent. Daarna kon ik gewoon zoeken naar wat ik nodig had, en Recoll bracht elk bestand omhoog dat het trefwoord/de trefwoorden bevatte.

Recoll gaf mijn offline internetproject in feite zijn eigen zoekmachine, en dat allemaal zonder een enkele database server, webapp of iets dat toezicht nodig had. Op dit punt was de VM klaar om geëxporteerd te worden naar OVF voor toekomstig gebruik en opgeborgen op een externe harde schijf voor de volgende onvermijdelijke langdurige internetstoring.

De eerste kans om het offline uit te proberen kwam eerder dan verwacht

Het internet verdween, maar mijn lokale kenniscentrum redde de dag

Nog maar net had ik de laatste build voor het project afgerond, toen ik getroffen werd door een internetstoring. Niet door een hevige weerssituatie, maar gewoon door ouderwets geplande onderhoudswerkzaamheden. Het was de perfecte gelegenheid om het mini-internetproject uit te proberen, en wat is er beter dan het te gebruiken om iets te vinden om voor het avondeten te koken?

Ik startte de VM op, wachtte tot de automatische scripts Kiwix hadden opgestart, en begon te zoeken naar een recept om uit te proberen. De startpagina laadde direct, en Kiwix was binnen enkele seconden na het inloggen klaar voor gebruik. Dit was een geweldige test omdat het liet zien dat het project robuust was, en nog beter, het was razendsnel. Recoll kon nog steeds door de lokale documenten zoeken die ik eerder had geïndexeerd. En in tegenstelling tot de zoekfunctie van het Windows Startmenu, die nog steeds afhankelijk is van internetverbinding, merkte het systeem niet eens dat het internet ontbrak.

Ik vond al snel een recept voor in de lucht gefrituurde courgette in een van mijn recepten in het publieke domein op Kiwix, en genoot van een heerlijke avond gewoon met het lezen van een boek. Het was niet het hele World Wide Web, maar het was toch precies wat ik nodig had.

Ik zou het de volgende keer zeker anders bouwen, maar ik houd deze versie nog steeds.

Klein, saai en doorzoekbaar is de winnende combinatie voor een klein offline project, maar ik wil iets groters

Deze versie van het project werkte goed als een proof of concept, voornamelijk omdat het klein en wendbaar was. Hoewel het uitstekend werkt, voel ik zeker de behoefte om het te verbeteren en verder te ontwikkelen. Volgende keer zou ik de VM wat gekoppelde opslag geven en een offline chatbot toevoegen via een toegewijde private LLM.

Voorlopig blijf ik kleinere bestanden toevoegen en een betere offline bibliotheek opbouwen terwijl ik geduldig wacht op de volgende internetstoring door een onweersbui, onderhoud of iemand die vergeet het bel-voor-je-graaft nummer te gebruiken.

Gerelateerde artikelen