Karakeep setup and installation – self hosted bookmark manager compared to Linkwarden

Overview and goal

Karakeep, formerly Hoarder, is a self hosted bookmark manager for links, images, PDFs, videos and notes. It fetches metadata automatically, can take screenshots or full page archives, and provides fast full text search. This guide explains what Karakeep is, how to install Karakeep with Docker in a Proxmox LXC, how it differs from Linkwarden, and which alternatives exist. You also get practical tips on performance, backups, security and how to save YouTube videos with Karakeep.

What is Karakeep

karakeep-installation-27

karakeep-installation-27

karakeep-installation-29

karakeep-installation-29

karakeep-installation-30

karakeep-installation-30

karakeep-installation-31

karakeep-installation-31

karakeep-installation-33

karakeep-installation-33

In short, Karakeep is your private knowledge base. You collect web pages, personal notes, images and PDFs, organize everything into lists and nested lists and tag entries to keep them searchable. Search is powered by Meilisearch. Optional AI tagging is available via OpenAI or locally with Ollama. Useful extras include OCR for text in images, full page archiving, screenshots and a video downloader based on yt-dlp.

Typical use cases:

  • Research for blog posts, talks or client projects
  • Moodboards for design ideas, campaigns and web design
  • Curating how tos, code snippets and documentation
  • Read it later style personal magazine

My homelab setup

I run Karakeep on this system:

Proxmox host

  • Proxmox 8.4.1 on an HP ProDesk 400 G7 SFF
  • Intel i5 10500, 48 GB RAM, 2 TB NVMe SSD

LXC container

  • Ubuntu 22.04
  • Start at boot: yes
  • Nesting: yes
  • Keyctl: yes
  • Initially 2 cores and 2 GB RAM, later increased to 6 cores and 6 GB RAM
  • Swap 4 GB, later 8 GB
  • Disk 96 GB

Real world note: 2 cores and 2 GB RAM are fine to start. For large or many uploads, parallel crawler jobs or OCR, more CPU cores and RAM noticeably improve throughput, especially when processing bigger images and files.

Set up the LXC container in Proxmox

This section walks you through a clean LXC setup tailored for Karakeep and Docker.

karakeep-installation-02

karakeep-installation-02

karakeep-installation-03

karakeep-installation-03

karakeep-installation-04

karakeep-installation-04

karakeep-installation-05

karakeep-installation-05

karakeep-installation-06

karakeep-installation-06

karakeep-installation-07

karakeep-installation-07

karakeep-installation-08

karakeep-installation-08

karakeep-installation-09

karakeep-installation-09

karakeep-installation-10

karakeep-installation-10

karakeep-installation-12

karakeep-installation-12

1) Download a template and create the CT

  1. In Proxmox, open your storage that holds templates and download the Ubuntu 22.04 standard template.
  2. Create new LXC container:
    • Select node and CT ID, choose a hostname such as karakeep.
    • Set a password.
    • Template: Ubuntu 22.04.
    • Root disk: 60 to 120 GB on SSD or NVMe.
    • CPU: start with 2 cores, increase later if needed.
    • RAM: start with 2 GB, Swap 4 GB.
    • Network: bridge vmbr0, IPv4 via DHCP or a static IP.
    • DNS: automatic or use 1.1.1.1 and 9.9.9.9.
    • Enable Start at boot.

2) Enable LXC features for Docker

After creation select the CT, open Options:

  • Features → enable Keyctl
  • Features → enable Nesting

This makes Docker and the headless Chrome service for screenshots much more reliable.

3) Unprivileged vs privileged

  • Recommendation: unprivileged LXC with nesting and keyctl enabled. This is safer.
  • If Docker gives you trouble in LXC, for example with Chrome or cgroup topics, you have two options:
    • Switch the CT to privileged and add the following to /etc/pve/lxc/<CTID>.conf: lxc.apparmor.profile: unconfined lxc.cgroup2.devices.allow: a lxc.cap.drop: lxc.mount.auto: "proc:rw sys:rw cgroup:rw"
    • Or use a small Ubuntu VM instead of LXC. That avoids edge cases but uses a bit more resources.

Use privileged mode only when you really need it and make a note of the change.

