Karakeep روی VPS: آرشیو شخصی نشانک‌ها با جست‌وجو و هوش مصنوعی

2 دقیقه خواندن
Tropic
Karakeep روی VPS: آرشیو شخصی نشانک‌ها با جست‌وجو و هوش مصنوعی

Language: fa

Karakeep: نصب آرشیو شخصی نشانک‌ها روی VPS

ذخیره کردن یک لینک آسان است. پیدا کردن آن شش ماه بعد دشوارتر می‌شود، به‌خصوص اگر صفحه تغییر کرده باشد، از بین رفته باشد یا میان صدها نشانک گم شده باشد.

Karakeep علاوه بر URL، محتوای صفحه، پیش‌نمایش، یادداشت‌ها، تصاویر و PDFها را نیز ذخیره می‌کند. می‌توانید آرشیو را با متن جست‌وجو کنید، موارد را در فهرست‌ها مرتب کنید و با هوش مصنوعی به‌صورت خودکار به آن‌ها برچسب بزنید. این برنامه روی VPS خودتان اجرا می‌شود و اتصال یک مدل زبانی اختیاری است.

در ادامه قابلیت‌های Karakeep، نیازمندی‌های سرور و نصب آن روی Ubuntu 24.04 با Docker Compose، HTTPS و پشتیبان‌گیری را بررسی می‌کنیم.

Karakeep در هفت گام

  1. یک VPS لینوکس بسازید و زیردامنه‌ای مانند keep.example.com را به آن هدایت کنید.
  2. Docker Engine و Docker Compose را نصب کنید.
  3. فایل رسمی docker-compose.yml را دانلود کنید.
  4. secretها را بسازید و Karakeep، Chrome و Meilisearch را اجرا کنید.
  5. پورت داخلی 3000 را ببندید و HTTPS را از طریق Caddy فعال کنید.
  6. اولین حساب را بسازید و سپس ثبت‌نام عمومی را غیرفعال کنید.
  7. افزونه مرورگر یا برنامه موبایل را نصب و نشانک‌ها را وارد کنید.

برای شروع سرویس به کلید هوش مصنوعی نیاز ندارید. بدون آن، ذخیره صفحه، فهرست‌ها، یادداشت‌ها، OCR و جست‌وجوی تمام‌متن همچنان کار می‌کنند. برچسب‌ها و خلاصه‌های خودکار تولید نخواهند شد.

Karakeep چیست؟

Karakeep یک برنامه متن‌باز و self-hosted برای ذخیره لینک‌ها، یادداشت‌های متنی، تصاویر و PDFها در یک کتابخانه واحد است. نام قبلی این پروژه Hoarder بود.

این نام از واژه عربی karakeeb می‌آید که برای چیزهای پراکنده‌ای استفاده می‌شود که شبیه شلوغی هستند اما ممکن است ارزش پنهانی داشته باشند. این توصیف دقیقی از مجموعه معمول نشانک‌هاست: مطالب مفید زیادی وجود دارد، اما پیدا کردن مورد درست دشوار است.

پس از افزودن یک لینک، Karakeep عنوان و توضیح آن را دریافت می‌کند، متن قابل‌خواندن را استخراج می‌کند، پیش‌نمایش می‌سازد و در صورت نیاز می‌تواند یک نسخه محلی از صفحه ذخیره کند.

قابلیتنشانک‌های مرورگرKarakeep
چه چیزی ذخیره می‌شودURL و عنوانمتن، پیش‌نمایش، یادداشت‌ها و پیوست‌ها
جست‌وجوبر اساس عنوان و نشانیبر اساس محتوا، برچسب‌ها و یادداشت‌ها
اگر صفحه ناپدید شودیک URL خراب باقی می‌ماندمتن، اسکرین‌شات یا آرشیو کامل باقی می‌ماند
سازمان‌دهیپوشه‌هابرچسب‌ها، فهرست‌های دستی و هوشمند
دسترسیدر مرورگروب، افزونه‌ها، iOS و Android
سرورپروفایل مرورگر یا سرویس ابری آنVPS یا سرور خانگی شما

قابلیت‌های اصلی Karakeep

لینک‌ها، یادداشت‌ها، تصاویر و PDFها

