Tropic Host

Karakeep pe VPS: propria arhivă de bookmarkuri cu căutare și AI

8 min citire
Tropic
Karakeep pe VPS: propria arhivă de bookmarkuri cu căutare și AI

Language: ro

Karakeep: instalarea unei arhive personale de bookmarkuri pe VPS

Salvarea unui link este simplă. Găsirea lui peste șase luni este mai dificilă, mai ales dacă pagina s-a schimbat, a dispărut sau s-a pierdut printre sute de bookmarkuri.

Karakeep păstrează nu doar URL-ul, ci și conținutul paginii, previzualizarea, notițele, imaginile și fișierele PDF. Poți căuta în arhivă după text, poți organiza elementele în liste și le poți eticheta automat cu AI. Serviciul rulează pe propriul VPS, iar conectarea unui model lingvistic este opțională.

Mai jos prezentăm capacitățile Karakeep, cerințele serverului și instalarea pe Ubuntu 24.04 cu Docker Compose, HTTPS și backupuri.

Karakeep în șapte pași

  1. Creează un Linux VPS și direcționează spre el o subdomenă precum keep.example.com.
  2. Instalează Docker Engine și Docker Compose.
  3. Descarcă fișierul oficial docker-compose.yml.
  4. Generează secretele și pornește Karakeep, Chrome și Meilisearch.
  5. Închide portul intern 3000 și activează HTTPS prin Caddy.
  6. Creează primul cont, apoi dezactivează înregistrarea deschisă.
  7. Instalează extensia de browser sau aplicația mobilă și importă bookmarkurile.

Pentru a porni serviciul nu este necesară o cheie AI. Fără ea, salvarea paginilor, listele, notițele, OCR-ul și căutarea full-text vor funcționa în continuare. Etichetele și rezumatele automate nu vor fi generate.

Ce este Karakeep

Karakeep este o aplicație open-source, self-hosted, pentru stocarea linkurilor, notițelor text, imaginilor și fișierelor PDF într-o singură bibliotecă. Proiectul s-a numit anterior Hoarder.

Numele provine din cuvântul arab karakeeb, folosit pentru lucruri împrăștiate care par dezordine, dar pot avea o valoare ascunsă. Descrie bine o colecție obișnuită de bookmarkuri: există mult material util, dar găsirea elementului potrivit este dificilă.

După ce adaugi un link, Karakeep îi preia titlul și descrierea, extrage textul lizibil, creează o previzualizare și poate salva o copie locală a paginii când este necesar.

FuncțieBookmarkuri în browserKarakeep
Ce se stocheazăURL și titluText, previzualizare, notițe și atașamente
CăutareDupă titlu și adresăDupă conținut, etichete și notițe
Dacă pagina dispareRămâne un URL nefuncționalRămân textul, o captură sau o arhivă completă
OrganizareFoldereEtichete, liste manuale și liste inteligente
AccesÎn browserWeb, extensii, iOS și Android
ServerProfilul browserului sau serviciul său cloudVPS-ul sau serverul tău de acasă

Principalele funcții Karakeep

Linkuri, notițe, imagini și PDF-uri

Fiecare element poate fi un link, o notiță text sau un fișier încărcat. OCR-ul extrage textul din imagini și PDF-uri, astfel încât și acestea devin ușor de căutat. Poți atașa unei intrări o notiță, un citat sau un fișier suplimentar.

Căutarea conținutului

Meilisearch indexează textul salvat, notițele și metadatele. Nu trebuie să-ți amintești titlul exact: este suficientă o expresie sau o temă. Când sunt configurate embeddings, este disponibilă și căutarea semantică după sens.

Liste inteligente și colaborative

O singură intrare poate aparține simultan mai multor liste, fără duplicare. O listă poate rămâne privată, poate fi partajată printr-un link sau poate fi editată împreună cu alți utilizatori.

O listă inteligentă este o interogare de căutare salvată, care se actualizează automat. De exemplu, poate afișa toate elementele etichetate cu ai și adăugate în ultima săptămână.

Arhivarea paginilor

În mod implicit, Karakeep stochează textul extras și o captură a părții vizibile a paginii. Poți activa suplimentar o captură a paginii complete, un PDF sau o arhivă HTML autonomă. Astfel biblioteca este protejată împotriva linkurilor moarte, dar consumul de spațiu crește.

Paginile care necesită autentificare, au protecție anti-bot avansată sau sunt aplicații interactive pot să nu fie salvate complet. Materialele importante este mai bine să fie încărcate separat ca PDF sau fișier.

Etichetarea AI opțională