Installation – Karakeep with Docker in a Proxmox LXC

1) Prepare the LXC

Choose Ubuntu 22.04, enable Nesting and Keyctl. Inside the container:

sudo apt update
sudo apt upgrade -y
sudo apt install -y zip bzip2 gzip unzip htop git wget curl nano

Install Docker:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# if you use a non-root user
# sudo groupadd docker
# sudo usermod -aG docker $USER

Log out and back in so the docker group applies.

2) Create project folder and fetch files

mkdir karakeep && cd karakeep
wget https://raw.githubusercontent.com/karakeep-app/karakeep/main/docker/docker-compose.yml
wget -O .env https://raw.githubusercontent.com/karakeep-app/karakeep/main/docker/.env.sample

3) Edit .env

You can generate secrets online if you like, for example with randomkeygen.com.

Set at minimum:

KARAKEEP_VERSION=release
DATA_DIR=/data
MEILI_ADDR=http://127.0.0.1:7700
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=<openssl rand -base64 36>
MEILI_MASTER_KEY=<openssl rand -base64 36 | tr -dc 'A-Za-z0-9'>

My additional settings for media, OCR and video:

MAX_ASSET_SIZE_MB=200
CRAWLER_ENABLE_ADBLOCKER=true
# required to save YouTube videos
CRAWLER_VIDEO_DOWNLOAD=true
CRAWLER_VIDEO_DOWNLOAD_MAX_SIZE=5000000
CRAWLER_VIDEO_DOWNLOAD_TIMEOUT_SEC=7200

DISABLE_SIGNUPS=true # disables public signups

CRAWLER_DOWNLOAD_BANNER_IMAGE=true
CRAWLER_STORE_SCREENSHOT=true
CRAWLER_FULL_PAGE_SCREENSHOT=true
CRAWLER_FULL_PAGE_ARCHIVE=true
OCR_LANGS=deu,eng # German and English

4) Adjust docker-compose.yml

I store data in a ./data folder next to the compose file. This makes backups easier and lets you access files directly if needed.

services:
  web:
    image: ghcr.io/karakeep-app/karakeep:${KARAKEEP_VERSION:-release}
    restart: unless-stopped
    volumes:
      - ./data:/data # bind mount

If you also use headless Chrome and Meilisearch services, add them as in the upstream example and keep DATA_DIR=/data.

5) Start and update Karakeep

docker compose up -d

Web UI: http://<your-ip>:3000
Update strategy: bump the version in .env or stay on the release channel and pull fresh images. Always back up the ./data folder and the Meilisearch volume before updating.

Configuration at a glance

SettingEffectResource impact
CRAWLER_STORE_SCREENSHOTstores one screenshot per pagemedium
CRAWLER_FULL_PAGE_SCREENSHOTlong full page screenshot, cookie banners may appearhigh
CRAWLER_FULL_PAGE_ARCHIVEsaves a local copy of the pagehigh
CRAWLER_VIDEO_DOWNLOADdownloads videos via yt-dlphigh, depends on size
OCR_LANGSOCR for images and PDFsCPU heavy
MAX_ASSET_SIZE_MBmaximum upload sizedepends on value
DISABLE_SIGNUPSdisables public registrationnone

Saving videos with Karakeep

The feature is powered by yt-dlp. Enable it with CRAWLER_VIDEO_DOWNLOAD=true and set reasonable limits using CRAWLER_VIDEO_DOWNLOAD_MAX_SIZE and CRAWLER_VIDEO_DOWNLOAD_TIMEOUT_SEC. Always respect each platform’s terms of use. For long videos plan enough storage and a generous timeout.

Browser extensions and apps

With the add ons you can save the current page in one click, including tags and target list.

Import options

  • Chrome and Firefox: export bookmarks as HTML and import them in Karakeep settings.
  • Pocket: import the CSV from your export.
  • Omnivore: export JSON files, optionally merge with jq, then import.
  • Linkwarden: dedicated importer available, handy for migrations.

Karakeep vs Linkwarden

