GaGadu

Portal informacyjny

◷ Opublikowano: ✎ Autor: ◉ 172 ○ 0

Karakeep zamiast Pocket i Raindrop: jak stworzyć własne archiwum linków, stron, obrazów i notatek z automatycznym tagowaniem AI oraz pełnotekstowym wyszukiwaniem na własnym serwerze

Karakeep zamiast Pocket i Raindrop: jak stworzyć własne archiwum linków, stron, obrazów i notatek z automatycznym tagowaniem AI oraz pełnotekstowym wyszukiwaniem na własnym serwerze

Pocket już nie wróci. Mozilla wyłączyła usługę 8 lipca 2025 r., a wraz z nią zniknął jeden z najprostszych sposobów odkładania artykułów „na później”. Raindrop.io nadal działa i jest znacznie bardziej rozbudowany, ale jeśli zależy nam nie tylko na zakładkach, lecz również na własnej kopii treści, obrazów, PDF-ów, notatek, OCR, automatycznych tagach AI i wyszukiwaniu po zawartości, pojawia się inne rozwiązanie: Karakeep.

Karakeep, wcześniej rozwijany pod nazwą Hoarder, jest projektem open source projektowanym od początku z myślą o self-hostingu. Nie jest więc po prostu kolejną chmurą, do której wrzucamy zakładki. Można postawić go na NAS-ie, domowym mini-PC, VPS-ie albo serwerze firmowym i samemu zdecydować, gdzie leży baza danych, pliki, zrzuty stron oraz indeks wyszukiwarki.

To rozróżnienie ma znaczenie. W Karakeep zapisanie adresu URL może uruchomić pobranie metadanych, wyciągnięcie tekstu strony, utworzenie zrzutu, indeksowanie, analizę AI i nadanie tagów. Obraz może przejść przez OCR. PDF może stać się elementem przeszukiwalnej biblioteki. Do zwykłej notatki można później dotrzeć tym samym mechanizmem wyszukiwania co do artykułu zapisanego pół roku wcześniej.

Na 30 sierpnia 2026 r. aktualnym wydaniem stabilnym jest Karakeep 0.33.2, opublikowanym 11 sierpnia. W linii 0.33 pojawiło się również wyszukiwanie semantyczne, czyli odnajdywanie materiałów nie tylko po identycznych słowach, ale także po podobnym znaczeniu.

Nie oznacza to jednak, że Karakeep jest „Raindropem za darmo”. Oprogramowanie self-hosted jest darmowe, ale serwer, kopie zapasowe, aktualizacje i bezpieczeństwo stają się obowiązkiem użytkownika. I właśnie od tego trzeba zacząć ocenę, czy taka zamiana ma sens.

Karakeep przechowuje znacznie więcej niż adres URL — i właśnie dlatego wymaga więcej miejsca oraz kontroli

Podstawowym obiektem w Karakeep jest bookmark, ale może on reprezentować link, tekst albo plik. W praktyce biblioteka może więc zawierać jednocześnie artykuły, dokumentację techniczną, przepisy, wpisy z blogów, krótkie własne notatki, obrazy i pliki PDF.

Przy zapisywaniu zwykłego linku Karakeep może pobrać:

  • tytuł strony,

  • opis,

  • grafikę podglądu,

  • tekst artykułu,

  • screenshot,

  • pełne archiwum strony,

  • dodatkowe załączniki,

  • tagi wygenerowane przez AI.

Do tego dochodzą notatki i highlights, czyli zaznaczone fragmenty tekstu. One także pozostają przeszukiwalne.

To ważna różnica względem klasycznej synchronizacji zakładek w przeglądarce. Zakładka w Chrome lub Firefoxie jest przede wszystkim adresem. Gdy strona zniknie, często zostaje tylko martwy URL. Karakeep może przechowywać lokalne materiały potrzebne do odtworzenia zapisanej treści.

Nie wszystko jest jednak włączone domyślnie. Zapis zwykłego screenshota jest standardowo aktywny, ale pełny screenshot całej strony jest domyślnie wyłączony, ponieważ przy większej bibliotece potrafi bardzo szybko zwiększać wykorzystanie dysku. Podobnie automatyczne pobieranie materiałów wideo przez yt-dlp jest funkcją opcjonalną.