هر مورد می‌تواند یک لینک، یادداشت متنی یا فایل بارگذاری‌شده باشد. OCR متن را از تصاویر و PDFها استخراج می‌کند، بنابراین آن‌ها نیز قابل جست‌وجو می‌شوند. می‌توانید یک یادداشت، نقل‌قول یا فایل اضافی را به هر مورد پیوست کنید.

جست‌وجوی محتوا

Meilisearch متن ذخیره‌شده، یادداشت‌ها و فراداده را نمایه‌سازی می‌کند. لازم نیست عنوان دقیق را به خاطر بسپارید؛ یک عبارت یا موضوع کافی است. وقتی embeddingها تنظیم شده باشند، جست‌وجوی معنایی بر اساس مفهوم نیز در دسترس است.

فهرست‌های هوشمند و مشارکتی

یک مورد می‌تواند هم‌زمان عضو چند فهرست باشد، بدون اینکه کپی شود. یک فهرست می‌تواند خصوصی بماند، از طریق لینک به اشتراک گذاشته شود یا با کاربران دیگر به‌صورت مشترک ویرایش شود.

فهرست هوشمند یک عبارت جست‌وجوی ذخیره‌شده است که خودکار به‌روزرسانی می‌شود. برای نمونه، می‌تواند همه موارد دارای برچسب ai را که در هفته گذشته اضافه شده‌اند نمایش دهد.

آرشیو صفحه

Karakeep به‌صورت پیش‌فرض متن استخراج‌شده و اسکرین‌شات بخش قابل‌مشاهده صفحه را ذخیره می‌کند. می‌توانید جداگانه snapshot کامل صفحه، PDF یا آرشیو HTML مستقل را نیز فعال کنید. این کار کتابخانه را در برابر لینک‌های مرده محافظت می‌کند، اما مصرف دیسک را افزایش می‌دهد.

صفحه‌های پشت احراز هویت، محافظت‌های پیشرفته ضدربات و برنامه‌های تعاملی ممکن است کامل ذخیره نشوند. بهتر است مطالب مهم را جداگانه به‌صورت PDF یا فایل بارگذاری کنید.

برچسب‌گذاری اختیاری با هوش مصنوعی

Karakeep می‌تواند از طریق API سازگار با OpenAI خارجی یا مدل محلی Ollama برچسب و خلاصه کوتاه تولید کند. بدون هوش مصنوعی، برنامه همچنان یک مدیر نشانک کاملاً کاربردی است.

مدل محلی مطالب را به ارائه‌دهنده خارجی ارسال نمی‌کند، اما به RAM بسیار بیشتری نیاز دارد. به همین دلیل Ollama اغلب جدا از نمونه اصلی Karakeep میزبانی می‌شود.

نیازمندی‌های سرور Karakeep

مستندات رسمی حداقل ثابتی برای CPU و RAM مشخص نمی‌کند. یک نصب کامل شامل سه کانتینر است:

  • Karakeep پایگاه‌داده را ذخیره می‌کند و رابط کاربری را ارائه می‌دهد؛
  • Chrome بدون رابط گرافیکی صفحه‌ها را باز می‌کند، JavaScript را اجرا می‌کند و اسکرین‌شات می‌گیرد؛
  • Meilisearch کتابخانه را نمایه‌سازی می‌کند.

پیکربندی عملی برای یک کاربر بدون LLM محلی:

  • 2 vCPU؛
  • 2 GB RAM؛
  • 20–30 GB SSD یا NVMe؛
  • Ubuntu 24.04 LTS؛
  • یک IP عمومی و دامنه.

برای چند کاربر، وارد کردن آرشیو بزرگ، فیدهای RSS متعدد و PDFها، 4 GB RAM راحت‌تر است. نیاز دیسک به حالت آرشیو بستگی دارد: متن فضای کمی مصرف می‌کند، اما اسکرین‌شات کامل، PDF و ویدیو می‌توانند کتابخانه را سریع بزرگ کنند.

نحوه نصب Karakeep روی VPS

این مثال از Ubuntu 24.04 و زیردامنه keep.example.com استفاده می‌کند.

۱. تنظیم DNS و فایروال

