Zum Inhalt springen
SONOYA.com
Web & Code

Anleitung: linkding mit Docker selbst hosten

Deine Lesezeichen liegen verstreut in mehreren Browsern und werden über fremde Clouds synchronisiert? linkding ist ein minimalistischer, selbst gehosteter Bookmark-Manager. Hier richtest Du ihn Schritt für Schritt mit Docker auf Deinem eigenen Server ein, vom Container bis zur Browser-Erweiterung…

Von Sonoya Redaktion 5 Min. Lesezeit
Anleitung: linkding mit Docker selbst hosten
Anleitung: linkding mit Docker selbst hosten

Deine Lesezeichen liegen im Chrome auf dem einen Rechner, im Firefox auf dem anderen, ein paar wichtige hast Du Dir per Nachricht an Dich selbst geschickt, und der Sync läuft über die Cloud eines Browserherstellers, dem Du nebenbei Deine komplette Surf-Historie anvertraust. linkding räumt damit auf: ein minimalistischer, selbst gehosteter Bookmark-Manager, der als einzelner Docker-Container läuft und Deine Lesezeichen auf Deinem eigenen Server hält. Hier richtest Du ihn Schritt für Schritt ein, von der docker-compose.yml bis zum ersten gespeicherten Lesezeichen und der angebundenen Browser-Erweiterung.

Warum linkding?

linkding ist bewusst klein gehalten. Es läuft in einem einzigen Container, nutzt standardmäßig SQLite als Datenbank und braucht so wenig Arbeitsspeicher und Rechenleistung, dass es auch auf einem günstigen VPS, einem NAS oder einem Raspberry Pi im Heimnetz problemlos läuft. Entwickelt ist es in Python mit dem Django-Framework, der Code liegt quelloffen auf GitHub.

Trotz des schlanken Zuschnitts bekommst Du alles, was ein Lesezeichen-Manager im Alltag braucht: Du organisierst Deine Bookmarks mit Tags und durchsuchst sie per Volltextsuche, beim Hinzufügen zieht sich linkding automatisch Titel, Beschreibung und Favicon der Seite. Auf Wunsch archiviert es ganze Webseiten als lokale HTML-Datei oder über das Internet Archive, sodass ein Link auch dann noch lesbar ist, wenn die Originalseite längst offline ist. Import und Export laufen über das Netscape-HTML-Format, das auch Browser nutzen, und es gibt eine REST-API für eigene Skripte.

Wenn Du noch unentschlossen bist, ob linkding oder das funktionsreichere Linkwarden besser zu Dir passt, hilft Dir der Beitrag Linkding vs Linkwarden: Zwei selbst-gehostete Bookmark-Manager im Vergleich bei der Entscheidung.

Was Du brauchst

Du brauchst einen kleinen Server mit installiertem Docker und Docker Compose sowie SSH-Zugang. Das kann ein VPS sein, ein Heimserver oder ein Raspberry Pi (Affiliate Link) im lokalen Netz. Falls Du noch kein Droplet hast, bekommst Du über diesen Affiliate-Link zu DigitalOcean (Affiliate Link) Startguthaben zum Ausprobieren.

Sollte Docker auf dem Server noch fehlen, installierst Du es mit dem offiziellen Skript:

Code
curl -fsSL https://get.docker.com | sh

Das richtet Docker samt Compose-Plugin ein. Danach kannst Du mit docker compose version prüfen, ob alles bereitsteht.

Schritt 1: Projektordner anlegen

Melde Dich per SSH auf dem Server an und leg ein eigenes Verzeichnis für linkding an, in dem später die Konfiguration und alle Daten liegen.

Code
mkdir -p ~/linkding
cd ~/linkding

Mit mkdir -p erstellst Du den Ordner, mit cd wechselst Du hinein. Alle folgenden Befehle führst Du in genau diesem Verzeichnis aus.

Schritt 2: docker-compose.yml erstellen

Leg die Datei an, die den Container beschreibt. Öffne dafür einen Editor:

Code
nano docker-compose.yml

Füge folgenden Inhalt ein:

Code
services:
  linkding:
    container_name: linkding
    image: sissbruecker/linkding:latest
    ports:
      - "9090:9090"
    volumes:
      - "./data:/etc/linkding/data"
    env_file:
      - .env
    restart: unless-stopped

Diese Datei lädt das offizielle Image sissbruecker/linkding:latest, macht linkding auf Port 9090 erreichbar und bindet den lokalen Ordner ./data in den Container ein. Genau dort speichert linkding seine SQLite-Datenbank, die Favicons und die archivierten Snapshots, dadurch bleiben Deine Daten erhalten, auch wenn der Container neu gebaut wird. Die Zeile restart: unless-stopped sorgt dafür, dass linkding nach einem Neustart des Servers von allein wieder hochfährt. Speichere mit Strg + O, bestätige mit Enter und schließe den Editor mit Strg + X.