To rozsądne ustawienia. Przy 10 tys. linków różnica między biblioteką zawierającą głównie tekst i miniatury a biblioteką przechowującą pełne zrzuty oraz multimedia może oznaczać nie gigabajty, ale dziesiątki lub setki gigabajtów.

Domyślny limit pojedynczego przesyłanego assetu wynosi 50 MB. Można go zmienić przez konfigurację. Pliki mogą być zapisywane bezpośrednio na lokalnym filesystemie albo w magazynie zgodnym z S3, np. MinIO. Backend storage warto wybrać przed rozpoczęciem budowania dużej biblioteki, ponieważ późniejsza zmiana wymaga ręcznej migracji istniejących assetów.

Szczególnie przydatne jest OCR. Karakeep wykorzystuje standardowo Tesseract.js, a próg akceptowanej pewności rozpoznania wynosi domyślnie 50/100. Domyślnym językiem OCR jest angielski. Dla polskiej biblioteki warto od razu dodać język polski, np.:

OCR_LANGS=eng,pol

Jeżeli zapisujemy dużo zdjęć dokumentów, slajdów albo screenshotów z tekstem, można zamiast Tesseracta włączyć OCR wykonywany przez model językowy. Służy do tego OCR_USE_LLM=true. Rozpoznawanie skomplikowanych grafik potrafi być wtedy lepsze, ale każde takie zadanie zużywa zasoby lokalnego modelu albo generuje koszt po stronie zewnętrznego API.

Tu pojawia się pierwsza istotna decyzja dotycząca prywatności. Self-hosting Karakeep nie oznacza automatycznie, że cała treść pozostaje na własnym serwerze. Jeśli do tagowania używamy OpenAI albo Gemini, odpowiednia część materiału zostaje wysłana do dostawcy modelu. Przy prywatnych zakładkach zwykle nie ma to większego znaczenia. Przy wewnętrznej dokumentacji firmy, umowach, danych klientów lub materiałach objętych NDA sytuacja wygląda inaczej.

W takim przypadku są trzy rozsądne warianty:

  • wyłączyć AI i korzystać z Karakeep tylko jako archiwum oraz wyszukiwarki;

  • uruchomić model lokalnie przez Ollama;

  • oddzielić prywatną bibliotekę od materiałów, które można analizować w zewnętrznym API.

Nie warto natomiast wybierać lokalnego LLM tylko dlatego, że „jest za darmo”. Ollama przenosi koszt z rachunku za API na własny sprzęt. Serwer, który bez problemu obsługuje Karakeep, Meilisearch i crawler, nie musi mieć wystarczającej pamięci ani mocy obliczeniowej dla sensownego modelu językowego.

Instalacja na własnym serwerze: Docker Compose jest prosty, ale wersja minimalna odbiera Karakeepowi najważniejsze funkcje

Najłatwiejszą metodą instalacji jest Docker Compose. Oficjalny zestaw składa się nie tylko z właściwej aplikacji. Pełna konfiguracja korzysta również z Meilisearch oraz przeglądarki działającej bez interfejsu graficznego, używanej przez crawler.

To nie są dodatki, które można bez konsekwencji usunąć.

Bez Meilisearch wyszukiwanie jest całkowicie wyłączone. Bez przeglądarki crawler nadal potrafi pobierać część stron, ale ma problemy z treściami generowanymi przez JavaScript i nie wykonuje screenshotów. Bez OpenAI, Ollamy lub kompatybilnego dostawcy nie ma automatycznego tagowania AI.

Minimalny kontener Karakeep nadaje się więc do testów lub bardzo ograniczonego zastosowania. Jeśli celem jest stworzenie własnego odpowiednika Pocket/Raindrop, lepiej od razu instalować pełny stack.

Procedura jest krótka:

  1. Instalujemy Docker oraz Docker Compose.

  2. Pobieramy oficjalny docker-compose.yml.

  3. Tworzymy .env.

  4. Generujemy osobne, losowe sekrety dla logowania i Meilisearch.

  5. Uruchamiamy docker compose up -d.

  6. Dopiero później wystawiamy usługę przez HTTPS.