CriterionKarakeepLinkwarden
Data typesLinks, notes, images, PDFs, full page archives, videosBookmarks with strong archiving, PDFs, screenshots
SearchMeilisearch full textFull text and archive view
Video archivingbuilt in via env flagsusually via external tools or workflows
Mobilenative apps and browser add onsPWA and community apps
AI supportoptional via OpenAI or locally with Ollamaavailable depending on version and setup
HostingDocker Compose standardDocker Compose standard
Team featuresavailable and expandingavailable and mature

Quick take: Karakeep is very broad and covers media and notes in addition to bookmarks. Linkwarden shines with a polished archive view and PWA. If you collect lots of videos and screenshots, Karakeep’s integrated options are a strong plus.

Alternatives

  • Raindrop – cloud service with a beautiful UI and many integrations
  • Instapaper – classic read it later tool
  • wallabag, LinkAce, Linkding, Shaarli – open source options for self hosting
  • Pocket – discontinued or being phased out, export and migrate
  • Linkwarden – self hosted bookmark manager

Backup, restore and migration

Backup

  • Save the ./data folder
  • Save the Meilisearch Docker volume
  • Optionally add offsite backups or Proxmox snapshots

Restore

  • Stop containers
  • Restore the data folder and the volume
  • Start containers

Migration

  • Export from Pocket, Omnivore, Linkwarden or your browser
  • Import in Karakeep via settings

Security and operations

  • Put Karakeep behind a reverse proxy with HTTPS
  • Set DISABLE_SIGNUPS=true if you are the only user
  • Optional OAuth and SSO
  • Regular updates and backups
  • Monitor storage, especially when using full page archives and videos
  • For LXC use the latest Proxmox, with Nesting and Keyctl enabled

Performance tips

  • More CPU cores speed up crawlers, OCR and video processing
  • Use SSD or NVMe for the data directory
  • Enable CRAWLER_FULL_PAGE_* only where you really need it
  • Consider a separate disk or S3 compatible object storage for large media

Troubleshooting in LXC

  • Start the container with Nesting and Keyctl
  • If Docker struggles in unprivileged LXC, switch to privileged or adjust AppArmor rules, or in the worst case remove AppArmor inside the CT
  • Ensure the chrome service is running because Karakeep relies on it for screenshots and headless crawling
  • Do not block ports 3000 and 9222 with firewalls
  • For permission issues check ownership and write access on ./data

FAQ

Is Karakeep free and open source
Yes, Karakeep is open source and built for self hosting.

Do I need OpenAI for search or tagging
No. Search runs locally via Meilisearch. AI tagging is optional and can use OpenAI or Ollama.

Can I save YouTube videos
Yes. With CRAWLER_VIDEO_DOWNLOAD=true Karakeep uses yt-dlp. Respect file size limits, timeouts and legal boundaries.

How do I update Karakeep
Create a backup, bump the version or pull images and run docker compose up -d. Alternatively create a Proxmox backup of the LXC, manually or on a schedule.

Where should I store the data
Either in ./data on the host or in an S3 compatible object store. Regular backups are essential.

Glossary

  • Karakeep – self hosted bookmark manager, formerly Hoarder
  • Linkwarden – alternative self hosting solution for bookmarks with a strong archive view
  • Meilisearch – lightweight full text search used by Karakeep
  • OCR – optical character recognition for images and scanned PDFs
  • yt-dlp – downloader used by Karakeep to archive videos
  • Monolith – tool that creates single file HTML archives used for full page archiving
  • Ollama – local AI server used by Karakeep for tags and summaries without the cloud
  • S3 storage – object storage like MinIO or cloud providers, good for large media
  • PWA – progressive web app that installs like an app but runs in the browser
  • Docker Compose – describes multi container stacks in a YAML file
  • LXC – lightweight containers in Proxmox with low overhead
  • Privileged LXC – container with extended permissions, sometimes required for certain Docker setups
  • AppArmor – Linux security module that can be tuned in LXC environments
  • Reverse proxy – front web server such as Nginx or Traefik handling HTTPS, routing and headers
  • NextAuth secret – secret used by Karakeep’s authentication layer
  • Env variables – configuration values from the .env file applied to containers at runtime

Durchschnittliche Bewertung 0 / 5. Bewertungen: 0

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top