Tropic Host

VPS'te Karakeep: Arama ve yapay zekâ özellikli kendi yer imleri arşiviniz

8 dk okuma
Tropic
VPS'te Karakeep: Arama ve yapay zekâ özellikli kendi yer imleri arşiviniz

Karakeep: VPS'te kişisel yer imi arşivi kurma

Bir bağlantıyı kaydetmek kolaydır. Altı ay sonra onu bulmak ise daha zordur; özellikle sayfa değişmiş, ortadan kalkmış veya yüzlerce yer imi arasında kaybolmuşsa.

Karakeep yalnızca URL'yi değil, sayfa içeriğini, önizlemeyi, notları, görselleri ve PDF dosyalarını da saklar. Arşivi metinle arayabilir, öğeleri listelerde düzenleyebilir ve yapay zekâyla otomatik etiketleyebilirsiniz. Uygulama kendi VPS'inizde çalışır; bir dil modelini bağlamak isteğe bağlıdır.

Aşağıda Karakeep'in yeteneklerini, sunucu gereksinimlerini ve Ubuntu 24.04 üzerinde Docker Compose, HTTPS ve yedeklerle kurulumunu ele alacağız.

Karakeep yedi adımda

  1. Bir Linux VPS oluşturun ve keep.example.com gibi bir alt alan adını bu sunucuya yönlendirin.
  2. Docker Engine ve Docker Compose'u kurun.
  3. Resmî docker-compose.yml dosyasını indirin.
  4. Gizli anahtarlar oluşturup Karakeep, Chrome ve Meilisearch'i başlatın.
  5. Dahili 3000 portunu kapatın ve Caddy üzerinden HTTPS'i etkinleştirin.
  6. İlk hesabı oluşturun, ardından açık kayıt özelliğini kapatın.
  7. Tarayıcı uzantısını veya mobil uygulamayı kurup yer imlerinizi içe aktarın.

Hizmeti başlatmak için yapay zekâ anahtarı gerekmez. Bu anahtar olmadan sayfa kaydetme, listeler, notlar, OCR ve tam metin arama çalışmaya devam eder. Otomatik etiketler ve özetler oluşturulmaz.

Karakeep nedir?

Karakeep; bağlantıları, metin notlarını, görselleri ve PDF'leri tek bir kütüphanede saklayan açık kaynaklı, self-hosted bir uygulamadır. Projenin önceki adı Hoarder'dı.

Adı, dağınık görünen ancak gizli bir değere sahip olabilecek eşyalar için kullanılan Arapça karakeeb kelimesinden gelir. Bu, tipik bir yer imi koleksiyonunu doğru biçimde anlatır: yararlı içerik çoktur, fakat doğru öğeyi bulmak zordur.

Bir bağlantı ekledikten sonra Karakeep başlığını ve açıklamasını alır, okunabilir metni çıkarır, önizleme oluşturur ve gerektiğinde sayfanın yerel bir kopyasını kaydedebilir.

ÖzellikTarayıcı yer imleriKarakeep
Saklanan içerikURL ve başlıkMetin, önizleme, notlar ve ekler
AramaBaşlık ve adrese göreİçerik, etiket ve notlara göre
Sayfa ortadan kalkarsaBozuk URL kalırMetin, ekran görüntüsü veya tam arşiv kalır
DüzenlemeKlasörlerEtiketler, manuel listeler ve akıllı listeler
ErişimTarayıcıdaWeb, uzantılar, iOS ve Android
SunucuTarayıcı profili veya bulut hizmetiVPS'iniz veya ev sunucunuz

Karakeep'in temel özellikleri

Bağlantılar, notlar, görseller ve PDF'ler

Her öğe bir bağlantı, metin notu veya yüklenmiş dosya olabilir. OCR, görsellerden ve PDF'lerden metin çıkarır; böylece bunlar da aranabilir hâle gelir. Bir öğeye not, alıntı veya ek dosya iliştirebilirsiniz.

İçerik araması

Meilisearch kaydedilen metni, notları ve meta verileri indeksler. Tam başlığı hatırlamanız gerekmez; bir ifade veya konu yeterlidir. Embedding'ler yapılandırıldığında anlam tabanlı semantik arama da kullanılabilir.

Akıllı ve ortak listeler

Tek bir öğe kopyalanmadan aynı anda birkaç listeye ait olabilir. Bir liste özel tutulabilir, bağlantıyla paylaşılabilir veya diğer kullanıcılarla birlikte düzenlenebilir.

Akıllı liste, otomatik olarak güncellenen kayıtlı bir arama sorgusudur. Örneğin geçen hafta eklenen ve ai etiketi taşıyan tüm öğeleri gösterebilir.

Sayfa arşivleme

