Linkding is een open source bookmark-service die je zelf host op je Linux server of Raspberry Pi. Het heeft een vlotte, strakke en minimalistische userinterface. Tags zorgen voor structuur in je verzameling bookmarks en de zoekfunctie zorgt dat snel je bookmarks terugvindt.

Door: Matto Fransen

Herken je dit? Je gebruikt meerdere computers, op je werk en thuis, misschien een combinatie van PC’s en laptops, je gebruikt meerdere besturingssystemen door elkaar en op die systemen ook nog verschillende webbrowsers. Daarnaast heb je ook nog browsers op je mobiele apparaten zoals je smartphone en tablet. Je weet nog vaag dat je vorige week een webpagina gezien hebt die je nu heel goed van pas komt. Maar welke was dat, en op welk apparaat, besturingssysteem en browser was dat?

Wanneer dit een herkenbare situatieschets is, ben je toe aan een bookmark manager. Veel mensen hebben dit probleem, er bestaan verschillende commerciële cloud-oplossingen. Dit soort cloud-oplossingen worden veelal gefinancierd door partijen die streven naar een zo uitgebreid mogelijk profiel van je, om nog meer winst met targeted digitale marketing te maken. Daarnaast loop je met een cloudoplossing altijd het risico dat de cloudaanbieder op een gegeven moment de betreffende dienst stopt.

Wij gingen op zoek naar een bookmark-service die je zelf in je eigen thuisnetwerk beheert, makkelijk te installeren is, niet te veel resources vraagt en het liefst ook op een Raspberry Pi werkt.

 

Linkding

Screenshot 1: Lijst met bookmarks

Linkding is een open source bookmark-service webapplicatie. Het is geschreven in Python en gebruikt het Django framework met uWSGI. De gebruikersdata komt in een een SQLite database. Linkding is gemaakt door Sascha Ißbrücker, met als uitgangspunt dat het ook op een Raspberry Pi goed moet functioneren. De userinterface is minimalistisch en werkt lekker vlot. Je logt in op een strak vormgegeven inlogscherm. Na het inloggen kom je in het scherm met de bookmarks, ook dit scherm is eenvoudig en strak vormgegeven, zonder franjes.

Bovenin dit scherm heb je een knop “Add bookmark” om nieuwe bookmarks toe te voegen, daarnaast een knop om een bookmarklet in je browser op te nemen, een settings-knop en een logout-knop. Verder vind je hier een invoerveld voor het zoeken in je bookmarks.

Hieronder volgen de bookmarks en rechts een balk met de tags. De tags verschijnen alfabetisch gesorteerd, met per letter van het alfabet een nieuwe regel. Deze letter van het alfabet is bij de eerste tag (meest linkse op de regel) een hoofdletter en vet gemaakt, dit ziet er wat apart uit en is even wennen, zie screenshot 1.