Karakeep poate genera etichete și rezumate scurte printr-un API extern compatibil cu OpenAI sau printr-un model local Ollama. Fără AI, aplicația rămâne un manager de bookmarkuri complet funcțional.

Un model local nu trimite materialele către un furnizor extern, dar necesită semnificativ mai mult RAM. Din acest motiv, Ollama este adesea găzduit separat de instanța principală Karakeep.

Cerințele serverului Karakeep

Documentația oficială nu precizează un minim fix pentru CPU și RAM. O instalare completă include trei containere:

  • Karakeep stochează baza de date și oferă interfața;
  • Chrome headless deschide pagini, rulează JavaScript și face capturi de ecran;
  • Meilisearch indexează biblioteca.

O configurație practică pentru un utilizator fără LLM local este:

  • 2 vCPU;
  • 2 GB RAM;
  • SSD sau NVMe de 20–30 GB;
  • Ubuntu 24.04 LTS;
  • adresă IP publică și domeniu.

Pentru mai mulți utilizatori, un import mare, multe fluxuri RSS și PDF-uri, 4 GB RAM sunt mai confortabili. Cerințele de spațiu depind de modul de arhivare: textul ocupă puțin, în timp ce capturile complete, PDF-urile și videoclipurile pot mări rapid biblioteca.

Cum instalezi Karakeep pe VPS

În acest exemplu folosim Ubuntu 24.04 și subdomeniul keep.example.com.

1. Configurează DNS-ul și firewallul

Creează un record DNS de tip A care indică spre adresa IP a serverului, apoi conectează-te prin SSH:

ssh root@SERVER_IP
apt update && apt upgrade -y

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable

Nu închide sesiunea SSH curentă până nu verifici că o conexiune nouă funcționează.

2. Instalează Docker

apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

apt update
apt install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin
docker compose version

3. Descarcă configurația Karakeep

mkdir -p /opt/karakeep
cd /opt/karakeep

curl -fsSLo docker-compose.yml \
  https://raw.githubusercontent.com/karakeep-app/karakeep/main/docker/docker-compose.yml

Generează două secrete diferite:

openssl rand -base64 36
openssl rand -base64 36 | tr -dc 'A-Za-z0-9'

Creează /opt/karakeep/.env:

KARAKEEP_VERSION=release
NEXTAUTH_SECRET=INSERT_THE_FIRST_SECRET
MEILI_MASTER_KEY=INSERT_THE_SECOND_SECRET
NEXTAUTH_URL=https://keep.example.com
DISABLE_SIGNUPS=false
DB_WAL_MODE=true
RATE_LIMITING_ENABLED=true

Nu publica .env: primul secret semnează tokenurile de autentificare, iar al doilea protejează Meilisearch.

4. Închide portul intern

În docker-compose.yml, înlocuiește:

ports:
  - 3000:3000

cu:

ports:
  - 127.0.0.1:3000:3000

Astfel portul 3000 nu va mai fi accesibil direct de pe internet.

5. Pornește containerele

cd /opt/karakeep
docker compose up -d
docker compose ps

Serviciile web, chrome și meilisearch ar trebui să ruleze. Vezi logurile cu:

docker compose logs --tail=200

6. Activează HTTPS

apt install -y caddy

cat > /etc/caddy/Caddyfile <<'EOF'
keep.example.com {
    reverse_proxy 127.0.0.1:3000
}
EOF

caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy

Dacă DNS-ul este configurat și porturile 80 și 443 sunt deschise, Caddy va obține automat un certificat TLS. Apoi deschide https://keep.example.com.

7. Creează administratorul și închide înregistrarea

Primul utilizator înregistrat devine automat administrator. După crearea contului, setează în .env:

DISABLE_SIGNUPS=true

Aplică modificarea:

cd /opt/karakeep
docker compose up -d

Administratorul va putea în continuare să creeze manual alte conturi.

Importul datelor, extensii și aplicații mobile

Karakeep oferă extensii pentru Chrome, Firefox și Safari, precum și aplicații pentru iOS și Android. Pe telefon, un link poate fi trimis către arhivă prin meniul Share al sistemului.

Bookmarkurile existente pot fi importate dintr-un fișier HTML standard al browserului, Pocket, Omnivore și alte servicii acceptate. Este mai bine să adaugi o arhivă mare în tranșe: serverul trebuie să deschidă paginile, să extragă textul, să creeze capturi și să construiască indexul de căutare.

Cum activezi AI și arhivarea paginilor complete

Pentru OpenAI, adaugă în .env:

OPENAI_API_KEY=YOUR_API_KEY