Karakeep varsayılan olarak çıkarılan metni ve sayfanın görünen bölümünün ekran görüntüsünü saklar. İsteğe bağlı olarak tam sayfa görüntüsü, PDF veya kendi kendine yeten HTML arşivi de etkinleştirilebilir. Bu, kütüphaneyi ölü bağlantılara karşı korur, ancak disk kullanımını artırır.

Kimlik doğrulama arkasındaki sayfalar, gelişmiş bot karşıtı korumalar ve etkileşimli uygulamalar tamamen kaydedilmeyebilir. Önemli materyalleri ayrıca PDF veya dosya olarak yüklemek daha güvenlidir.

İsteğe bağlı yapay zekâ etiketleme

Karakeep harici bir OpenAI uyumlu API veya yerel bir Ollama modeli üzerinden etiketler ve kısa özetler oluşturabilir. Yapay zekâ olmadan da uygulama tam işlevli bir yer imi yöneticisi olarak çalışır.

Yerel model materyalleri harici bir sağlayıcıya göndermez, ancak önemli ölçüde daha fazla RAM gerektirir. Bu nedenle Ollama çoğu zaman ana Karakeep örneğinden ayrı barındırılır.

Karakeep sunucu gereksinimleri

Resmî belgeler CPU ve RAM için sabit bir minimum belirtmez. Tam kurulum üç container içerir:

  • Karakeep veritabanını saklar ve arayüzü sunar;
  • headless Chrome sayfaları açar, JavaScript çalıştırır ve ekran görüntüsü alır;
  • Meilisearch kütüphaneyi indeksler.

Yerel LLM kullanmayan tek bir kullanıcı için pratik yapılandırma:

  • 2 vCPU;
  • 2 GB RAM;
  • 20–30 GB SSD veya NVMe;
  • Ubuntu 24.04 LTS;
  • genel IP adresi ve alan adı.

Birkaç kullanıcı, büyük bir içe aktarma, çok sayıda RSS akışı ve PDF için 4 GB RAM daha rahattır. Disk gereksinimi arşivleme moduna bağlıdır: metin az yer kaplar, ancak tam ekran görüntüleri, PDF'ler ve videolar kütüphaneyi hızla büyütebilir.

VPS'te Karakeep nasıl kurulur?

Bu örnekte Ubuntu 24.04 ve keep.example.com alt alan adı kullanılır.

1. DNS ve güvenlik duvarını yapılandırın

Sunucu IP adresine yönlenen bir A DNS kaydı oluşturun, ardından SSH üzerinden bağlanın:

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

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

Yeni bağlantının çalıştığını doğrulayıncaya kadar mevcut SSH oturumunu kapatmayın.

2. Docker'ı kurun

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. Karakeep yapılandırmasını indirin

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

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

İki farklı gizli anahtar oluşturun:

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

/opt/karakeep/.env dosyasını oluşturun:

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

.env dosyasını yayımlamayın: ilk gizli anahtar kimlik doğrulama belirteçlerini imzalar, ikinci anahtar ise Meilisearch'i korur.

4. Dahili portu kapatın

docker-compose.yml içinde şunu:

ports:
  - 3000:3000

şununla değiştirin:

ports:
  - 127.0.0.1:3000:3000

Bu, 3000 portunun internetten doğrudan erişilebilir olmasını engeller.

5. Container'ları başlatın

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

web, chrome ve meilisearch servisleri çalışıyor olmalıdır. Günlükleri şu komutla görüntüleyin:

docker compose logs --tail=200

6. HTTPS'i etkinleştirin

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

DNS yapılandırılmış ve 80 ile 443 portları açık ise Caddy otomatik olarak TLS sertifikası alır. Ardından https://keep.example.com adresini açın.

7. Yönetici oluşturup kaydı kapatın

İlk kaydolan kullanıcı otomatik olarak yönetici olur. Hesabı oluşturduktan sonra .env içinde şunu ayarlayın:

DISABLE_SIGNUPS=true

Değişikliği uygulayın:

cd /opt/karakeep
docker compose up -d

Yönetici yine de diğer hesapları elle oluşturabilir.

Verileri, uzantıları ve mobil uygulamaları içe aktarma

Karakeep Chrome, Firefox ve Safari için uzantılar; iOS ve Android için de uygulamalar sunar. Telefonda bir bağlantı, sistemin Share menüsü üzerinden arşive gönderilebilir.

Mevcut yer imleri standart bir tarayıcı HTML dosyasından, Pocket, Omnivore ve desteklenen diğer servislerden içe aktarılabilir. Büyük bir arşivi gruplar hâlinde eklemek daha iyidir: sunucunun sayfaları açması, metni çıkarması, ekran görüntüleri oluşturması ve arama dizinini kurması gerekir.

Yapay zekâ ve tam sayfa arşivleme nasıl etkinleştirilir?

OpenAI için .env dosyasına şunu ekleyin:

OPENAI_API_KEY=YOUR_API_KEY