یک رکورد DNS نوع A بسازید که به آدرس IP سرور اشاره کند، سپس از طریق SSH متصل شوید:

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

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

جلسه SSH فعلی را نبندید تا مطمئن شوید اتصال جدید کار می‌کند.

۲. نصب 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

۳. دانلود پیکربندی 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

دو secret متفاوت بسازید:

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

فایل /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

فایل .env را منتشر نکنید: secret اول توکن‌های احراز هویت را امضا می‌کند و secret دوم از Meilisearch محافظت می‌کند.

۴. بستن پورت داخلی

در docker-compose.yml مقدار زیر را:

ports:
  - 3000:3000

با این مقدار جایگزین کنید:

ports:
  - 127.0.0.1:3000:3000

این کار مانع دسترسی مستقیم اینترنت به پورت 3000 می‌شود.

۵. اجرای کانتینرها

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

سرویس‌های web، chrome و meilisearch باید در حال اجرا باشند. لاگ‌ها را با دستور زیر ببینید:

docker compose logs --tail=200

۶. فعال‌سازی 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

اگر DNS تنظیم شده باشد و پورت‌های 80 و 443 باز باشند، Caddy به‌صورت خودکار گواهی TLS می‌گیرد. سپس https://keep.example.com را باز کنید.

۷. ساخت مدیر و بستن ثبت‌نام

اولین کاربری که ثبت‌نام می‌کند، به‌صورت خودکار مدیر می‌شود. پس از ساخت حساب، مقدار زیر را در .env قرار دهید:

DISABLE_SIGNUPS=true

تغییر را اعمال کنید:

cd /opt/karakeep
docker compose up -d

مدیر همچنان می‌تواند حساب‌های دیگر را به‌صورت دستی بسازد.

وارد کردن داده‌ها، افزونه‌ها و برنامه‌های موبایل

Karakeep افزونه‌هایی برای Chrome، Firefox و Safari و همچنین برنامه‌هایی برای iOS و Android ارائه می‌دهد. در تلفن می‌توان لینک را از طریق منوی Share سیستم به آرشیو فرستاد.

نشانک‌های موجود را می‌توان از فایل استاندارد HTML مرورگر، Pocket، Omnivore و سرویس‌های پشتیبانی‌شده دیگر وارد کرد. بهتر است آرشیو بزرگ را مرحله‌ای اضافه کنید: سرور باید صفحه‌ها را باز کند، متن را استخراج کند، اسکرین‌شات بسازد و نمایه جست‌وجو را ایجاد کند.

فعال‌سازی هوش مصنوعی و آرشیو کامل صفحه

برای OpenAI، موارد زیر را به .env اضافه کنید:

OPENAI_API_KEY=YOUR_API_KEY

یک سرویس سازگار دیگر با OpenAI ممکن است به OPENAI_BASE_URL نیز نیاز داشته باشد. برای مدل محلی، از OLLAMA_BASE_URL با نشانی قابل‌دسترسی از کانتینر استفاده کنید.

کپی محلی کامل یک صفحه را جداگانه فعال کنید:

CRAWLER_FULL_PAGE_ARCHIVE=true

گزینه‌های CRAWLER_FULL_PAGE_SCREENSHOT=true و CRAWLER_STORE_PDF=true نیز موجود هستند. همه حالت‌ها را مگر در صورت نیاز فعال نکنید، چون مصرف دیسک را به‌طور محسوسی افزایش می‌دهند. پس از تغییر .env، docker compose up -d را اجرا کنید.

امنیت، به‌روزرسانی و پشتیبان‌گیری

کراولر Karakeep نشانی‌هایی را که کاربر ذخیره کرده از شبکه سرور شما باز می‌کند. بنابراین ثبت‌نام را باز نگذارید و فقط به افراد مورد اعتماد دسترسی بدهید. محافظت پایه SSRF وجود دارد، اما برای یک سرویس عمومی پروژه رسمی جداسازی مرورگر یا مسیریابی آن از طریق یک proxy محدودشده را توصیه می‌کند.

همچنین از HTTPS و گذرواژه‌های قوی استفاده کنید، پورت 3000 را باز نگذارید و کانتینرها را مرتب به‌روز کنید:

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