Un alt serviciu compatibil cu OpenAI poate necesita suplimentar OPENAI_BASE_URL. Pentru un model local, folosește OLLAMA_BASE_URL cu o adresă accesibilă din container.

Activează separat o copie locală completă a unei pagini:

CRAWLER_FULL_PAGE_ARCHIVE=true

Sunt disponibile și opțiunile CRAWLER_FULL_PAGE_SCREENSHOT=true și CRAWLER_STORE_PDF=true. Nu activa toate modurile decât dacă sunt necesare: cresc vizibil consumul de spațiu. După modificarea .env, rulează docker compose up -d.

Securitate, actualizări și backupuri

Crawlerul Karakeep deschide adresele salvate de utilizatori din rețeaua serverului. De aceea, nu lăsa înregistrarea deschisă și acordă acces doar persoanelor de încredere. Există protecție SSRF de bază, dar pentru un serviciu public proiectul oficial recomandă izolarea browserului sau rutarea lui printr-un proxy cu acces restricționat.

Folosește și HTTPS, parole puternice, nu expune portul 3000 și actualizează regulat containerele:

cd /opt/karakeep
docker compose up --pull always -d

Baza de date principală și materialele salvate sunt stocate în volumul Docker numit data. Oprește containerele înainte de a-l copia:

mkdir -p /var/backups/karakeep
cd /opt/karakeep
docker compose stop

docker run --rm \
  -v karakeep_data:/source:ro \
  -v /var/backups/karakeep:/backup \
  alpine sh -c 'tar czf /backup/data-$(date +%F).tar.gz -C /source .'

cp .env docker-compose.yml /var/backups/karakeep/
docker compose start

Numele karakeep_data presupune că directorul proiectului este /opt/karakeep; îl poți verifica prin docker volume ls. Indexul Meilisearch poate fi reconstruit, dar pentru o bibliotecă mare este util să faci backup și pentru volumul karakeep_meilisearch.

Trimite arhiva din /var/backups/karakeep către alt server, NAS sau object storage. O copie pe același VPS nu protejează împotriva defectării discului sau ștergerii mașinii virtuale.

Ce VPS să alegi pentru Karakeep

Pentru o bibliotecă personală fără Ollama, este potrivit un Linux VPS cu 2 vCPU, 2 GB RAM și 20–30 GB NVMe. Pentru importuri mari, mai mulți utilizatori și arhivare completă, alege 4 GB RAM și un disc mai mare.

Karakeep poate rula pe un VPS de la tropic.host: o adresă IP permanentă simplifică configurarea domeniului, iar stocarea NVMe este utilă pentru SQLite, indexul de căutare și numeroasele fișiere mici. Resursele pot fi mărite pe măsură ce arhiva crește.

Planifică separat resursele pentru Ollama: chiar și un model lingvistic mic poate necesita mai multă memorie decât întreaga stivă principală Karakeep.

Concluzie

Karakeep transformă linkurile împrăștiate într-o bibliotecă personală și ușor de căutat. Salvează pagini, notițe, imagini și PDF-uri și oferă OCR, liste, extensii, aplicații mobile și etichetare AI opțională.

Pentru început sunt suficiente un VPS mic, Docker Compose, un domeniu și HTTPS. După instalare, închide înregistrarea, monitorizează spațiul pe disc și păstrează un backup extern.

FAQ

Karakeep este gratuit?

Versiunea self-hosted este open source și nu necesită un abonament obligatoriu. Plătești pentru VPS, domeniu, spațiul de backup și, când este necesar, un API AI extern.

Este necesară o cheie API pentru ca Karakeep să funcționeze?

Nu. Salvarea și indexarea materialelor, listele, notițele, OCR-ul și căutarea full-text funcționează fără AI. Un model este necesar pentru etichete automate, rezumate și funcții similare.

De cât RAM are nevoie Karakeep?

Un punct de pornire practic pentru un utilizator fără Ollama este 2 GB RAM. Pentru importuri mari, mai mulți utilizatori și procesare activă, 4 GB sunt mai potriviți.

Pot importa bookmarkuri din browser sau Pocket?

Da. Karakeep acceptă un fișier HTML standard cu bookmarkuri, Pocket, Omnivore și alte câteva formate. După import, Karakeep procesează paginile și le adaugă în căutare.

O să rămână disponibil un articol dacă site-ul original dispare?

Karakeep stochează textul extras și o captură, iar când este activată arhivarea completă, păstrează o copie locală sau un PDF. Paginile care necesită autentificare și aplicațiile web complexe pot fi salvate doar parțial.