Linkwarden sauber lokal starten
Browser-Lesezeichen, offene Tabs, spaeter-lesen-Listen und gespeicherte Artikel landen bei vielen Leuten in vier verschiedenen Systemen. Linkwarden ist gerade deshalb interessant, weil es diese Teile zusammenzieht: Links speichern, Inhalte archivieren, spaeter wiederfinden und bei Bedarf auch teilen.
Der Stand fuer diesen Artikel ist belastbar. Die offizielle Self-Hosting-Doku verweist Anfang Juni 2026 weiter auf den Download von docker-compose.yml und .env.sample aus dem Projekt-Repository. Die aktuelle Compose-Datei nutzt dabei postgres:16-alpine, ghcr.io/linkwarden/linkwarden:latest und getmeili/meilisearch:v1.12.8. Gleichzeitig listet GitHub v2.14.1 als juengsten Release vom 22. April 2026. Genau deshalb folgt dieses Tutorial dem offiziellen Compose-Weg statt irgendeiner veralteten Drittanbieter-Vorlage.
Was du am Ende hast
- Linkwarden lokal unter
http://127.0.0.1:3000 - PostgreSQL fuer die App-Daten
- Meilisearch fuer schnelle Suche
- Ein erstes eigenes Konto und eine gespeicherte Test-Seite
- Klare Befehle zum Pruefen, Updaten und Absichern
Voraussetzungen
Du brauchst:
- Docker Engine oder Docker Desktop
docker compose- einen freien Port
3000 - einen neuen Arbeitsordner statt eines alten Compose-Verzeichnisses
Pruefe die Basis kurz:
docker --version
docker compose version
1. Arbeitsordner anlegen und offizielle Dateien holen
Lege zuerst einen sauberen Projektordner an:
mkdir linkwarden-lab && cd linkwarden-lab
Danach holst du genau die Dateien, auf die sich die offizielle Installationsseite bezieht:
curl -O https://raw.githubusercontent.com/linkwarden/linkwarden/refs/heads/main/docker-compose.yml
curl -o .env https://raw.githubusercontent.com/linkwarden/linkwarden/refs/heads/main/.env.sample
Damit arbeitest du mit dem aktuellen Projektstand statt mit einem zufaelligen Blog-Snippet.
2. Die wirklich wichtigen Werte in der Env-Datei setzen
Bearbeite jetzt linkwarden-lab/.env und fuelle mindestens diese Variablen:
NEXTAUTH_URL=http://localhost:3000/api/v1/auth
NEXTAUTH_SECRET=ERSETZE_DAS_DURCH_EIN_LANGES_ZUFAELLIGES_SECRET
POSTGRES_PASSWORD=ERSETZE_DAS_DURCH_EIN_STARKES_PASSWORT
MEILI_MASTER_KEY=ERSETZE_DAS_DURCH_EIN_LANGES_ZUFAELLIGES_SECRET
Zwei praktische Punkte sind wichtig:
NEXTAUTH_URLmuss laut Doku das Suffix/api/v1/authenthalten.- Wenn du die offizielle Compose-Datei unveraendert nutzt, musst du
DATABASE_URLnicht selbst setzen. Sie wird dort intern ausPOSTGRES_PASSWORDzusammengesetzt.
Ein brauchbares Secret erzeugst du lokal zum Beispiel so:
openssl rand -hex 32
Fuer den ersten Start solltest du die Registrierung noch nicht deaktivieren. Erst wenn dein erstes Konto existiert, lohnt sich spaeter ein Wert wie NEXT_PUBLIC_DISABLE_REGISTRATION=true.
3. Kurz verstehen, was Compose fuer dich startet
Die offizielle linkwarden-lab/docker-compose.yml ist erfreulich knapp. Im Kern startet sie genau drei Dienste:
services:
postgres:
image: postgres:16-alpine
linkwarden:
image: ghcr.io/linkwarden/linkwarden:latest
ports:
- 3000:3000
meilisearch:
image: getmeili/meilisearch:v1.12.8
Dazu kommen lokale Verzeichnisse fuer Persistenz:
./pgdatafuer PostgreSQL./datafuer gespeicherte Inhalte und Archive./meili_datafuer den Suchindex
Genau diese Ordner solltest du spaeter in Backups aufnehmen.
4. Stack starten
Jetzt ziehst du die Images und startest alles im Hintergrund:
docker compose up -d
Beim ersten Start koennen Datenbank, Suchindex und App ein wenig brauchen. Das ist normal.
5. Lokal pruefen, ob die Instanz wirklich lebt
Bevor du im Browser weitermachst, pruefe den Stack einmal direkt im Terminal:
docker compose ps
docker compose logs --tail=100 linkwarden
curl -I http://127.0.0.1:3000
Wenn curl eine HTTP-Antwort zurueckgibt und der linkwarden-Container keine endlosen Fehler ausspuckt, ist die Grundlage sauber.
Falls der Port nicht antwortet, schaue dir auch die beiden Nebendienste an:
docker compose logs --tail=100 postgres
docker compose logs --tail=100 meilisearch
6. Erstes Konto anlegen und die erste Seite speichern
Oeffne jetzt:
http://127.0.0.1:3000
Lege dein erstes Konto an und melde dich an. Danach solltest du direkt im Dashboard landen.
Fuer einen schnellen sichtbaren Test:
- Klicke auf New Link
- Fuege
https://example.comein - Speichere den Eintrag
- Warte kurz, bis Vorschau und Archivdaten verarbeitet wurden
Damit siehst du sofort den eigentlichen Mehrwert von Linkwarden: nicht nur ein Bookmark, sondern ein gespeicherter Eintrag mit Metadaten, spaeterem Wiederfinden und eigener Suchbasis.
7. Registrierung nach dem ersten Login schliessen
Wenn die Instanz nur fuer dich oder dein Team gedacht ist, solltest du die offene Registrierung danach schliessen.
Ergaenze in linkwarden-lab/.env:
NEXT_PUBLIC_DISABLE_REGISTRATION=true
Wichtig: Die Linkwarden-Doku weist ausdruecklich darauf hin, dass geaenderte Umgebungsvariablen nicht nur mit docker compose restart uebernommen werden. Du musst die Container neu erstellen:
docker compose down
docker compose up -d
8. Update und Betrieb
Ein normales Update faehrt sich so:
docker compose pull
docker compose up -d
Zum Stoppen:
docker compose down
Deine Daten bleiben erhalten, weil sie in linkwarden-lab/pgdata, linkwarden-lab/data und linkwarden-lab/meili_data liegen.
9. Wofuer sich das Setup wirklich lohnt
Linkwarden ist stark, wenn du mehr willst als eine dumme Bookmark-Liste, aber nicht gleich ein schweres Wissensmanagement-System aufziehen moechtest. Du bekommst in kurzer Zeit:
- eine saubere Leseliste
- eine eigene Link-Sammlung ohne Fremdplattform
- archivierte Inhalte gegen Link-Rot
- Volltextsuche ueber Meilisearch
Gerade fuer Recherche, private Wissenssammlungen, Team-Links oder ein persoenliches Read-It-Later-System ist das deutlich nuetzlicher als der naechste Browser-Ordner, den du nach zwei Wochen wieder ignorierst.
Fazit
Linkwarden trifft einen seltenen Sweet Spot: klein genug fuer ein schnelles Compose-Setup, aber nützlich genug fuer den Dauerbetrieb. Wenn du im Juni 2026 ein Self-Hosting-Projekt mit sofort sichtbarem Ergebnis suchst, ist das hier deutlich sinnvoller als ein abstrakter Infrastruktur-Stack ohne echten Alltagsnutzen.
Quellen
- https://docs.linkwarden.app/self-hosting/installation
- https://docs.linkwarden.app/self-hosting/environment-variables
- https://github.com/linkwarden/linkwarden
- https://github.com/linkwarden/linkwarden/releases
- https://raw.githubusercontent.com/linkwarden/linkwarden/refs/heads/main/docker-compose.yml
- https://raw.githubusercontent.com/linkwarden/linkwarden/refs/heads/main/.env.sample