Minimalne zmienne konfiguracyjne powinny obejmować przynajmniej:

KARAKEEP_VERSION=0.33.2
NEXTAUTH_SECRET=<losowy_sekret>
MEILI_MASTER_KEY=<drugi_losowy_sekret>
NEXTAUTH_URL=https://zakladki.twojadomena.pl

Sekret można wygenerować np. poleceniem:

openssl rand -base64 36

W domowej sieci można rozpocząć od portu 3000, ale nie wystawiałbym surowego http://serwer:3000 bezpośrednio do internetu. Rozsądniejszy układ to Caddy, Nginx Proxy Manager, Traefik albo zwykły Nginx jako reverse proxy i certyfikat HTTPS.

Drugi krok po uruchomieniu serwera to wyłączenie otwartej rejestracji:

DISABLE_SIGNUPS=true

Pierwszy zarejestrowany użytkownik otrzymuje prawa administratora. Kolejne konta administrator może później tworzyć ręcznie. Dla prywatnego serwera nie ma powodu pozostawiać publicznego formularza rejestracji.

Karakeep obsługuje również logowanie przez OIDC, więc w większej instalacji można podłączyć np. własnego dostawcę tożsamości. Można nawet całkowicie wyłączyć logowanie hasłem i pozostawić wyłącznie OAuth/OIDC.

Ile sprzętu potrzeba? Oficjalna dokumentacja nie podaje jednego wymaganego minimum RAM i dobrze, bo obciążenie mocno zależy od crawlera, liczby równoległych zadań oraz rodzaju archiwizowanych materiałów. 2 GB RAM traktowałbym wyłącznie jako konfigurację testową. Przy dużym imporcie crawler, parser i indeksowanie potrafią tworzyć krótkotrwałe skoki zużycia pamięci. Do zwykłego prywatnego serwera sensowniej przeznaczyć około 4 GB RAM, a przy intensywnej archiwizacji, wielu użytkownikach lub dodatkowych usługach zostawić większy zapas.

Jeżeli Ollama działa na tym samym hoście, te wartości przestają być miarodajne. Zapotrzebowanie na pamięć trzeba wtedy policzyć pod konkretny model AI.

Koszt jest dzięki temu dość łatwy do przewidzenia. Sam Karakeep Self-Hosted kosztuje 0 dolarów i nie ma programowego limitu liczby zakładek ani przestrzeni. Jeśli mamy już Synology, QNAP, Unraid, Proxmox albo mini-PC działający całą dobę, koszt dodatkowej usługi jest niewielki. Osobny mały VPS w Europie to zwykle wydatek rzędu kilku–kilkunastu euro miesięcznie, zależnie od pamięci, dysku i backupu.

Dla porównania twórcy Karakeep oferują również własną chmurę. Plan darmowy jest przede wszystkim wersją demonstracyjną: 10 bookmarków i 20 MB storage. Plan Pro kosztuje obecnie 4 dolary miesięcznie i obejmuje do 50 tys. bookmarków, 50 GB danych, tagowanie AI i wyszukiwanie pełnotekstowe. Przy płatności rocznej deklarowany rabat wynosi 17%.

W Raindrop.io sytuacja jest odwrotna: darmowy plan pozwala przechowywać nieograniczoną liczbę bookmarków i kolekcji, ale m.in. pełnotekstowe wyszukiwanie, archiwum stron i codzienne backupy należą do Pro.

Najbardziej drażliwym elementem self-hostingu są właśnie backupy. W Karakeep główna baza i domyślne assety znajdują się w DATA_DIR. Samo posiadanie volume Dockera nie jest kopią zapasową. Jeśli padnie dysk, volume zniknie razem z nim.

Minimum to:

  • kopia DATA_DIR,

  • kopia przechowywanych poza nim assetów lub bucketa S3,

  • druga kopia na innym urządzeniu albo w innej lokalizacji,

  • test odtworzenia przynajmniej raz po skonfigurowaniu systemu.

