Karakeep: memasang arsip bookmark pribadi di VPS
Menyimpan tautan itu mudah. Menemukannya kembali enam bulan kemudian jauh lebih sulit—terutama jika halaman tersebut sudah berubah, menghilang, atau hilang di antara ratusan bookmark.
Karakeep tidak hanya menyimpan URL, tetapi juga konten halaman, pratinjau, catatan, gambar, dan PDF. Anda dapat mencari arsip berdasarkan teks, mengatur item ke dalam daftar, dan memberi tag secara otomatis dengan AI. Karakeep berjalan di VPS sendiri, sementara koneksi ke model bahasa bersifat opsional.
Di bawah ini, kita akan membahas kemampuan Karakeep, persyaratan server, dan cara memasangnya di Ubuntu 24.04 dengan Docker Compose, HTTPS, serta cadangan.
Karakeep dalam tujuh langkah
- Buat Linux VPS dan arahkan subdomain seperti
keep.example.comke sana. - Pasang Docker Engine dan Docker Compose.
- Unduh
docker-compose.ymlresmi. - Buat secret dan jalankan Karakeep, Chrome, serta Meilisearch.
- Tutup port internal 3000 dan aktifkan HTTPS melalui Caddy.
- Buat akun pertama, kemudian nonaktifkan pendaftaran terbuka.
- Pasang ekstensi browser atau aplikasi seluler lalu impor bookmark.
Kunci AI tidak diperlukan untuk memulai layanan. Tanpanya, penyimpanan halaman, daftar, catatan, OCR, dan pencarian teks lengkap tetap berfungsi. Tag dan ringkasan otomatis tidak akan dibuat.
Apa itu Karakeep
Karakeep adalah aplikasi sumber terbuka dan self-hosted untuk menyimpan tautan, catatan teks, gambar, dan PDF dalam satu perpustakaan. Proyek ini sebelumnya bernama Hoarder.
Namanya berasal dari kata Arab karakeeb, yang digunakan untuk hal-hal berserakan yang tampak seperti barang berantakan tetapi mungkin memiliki nilai tersembunyi. Ini menggambarkan koleksi bookmark pada umumnya dengan tepat: banyak materi berguna, tetapi menemukan item yang tepat sulit dilakukan.
Setelah Anda menambahkan tautan, Karakeep mengambil judul dan deskripsinya, mengekstrak teks yang dapat dibaca, membuat pratinjau, dan dapat menyimpan salinan lokal halaman jika diperlukan.
| Fitur | Bookmark browser | Karakeep |
|---|---|---|
| Yang disimpan | URL dan judul | Teks, pratinjau, catatan, dan lampiran |
| Pencarian | Berdasarkan judul dan alamat | Berdasarkan konten, tag, dan catatan |
| Jika halaman menghilang | URL rusak tetap tersimpan | Teks, tangkapan layar, atau arsip lengkap tetap ada |
| Pengaturan | Folder | Tag, daftar manual, dan daftar pintar |
| Akses | Di browser | Web, ekstensi, iOS, dan Android |
| Server | Profil browser atau layanan cloud-nya | VPS atau server rumah Anda |
Fitur utama Karakeep
Tautan, catatan, gambar, dan PDF
Setiap item dapat berupa tautan, catatan teks, atau file yang diunggah. OCR mengekstrak teks dari gambar dan PDF, sehingga semuanya juga dapat dicari. Anda dapat melampirkan catatan, kutipan, atau file tambahan ke suatu item.
Pencarian konten
Meilisearch mengindeks teks, catatan, dan metadata yang disimpan. Anda tidak perlu mengingat judul persisnya: cukup gunakan frasa atau topik. Ketika embedding dikonfigurasi, pencarian semantik berdasarkan makna juga tersedia.
Daftar pintar dan kolaboratif
Satu item dapat menjadi bagian dari beberapa daftar sekaligus tanpa duplikasi. Daftar dapat tetap privat, dibagikan melalui tautan, atau diedit bersama pengguna lain.
Daftar pintar adalah kueri pencarian tersimpan yang diperbarui secara otomatis. Misalnya, daftar dapat menampilkan semua item bertag ai yang ditambahkan selama seminggu terakhir.
Pengarsipan halaman
Secara default, Karakeep menyimpan teks yang diekstrak dan tangkapan layar bagian halaman yang terlihat. Anda juga dapat mengaktifkan snapshot seluruh halaman, PDF, atau arsip HTML mandiri. Hal ini melindungi perpustakaan dari tautan mati, tetapi meningkatkan penggunaan disk.
Halaman di balik autentikasi, perlindungan anti-bot tingkat lanjut, dan aplikasi interaktif mungkin tidak tersimpan sepenuhnya. Materi penting sebaiknya diunggah secara terpisah sebagai PDF atau file.
Pemberian tag AI opsional
Karakeep dapat membuat tag dan ringkasan singkat melalui API yang kompatibel dengan OpenAI atau model Ollama lokal. Tanpa AI, aplikasi tetap menjadi pengelola bookmark yang berfungsi penuh.
Model lokal tidak mengirim materi ke penyedia eksternal, tetapi membutuhkan RAM yang jauh lebih besar. Karena itu, Ollama sering di-host terpisah dari instans utama Karakeep.
Persyaratan server Karakeep
Dokumentasi resmi tidak menetapkan minimum CPU dan RAM yang tetap. Instalasi lengkap mencakup tiga container:
- Karakeep menyimpan database dan menyajikan antarmuka;
- Chrome headless membuka halaman, menjalankan JavaScript, dan mengambil tangkapan layar;
- Meilisearch mengindeks perpustakaan.
Konfigurasi praktis untuk satu pengguna tanpa LLM lokal:
- 2 vCPU;
- RAM 2 GB;
- SSD atau NVMe 20–30 GB;
- Ubuntu 24.04 LTS;
- alamat IP publik dan domain.
Untuk beberapa pengguna, impor besar, banyak feed RSS, dan PDF, RAM 4 GB lebih nyaman. Kebutuhan disk bergantung pada mode pengarsipan: teks menggunakan sedikit ruang, sedangkan tangkapan layar penuh, PDF, dan video dapat dengan cepat memperbesar perpustakaan.
Cara memasang Karakeep di VPS
Contoh ini menggunakan Ubuntu 24.04 dan subdomain keep.example.com.
1. Konfigurasikan DNS dan firewall
Buat catatan DNS A yang mengarah ke alamat IP server, lalu hubungkan melalui SSH:
ssh root@SERVER_IP
apt update && apt upgrade -y
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enableJangan menutup sesi SSH saat ini sampai Anda memastikan koneksi baru dapat digunakan.
2. Pasang 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 version3. Unduh konfigurasi Karakeep
mkdir -p /opt/karakeep
cd /opt/karakeep
curl -fsSLo docker-compose.yml \
https://raw.githubusercontent.com/karakeep-app/karakeep/main/docker/docker-compose.ymlBuat dua secret yang berbeda:
openssl rand -base64 36
openssl rand -base64 36 | tr -dc 'A-Za-z0-9'Buat /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=trueJangan publikasikan .env: secret pertama menandatangani token autentikasi, sedangkan secret kedua melindungi Meilisearch.
4. Tutup port internal
Di docker-compose.yml, ganti:
ports:
- 3000:3000menjadi:
ports:
- 127.0.0.1:3000:3000Dengan demikian, port 3000 tidak dapat diakses langsung dari internet.
5. Jalankan container
cd /opt/karakeep
docker compose up -d
docker compose psLayanan web, chrome, dan meilisearch harus berjalan. Lihat log dengan:
docker compose logs --tail=2006. Aktifkan 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 caddyJika DNS sudah dikonfigurasi dan port 80 serta 443 terbuka, Caddy akan memperoleh sertifikat TLS secara otomatis. Kemudian buka https://keep.example.com.
7. Buat administrator dan tutup pendaftaran
Pengguna pertama yang mendaftar otomatis menjadi administrator. Setelah membuat akun, atur nilai berikut di .env:
DISABLE_SIGNUPS=trueTerapkan perubahan:
cd /opt/karakeep
docker compose up -dAdministrator tetap dapat membuat akun lain secara manual.
Mengimpor data, ekstensi, dan aplikasi seluler
Karakeep menyediakan ekstensi untuk Chrome, Firefox, dan Safari, serta aplikasi untuk iOS dan Android. Di ponsel, tautan dapat dikirim ke arsip melalui menu Share sistem.
Bookmark yang sudah ada dapat diimpor dari file HTML browser standar, Pocket, Omnivore, dan layanan lain yang didukung. Sebaiknya tambahkan arsip besar secara bertahap: server harus membuka halaman, mengekstrak teks, membuat tangkapan layar, dan membangun indeks pencarian.
Cara mengaktifkan AI dan pengarsipan seluruh halaman
Untuk OpenAI, tambahkan berikut ke .env:
OPENAI_API_KEY=YOUR_API_KEYLayanan lain yang kompatibel dengan OpenAI mungkin juga memerlukan OPENAI_BASE_URL. Untuk model lokal, gunakan OLLAMA_BASE_URL dengan alamat yang dapat diakses dari container.
Aktifkan salinan lokal lengkap sebuah halaman secara terpisah:
CRAWLER_FULL_PAGE_ARCHIVE=trueOpsi CRAWLER_FULL_PAGE_SCREENSHOT=true dan CRAWLER_STORE_PDF=true juga tersedia. Jangan mengaktifkan semua mode kecuali diperlukan: penggunaan disk akan meningkat secara nyata. Setelah mengubah .env, jalankan docker compose up -d.
Keamanan, pembaruan, dan cadangan
Crawler Karakeep membuka alamat yang disimpan pengguna dari jaringan server Anda. Karena itu, jangan membiarkan pendaftaran terbuka dan berikan akses hanya kepada orang tepercaya. Perlindungan SSRF dasar tersedia, tetapi untuk layanan publik proyek resmi menyarankan isolasi browser atau routing melalui proxy terbatas.
Gunakan HTTPS, kata sandi kuat, jangan buka port 3000, dan perbarui container secara rutin:
cd /opt/karakeep
docker compose up --pull always -dDatabase utama dan materi tersimpan berada di volume Docker bernama data. Hentikan container sebelum menyalinnya:
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 startNama karakeep_data mengasumsikan direktori proyek adalah /opt/karakeep; Anda dapat memverifikasinya dengan docker volume ls. Indeks Meilisearch dapat dibangun ulang, tetapi untuk perpustakaan besar sebaiknya volume karakeep_meilisearch juga dicadangkan.
Kirim arsip dari /var/backups/karakeep ke server lain, NAS, atau object storage. Salinan di VPS yang sama tidak melindungi dari kerusakan disk atau penghapusan mesin virtual.
VPS mana yang dipilih untuk Karakeep
Untuk perpustakaan pribadi tanpa Ollama, Linux VPS dengan 2 vCPU, RAM 2 GB, dan NVMe 20–30 GB sudah sesuai. Untuk impor besar, beberapa pengguna, dan pengarsipan penuh, pilih RAM 4 GB serta disk yang lebih besar.
Karakeep dapat dijalankan di VPS dari tropic.host: alamat IP permanen mempermudah konfigurasi domain, sedangkan penyimpanan NVMe berguna untuk SQLite, indeks pencarian, dan banyak file kecil. Sumber daya dapat ditingkatkan seiring arsip bertambah.
Rencanakan sumber daya Ollama lokal secara terpisah: model bahasa kecil pun mungkin memerlukan memori lebih besar daripada seluruh stack Karakeep utama.
Kesimpulan
Karakeep mengubah tautan yang tersebar menjadi perpustakaan pribadi yang dapat dicari. Karakeep menyimpan halaman, catatan, gambar, dan PDF, serta mendukung OCR, daftar, ekstensi, aplikasi seluler, dan pemberian tag AI opsional.
VPS kecil, Docker Compose, domain, dan HTTPS sudah cukup untuk memulai. Setelah instalasi, tutup pendaftaran, pantau penggunaan disk, dan simpan cadangan eksternal.
FAQ
Apakah Karakeep gratis?
Versi self-hosted bersumber terbuka dan tidak memerlukan langganan wajib. Anda membayar VPS, domain, penyimpanan cadangan, serta API AI eksternal jika diperlukan.
Apakah kunci API diperlukan agar Karakeep bekerja?
Tidak. Penyimpanan dan pengindeksan materi, daftar, catatan, OCR, dan pencarian teks lengkap bekerja tanpa AI. Model diperlukan untuk tag otomatis, ringkasan, dan fitur terkait.
Berapa banyak RAM yang dibutuhkan Karakeep?
Titik awal praktis untuk satu pengguna tanpa Ollama adalah RAM 2 GB. Untuk impor besar, beberapa pengguna, dan pemrosesan aktif, RAM 4 GB lebih nyaman.
Bisakah saya mengimpor bookmark dari browser atau Pocket?
Ya. Karakeep mendukung file HTML bookmark browser standar, Pocket, Omnivore, dan beberapa format lainnya. Setelah impor, Karakeep memproses halaman dan menambahkannya ke pencarian.
Apakah artikel tetap tersedia jika situs asli menghilang?
Karakeep menyimpan teks yang diekstrak dan tangkapan layar, serta jika pengarsipan lengkap diaktifkan, salinan lokal atau PDF. Halaman di balik autentikasi dan aplikasi web kompleks mungkin hanya tersimpan sebagian.
