Tropic Host

Karakeep trên VPS: kho dấu trang riêng với tìm kiếm và AI

11 phút đọc
Tropic
Karakeep trên VPS: kho dấu trang riêng với tìm kiếm và AI

Karakeep: cài đặt kho dấu trang cá nhân trên VPS

Lưu một liên kết rất dễ. Tìm lại nó sau sáu tháng mới khó—đặc biệt khi trang đã thay đổi, biến mất hoặc bị lẫn giữa hàng trăm dấu trang khác.

Karakeep không chỉ lưu URL mà còn lưu nội dung trang, bản xem trước, ghi chú, hình ảnh và PDF. Bạn có thể tìm kiếm kho theo văn bản, sắp xếp các mục vào danh sách và tự động gắn thẻ bằng AI. Ứng dụng chạy trên VPS của riêng bạn, còn việc kết nối mô hình ngôn ngữ là tùy chọn.

Dưới đây, chúng ta sẽ tìm hiểu các khả năng của Karakeep, yêu cầu máy chủ và cách cài đặt trên Ubuntu 24.04 với Docker Compose, HTTPS và sao lưu.

Karakeep trong bảy bước

  1. Tạo một VPS Linux và trỏ tên miền phụ như keep.example.com tới đó.
  2. Cài đặt Docker Engine và Docker Compose.
  3. Tải xuống tệp docker-compose.yml chính thức.
  4. Tạo các secret rồi khởi động Karakeep, Chrome và Meilisearch.
  5. Đóng port nội bộ 3000 và bật HTTPS qua Caddy.
  6. Tạo tài khoản đầu tiên, sau đó tắt đăng ký mở.
  7. Cài tiện ích trình duyệt hoặc ứng dụng di động và nhập dấu trang.

Không cần khóa AI để bắt đầu dịch vụ. Không có khóa, việc lưu trang, danh sách, ghi chú, OCR và tìm kiếm toàn văn vẫn hoạt động. Thẻ và bản tóm tắt tự động sẽ không được tạo.

Karakeep là gì?

Karakeep là ứng dụng mã nguồn mở, self-hosted để lưu liên kết, ghi chú văn bản, hình ảnh và PDF trong một thư viện duy nhất. Trước đây dự án có tên là Hoarder.

Tên gọi bắt nguồn từ từ karakeeb trong tiếng Ả Rập, dùng để chỉ những thứ rải rác trông như đồ lộn xộn nhưng có thể ẩn chứa giá trị. Điều này mô tả chính xác một bộ sưu tập dấu trang thông thường: có rất nhiều tài liệu hữu ích, nhưng khó tìm đúng mục cần thiết.

Sau khi bạn thêm liên kết, Karakeep lấy tiêu đề và mô tả, trích xuất văn bản dễ đọc, tạo bản xem trước và có thể lưu bản sao cục bộ của trang khi cần.

Tính năngDấu trang trình duyệtKarakeep
Nội dung được lưuURL và tiêu đềVăn bản, bản xem trước, ghi chú và tệp đính kèm
Tìm kiếmTheo tiêu đề và địa chỉTheo nội dung, thẻ và ghi chú
Nếu trang biến mấtCòn lại một URL hỏngCòn lại văn bản, ảnh chụp màn hình hoặc kho lưu trữ đầy đủ
Tổ chứcThư mụcThẻ, danh sách thủ công và danh sách thông minh
Truy cậpTrong trình duyệtWeb, tiện ích, iOS và Android
Máy chủHồ sơ trình duyệt hoặc dịch vụ đám mâyVPS hoặc máy chủ gia đình của bạn

Các tính năng chính của Karakeep

Liên kết, ghi chú, hình ảnh và PDF

Mỗi mục có thể là liên kết, ghi chú văn bản hoặc tệp tải lên. OCR trích xuất văn bản từ hình ảnh và PDF, vì vậy chúng cũng có thể tìm kiếm được. Bạn có thể đính kèm ghi chú, trích dẫn hoặc tệp bổ sung vào một mục.

Tìm kiếm nội dung

Meilisearch lập chỉ mục văn bản, ghi chú và metadata đã lưu. Bạn không cần nhớ chính xác tiêu đề: chỉ cần một cụm từ hoặc chủ đề là đủ. Khi cấu hình embeddings, tìm kiếm ngữ nghĩa theo ý nghĩa cũng khả dụng.

Danh sách thông minh và cộng tác

Một mục có thể thuộc nhiều danh sách cùng lúc mà không bị trùng lặp. Danh sách có thể để riêng tư, chia sẻ qua liên kết hoặc cùng chỉnh sửa với người dùng khác.

Danh sách thông minh là truy vấn tìm kiếm đã lưu và tự động cập nhật. Ví dụ, nó có thể hiển thị mọi mục được gắn thẻ ai và thêm trong tuần vừa qua.

Lưu trữ trang