Karakeep ma również mechanizmy tworzenia backupu konta, ale przy self-hostingu i tak warto zabezpieczać warstwę storage niezależnie od aplikacji.

Jest jeszcze jedna zasada, która oszczędza sporo nerwów: nie aktualizować produkcyjnego serwera automatycznie do każdego nowego wydania w dniu premiery. Zamiast KARAKEEP_VERSION=release lepiej przypiąć konkretną wersję, wykonać backup i dopiero później zmienić tag obrazu. Wersja 0.33.2 sama była wydaniem poprawkowym po 0.33.1. Self-hosting daje kontrolę nad aktualizacją — szkoda tę przewagę oddawać przez automatyczne pobieranie każdego release’u.

Migracja z innych usług jest stosunkowo łatwa, ale ma ograniczenia.

Karakeep potrafi bezpośrednio importować m.in. Pocket CSV, Netscape HTML, Omnivore oraz dane z kilku innych managerów. Przy imporcie Pocket zachowywane są m.in. tytuły, tagi i daty dodania. Trzeba jednak pamiętać, że Pocket został wyłączony w 2025 r., a okno eksportowania danych zostało już zamknięte. Dzisiaj import jest więc możliwy tylko wtedy, gdy wcześniej zachowaliśmy własny plik eksportu.

Z Raindrop.io sytuacja jest prostsza. Raindrop pozwala eksportować dane jako HTML, CSV lub TXT, a HTML jest standardowym plikiem Netscape Bookmarks, który Karakeep obsługuje.

Nie zakładałbym jednak, że każdy element metadanych przejdzie idealnie jeden do jednego. Raindrop przechowuje kolekcje, highlights, notatki i inne informacje, a importer Karakeep ma własny model danych. Przy bibliotece liczącej tysiące elementów najpierw warto zrobić próbę na małym eksporcie, sprawdzić odwzorowanie tagów i list, a dopiero później wrzucić całość.

To szczególnie ważne dlatego, że importer nie służy do ręcznego zaznaczania części URL-i z przygotowanego pliku. Jeżeli uruchamiamy import całego eksportu, Karakeep zacznie dodawać wszystkie znajdujące się tam adresy.

AI i wyszukiwanie są najmocniejszą częścią Karakeep, ale trzeba rozdzielić pełny tekst, semantykę i tagowanie

Najczęstszy błąd przy pierwszej konfiguracji to wrzucenie do jednego worka wszystkiego, co ma etykietę „AI”. W Karakeep działają przynajmniej trzy różne mechanizmy: wyszukiwanie pełnotekstowe, wyszukiwanie semantyczne oraz inference używane do tagowania i podsumowań.

Pełnotekstowe wyszukiwanie opiera się na Meilisearch. Przeszukiwane mogą być tytuły, treść, opisy i notatki. Jeśli pamiętamy jedno zdanie ze starego artykułu, nie musimy wiedzieć, pod jakim tagiem go zapisaliśmy.

Można też łączyć tekst z filtrami. Przykładowo:

machine learning is:fav

wyszukuje frazę i ogranicza wyniki do ulubionych.

Inne przydatne filtry to m.in.:

is:broken – uszkodzone linki,
is:archived – elementy zarchiwizowane,
is:link – tylko strony,
is:text – tylko notatki,
is:media – materiały,
after:2026-01-01 – elementy zapisane od konkretnej daty,
before:2026-06-30 – elementy sprzed wskazanej daty,
#linux albo tag:linux – konkretny tag,
source:rss – elementy pochodzące z RSS.

Możliwe jest również używanie and, or, negacji oraz nawiasów. W dużej bibliotece daje to znacznie lepsze rezultaty niż tworzenie kilkudziesięciu perfekcyjnie uporządkowanych folderów.

Wyszukiwanie semantyczne pojawiło się w serii 0.33. Zamiast szukać jedynie identycznej frazy, system tworzy embeddingi treści i może zwrócić materiały podobne znaczeniowo. Jeżeli zapisaliśmy tekst opisujący „awarię macierzy po utracie dwóch dysków”, wyszukanie czegoś w rodzaju „problem z RAID i uszkodzonymi dyskami” ma większą szansę odnaleźć właściwy materiał mimo innych słów.

