illustrated using copilot
Linkwarden in Portainer lokal hosten
#selfhosted #deutsch #homelab #open source
Für die Organisation meiner Lesezeichen ist die Umsetzung der in die Browser integrierten Bookmark-Manager wenig zufriedenstellend. Bei der Suche nach einer passenden Lösung bin ich über Linkwarden gestolpert. Es verspricht einfaches zentrales sammeln, lesen und kommentieren von Lesezeichen. Das tool ist open source und kostenlos, wenn man es selbst hostet.
Die docker-compose.yaml aus dem Linkwarden repo auf github muss leicht angepasst werden, da dort die Installation per cli bzw Editor und nicht über die portainer Oberfläche beschrieben wird. Die genannten Environment Variablen können dem Stack beigefügt werden, müssen den Containern aber noch in der docker-compose.yaml übergeben werden.
Die Dokumentation beschreibt die für den start in docker notwendigen Umgebungsvariablen. Tatsächlich sind es bei der Installation im Homelab aber nur die beiden:
NEXTAUTH_SECRET=VERY_SENSITIVE_SECRETPOSTGRES_PASSWORD=CUSTOM_POSTGRES_PASSWORDDiese Variablen müssen wir den einzelnen Containerumgebungen der compose-datei mitgeben. In Portainer ist dies über die Oberfläche möglich. Unterhalb des Editors für das compose file lässt sich ein Bereich ausklappen, indem man auf “Environment variables” klickt. Dort kann über den Button “Add an environment variable” eine neue Environment Variable angelegt werden.
Hier müssen jeweils name und Wert eingetragen werden. Für “NEXTAUTH_SECRET” und “POSTGRES_PASSWORD” müssen jeweils unterschiedliche sichere Schlüssel hinterlegt werden.
Anschließend müssen die Variablen in der docker-compose.yaml ergänzt werden. Die fertige yaml sieht dann so aus:
services: postgres: image: postgres:16-alpine env_file: .env restart: always environment: - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} volumes: - ./pgdata:/var/lib/postgresql/data linkwarden: env_file: .env environment: - NEXTAUTH_SECRET=${NEXTAUTH_SECRET} - DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres restart: always # build: . # uncomment to build from source image: ghcr.io/linkwarden/linkwarden:latest # comment to build from source ports: - 3000:3000 volumes: - ./data:/data/data depends_on: - postgres - meilisearch meilisearch: image: getmeili/meilisearch:v1.12.8 restart: always env_file: - .env volumes: - ./meili_data:/meili_data