Files
Inanis_Vault/21-Server Reference/stacks/linkwarden.md

2.1 KiB

Linkwarden

Self-hosted bookmark manager with link archiving.

Access

Containers

Container Image Role
linkwarden ghcr.io/linkwarden/linkwarden:latest Web app
linkwarden-db postgres:16-alpine PostgreSQL database
linkwarden-tailscale-sidecar tailscale/tailscale:latest Tailscale node

Compose File

Path: /home/artanis/DockerFiles/linkwarden/docker-compose.yml

services:
  postgres:
    image: postgres:16-alpine
    container_name: linkwarden-db
    restart: always
    pull_policy: always
    volumes:
      - /home/artanis/DockerFiles/linkwarden/pgdata:/var/lib/postgresql/data

  linkwarden:
    container_name: linkwarden
    image: ghcr.io/linkwarden/linkwarden:latest
    restart: always
    pull_policy: always
    ports:
      - 5001:3000
    volumes:
      - /home/artanis/DockerFiles/linkwarden/data:/data/data
    environment:
      - DATABASE_URL=postgresql://postgres:<redacted>@postgres:5432/postgres
      - NEXTAUTH_URL=https://linkwarden.bunny-wyvern.ts.net/api/v1/auth
      - NEXTAUTH_SECRET=<redacted>
    depends_on:
      - postgres

  linkwarden-tailscale-sidecar:
    image: tailscale/tailscale:latest
    container_name: linkwarden-tailscale-sidecar
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun
    volumes:
      - linkwarden_tailscale_state:/var/lib/tailscale
    environment:
      - TS_AUTHKEY=<redacted>
      - TS_HOSTNAME=linkwarden
      - TS_STATE_DIR=/var/lib/tailscale
    network_mode: "service:linkwarden"

volumes:
  linkwarden_tailscale_state:

Data Layout

Path Contents
/home/artanis/DockerFiles/linkwarden/pgdata PostgreSQL data directory
/home/artanis/DockerFiles/linkwarden/data Linkwarden app data (archived pages, assets)

Notes

  • NEXTAUTH_URL must point to the Tailscale URL for auth to work correctly
  • A Meilisearch service was previously considered (commented out in compose) but not deployed