Linkwarden is a self-hosted bookmark manager that archives full page content (not just the link) — ensuring your saved bookmarks remain accessible even if the original page later changes or disappears.
Why Archive, Not Just Bookmark
Regular bookmarks just save a URL — if the page later changes or goes offline ("link rot"), the bookmark becomes useless. Linkwarden captures an actual archived copy (screenshot and/or readable content) at save time, preserving access regardless of what happens to the original.
Prerequisites
- Docker and Docker Compose installed
Step 1 — Create a Docker Compose Configuration
mkdir linkwarden && cd linkwarden
nano docker-compose.yml
version: '3'
services:
linkwarden:
image: ghcr.io/linkwarden/linkwarden:latest
restart: unless-stopped
ports:
- "3003:3000"
env_file: .env
volumes:
- linkwarden-data:/data/data
depends_on:
- postgres
postgres:
image: postgres:16
restart: unless-stopped
environment:
- POSTGRES_USER=linkwarden
- POSTGRES_PASSWORD=CHANGE_ME_STRONG_PASSWORD
- POSTGRES_DB=linkwarden
volumes:
- linkwarden-db:/var/lib/postgresql/data
volumes:
linkwarden-data:
linkwarden-db:
Step 2 — Create the Environment File
nano .env
DATABASE_URL=postgresql://linkwarden:CHANGE_ME_STRONG_PASSWORD@postgres:5432/linkwarden
NEXTAUTH_SECRET=$(openssl rand -base64 32)
NEXTAUTH_URL=https://links.yourdomain.com
Step 3 — Start Linkwarden
docker compose up -d
Step 4 — Access and Create Your Account
http://YOUR_SERVER_IP:3003
Step 5 — Add Your First Bookmark
Paste a URL — Linkwarden automatically archives a screenshot and extracts readable content in the background.
Step 6 — Organize with Collections and Tags
Group bookmarks into collections (by topic or project) and apply tags for cross-cutting organization and easier search later.
Step 7 — Install the Browser Extension
Linkwarden offers a browser extension for one-click saving directly from any page you're viewing, streamlining the bookmark-saving workflow.
Step 8 — Add HTTPS
See How to Install Nginx Proxy Manager with Docker, matching the NEXTAUTH_URL configured above.
Bulk Importing Existing Bookmarks
Linkwarden supports importing bookmarks from browser export files (standard HTML bookmark format) or other bookmark managers, letting you migrate an existing collection rather than starting from scratch.
Full-Text Search Across Archived Content
Since Linkwarden archives actual page content (not just the URL), you can search within the saved content itself, not just titles/tags — useful for rediscovering something you saved but don't remember exactly where.
Sharing Collections
Linkwarden supports sharing specific collections with others (publicly or with specific users), useful for curated resource lists shared with a team or the public.
Backing Up Linkwarden
Back up both the PostgreSQL database and the archived content data volume — the database alone doesn't include the actual archived screenshots/content.
Common Errors
Archiving fails for a specific page — some sites actively block automated archiving tools; this is typically a source-site limitation rather than a Linkwarden misconfiguration.
Continue Reading
- How to Install Wallabag (Self-Hosted Read-It-Later)
- How to Install and Secure PostgreSQL on Ubuntu & Debian
- How to Install Nginx Proxy Manager with Docker
Browse more articles in Popular Self-Hosted Applications.