Funkcja jest nadal oznaczona jako eksperymentalna. Domyślny model embeddingów w konfiguracji OpenAI to text-embedding-3-small, spodziewany rozmiar wektora wynosi 1536 wymiarów, a maksymalna ilość treści przekazywana do embeddingu domyślnie odpowiada 8000 znakom. Dłuższy materiał jest przy generowaniu embeddingu obcinany.

Semantyki nie traktowałbym więc jako zamiennika klasycznego wyszukiwania. Najlepiej działa jako druga warstwa: pełny tekst znajduje konkretne słowa, a semantyka pomaga wtedy, gdy pamiętamy temat, ale nie pamiętamy sformułowania.

Trzeci mechanizm to automatyczne tagowanie AI.

Karakeep obsługuje OpenAI, lokalną Ollamę i dostawców kompatybilnych z interfejsem OpenAI. Można w ten sposób skonfigurować również Gemini.

W aktualnej domyślnej konfiguracji tagowania tekstu dokumentacja Karakeep wskazuje model gpt-5.6-luna, natomiast dla analizy obrazów gpt-4o-mini. Twórcy szacują koszt tagowania tekstu na ponad 6000 bookmarków za mniej niż 1 dolara, a analizy obrazów na ponad 1000 obrazów za mniej niż 1 dolara. To koszt API, niezależny od ewentualnego hostingu.

W praktyce nie cena jest największym problemem. Jest nim jakość tagów.

Automatyczne tagowanie potrafi stworzyć etykiety, których sam użytkownik nigdy by nie wymyślił, a przy dużej bibliotece prowadzi to do bałaganu: linux, Linux, linux server, server administration, self-hosting, homelab. Każdy tag osobno jest logiczny, ale po kilku tysiącach zapisów lista zaczyna żyć własnym życiem.

Dlatego nie budowałbym struktury biblioteki wyłącznie na tagach AI. Listy powinny przechowywać strukturę wybraną przez człowieka, a tagi AI służyć głównie do odnajdywania materiałów.

Dobry układ to na przykład kilka ręcznych list:

  • Do przeczytania,

  • Dokumentacja,

  • Projekty,

  • Inspiracje,

  • Zakupy,

  • Archiwum.

AI może do tego dodawać szczegółowe tagi tematyczne bez konieczności ręcznego sortowania każdego linku.

Karakeep pozwala też dopisać własne instrukcje do promptu automatycznego tagowania. To jedna z pierwszych rzeczy, które warto skonfigurować po sprawdzeniu pierwszych kilkudziesięciu wyników. Można np. zażądać krótkich tagów, określonego języka albo nakazać modelowi preferowanie już istniejących etykiet.

Nie ma jednak sensu optymalizować promptu przed importem. Najpierw trzeba zobaczyć, jak faktyczna biblioteka jest kategoryzowana.

Najrozsądniejsza kolejność wdrożenia wygląda więc tak: najpierw Karakeep + Meilisearch + crawler, później mały import 100–200 reprezentatywnych bookmarków, następnie test wyszukiwania i archiwizacji, a dopiero na końcu AI oraz import całej kolekcji. Jeśli od razu wrzucimy 20 tys. starych adresów, serwer zacznie jednocześnie crawlowanie, indeksowanie, OCR i inference. Trudniej wtedy odróżnić normalne obciążenie od błędnej konfiguracji.

Karakeep ma sens przede wszystkim wtedy, gdy chcemy posiadać bibliotekę, a nie tylko konto w usłudze do zakładek. Jeżeli interesuje nas bezobsługowa synchronizacja, Raindrop.io pozostaje prostszy. Jeśli jednak chcemy mieć własny storage, indeks, OCR, API, RSS, lokalne modele AI i kopie zapisanych materiałów, self-hosted Karakeep daje poziom kontroli, którego typowy bookmark manager nie zapewnia.