Schritt 3: Zugangsdaten festlegen

Die docker-compose.yml liest die Zugangsdaten aus einer .env-Datei. Leg sie an:

Code
nano .env

Trag Deinen gewünschten Benutzernamen und ein sicheres Passwort ein:

Code
LD_SUPERUSER_NAME=admin
LD_SUPERUSER_PASSWORD=einSehrSicheresPasswort

Ersetze einSehrSicheresPasswort durch ein eigenes, starkes Passwort. Diese beiden Variablen legen beim allerersten Start automatisch ein Administrator-Konto an, sodass Du Dich gleich anmelden kannst, ohne den Benutzer manuell über die Kommandozeile erstellen zu müssen. Speichere und schließe die Datei wieder mit Strg + O, Enter und Strg + X.

Schritt 4: linkding starten

Jetzt startest Du den Container im Hintergrund:

Code
docker compose up -d

Dieser Befehl lädt das Image herunter und startet linkding losgelöst von Deiner Terminal-Sitzung. Ob alles sauber hochgefahren ist, siehst Du im Log:

Code
docker compose logs -f

Sobald dort keine Fehler mehr auftauchen, verlässt Du die Log-Ansicht mit Strg + C. Das beendet nur die Anzeige, nicht den Container.

Schritt 5: Anmelden und das erste Lesezeichen speichern

Öffne im Browser http://DEINE_SERVER_IP:9090 und ersetze DEINE_SERVER_IP durch die IP-Adresse Deines Servers. Läuft linkding auf demselben Rechner, an dem Du sitzt, erreichst Du es über http://localhost:9090. Melde Dich mit dem Benutzernamen und Passwort aus der .env an.

Zum Speichern eines Lesezeichens klickst Du oben auf Add bookmark, fügst die URL ein und bestätigst. linkding holt sich Titel, Beschreibung und Favicon der Seite automatisch, Du musst also höchstens noch ein paar Tags vergeben und auf Save klicken. Über das Suchfeld findest Du jedes gespeicherte Lesezeichen sofort wieder.

Wichtig: Bislang läuft linkding nur über unverschlüsseltes HTTP. Für den dauerhaften Betrieb, gerade wenn der Server aus dem Internet erreichbar ist, solltest Du es hinter einen Reverse Proxy mit HTTPS-Zertifikat setzen, damit Deine Zugangsdaten nicht im Klartext übertragen werden.

Schritt 6: Browser-Erweiterung verbinden

Am schnellsten speicherst Du Lesezeichen über die offizielle Erweiterung, die es für Firefox und Chrome gibt. Installiere sie aus dem jeweiligen Store. Damit sie weiß, wohin sie Deine Lesezeichen schicken soll, braucht sie zwei Angaben: die Basis-URL Deiner Installation und einen API-Token.

Den Token findest Du in linkding selbst unter Settings > Integrations > REST API. Kopiere ihn, öffne die Einstellungen der Browser-Erweiterung und trag dort die Basis-URL (zum Beispiel http://DEINE_SERVER_IP:9090 oder Deine Domain) sowie den Token ein. Danach genügt ein Klick auf das Erweiterungssymbol, um die aktuelle Seite als Lesezeichen abzulegen.

Aktualisieren und Daten sichern

Für ein Update holst Du das neueste Image und startest den Container neu:

Code
docker compose pull
docker compose up -d

linkding führt nötige Datenbank-Migrationen beim Start automatisch aus und verspricht ausdrücklich keine breaking changes, ein Update ist also unkritisch und Deine Daten bleiben erhalten.

Für ein Backup genügt es, den Datenordner zu sichern, da dort wirklich alles drinsteckt:

Code
tar czf linkding-backup.tar.gz ~/linkding/data

Diese Archivdatei kopierst Du an einen sicheren Ort. Alternativ exportierst Du Deine Lesezeichen direkt in linkding über Settings > Export als Netscape-HTML-Datei, die sich später überall wieder importieren lässt.

Fazit

Mit einer einzigen docker-compose.yml, einer .env für die Zugangsdaten und zwei Befehlen hast Du einen schlanken, schnellen Lesezeichen-Manager auf Deinem eigenen Server, der Deine Bookmarks geräteübergreifend bündelt, ohne sie an eine fremde Cloud abzugeben. Der minimale Ressourcenbedarf macht linkding zur idealen Selfhosting-Lösung für nebenbei.

Wenn Du Gefallen daran gefunden hast, eigene Dienste zu betreiben, ist ein selbst gehosteter Passwortmanager der logische nächste Schritt: Die Schritt-für-Schritt Anleitung: Vaultwarden auf einem DigitalOcean Droplet einrichten zeigt Dir, wie das nach demselben Prinzip funktioniert.

Weiterlesen .