For years, Pocket was where a lot of people put everything they meant to read later. Then, in mid-2025, Mozilla announced it was shutting the service down, gave users a short window to export their data, and turned it off.

If you lost a library of saved articles, or nearly did, you've probably thought about where to keep them next. A self-hosted read-it-later app is the obvious answer: your bookmarks live on your own server, and nobody can sunset them out from under you.

Karakeep is one of the most popular choices. This guide explains what Karakeep is, what it needs, and how to self-host it with Docker, including optional AI tagging and importing an old Pocket export.

What is Karakeep?

Karakeep is an open-source, self-hostable app for saving links, notes, images, and PDFs. It was originally called Hoarder and was renamed in 2025. It's licensed under AGPL-3.0 and developed in the open on GitHub.

When you save a link, Karakeep fetches the page in a headless browser, extracts the title, description, main image, and readable content, and can save a full-page archive so the content survives even if the original disappears. It can also archive videos, take screenshots, and pull in items from RSS feeds automatically.

Its standout feature is AI tagging. Karakeep can send the content of each saved item to a language model, either a hosted API or a local model through Ollama, and generate tags automatically. Search is full-text, powered by Meilisearch, so you can find an article by something you remember from the body, not just the title.

There are browser extensions for Chrome and Firefox, mobile apps for iOS and Android, and an API for automation.

Karakeep vs. other self-hosted options

Karakeep isn't the only self-hosted alternative to Pocket. Wallabag is the long-standing option, focused tightly on reading articles, with excellent e-reader support. Linkwarden leans toward collaborative bookmark collections with strong archiving. Readeck is a newer, lightweight read-it-later app.

Karakeep's strengths are breadth and automation. It handles links, notes, images, and PDFs in one place, it tags things for you, and its mobile apps make saving from a phone easy. The trade-off is that it runs more services than a minimal app, including a headless Chrome instance and a search engine, so it needs a bit more memory.

What you'll need

Karakeep runs as three containers: the web app, a headless Chrome instance for fetching pages, and Meilisearch for search. A server with 2 GB of RAM is a comfortable minimum, with 4 GB giving more room if you save many pages or run other services alongside it. Storage depends on how much you archive; full-page archives and videos add up faster than plain bookmarks.

Any small Linux VPS or dedicated server works. You'll need Docker and Docker Compose installed, a domain or subdomain pointed at your server if you want HTTPS access, and optionally an OpenAI API key or a local Ollama instance for AI tagging. If you're deciding between container engines, our Docker vs. Podman comparison covers the differences.

Step 1: Create a project directory and download the compose file

Create a directory for Karakeep and download the official Docker Compose file from the project's repository:

mkdir -p ~/karakeep && cd ~/karakeep
wget https://raw.githubusercontent.com/karakeep-app/karakeep/main/docker/docker-compose.yml

The file defines the three services and two volumes, one for Karakeep's data and one for Meilisearch's index. It's worth opening it and reading through before you start, since the project occasionally updates image versions and options. Check the installation docs for the latest recommendations.

Step 2: Configure the environment

Karakeep reads its settings from a .env file in the same directory. Generate two random secrets first:

openssl rand -base64 36
openssl rand -base64 36

Then create the .env file:

KARAKEEP_VERSION=release
NEXTAUTH_SECRET=paste_first_secret_here
MEILI_MASTER_KEY=paste_second_secret_here
NEXTAUTH_URL=https://karakeep.example.com

NEXTAUTH_SECRET signs login sessions, and MEILI_MASTER_KEY protects the search engine. NEXTAUTH_URL should be the public address you'll use to reach Karakeep. Keep this file private, since anyone with these values can compromise your instance.

Step 3: Start Karakeep

Bring the stack up:

docker compose up -d

Docker pulls the images and starts the containers. Check that everything is running with docker compose ps, and look at docker compose logs -f web if anything seems off.

By default, Karakeep listens on port 3000. If you're going to put it behind a reverse proxy, which you should for anything internet-facing, edit the compose file so the port is bound to localhost only, changing 3000:3000 to 127.0.0.1:3000:3000, then run docker compose up -d again.

Step 4: Put it behind HTTPS

A reverse proxy handles HTTPS while the app port stays bound to localhost. The app is still publicly reachable through the proxy, so keep authentication enabled and maintain the server. Caddy is the simplest option because it obtains and renews certificates automatically. With Caddy installed, add this to your Caddyfile:

karakeep.example.com {
    reverse_proxy 127.0.0.1:3000
}

Reload Caddy, make sure your DNS record points at the server, and visit your domain. Nginx and Traefik work just as well if you already use them.