Pierwszy krok nie powinien więc polegać na przenoszeniu całego archiwum. Najpierw postaw pełną wersję z Meilisearch, przypnij konkretny release, skonfiguruj HTTPS i backup, zapisz kilkadziesiąt prawdziwych stron i sprawdź, co faktycznie trafia na dysk. Dopiero jeśli wynik można poprawnie wyszukać i odtworzyć po kilku dniach, ma sens przenosić tysiące starych linków.

FAQ

Czy Karakeep jest naprawdę darmowy?
Tak. Wersja self-hosted jest darmowa i open source, bez programowego limitu liczby bookmarków czy storage. Płacisz natomiast za własny serwer, prąd, dyski, backup oraz ewentualne API AI.

Czy mogę uruchomić Karakeep na Raspberry Pi albo NAS-ie?
Tak, jeśli urządzenie obsługuje Dockera i ma odpowiednią ilość RAM. Dla pełnego zestawu z crawlerem i Meilisearch rozsądniej mieć około 4 GB RAM lub więcej niż próbować zmieścić produkcyjną bibliotekę w 1–2 GB. Lokalna Ollama może wymagać znacznie mocniejszego sprzętu.

Czy AI jest wymagane?
Nie. Bez AI nadal można zapisywać treści i korzystać z klasycznego pełnotekstowego wyszukiwania. Wyłączone zostanie przede wszystkim automatyczne tagowanie, podsumowania i funkcje zależne od modelu.

Czy pełnotekstowe wyszukiwanie działa bez Meilisearch?
Nie. Bez skonfigurowanego Meilisearch wyszukiwanie Karakeep jest wyłączone, dlatego minimalnej instalacji nie warto wybierać do docelowego archiwum.

Czy Karakeep działa po polsku?
Aplikacja obsługuje wiele języków. W przypadku OCR polskich materiałów warto dodać pol do OCR_LANGS. Język tagów AI również można kontrolować konfiguracją i instrukcjami inference.

Czy można przenieść dane z Raindrop.io?
Tak. Najprostszą drogą jest eksport z Raindrop.io do HTML w formacie Netscape Bookmarks, a następnie import tego pliku do Karakeep. Przy dużej bibliotece najpierw wykonaj próbę na małym zestawie, ponieważ nie wszystkie specyficzne dla Raindrop metadane muszą zostać odwzorowane jeden do jednego.

Czy można jeszcze przenieść dane z Pocket?
Karakeep obsługuje pliki eksportu Pocket CSV, ale sama usługa Pocket została zamknięta 8 lipca 2025 r. Jeśli wcześniej nie pobrałeś eksportu swoich danych, nie ma już działającego konta Pocket, z którego Karakeep mógłby je pobrać.

Czy Karakeep archiwizuje stronę tak, żeby działała po jej usunięciu z internetu?
Może przechowywać tekst, screenshoty i pełne archiwa stron, ale nie należy obiecywać stuprocentowego odwzorowania każdej witryny. Strony wymagające logowania, agresywnie chronione przed botami albo silnie zależne od zewnętrznych skryptów mogą zostać zapisane niekompletnie.

Czy warto wystawiać Karakeep bezpośrednio do internetu?
Nie przez niezaszyfrowany port 3000. Użyj HTTPS i reverse proxy, wyłącz publiczną rejestrację, generuj własne sekrety i regularnie aktualizuj aplikację. Jeśli dostęp z zewnątrz nie jest potrzebny, jeszcze lepiej pozostawić usługę w LAN-ie lub udostępniać ją przez VPN.

Karakeep czy Raindrop.io — co wybrać?
Jeśli priorytetem jest brak administracji i gotowa synchronizacja, Raindrop.io jest łatwiejszy. Jeżeli ważniejsze są własne dane, własny storage, pełnotekstowy indeks, OCR, automatyzacja, API i możliwość lokalnego AI, Karakeep jest ciekawszym wyborem — pod warunkiem, że akceptujesz obowiązek aktualizacji i tworzenia backupów.

06 / O autorze

Redakcja

Jestem osobą ciekawą świata i zawsze szukam tematów, o których warto napisać coś więcej. Staram się tworzyć treści przystępne, interesujące i przede wszystkim użyteczne dla czytelnika.

Wszystkie artykuły →

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *