Coba deh cek bookmark browser kamu sekarang. Kalau isinya ratusan link yang udah lama gak dibuka dan judulnya generic kayak “Untitled” atau “New Tab”, kamu gak sendirian. Masalah bookmark manager bawaan browser itu sebenernya simpel: dia cuma nyimpen URL, bukan ngerti isi kontennya. Makanya begitu link-nya mati atau kamu lupa kenapa dulu nyimpen itu, ya udah, jadi sampah digital yang numpuk doang.
Salah satu solusi yang lagi rame dibahas komunitas self-hosting buat masalah ini adalah install Karakeep di server sendiri. Bedanya sama bookmark manager biasa, Karakeep bisa baca dan nge-tag isi artikel yang kamu simpen pakai AI. Jadinya, nyarinya gak cuma modal judul doang. Di artikel ini kita bahas dari nol, mulai apa itu Karakeep, cara deploy-nya pakai Docker Compose, sampai nyambunginnya ke Ollama biar AI tagging jalan lokal tanpa API key berbayar.
Apa Itu Karakeep dan Kenapa Ganti Nama dari Hoarder
Karakeep sebenernya proyek yang sama kayak Hoarder, cuma di-rebrand pertengahan tahun ke belakang. Fungsinya masih sama: nyimpen bookmark, artikel, screenshot halaman, sampai video, terus ditaro di satu tempat yang bisa dicari full-text. Sejak ganti nama, pengembangannya makin aktif dan fitur AI-nya makin digarap serius, termasuk dukungan provider lokal kayak Ollama. Semuanya open source dan bisa di-self-host penuh pakai Docker, jadi data browsing kamu gak nyangkut di server orang lain. Detail lengkap soal arsitektur dan opsi konfigurasinya bisa dicek langsung di dokumentasi resmi Karakeep.
Kenapa Perlu Install Karakeep Ketimbang Bookmark Manager Biasa
Bookmark manager kayak Raindrop atau Linkwarden juga oke, tapi kebanyakan fiturnya sebatas nyimpen dan ngasih folder atau tag manual. Karakeep beda soalnya begitu link disimpen, dia otomatis nge-crawl isi halamannya, bikin ringkasan, terus nempelin tag sendiri pakai model AI. Selain itu, pencarian di Karakeep bukan cuma cocokin kata di judul, tapi nyari berdasarkan konteks isi artikel lewat embedding. Buat kamu yang kerjaannya riset atau ngumpulin banyak referensi teknis, fitur ini beneran ngebantu. Gak bakal kejebak nyari satu bookmark di antara ratusan yang judulnya generic.
Fitur AI Tagging yang Bikin Karakeep Beda
Fitur andalannya ada di auto-tagging. Begitu bookmark baru masuk, sistem bakal analisis kontennya terus nempelin tag relevan otomatis, tanpa kamu harus ngetik manual satu per satu. Karakeep juga bisa OCR gambar dan transkrip video, jadi bookmark berupa screenshot atau rekaman video pun ikut kesearch.
Yang Mesti Disiapin Sebelum Install Karakeep
Sebelum mulai, pastiin beberapa hal ini udah beres dulu. Karakeep jalan bareng beberapa service pendukung kayak Meilisearch buat search engine-nya, jadinya butuh resource yang agak lebih dari sekadar aplikasi ringan biasa. Berikut checklist singkatnya:
- VPS dengan RAM minimal 2GB, soalnya Meilisearch lumayan makan memori pas proses indexing awal.
- Docker dan Docker Compose udah terinstall di server.
- Domain (opsional) kalau mau diakses lewat reverse proxy pakai HTTPS, bukan cuma port langsung.
Kalau semua itu udah siap, tinggal lanjut ke proses instalasinya.
Langkah Install Karakeep Pakai Docker Compose
Proses install-nya sebenernya gak jauh beda dari deploy aplikasi self-hosted lain pakai Docker Compose. Cuma ada beberapa environment variable wajib yang kalau sampai kelewat, container-nya bakal restart loop terus tanpa pesan error yang jelas. Ikuti 6 step berikut dari awal sampai akhir:
STEP 1 Bikin Folder dan File .env
Bikin folder khusus dulu, terus siapin file .env isinya konfigurasi wajib. NEXTAUTH_SECRET dan MEILI_MASTER_KEY harus di-generate random, jangan asal isi string sembarangan soalnya ini yang jaga sesi login dan akses ke search engine internalnya.
mkdir karakeep && cd karakeep
openssl rand -base64 36 # buat NEXTAUTH_SECRET
openssl rand -base64 36 # buat MEILI_MASTER_KEY
nano .env
Setelah menjalankan kedua command openssl di atas, kamu akan melihat output berupa string random panjang di terminal, contohnya:
aBcDeFgHiJkLmNoPqRsTuVwXyZ1234567890+/==
Copy string pertama (untuk NEXTAUTH_SECRET) dan string kedua (untuk MEILI_MASTER_KEY). Setelah itu, command nano .env akan membuka text editor. Paste kedua string tersebut ke file .env sesuai template di bawah:
KARAKEEP_VERSION=release
NEXTAUTH_SECRET=hasil-generate-tadi
MEILI_MASTER_KEY=hasil-generate-tadi
NEXTAUTH_URL=http://IP-VPS-kamu:3000
Untuk save file di nano editor, ikuti langkah berikut:
- Tekan Ctrl+X (untuk exit)
- Tekan Y (untuk yes, save changes)
- Tekan Enter (untuk confirm filename)
Setelah itu, verifikasi file .env sudah tersimpan dengan benar:
cat .env
Expected output:
KARAKEEP_VERSION=release
NEXTAUTH_SECRET=aBcDeFgHiJkLmNoPqRsTuVwXyZ1234567890+/==
MEILI_MASTER_KEY=XyZ1234567890+/==aBcDeFgHiJkLmNoPqRsT
NEXTAUTH_URL=http://IP-VPS-kamu:3000
Jika output sesuai, berarti file .env sudah siap untuk step berikutnya.
STEP 2 Download docker-compose.yml
Download docker-compose.yml resminya dari repo Karakeep, taro di folder yang sama dengan .env:
wget https://raw.githubusercontent.com/karakeep-app/karakeep/main/docker/docker-compose.yml
Verify file sudah ter-download:
ls -la docker-compose.yml
Expected output:
-rw-r--r-- 1 root root 2048 Sep 09 12:00 docker-compose.yml
STEP 3 Jalankan Container
Jalankan semua container di background (detached mode):
docker compose up -d
Command docker compose up -d akan menjalankan semua container di background. Artinya, container jalan tapi kamu tidak melihat log-nya di terminal. Proses startup biasanya memakan waktu 30-60 detik.
STEP 4 Cek Status Container
Cek apakah semua container sudah running:
docker compose ps
Expected output:
NAME COMMAND SERVICE STATUS PORTS
karakeep-web-1 "node server.js" web Up 2 minutes 0.0.0.0:3000->3000/tcp
karakeep-db-1 "postgres" db Up 2 minutes 5432/tcp
karakeep-search-1 "meilisearch" search Up 2 minutes 7700/tcp
Tunggu sampai semua container statusnya “Up” sebelum melanjutkan. Jika ada yang masih “Exited” atau “Restarting”, tunggu beberapa detik lagi dan jalankan docker compose ps sekali lagi.
Jika ada container yang terus “Exited”, cek log-nya dengan:
docker compose logs [nama-service]
# Contoh: docker compose logs karakeep-web-1
STEP 5 Akses Web UI dan Daftar Akun
Setelah semua container statusnya “Up”, buka browser ke http://IP-VPS-kamu:3000. Harusnya langsung muncul halaman Sign In. Daftar akun baru dengan email dan password yang kuat.
Setelah berhasil login, ada baiknya matiin pendaftaran akun baru biar instance kamu gak kebuka buat orang lain. Edit file .env dan tambahkan:
DISABLE_SIGNUPS=true
Setelah itu, restart container:
docker compose down
docker compose up -d
STEP 6 Nyambungin ke Ollama dan Pull Model
Ini bagian yang menurut saya paling worth it dari Karakeep, soalnya AI tagging-nya gak wajib pakai API key OpenAI yang berbayar. Kalau kamu udah punya server yang jalanin Ollama lewat Docker, tinggal arahin Karakeep ke situ lewat environment variable OLLAMA_BASE_URL. Satu hal yang sering kelewat: alamatnya harus bisa diakses dari dalam container Karakeep. Jadi jangan pakai localhost kalau Ollama-nya jalan di container terpisah, mesti pakai IP internal server atau nama service Docker-nya.
6.1 Update .env file dengan OLLAMA_BASE_URL
Edit file .env yang sudah dibuat sebelumnya:
nano .env
Tambahkan 4 baris berikut di akhir file:
OLLAMA_BASE_URL=http://ollama:11434
INFERENCE_TEXT_MODEL=gemma3
INFERENCE_IMAGE_MODEL=llava
EMBEDDING_TEXT_MODEL=embeddinggemma
Jika Ollama-nya jalan di server lain (bukan localhost), ganti http://ollama:11434 dengan IP server Ollama kamu, contoh: http://192.168.1.100:11434
Save file dengan Ctrl+X → Y → Enter.
6.2 Restart Container
Setelah update .env, kamu harus restart container agar perubahan ter-apply:
docker compose down
docker compose up -d
Proses ini biasanya memakan waktu 30-60 detik. Tunggu sampai semua container statusnya “Up” lagi dengan menjalankan docker compose ps.
6.3 Verify Koneksi ke Ollama
Setelah restart, cek apakah Karakeep sudah berhasil terhubung ke Ollama:
docker compose logs karakeep-web-1 | grep -i ollama
Jika berhasil, akan melihat output seperti:
"Connected to Ollama at http://ollama:11434"
atau
"Ollama inference ready"
Jika tidak ada output atau ada error, berarti koneksi gagal. Cek:
- Apakah Ollama container sudah running:
docker compose ps - Apakah OLLAMA_BASE_URL di .env sudah benar
- Cek full log:
docker compose logs karakeep-web-1
6.4 Pull Model di Ollama (PENTING!)
Sebelum mencoba save bookmark, kamu HARUS pull model yang akan digunakan di Ollama. Jika model belum ter-pull, proses tagging akan gagal diem-diem tanpa error yang jelas.
Pull ketiga model yang sudah dikonfigurasi:
docker exec ollama ollama pull gemma3
docker exec ollama ollama pull llava
docker exec ollama ollama pull embeddinggemma
Proses ini bisa memakan waktu 5-15 menit tergantung ukuran model dan kecepatan internet. Tunggu sampai semua model selesai ter-pull.
Verify model sudah ter-pull:
docker exec ollama ollama list
Expected output:
NAME ID SIZE MODIFIED
gemma3:latest abc123def456 5.0 GB 2 minutes ago
llava:latest def456ghi789 4.5 GB 1 minute ago
embeddinggemma:latest ghi789jkl012 2.0 GB 30 seconds ago
Dari pengalaman ngoperasiin inference lokal buat kebutuhan sehari-hari, tagging pakai model kecil kayak gini emang gak secepat OpenAI. Meskipun begitu, buat kebutuhan pribadi selisih beberapa detik per bookmark itu bukan masalah besar dibanding keuntungan data gak keluar dari server sendiri.
Verifikasi Instalasi Berhasil
Setelah semua container running dan model sudah ter-pull, lakukan test berikut untuk memastikan instalasi Karakeep sudah complete dan berfungsi dengan baik:
1. Akses Web UI
Buka browser ke http://IP-VPS-kamu:3000. Harusnya muncul halaman Sign In. Jika tidak muncul, tunggu 30 detik lagi dan refresh browser.
2. Daftar Akun Baru
Klik “Sign Up” dan buat akun baru dengan:
- Email: test@example.com (atau email kamu)
- Password: (buat password yang kuat)
Setelah berhasil, kamu akan di-redirect ke dashboard Karakeep.
3. Coba Save Bookmark
- Klik tombol “Add Bookmark” atau “+” di dashboard
- Paste URL: https://jundi.hm
- Klik “Save”
Karakeep akan mulai nge-crawl halaman dan menganalisis kontennya. Proses ini biasanya memakan waktu 5-30 detik tergantung kecepatan model AI.
4. Tunggu AI Tagging Selesai
Setelah save, kamu akan melihat bookmark muncul di dashboard dengan tag otomatis yang di-generate oleh AI. Contoh tag yang mungkin muncul: “tutorial”, “docker”, “linux”, dll.
Jika proses tagging lebih dari 1 menit, cek log:
docker compose logs karakeep-web-1
Jika ada error, biasanya karena model belum ter-pull atau Ollama tidak accessible.
5. Coba Search Bookmark
Ketik keyword di search box, contoh: “docker”. Harusnya bookmark yang kamu save tadi muncul di hasil pencarian.
Jika semua test di atas berhasil, berarti instalasi Karakeep sudah complete dan siap digunakan!
Troubleshooting Verifikasi
- Jika halaman tidak muncul: Cek apakah port 3000 sudah accessible (firewall, security group, dll)
- Jika tagging tidak jalan: Cek apakah model sudah ter-pull dengan
docker exec ollama ollama list - Jika search tidak bekerja: Tunggu beberapa saat, Meilisearch butuh waktu untuk index
Kendala yang Sering Muncul Setelah Install Karakeep
Beberapa masalah ini yang paling sering ketemu pas setup Karakeep, plus cara ngatasinnya:
- Container restart terus dari awal: biasanya NEXTAUTH_SECRET atau MEILI_MASTER_KEY kosong atau belum di-generate, cek ulang isi file .env.
- Web UI muncul tapi login gagal terus: NEXTAUTH_URL di .env gak cocok sama alamat yang dipake di browser. Samain persis, termasuk http atau https-nya.
- AI tagging gak jalan meski Ollama udah nyala: paling sering gara-gara OLLAMA_BASE_URL masih nunjuk ke localhost. Harusnya ke IP server atau nama service container.
- Hasil pencarian kosong walau bookmark udah banyak: tunggu beberapa saat. Meilisearch butuh waktu buat nge-index ulang, apalagi abis restart container.
Setelah semua jalan normal, tinggal pasang browser extension atau aplikasi mobile-nya. Simpen bookmark jadi makin gampang, gak perlu buka dashboard tiap kali mau nyimpen link. Karakeep ini salah satu contoh aplikasi self-hosted yang worth banget dicoba, apalagi kalau kamu udah kepake ekosistem Docker. Data browsing pribadi pun tetep di server sendiri, bukan nyangkut di layanan gratisan orang lain.


