پایگاه‌داده اصلی و مطالب ذخیره‌شده در volume داکر با نام data قرار دارند. پیش از کپی کردن آن، کانتینرها را متوقف کنید:

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 فرض می‌کند دایرکتوری پروژه /opt/karakeep است؛ می‌توانید آن را با docker volume ls بررسی کنید. نمایه Meilisearch قابل بازسازی است، اما برای کتابخانه بزرگ، پشتیبان‌گیری از volume karakeep_meilisearch نیز مفید است.

آرشیو موجود در /var/backups/karakeep را به سرور دیگر، NAS یا object storage ارسال کنید. نسخه‌ای که روی همان VPS نگه داشته شود، در برابر خرابی دیسک یا حذف ماشین مجازی محافظت نمی‌کند.

انتخاب VPS برای Karakeep

برای یک کتابخانه شخصی بدون Ollama، VPS لینوکس با 2 vCPU، 2 GB RAM و 20–30 GB NVMe مناسب است. برای وارد کردن آرشیو بزرگ، چند کاربر و آرشیو کامل، 4 GB RAM و دیسک بزرگ‌تری انتخاب کنید.

Karakeep را می‌توان روی VPS tropic.host اجرا کرد: IP دائمی تنظیم دامنه را ساده می‌کند و فضای NVMe برای SQLite، نمایه جست‌وجو و فایل‌های کوچک فراوان مفید است. با رشد آرشیو می‌توانید منابع را افزایش دهید.

منابع Ollama محلی را جداگانه برنامه‌ریزی کنید: حتی یک مدل زبانی کوچک ممکن است به حافظه بیشتری از کل پشته اصلی Karakeep نیاز داشته باشد.

جمع‌بندی

Karakeep لینک‌های پراکنده را به یک کتابخانه شخصی و قابل جست‌وجو تبدیل می‌کند. صفحه‌ها، یادداشت‌ها، تصاویر و PDFها را ذخیره می‌کند و از OCR، فهرست‌ها، افزونه‌ها، برنامه‌های موبایل و برچسب‌گذاری اختیاری با هوش مصنوعی پشتیبانی می‌کند.

برای شروع یک VPS کوچک، Docker Compose، دامنه و HTTPS کافی است. پس از نصب، ثبت‌نام را ببندید، مصرف دیسک را پایش کنید و یک پشتیبان خارجی نگه دارید.

FAQ

آیا Karakeep رایگان است؟

نسخه self-hosted متن‌باز است و اشتراک اجباری ندارد. هزینه VPS، دامنه، فضای پشتیبان و در صورت نیاز API خارجی هوش مصنوعی را پرداخت می‌کنید.

آیا Karakeep برای کار کردن به کلید API نیاز دارد؟

خیر. ذخیره و نمایه‌سازی مطالب، فهرست‌ها، یادداشت‌ها، OCR و جست‌وجوی تمام‌متن بدون هوش مصنوعی کار می‌کنند. برای برچسب‌ها، خلاصه‌ها و قابلیت‌های مرتبط خودکار به مدل نیاز است.

Karakeep به چه مقدار RAM نیاز دارد؟

برای یک کاربر بدون Ollama، 2 GB RAM نقطه شروع عملی است. برای وارد کردن آرشیو بزرگ، چند کاربر و پردازش فعال، 4 GB راحت‌تر است.

آیا می‌توانم نشانک‌ها را از مرورگر یا Pocket وارد کنم؟

بله. Karakeep از فایل HTML استاندارد نشانک مرورگر، Pocket، Omnivore و چند قالب دیگر پشتیبانی می‌کند. پس از وارد کردن، Karakeep صفحه‌ها را پردازش کرده و به جست‌وجو اضافه می‌کند.

اگر وب‌سایت اصلی ناپدید شود، مقاله همچنان در دسترس می‌ماند؟

Karakeep متن استخراج‌شده و اسکرین‌شات و در صورت فعال بودن آرشیو کامل، یک نسخه محلی یا PDF را ذخیره می‌کند. صفحه‌های پشت احراز هویت و برنامه‌های وب پیچیده ممکن است فقط به‌صورت ناقص ذخیره شوند.