Başka bir OpenAI uyumlu servis için ayrıca OPENAI_BASE_URL gerekebilir. Yerel model için container içinden erişilebilen bir adresle OLLAMA_BASE_URL kullanın.

Bir sayfanın eksiksiz yerel kopyasını ayrıca etkinleştirin:

CRAWLER_FULL_PAGE_ARCHIVE=true

CRAWLER_FULL_PAGE_SCREENSHOT=true ve CRAWLER_STORE_PDF=true seçenekleri de mevcuttur. Gerekli olmadıkça tüm modları açmayın; disk kullanımını belirgin biçimde artırırlar. .env dosyasını değiştirdikten sonra docker compose up -d çalıştırın.

Güvenlik, güncellemeler ve yedekler

Karakeep crawler'ı, kullanıcının kaydettiği adresleri sunucunuzun ağından açar. Bu nedenle kaydı açık bırakmayın ve yalnızca güvendiğiniz kişilere erişim verin. Temel SSRF koruması bulunur, ancak resmî proje herkese açık bir hizmet için tarayıcıyı izole etmeyi veya kısıtlı bir proxy üzerinden yönlendirmeyi önerir.

Ayrıca HTTPS kullanın, güçlü parolalar belirleyin, 3000 portunu açmayın ve container'ları düzenli olarak güncelleyin:

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

Ana veritabanı ve kaydedilen materyaller data adlı Docker volume'ünde tutulur. Kopyalamadan önce container'ları durdurun:

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

karakeep_data adı proje dizininin /opt/karakeep olduğunu varsayar; docker volume ls ile doğrulayabilirsiniz. Meilisearch dizini yeniden oluşturulabilir, ancak büyük bir kütüphane için karakeep_meilisearch volume'ünü de yedeklemek yararlıdır.

Arşivi /var/backups/karakeep konumundan başka bir sunucuya, NAS'a veya nesne depolamaya gönderin. Aynı VPS'teki bir kopya disk arızasına veya sanal makinenin silinmesine karşı koruma sağlamaz.

Karakeep için hangi VPS seçilmeli?

Ollama kullanmayan kişisel bir kütüphane için 2 vCPU, 2 GB RAM ve 20–30 GB NVMe özellikli bir Linux VPS uygundur. Büyük içe aktarmalar, birkaç kullanıcı ve tam arşivleme için 4 GB RAM ve daha büyük bir disk seçin.

Karakeep tropic.host VPS'inde çalıştırılabilir: kalıcı IP adresi alan adı yapılandırmasını kolaylaştırır; NVMe depolama SQLite, arama dizini ve çok sayıda küçük dosya için yararlıdır. Arşiv büyüdükçe kaynaklar artırılabilir.

Yerel Ollama kaynaklarını ayrıca planlayın: küçük bir dil modeli bile ana Karakeep yığınının tamamından daha fazla bellek gerektirebilir.

Sonuç

Karakeep dağınık bağlantıları kişisel ve aranabilir bir kütüphaneye dönüştürür. Sayfaları, notları, görselleri ve PDF'leri kaydeder; OCR, listeler, uzantılar, mobil uygulamalar ve isteğe bağlı yapay zekâ etiketlemeyi destekler.

Başlamak için küçük bir VPS, Docker Compose, alan adı ve HTTPS yeterlidir. Kurulumdan sonra kaydı kapatın, disk kullanımını izleyin ve harici bir yedek tutun.

SSS

Karakeep ücretsiz mi?

Self-hosted sürüm açık kaynaklıdır ve zorunlu abonelik gerektirmez. VPS, alan adı, yedekleme depolaması ve gerektiğinde harici yapay zekâ API'si için ödeme yaparsınız.

Karakeep'in çalışması için API anahtarı gerekli mi?

Hayır. Materyalleri kaydetme ve indeksleme, listeler, notlar, OCR ve tam metin arama yapay zekâ olmadan çalışır. Otomatik etiketler, özetler ve ilgili özellikler için bir model gerekir.

Karakeep ne kadar RAM ister?

Ollama kullanmayan tek bir kullanıcı için pratik başlangıç noktası 2 GB RAM'dir. Büyük içe aktarmalar, birkaç kullanıcı ve yoğun işleme için 4 GB daha uygundur.

Tarayıcıdan veya Pocket'tan yer imi içe aktarabilir miyim?

Evet. Karakeep standart tarayıcı yer imi HTML dosyasını, Pocket'ı, Omnivore'u ve başka bazı biçimleri destekler. İçe aktarmadan sonra Karakeep sayfaları işler ve aramaya ekler.

Orijinal web sitesi kaybolursa makale erişilebilir kalır mı?

Karakeep çıkarılan metni ve ekran görüntüsünü saklar; tam arşivleme etkinse yerel bir kopya veya PDF de tutar. Kimlik doğrulaması arkasındaki sayfalar ve karmaşık web uygulamaları yalnızca kısmen kaydedilebilir.