Step 5: Create your account and close sign-ups

Open Karakeep in your browser and sign up. The first account becomes the admin.

If this instance is just for you, or for a small group you'll invite, disable public sign-ups once your accounts exist. Add this to your .env file and restart:

DISABLE_SIGNUPS=true
docker compose up -d

Leaving sign-ups open on a public server invites strangers to use your storage and your AI quota.

Step 6: Enable AI tagging (optional)

AI tagging is optional, but it's one of the main reasons people choose Karakeep. You have two options.

With OpenAI, add your API key to .env:

OPENAI_API_KEY=sk-your-key-here

With a local model through Ollama, point Karakeep at your Ollama server and choose the models:

OLLAMA_BASE_URL=http://ollama.example.internal:11434
INFERENCE_TEXT_MODEL=llama3.1
INFERENCE_IMAGE_MODEL=llava

Restart the stack after changing settings. Running Ollama on infrastructure you control avoids sending bookmark content to a hosted inference provider. Crawling still contacts the bookmarked websites, and any other external integrations need their own review. Pull the named models in Ollama first, and make sure its address is reachable from inside the Karakeep container. Local inference also needs adequate CPU, memory, or GPU capacity. Small models tag adequately on a modest server; larger ones give better tags but need more resources.

Step 7: Import your Pocket export or other bookmarks

Karakeep can import bookmarks from several sources, including Pocket's export format, Omnivore, Linkwarden, and the standard HTML bookmark file every browser exports. You'll find the import options in the settings menu.

If you exported your Pocket library before the shutdown deadline, import that file now. Karakeep will queue each link for crawling, so large imports take a while to fully process as it fetches each page, and some old links will inevitably be dead.

Step 8: Install the extensions and apps

Install the Karakeep browser extension for Chrome or Firefox, and the mobile app for iOS or Android. Point each one at your server's address and log in.

From then on, saving a link is one click in the browser or a share-sheet tap on your phone. Karakeep fetches the content in the background, and the tags appear once AI processing finishes.

Keeping Karakeep updated and backed up

To update, pull new images and recreate the containers:

cd ~/karakeep
docker compose pull
docker compose up -d

Read the release notes before major updates, since the project moves quickly.

For backups, the important part is the data volume, which holds Karakeep's SQLite database and all your saved assets. The Meilisearch index can be rebuilt from that data, so it's less important to back up. Stop the stack briefly or use a consistent snapshot, copy the data volume to another location, and keep at least one copy off the server.

Monitor it like any other service, too. A simple uptime check plus notifications through something like ntfy will tell you if Karakeep goes down before you notice saves failing.

Wrapping up

Karakeep is a capable self-hosted Pocket alternative: it saves links, notes, images, and PDFs, can keep archived copies of pages even if the originals disappear, searches full text, and can tag everything automatically with a hosted or local AI model. Docker Compose simplifies deployment. HTTPS, closed sign-ups, prompt security updates, and tested backups are all part of maintaining an internet-facing instance.

Most importantly, your library lives on your own server, so the next time a hosted service shuts down, your reading list won't go with it.

Thanks for reading! If you're looking for a home for Karakeep and the rest of your self-hosted stack, xTom provides enterprise-grade dedicated servers and colocation, while V.PS offers scalable, NVMe-powered KVM VPS that suits apps like this well. We also offer IP transit, shared hosting, and general IT services.

Ready to discuss your infrastructure needs? Contact our team to explore the right solution for your projects.

Frequently asked questions about self-hosting Karakeep

Is Karakeep the same as Hoarder?

Yes. Karakeep was originally released as Hoarder and was renamed in 2025. It's the same project, with the same features and continued development.

Can Karakeep import my Pocket bookmarks?

Yes. Karakeep supports importing from Pocket's export format, as well as from Omnivore, Linkwarden, and standard browser bookmark files.

Do I need OpenAI to use Karakeep?

No. AI tagging is optional, and you can use a local model through Ollama instead of OpenAI. Karakeep works fine without AI at all; you'll just add tags yourself.

How much RAM does Karakeep need?

About 2 GB is a comfortable minimum, since Karakeep runs a headless Chrome instance and Meilisearch alongside the web app. More memory helps with large libraries or if you run a local AI model on the same server.

Is Karakeep free?

Yes. Karakeep is open-source software under the AGPL-3.0 license, and self-hosting it costs only what you pay for the server.

How do I back up Karakeep?

Back up the data volume, which contains the SQLite database and saved assets. The Meilisearch index can be rebuilt from that data, so it isn't strictly necessary to back up.