Linkwarden ist ein Bookmark Manager, welcher euch die Möglichkeit gibt eure Links für euch oder in Benutzergruppen freizugeben. Natürlich Open Source und schnell als SelfHosted System.
In dieser Anleitung zeige ich euch, wie ihr Linkwarden für Docker und Traefik installieren könnt.
1. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu)
- TRAEFIK V2 + 3 – REVERSE-PROXY MIT CROWDSEC IM STACK EINRICHTEN
2. Ordner anlegen
Wir legen einen Ordner in der vorhandenen Struktur an:
mkdir -p /opt/containers/linkwarden
3. Docker Compose anlegen
Wir erstellen das Docker File:
nano /opt/containers/linkwarden/docker-compose.yml
und fügen folgenden Inhalt ein:
version: "3.5" services: linkwarden: env_file: .env environment: - DATABASE_URL=postgresql://${DATABASE_USER}:${DATABASE_PW}@linkwarden-db:5432/${DATABASE_NAME} restart: always image: ghcr.io/linkwarden/linkwarden:latest ports: - 3000:3000 volumes: - linkwarden:/data/data depends_on: - postgres networks: - proxy - default labels: - "traefik.enable=true" - "traefik.http.routers.linkwarden.entrypoints=websecure" - "traefik.http.routers.linkwarden.rule=(Host(`linkwarden.EURE-DOAMIN.de`))" - "traefik.http.routers.linkwarden.tls=true" - "traefik.http.routers.linkwarden.tls.certresolver=http_resolver" - "traefik.http.routers.linkwarden.service=linkwarden" - "traefik.http.services.linkwarden.loadbalancer.server.port=3000" - "traefik.docker.network=proxy" - "traefik.http.routers.linkwarden.middlewares=default@file" postgres: container_name: linkwarden-db image: postgres env_file: .env environment: POSTGRES_DB: "${DATABASE_NAME}" POSTGRES_PASSWORD: "${DATABASE_PW}" POSTGRES_USER: "${DATABASE_USER}" restart: always volumes: - linkwarden-db:/var/lib/postgresql/data networks: - default volumes: linkwarden: name: linkwarden linkwarden-db: name: linkwarden-db networks: proxy: external: true
Noch anzupassen:
- URL anpassen! – linkwarden.EURE-DOAMIN.de
3.1 Docker .env File anlegen
Wir erstellen das .env File um die Variablen zu definieren:
nano /opt/containers/linkwarden/.env
Und fügen folgenden Inhalt ein:
# Database DATABASE_NAME=linkwarden-db DATABASE_USER=linkwarden DATABASE_PW=DB PASSWORT ÄNDERN! NEXTAUTH_SECRET=SECRET ÄNDERN! NEXTAUTH_URL=https://linkwarden.EURE-DOAMIN.de # Additional Optional Settings #PAGINATION_TAKE_COUNT= #STORAGE_FOLDER= #AUTOSCROLL_TIMEOUT= #NEXT_PUBLIC_DISABLE_REGISTRATION= #IMPORT_SIZE_LIMIT= # AWS S3 Settings #SPACES_KEY= #SPACES_SECRET= #SPACES_ENDPOINT= #SPACES_REGION= # SMTP Settings #NEXT_PUBLIC_EMAIL_PROVIDER= #EMAIL_FROM= #EMAIL_SERVER=
Ändert die Parameter:
DATABASE_PW
NEXTAUTH_SECRET
NEXTAUTH_URL (hier muss die gleiche Domain stehen, wie in der docker-compose.yaml)
Die weiteren Parameter sind auskommentiert. Bei Bedarf können diese natürlich genutzt werden. Die Inhalte sind der Standard-Anleitung entnommen. Es gibt wohl noch weiter Möglichkeiten, welche in der Doku hinterlegt sind.
Denkt nur an das recreate / down+up.
4. Linkwarden starten
Die Linkwarden -Instanz könnt ihr mit folgendem Befehl starten:
docker compose -f /opt/containers/linkwarden/docker-compose.yml up -d
5. Linkwarden einrichten
Benutzer einrichten und los legen. 🙂
Bei Fragen versuche ich gerne zu helfen, schreibt in die Kommentare, wie immer.
Viel Erfolg
Rene
Moin und danke für die Anleitung.
Kurze Frage: hat jemand eine Idee bzw. einfach Lösung wie ich den internen Port (3000) ändern kann ohne mir den Container selbst zu bauen? Scheinbar der yarn-Port nicht per env-Variable anpassbar implementiert. Oder übersehe ich etwas?
Es könnte sein, dass Du das schon weissst, aber meine Vorgehensweise war:
1.: Mit dem Linkwarden-User die Datenbank linkwarden sichern.
2.: linkwarden volume sichern
3.: docker compose down
4:: /var/lib/docker/volume/linkwarden* löschen
5.: docker compose up
Hattest Du das Datenbank-Volume gelöscht?
Hallo Rene, vielen Dank für die top Anleitung. Linkwarden ist wirklich sehr praktisch.
Bei der Umsetzung auf meinem Server bin ich allerdings über ein Problem gestolpert. Solange ich die Parameter für das DB Passwort und das Secret nicht änder, läuft der Container problemlos. Sobald ich hier aber eigene Werte verwende, erhalte ich beim nächsten Start des Containers Authentifizierungsfehler von Linkwarden auf die DB und die Applikation startet nicht. Ein Rebuild des Containers und komplett neu initialisieren hilft nicht.
Hast du hier eventuell eine Idee?
Viele Grüße
Patrick