linkding mit Docker Compose: Eigene Lesezeichen sauber lokal hosten
Wer Lesezeichen über mehrere Browser, Geräte und Read-it-later-Impulse hinweg halbwegs geordnet halten will, landet schnell bei einem Durcheinander aus Export-Dateien, Browser-Sync und zehn offenen Tabs für "später". linkding ist für genau dieses Problem angenehm direkt: selbst hosten, Tags vergeben, Volltext durchsuchen, später Browser-Extension dazunehmen.
Für diesen Blog ist das am 4. April 2026 ein sinnvoller Fallback statt eines schwachen News-Posts. Die offizielle Installationsseite zeigt weiterhin ein sehr kleines Compose-Setup mit .env-Datei und lokalem Datenverzeichnis, die Projektoptionen dokumentieren einen initialen Superuser per Umgebungsvariable, und auf GitHub ist v1.45.0 vom 6. Januar 2026 weiterhin der jüngste stabile Release.

Was du am Ende hast
- linkding lokal unter
http://127.0.0.1:9090 - Einen kleinen Compose-Stack mit persistenten Daten
- Einen initialen Admin-Login ohne Extra-Container
- Prüfschritte mit
docker compose, Logs undcurl
Voraussetzungen
- Docker Engine und
docker composesind installiert - Port
9090ist frei - Du startest in einem neuen Projektordner statt in einem alten Compose-Verzeichnis
1. Arbeitsordner anlegen
Erst der saubere Ordner, dann die App:
mkdir linkding-lab && cd linkding-lab
2. Compose-Datei erstellen
Die offizielle Projektdatei ist bewusst knapp und setzt standardmaessig auf SQLite. Genau das ist fuer einen lokalen Start praktisch, weil du keine zweite Datenbank pflegen musst. Ich pinne das Image hier trotzdem auf 1.45.0 statt latest, damit das Setup reproduzierbar bleibt.
linkding-lab/compose.yaml:
services:
linkding:
image: sissbruecker/linkding:1.45.0
container_name: linkding
ports:
- "127.0.0.1:9090:9090"
volumes:
- ./data:/etc/linkding/data
env_file:
- .env
restart: unless-stopped
Die Bindung an
127.0.0.1ist fuer einen lokalen Start sauberer als ein offener Port auf allen Interfaces. Wenn du spaeter extern darauf zugreifen willst, gehoert ein Reverse Proxy mit HTTPS davor.
3. .env fuer den ersten Start anlegen
Die offizielle Beispiel-Datei des Projekts sieht genau diesen Weg vor. Fuer den ersten Start reichen Port, Datenpfad und ein initialer Superuser.
linkding-lab/.env:
LD_CONTAINER_NAME=linkding
LD_HOST_PORT=9090
LD_HOST_DATA_DIR=./data
LD_SUPERUSER_NAME=admin
LD_SUPERUSER_PASSWORD=change-this-now
LD_CSRF_TRUSTED_ORIGINS=
LD_DISABLE_BACKGROUND_TASKS=False
Wichtig dabei:
LD_SUPERUSER_NAMEerstellt beim ersten Container-Start den Admin-Nutzer, falls er noch nicht existiert.LD_SUPERUSER_PASSWORDsetzt das initiale Passwort.LD_CSRF_TRUSTED_ORIGINSbleibt lokal leer und wird erst mit eigener Domain oder Reverse Proxy interessant.
4. Stack starten
Jetzt ziehst du das Image und startest den Container im Hintergrund:
docker compose pull
docker compose up -d
Danach sollte die Oberfläche hier erreichbar sein:
http://127.0.0.1:9090
5. Funktion pruefen
Bevor du im Browser klickst, pruefe einmal den Container-Status und den HTTP-Endpunkt:
docker compose ps
docker compose logs --tail=100 linkding
curl -I http://127.0.0.1:9090
Wenn alles sauber steht, zeigt docker compose ps einen laufenden Container und curl liefert einen erfolgreichen HTTP-Status. Genau hier hat das Tutorial bereits sein sichtbares Ergebnis: linkding antwortet lokal im Browser.
6. Erster Login und erster Bookmark
Oeffne http://127.0.0.1:9090 und melde dich mit diesen Startdaten an:
- Benutzername:
admin - Passwort:
change-this-now
Danach solltest du sofort:
- das Passwort aendern
- einen ersten Bookmark anlegen
- ein oder zwei Tags vergeben
- die Suchfunktion einmal testen
Damit siehst du direkt, ob der eigentliche Nutzen des Projekts fuer dich passt: Links nicht nur speichern, sondern wiederfinden.
7. Warum linkding praktisch ist
Der Wert von linkding liegt nicht in moeglichst vielen Social- oder Team-Features, sondern in Konzentration:
- schnell lokal startbar
- wenig bewegliche Teile dank SQLite-Default
- Tags, Notizen und Volltextsuche statt Browser-Ordnerchaos
- gute Passform fuer Self-Hosting, Homelab und persoenliches Wissensmanagement
Gerade wer staendig Dokumentation, Tools, Release-Seiten oder Einkaufslisten in Tabs parkt, bekommt hier in wenigen Minuten eine nuetzliche Sammelstelle mit echter Suchfunktion.
8. Sinnvolle Befehle fuer den Alltag
Fuer Logs, Updates und Stoppen brauchst du zunaechst nur diese Kommandos:
docker compose logs -f linkding
docker compose pull
docker compose up -d
docker compose down
Deine Daten bleiben im Verzeichnis ./data erhalten.
9. Was du nach dem ersten Start aufraeumen solltest
Nach dem ersten erfolgreichen Login solltest du in linkding-lab/.env mindestens das Startpasswort ersetzen oder die Variable komplett entfernen, wenn der Nutzer einmal angelegt ist.
Sobald du linkding ueber eine Domain oder einen Reverse Proxy veroeffentlichen willst, werden zwei Punkte wichtig:
- den
Host-Header sauber weiterreichen LD_CSRF_TRUSTED_ORIGINSauf deine echte URL setzen
Genau das ist laut offizieller Doku relevant, wenn Login- oder POST-Requests hinter Nginx und aehnlichen Proxies sonst scheitern.
Fazit
Wenn aktuelle News nicht sauber genug tragen, sollte der Ersatz wenigstens ein echtes Alltagsproblem loesen. Genau das schafft linkding: wenig Setup, ein sichtbarer Browser-Endpunkt, persistente Daten und ein Tool, das aus losem Tab-Muell wieder auffindbare Lesezeichen macht.
Fuer einen Fallback am 4. April 2026 ist das deutlich brauchbarer als noch ein generischer Docker-Grundlagenpost ohne Ergebnis.