Theo mặc định, Karakeep lưu văn bản đã trích xuất và ảnh chụp màn hình phần trang đang hiển thị. Bạn cũng có thể bật ảnh chụp toàn trang, PDF hoặc kho lưu trữ HTML tự chứa. Điều này bảo vệ thư viện khỏi các liên kết chết nhưng làm tăng mức sử dụng đĩa.

Các trang yêu cầu xác thực, có cơ chế chống bot nâng cao và ứng dụng tương tác có thể không được lưu đầy đủ. Những tài liệu quan trọng nên được tải lên riêng dưới dạng PDF hoặc tệp.

Gắn thẻ AI tùy chọn

Karakeep có thể tạo thẻ và bản tóm tắt ngắn thông qua API tương thích với OpenAI bên ngoài hoặc mô hình Ollama cục bộ. Không có AI, ứng dụng vẫn là một trình quản lý dấu trang đầy đủ chức năng.

Mô hình cục bộ không gửi tài liệu tới nhà cung cấp bên ngoài, nhưng cần nhiều RAM hơn đáng kể. Vì vậy, Ollama thường được lưu trữ riêng với instance Karakeep chính.

Yêu cầu máy chủ Karakeep

Tài liệu chính thức không đưa ra mức tối thiểu cố định cho CPU và RAM. Một bản cài đặt đầy đủ gồm ba container:

  • Karakeep lưu cơ sở dữ liệu và cung cấp giao diện;
  • Chrome headless mở trang, chạy JavaScript và chụp ảnh màn hình;
  • Meilisearch lập chỉ mục thư viện.

Cấu hình thực tế cho một người dùng không chạy LLM cục bộ là:

  • 2 vCPU;
  • 2 GB RAM;
  • 20–30 GB SSD hoặc NVMe;
  • Ubuntu 24.04 LTS;
  • địa chỉ IP công khai và tên miền.

Với nhiều người dùng, một lần nhập dữ liệu lớn, nhiều nguồn cấp RSS và PDF, 4 GB RAM sẽ thoải mái hơn. Yêu cầu đĩa phụ thuộc vào chế độ lưu trữ: văn bản chiếm ít chỗ, còn ảnh chụp đầy đủ, PDF và video có thể nhanh chóng làm thư viện phình to.

Cách cài đặt Karakeep trên VPS

Ví dụ này sử dụng Ubuntu 24.04 và tên miền phụ keep.example.com.

1. Cấu hình DNS và firewall

Tạo bản ghi DNS A trỏ tới địa chỉ IP của máy chủ, sau đó kết nối qua SSH:

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

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

Không đóng phiên SSH hiện tại cho đến khi xác minh kết nối mới hoạt động.

2. Cài đặt 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. Tải xuống cấu hình 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

Tạo hai secret khác nhau:

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

Tạo /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

Không công khai .env: secret thứ nhất ký các token xác thực, còn secret thứ hai bảo vệ Meilisearch.

4. Đóng port nội bộ

Trong docker-compose.yml, thay thế:

ports:
  - 3000:3000

bằng:

ports:
  - 127.0.0.1:3000:3000

Điều này ngăn port 3000 bị truy cập trực tiếp từ internet.

5. Khởi động các container

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

Các dịch vụ web, chromemeilisearch phải đang chạy. Xem nhật ký bằng:

docker compose logs --tail=200

6. Bật 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

Nếu DNS đã được cấu hình và port 80, 443 đang mở, Caddy sẽ tự động lấy chứng chỉ TLS. Sau đó mở https://keep.example.com.

7. Tạo quản trị viên và đóng đăng ký

Người dùng đăng ký đầu tiên sẽ tự động trở thành quản trị viên. Sau khi tạo tài khoản, đặt giá trị sau trong .env:

DISABLE_SIGNUPS=true

Áp dụng thay đổi:

cd /opt/karakeep
docker compose up -d

Quản trị viên vẫn có thể tạo thủ công các tài khoản khác.

Nhập dữ liệu, tiện ích và ứng dụng di động

Karakeep cung cấp tiện ích cho Chrome, Firefox và Safari, cùng ứng dụng cho iOS và Android. Trên điện thoại, bạn có thể gửi liên kết tới kho lưu trữ bằng menu Chia sẻ của hệ thống.

Dấu trang hiện có có thể được nhập từ tệp HTML chuẩn của trình duyệt, Pocket, Omnivore và các dịch vụ được hỗ trợ khác. Tốt hơn nên thêm kho lớn theo từng đợt: máy chủ phải mở các trang, trích xuất văn bản, tạo ảnh chụp màn hình và xây dựng chỉ mục tìm kiếm.

Cách bật AI và lưu trữ toàn trang

Đối với OpenAI, thêm dòng sau vào .env:

OPENAI_API_KEY=YOUR_API_KEY

Một dịch vụ tương thích OpenAI khác có thể cần thêm OPENAI_BASE_URL. Với mô hình cục bộ, dùng OLLAMA_BASE_URL cùng địa chỉ có thể truy cập từ container.

