Skip to main content
  1. Posts/
  2. Self-Hosting/

Linkwarden overview: a modern self-hosted bookmark manager

··673 words·4 mins· loading · loading · ·
Stilicho2011
Author
Stilicho2011
Writing about homelab, self-hosting, automation and open-source solutions
Table of Contents
Self-Hosting - This article is part of a series.
Part : This Article

If you enjoyed this article, you can support the author by becoming a sponsor on Boosty (link in the contacts section).

What is Linkwarden?
#

Linkwarden is an open-source self-hosted app for managing and archiving bookmarks. It’s built for users who value control over their data, want a local copy of important information from the internet, and want a convenient interface for organizing links.

The project is actively developed and positions itself as an alternative to services like Pocket, Raindrop.io, and Pinboard, but with an emphasis on privacy, independence, and open source.

Key features
#

Archiving web pages
#

Linkwarden doesn’t just save a link - it archives the content of the page (including text, images, and styles), letting you view it even offline. This is especially useful for building a knowledge base and storing scientific materials and blog posts that might disappear from the web.

Full-fledged search#

Full-text search across saved pages is supported. You can find what you need even if you forgot the link or the title.

Tags and collections
#

Links can be organized using tags and collections, which greatly simplifies navigating a large number of bookmarks.

Multi-user support
#

Linkwarden supports a multi-user mode with access rights separation. This is convenient for team work or family use.

Privacy and control
#

By deploying Linkwarden on your own server, you get full control over your data. Authentication via email, Google, GitHub, and other providers is supported through the OAuth 2.0 protocol.

Key features in table form
#

FeatureDescription
Page archivingAutomatically saves HTML, PDF, and screenshots of added links.
Reading mode and annotationsLets you read articles without ads, take notes, and highlight text.
Collections and tagsOrganizes content into hierarchical collections with tags.
CollaborationShare collections and manage member permissions.
Import / exportSupports imports from browsers and export to CSV/HTML.
Content searchFast full-text search (via Meilisearch).
Integrations (API, SSO)Supports Authentik, a REST API, and custom integrations.
Extensions and clientsChrome extension, PWA, Android and iOS apps.
AI tags and auto-analysisDetermines a link’s topic based on the page’s content.
Wayback MachineSubmits links to archive.org for long-term preservation.

Simple installation (Docker)
#

The project ships with ready-made Docker containers. Deployment takes just a couple of minutes:

git clone https://github.com/linkwarden/linkwarden
cd linkwarden
cp .env.example .env
docker compose up -d

Files used in the video
#

Docker compose file

services:
  postgres:
    container_name: postgres_linkwarden
    image: postgres:16-alpine
    env_file: .env
    restart: always
    volumes:
      - /home/stilicho/docker/linkwarden/pgdata:/var/lib/postgresql/data
    networks:
      - linkwarden #not necessary if you don't use another postgres instance
      #- proxy
  linkwarden:
    container_name: linkwarden
    env_file: .env
    environment:
      - DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres
    restart: always
    # build: . # uncomment this line to build from source
    image: ghcr.io/linkwarden/linkwarden:latest # comment this line to build from source
    #ports:
    #  - 3000:3000
    volumes:
      - /home/stilicho/docker/linkwarden/data:/data/data
    depends_on:
      - postgres
    networks:
      - proxy
      - linkwarden #not necessary if you don't use another postgres instance
    labels:
      - "traefik.enable=true"
      - "traefik.docker.network=proxy"
      - "traefik.http.routers.linkwarden.entrypoints=http"
      - "traefik.http.routers.linkwarden.rule=Host(`linkwarden.domain.ru`)"
      - "traefik.http.middlewares.linkwarden-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.linkwarden.middlewares=linkwarden-https-redirect"
      - "traefik.http.routers.linkwarden-secure.entrypoints=https"
      - "traefik.http.routers.linkwarden-secure.rule=Host(`linkwarden.domain.ru`)"
      - "traefik.http.routers.linkwarden-secure.tls=true"
      - "traefik.http.routers.linkwarden-secure.tls.certresolver=cloudflare"
      - "traefik.http.routers.linkwarden-secure.service=linkwarden"
      - "traefik.http.services.linkwarden.loadbalancer.server.port=3000" # make sure the loadbalancer is the last line!!!

networks:
  proxy:
    external: true
  linkwarden:
    external: true

Environment file

NEXTAUTH_URL=https://linkwarden.domain.ru/api/v1/auth
# NEXTAUTH_URL=http://localhost:3000/api/v1/auth # Uncomment this if you don't want to use another Identity Provider
NEXTAUTH_SECRET=linkwarden
POSTGRES_PASSWORD=Rpassword

# SMTP Settings
#NEXT_PUBLIC_EMAIL_PROVIDER=
#EMAIL_FROM=
#EMAIL_SERVER=
#BASE_URL=

#################
# SSO Providers #
#################

#AUTHENTIK_CUSTOM_NAME=Authentik
#NEXTAUTH_URL=https://linkwarden.domain.ru/api/v1/auth
#NEXT_PUBLIC_AUTHENTIK_ENABLED=true
#AUTHENTIK_CUSTOM_NAME=authentik
#AUTHENTIK_ISSUER=https://auth.domain.ru/application/o/linkwarden
#AUTHENTIK_CLIENT_ID=ID
#AUTHENTIK_CLIENT_SECRET=SECRET

Comparison with alternatives
#

FeatureLinkwardenPocketRaindrop.ioWallabag
Self-hosted
Page archiving✅ (Pro)
Full-text search
Multi-user
Open source

Use in a homelab
#

For homelab owners and enthusiasts, Linkwarden is a great addition to a self-hosting stack. It integrates easily with Traefik, Nginx, or Caddy, and can be protected via SSO (for example, with Authentik or Authelia).

Conclusion
#

Linkwarden is a modern and powerful tool for managing links, built with an emphasis on privacy, convenience, and independence from cloud services. It’s a great fit for both personal use and team or family collaboration.

Self-Hosting - This article is part of a series.
Part : This Article

Related

Diun - notifications about Docker image updates

··991 words·5 mins· loading · loading
A detailed guide to installing and configuring Diun for tracking Docker image updates. Covers deployment steps, integration with notification services, and monitoring automation, so you can update your containers on time and improve system security.