Per bookmark voer je in Linkding achtereenvolgens de URL in, de tags, de titel, en een korte beschrijving. Op het moment je de URL invult, haalt Linkding informatie uit de betreffende webpagina op en vult zo mogelijk alvast de titel en de korte beschrijving in. De tags voer je in zonder hekje (#), onderling gescheiden door een spatie, waarbij je hulp krijgt in de vorm van tagcompletion. Zodra je een tag begint te typen toont Linkding mogelijke kandidaten in een dynamische popup.

Nieuwe bookmarks verschijnen boven in de lijst, de bookmarks staan van boven naar beneden op oplopende ouderdom gesorteerd. Per pagina krijg je dertig bookmarks te zien. Met knoppen “Older” en “Newer” wandel je door de pagina’s, maar beter is het om de zoekfunctie te gebruiken.

Zoeken

Je kunt zoeken op tekst en op tags. Je zoekt op tekst door tekst in het zoekveld in te voeren en op “Search” te klikken. Linkding zoekt dan in de titels, de URL’s en in de korte omschrijving van de bookmarks. Je zoekt op tags door de tag, voorafgegaan door een hekje (#) in het zoekveld te typen, of door te klikken op een tag in de lijst met bookmarks of in de rechter kolom.Op je mobiele apparaten krijgt Linkding een iets andere lay-out, zie screenshot 2. In de praktijk werkt dit prima, waarbij het handig is dat je ook vanaf je smartphone of tablet bij je bookmarks kunt en nieuwe bookmarks aanmaakt.

Screenshot 2: Linkding op een Android tablet

Import en export

Wanneer je reeds bij een andere bookmark-service bookmarks verzamelt, dan importeer je die eenvoudig. Linkding gebruikt voor import het Netscape bookmark formaat, wat gebruikelijk is voor bookmark-services. Linkding ondersteunt ook de export van bookmarks. In de pagina “Settings” staat een button waarmee je al je bookmarks exporteert, ook dit is in het Netscape formaat. Je raakt op die manier geen informatie kwijt, het export-bestand bevat alles wat je in Linkding gezet hebt, de URL, tags, titel en korte beschrijving, alsmede de datum en tijdstip waarop je de bookmark hebt gemaakt en/of gewijzigd, in seconden sinds de epoch.

Je hebt dus geen last van vendor lockin, mocht je later naar een andere bookmark-service gaan, dan is dat een kwestie van je bookmarks uit Linkding exporteren en het bestand weer in de nieuwe applicatie importeren.

Bookmarklet

Je gaat naar de pagina met de bookmarklet via de knop “Bookmarklet” in het hoofdmenu. De bookmarklet-pagina bevat een button met daarin een stukje Javascript dat de bookmarklet vormt. Je sleept deze button naar je bookmark-toolbar van je browser en laat hem daar los. Hiermee installeer je de bookmarklet, je hebt nu in je browser bookmark-toolbar een nieuw icoon, bestaande uit een paperclip, en de tekst “Add bookmark”. Dit werkt bij ons probleemloos in zowel Firefox als Chrome.

Wanneer je tijdens het browsen een interessante webpagina tegenkomt, dan klik je op deze button om deze in Linkding op te nemen. Dit opent een nieuwe browser-tab. De URL is alvast ingevuld, en Linkding haalt op de gebruikelijke manier de titel op en probeert een korte beschrijving op te halen. Het enige dat je nog hoeft te doen is je tags in te voeren en zo nodig de titel of de korte omschrijving aan te passen of in te vullen. Je klikt vervolgens op de button “Save and close”, hiermee sla je de bookmark op en sluit je de browser-tab.

Het voordeel van werken met de bookmarklet is dat je geen browser-tab naar je Linkding bookmark-server open hoeft te hebben en de URL niet hoeft te kopiëren en plakken. Dit werd in zeer korte tijd bij ons de favoriete methode voor het maken van bookmarks. Op de mobiele apparaten kregen wij helaas de bookmarklet niet aan de praat.

Back-up maken

Je gebruikt een bookmark manager zodat je zeker weet dat je ze daarmee later kunt terugvinden. Het is daarom belangrijk dat je kunt vertrouwen op de beschikbaarheid van je bookmarks. Het geautomatiseerd maken van een backup is daarom een “must”. Dit wordt nog belangrijker wanneer je Linkding op een Raspberry Pi draait, vanwege de storage op een (micro) SD-kaartje. Deze kaartjes sneuvelen soms onverwacht.

Alle informatie die je in Linkding stopt, zit in de SQLite database. De twee meest gebruikte manieren om een backup van een SQLite database te maken zijn het maken van dumps en het gebruik van de in SQLite ingebouwde back-upfunctie. Het maken van een dump levert een tekstbestand op met de SQL-statements waarmee je de data opnieuw kunt inlezen. Het voordeel hiervan is dat je deze in een versiebeheersysteem zoals Git kunt stoppen en die dan vervolgens naar een remote repository pusht. Een dump maak je met sudo sqlite3 db.sqlite3 .dump > ~/bookmarks.sql

De in SQLite ingebouwde back-upfunctie levert een kopie van de database op, dit is geen platte tekstbestand maar een binair bestand. Een backup maak je met sudo sqlite3 db.sqlite3 .backup ~/bookmarks.backup. Het voordeel van een back-upbestand is dat deze kleiner is dan een tekstbestand met SQL-statements, en dat je deze statements niet eerst hoeft in te lezen voor je met de back-up verder kunt werken. Kies voor jezelf de methode die het beste bij je past, het belangrijkste is dat je op een andere plek een back-up hebt. Schrijf hiervoor een scriptje en test het terugzetten van de back-up.

Installatie

De Github-pagina van Linkding beschrijft twee manieren om Linkding te installeren, een zogenoemde handmatige methode en de installatie via Docker. Wij hebben beide methoden op een Raspberry Pi uitgevoerd, dit leverde in beide gevallen een werkende applicatie op. De installatie met behulp van Docker is het meest eenvoudig. Wij voerden de installatie uit op de december-versie van Raspberry Pi OS Lite, 2020-12-02-raspios-buster-armhf-lite.zip.

De installatie van Docker op Raspberry Pi OS Lite gaat erg eenvoudig met behulp van het shell-script op get.docker.com. Nadat je Docker hebt geïnstalleerd, is ook de installatie van Linkding erg eenvoudig. Zie script 1. De SQLite database overleeft een herstart of upgrade van de Docker-container doordat dit script die in /var/lib/linkdingplaatst.

Script1: Installatie van de Linkding Docker container

Nadat je de stappen in het script succesvol hebt uitgevoerd kun je vanaf je browser inloggen op http://{ip-adres}:9090 waarbij {ip-adres} het IP-adres van je Raspberry Pi is. Ook het later upgraden van Linkding container gaat eenvoudig, zie script 2. Overweeg je om de Linkding server via het internet bereikbaar te maken, dan kun je nog een reverse proxy voor Linkding plaatsen, bijvoorbeeld met NGINX.

Script2: Upgraden van de Linkding Docker container

Multiuser

Het werken met een bookmark-service is niet alleen voor jezelf erg handig, ook de andere gezinsleden zullen dit op prijs stellen. Je deelt je Linkding service met anderen door hen een account op het systeem te geven. Je doet dit via de Django administratie. Ga hiervoor naar http://{ip-adres}:9090/admin waarbij {ip-adres} het IP-adres van de Raspberry Pi is. Hier kun je nieuwe nieuwe gebruikers aanmaken, zie screenshot 3. De nieuwe gebruiker wordt automatisch overgenomen in de SQLite database en heeft zijn of haar eigen bookmarks. Je deelt wel de service, maar je bookmarks zijn privé.

Screenshot 3: Django scherm voor het aanmaken van een nieuwe gebruiker

Roadmap

Sascha Ißbrücker, de ontwikkelaar van Linkding, heeft bewust voor een beperkte hoeveelheid features gekozen. De eenvoud maakt Linkding makkelijk in gebruik, maar ook beter te onderhouden. Zijn streven was om een snelle en minimalistische userinterface te maken die prettig in gebruik is en die ook goed werkt op mobiele devices. Op de roadmap voor de toekomstige ontwikkelingen staat het verbeteren van de zoekmogelijkheden, eventueel aangevuld met het zoeken van bookmarks die binnen een bepaald tijdsvenster zijn aangemaakt.

Bijdragen

Je helpt Linkding verder vooruit door aan het project bij te dragen, bijvoorbeeld door bug-reports in te dienen. Nog mooier is als je daarbij ook de oplossingsrichting aandraagt. Wil je een bijdrage leveren in de vorm van extra features, zoek dan eerst even contact. Sascha houdt de hoeveelheid features beperkt, dit wegens de ontwerpfilosofie en de beheersbaarheid van het onderhoud. Een andere manier om bij te dragen is het ontwikkelen van 3rd-party integraties. Hiervoor is de Linkding REST API ontwikkeld.

Wij hebben Linkding niet alleen op een Raspberry Pi geïnstalleerd, maar ook op een ‘gewone’ Debian computer, via Docker, op dezelfde manier als in script 1. Ook hier verliep de installatie probleemloos. Je kunt dus kiezen of je een traditionele server zoals een Debian of Ubuntu systeem, of een Raspberry Pi inzet.

Een centrale plaats voor je bookmarks is erg handig. Linkding is snel en eenvoudig te installeren, makkelijk te gebruiken en heeft een goede zoekfunctie. Het belast je systeem amper, draait uitstekend op een Raspberry Pi en je blijft zelf de baas over je data.