Bật bản sao cục bộ đầy đủ của trang riêng biệt:

CRAWLER_FULL_PAGE_ARCHIVE=true

Cũng có các tùy chọn CRAWLER_FULL_PAGE_SCREENSHOT=trueCRAWLER_STORE_PDF=true. Không bật mọi chế độ nếu không cần thiết: chúng làm tăng đáng kể mức sử dụng đĩa. Sau khi thay đổi .env, chạy docker compose up -d.

Bảo mật, cập nhật và sao lưu

Crawler Karakeep mở các địa chỉ do người dùng lưu từ mạng của máy chủ. Vì vậy, không để đăng ký mở và chỉ cấp quyền cho những người đáng tin cậy. Có bảo vệ SSRF cơ bản, nhưng với dịch vụ công khai, dự án chính thức khuyến nghị cô lập trình duyệt hoặc định tuyến nó qua một proxy bị hạn chế.

Đồng thời sử dụng HTTPS, mật khẩu mạnh, không công khai port 3000 và thường xuyên cập nhật container:

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

Cơ sở dữ liệu chính và tài liệu đã lưu nằm trong Docker volume có tên data. Dừng container trước khi sao chép volume:

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

Tên karakeep_data giả định thư mục dự án là /opt/karakeep; bạn có thể xác minh bằng docker volume ls. Chỉ mục Meilisearch có thể được xây dựng lại, nhưng với thư viện lớn, sao lưu volume karakeep_meilisearch cũng hữu ích.

Gửi kho lưu trữ từ /var/backups/karakeep tới máy chủ khác, NAS hoặc object storage. Bản sao trên cùng VPS không bảo vệ khỏi lỗi đĩa hoặc việc xóa máy ảo.

Nên chọn VPS nào cho Karakeep?

Đối với thư viện cá nhân không dùng Ollama, VPS Linux với 2 vCPU, 2 GB RAM và 20–30 GB NVMe là phù hợp. Nếu nhập dữ liệu lớn, có nhiều người dùng và lưu trữ toàn trang, hãy chọn 4 GB RAM cùng ổ đĩa lớn hơn.

Karakeep có thể chạy trên VPS của tropic.host: IP cố định giúp đơn giản hóa cấu hình tên miền, còn bộ nhớ NVMe hữu ích cho SQLite, chỉ mục tìm kiếm và nhiều tệp nhỏ. Có thể tăng tài nguyên khi kho lưu trữ phát triển.

Hãy lập kế hoạch riêng cho tài nguyên Ollama cục bộ: ngay cả một mô hình ngôn ngữ nhỏ cũng có thể cần nhiều bộ nhớ hơn toàn bộ stack Karakeep chính.

Kết luận

Karakeep biến các liên kết rải rác thành thư viện cá nhân có thể tìm kiếm. Ứng dụng lưu trang, ghi chú, hình ảnh và PDF, đồng thời hỗ trợ OCR, danh sách, tiện ích, ứng dụng di động và gắn thẻ AI tùy chọn.

Một VPS nhỏ, Docker Compose, tên miền và HTTPS là đủ để bắt đầu. Sau khi cài đặt, hãy đóng đăng ký, theo dõi dung lượng đĩa và duy trì bản sao lưu bên ngoài.

Câu hỏi thường gặp

Karakeep có miễn phí không?

Phiên bản self-hosted là mã nguồn mở và không yêu cầu gói đăng ký bắt buộc. Bạn trả tiền cho VPS, tên miền, bộ nhớ sao lưu và, khi cần, API AI bên ngoài.

Karakeep có cần khóa API để hoạt động không?

Không. Lưu và lập chỉ mục tài liệu, danh sách, ghi chú, OCR và tìm kiếm toàn văn hoạt động mà không cần AI. Cần mô hình cho thẻ tự động, bản tóm tắt và các tính năng liên quan.

Karakeep cần bao nhiêu RAM?

Điểm khởi đầu thực tế cho một người dùng không chạy Ollama là 2 GB RAM. Với các lần nhập dữ liệu lớn, nhiều người dùng và xử lý tích cực, 4 GB sẽ thuận tiện hơn.

Có thể nhập dấu trang từ trình duyệt hoặc Pocket không?

Có. Karakeep hỗ trợ tệp HTML dấu trang chuẩn của trình duyệt, Pocket, Omnivore và một số định dạng khác. Sau khi nhập, Karakeep xử lý các trang và thêm chúng vào tìm kiếm.

Bài viết còn khả dụng nếu trang gốc biến mất không?

Karakeep lưu văn bản đã trích xuất và ảnh chụp màn hình; khi bật lưu trữ đầy đủ, ứng dụng còn lưu bản sao cục bộ hoặc PDF. Các trang yêu cầu xác thực và ứng dụng web phức tạp có thể chỉ được lưu một phần.