VPS 上の Karakeep:検索と AI に対応した自分専用のブックマークアーカイブ

読了時間 7分
Tropic
VPS 上の Karakeep:検索と AI に対応した自分専用のブックマークアーカイブ

Karakeep:VPS に個人用ブックマークアーカイブをインストールする方法

リンクを保存するのは簡単です。しかし半年後に見つけ直すのは難しくなります。特に、ページの内容が変わったり、削除されたり、何百件ものブックマークに埋もれたりした場合はなおさらです。

Karakeep は URL だけでなく、ページ本文、プレビュー、メモ、画像、PDF も保存します。アーカイブは本文から検索でき、リストに整理し、AI で自動的にタグ付けすることもできます。自分の VPS 上で動作し、言語モデルの接続は必須ではありません。

以下では、Karakeep の機能、サーバー要件、Ubuntu 24.04 上で Docker Compose を使ってインストールし、HTTPS とバックアップを設定する手順を説明します。

7 ステップで Karakeep を導入する

  1. Linux VPS を作成し、keep.example.com などのサブドメインを向けます。
  2. Docker Engine と Docker Compose をインストールします。
  3. 公式の docker-compose.yml をダウンロードします。
  4. シークレットを生成し、Karakeep、Chrome、Meilisearch を起動します。
  5. 内部ポート 3000 を閉じ、Caddy 経由で HTTPS を有効にします。
  6. 最初のアカウントを作成し、その後に公開登録を無効にします。
  7. ブラウザー拡張機能またはモバイルアプリをインストールし、ブックマークをインポートします。

起動に AI 用のキーは必要ありません。キーがなくても、ページの保存、リスト、メモ、OCR、全文検索は利用できます。自動タグと要約だけが生成されません。

Karakeep とは

Karakeep は、リンク、テキストメモ、画像、PDF を一つのライブラリに保存できる、オープンソースのセルフホスト型アプリケーションです。以前は Hoarder という名称でした。

名前はアラビア語の karakeeb に由来します。これは、散らかって見えても隠れた価値を持つことがある雑多な物を指す言葉です。役立つ情報は多いのに、必要なものを見つけにくい通常のブックマーク集をよく表しています。

リンクを追加すると、Karakeep はタイトルと説明を取得し、読みやすい本文を抽出し、プレビューを作成し、必要に応じてページのローカルコピーを保存します。

機能ブラウザーのブックマークKarakeep
保存される内容URL とタイトル本文、プレビュー、メモ、添付ファイル
検索タイトルとアドレス内容、タグ、メモ
ページが消えた場合開けない URL が残る本文、スクリーンショット、または完全なアーカイブが残る
整理方法フォルダータグ、手動リスト、スマートリスト
アクセスブラウザー内Web、拡張機能、iOS、Android
サーバーブラウザープロファイルまたはそのクラウド自分の VPS またはホームサーバー

Karakeep の主な機能

リンク、メモ、画像、PDF

各項目は、リンク、テキストメモ、アップロードしたファイルのいずれかとして保存できます。OCR が画像と PDF から文字を抽出するため、これらも検索対象になります。資料にはメモ、引用、追加ファイルを添付できます。

内容から検索

Meilisearch は、保存した本文、メモ、メタデータをインデックス化します。正確なタイトルを覚えていなくても、語句やテーマだけで探せます。埋め込みを設定すると、意味に基づくセマンティック検索も利用できます。

スマートリストと共同リスト

一つの項目を重複させることなく、複数のリストに同時に追加できます。リストは非公開のまま使うことも、リンクで共有することも、ほかのユーザーと共同編集することもできます。

スマートリストは、保存された検索条件を自動更新する仕組みです。たとえば、過去 1 週間に追加された ai タグ付きの資料をすべて表示できます。

ページのアーカイブ

Karakeep は初期設定で、抽出した本文とページの表示領域のスクリーンショットを保存します。さらに、ページ全体のスナップショット、PDF、自己完結型 HTML アーカイブも有効にできます。これによりリンク切れからライブラリを守れますが、ディスク使用量は増えます。

ログインが必要なページ、高度なボット対策を導入したページ、インタラクティブなアプリケーションは、完全に保存できない場合があります。重要な資料は、PDF またはファイルとして別途アップロードしておく方が安全です。

任意の AI タグ付け

Karakeep は、外部の OpenAI 互換 API またはローカルの Ollama モデルを使って、タグと短い要約を生成できます。AI を使わなくても、完全なブックマークマネージャーとして動作します。

ローカルモデルは資料を外部プロバイダーへ送信しませんが、かなり多くの RAM を必要とします。そのため、Ollama は Karakeep 本体とは別に配置されることがよくあります。

Karakeep のサーバー要件

公式ドキュメントでは、CPU と RAM の固定された最低要件は示されていません。完全な構成には、次の 3 つのコンテナが含まれます。

  • Karakeep はデータベースを保存し、インターフェースを提供します。
  • ヘッドレス Chrome はページを開き、JavaScript を実行し、スクリーンショットを撮影します。
  • Meilisearch はライブラリをインデックス化します。

ローカル LLM を使わない 1 ユーザー向けの実用的な構成は次のとおりです。

  • 2 vCPU。
  • 2 GB RAM。
  • 20~30 GB の SSD または NVMe。
  • Ubuntu 24.04 LTS。
  • パブリック IP とドメイン。

複数ユーザー、大量インポート、多数の RSS フィード、PDF を扱う場合は、4 GB RAM の方が快適です。必要なディスク容量はアーカイブ方式によって変わります。本文だけなら容量は小さい一方、完全なスクリーンショット、PDF、動画はライブラリを急速に大きくします。

VPS に Karakeep をインストールする方法

この例では Ubuntu 24.04 とサブドメイン keep.example.com を使用します。

1. DNS とファイアウォールを設定する

サーバーの IP アドレスを指す DNS の A レコードを作成し、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 セッションを閉じないでください。

2. 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. 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

異なる 2 つのシークレットを生成します。

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

/opt/karakeep/.env を作成します。

KARAKEEP_VERSION=release
NEXTAUTH_SECRET=最初のシークレットを入力
MEILI_MASTER_KEY=二つ目のシークレットを入力
NEXTAUTH_URL=https://keep.example.com
DISABLE_SIGNUPS=false
DB_WAL_MODE=true
RATE_LIMITING_ENABLED=true

.env は公開しないでください。最初のシークレットは認証トークンの署名に使われ、二つ目は Meilisearch を保護します。

4. 内部ポートを閉じる

docker-compose.yml 内の次の部分を、

ports:
  - 3000:3000

次の内容に置き換えます。

ports:
  - 127.0.0.1:3000:3000

これにより、ポート 3000 へインターネットから直接アクセスできなくなります。

5. コンテナを起動する

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

webchromemeilisearch の各サービスが稼働している必要があります。ログは次のコマンドで確認できます。

docker compose logs --tail=200

6. 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 を開きます。

7. 管理者を作成して登録を閉じる

最初に登録したユーザーは自動的に管理者になります。アカウント作成後、.env に次の値を設定します。

DISABLE_SIGNUPS=true

変更を適用します。

cd /opt/karakeep
docker compose up -d

管理者は、その後もほかのアカウントを手動で作成できます。

インポート、拡張機能、モバイルアプリ

Karakeep には Chrome、Firefox、Safari 向け拡張機能と、iOS・Android 向けアプリがあります。スマートフォンでは、システムの「共有」メニューからリンクをアーカイブへ送信できます。

既存のブックマークは、ブラウザー標準の HTML ファイル、Pocket、Omnivore、そのほかの対応サービスからインポートできます。大規模なアーカイブは分割して追加する方が安全です。サーバーはページを開き、本文を抽出し、スクリーンショットを作成し、検索インデックスを構築する必要があります。

AI と完全アーカイブを有効にする方法

OpenAI を使用する場合、.env に次を追加します。

OPENAI_API_KEY=あなたの_API_キー

ほかの OpenAI 互換サービスでは、追加で OPENAI_BASE_URL が必要な場合があります。ローカルモデルには、コンテナからアクセスできるアドレスを OLLAMA_BASE_URL に指定します。

ページの完全なローカルコピーは個別に有効にします。

CRAWLER_FULL_PAGE_ARCHIVE=true

CRAWLER_FULL_PAGE_SCREENSHOT=trueCRAWLER_STORE_PDF=true も利用できます。必要がない限り、すべての方式を同時に有効にしないでください。ディスク使用量が大きく増えます。.env を変更したら、docker compose up -d を実行します。

セキュリティ、更新、バックアップ

Karakeep のクローラーは、ユーザーが保存したアドレスをサーバー側のネットワークから開きます。そのため、公開登録を有効なままにせず、信頼できる人だけにアクセスを許可してください。基本的な SSRF 対策はありますが、公開サービスの場合、公式プロジェクトはブラウザーを隔離するか、制限付きプロキシ経由で通信させることを推奨しています。

HTTPS と強力なパスワードを使用し、ポート 3000 を公開せず、コンテナを定期的に更新してください。

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

主要データベースと保存した資料は、data という Docker ボリュームにあります。コピーする前にコンテナを停止します。

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 の検索インデックスは再構築できますが、大規模なライブラリでは karakeep_meilisearch ボリュームもバックアップすると便利です。

/var/backups/karakeep のアーカイブは、別のサーバー、NAS、またはオブジェクトストレージへ転送してください。同じ VPS 内のコピーでは、ディスク障害や仮想マシンの削除から保護できません。

Karakeep に適した VPS の選び方

Ollama を使わない個人用ライブラリなら、2 vCPU、2 GB RAM、20~30 GB NVMe の Linux VPS で十分です。大量インポート、複数ユーザー、完全アーカイブを利用する場合は、4 GB RAM とより大きなディスクを選びます。

Karakeep は tropic.host の VPS で運用できます。固定 IP はドメイン設定を簡単にし、NVMe は SQLite、検索インデックス、多数の小さなファイルに役立ちます。アーカイブの成長に合わせてリソースを増やせます。

ローカル Ollama のリソースは別に見積もってください。小規模な言語モデルでも、Karakeep の主要スタック全体より多くのメモリを必要とする場合があります。

まとめ

Karakeep は、散在するリンクを自分専用の検索可能なライブラリへ変えます。ページ、メモ、画像、PDF を保存し、OCR、リスト、拡張機能、モバイルアプリ、任意の AI タグ付けに対応しています。

起動に必要なのは、小規模な VPS、Docker Compose、ドメイン、HTTPS です。インストール後は登録を閉じ、ディスク使用量を監視し、外部バックアップを保管してください。

FAQ

Karakeep は無料ですか?

セルフホスト版はオープンソースで、必須のサブスクリプションはありません。VPS、ドメイン、バックアップストレージ、必要に応じて外部 AI API の料金がかかります。

Karakeep の利用に API キーは必要ですか?

いいえ。AI がなくても、資料の保存とインデックス化、リスト、メモ、OCR、全文検索は動作します。モデルが必要なのは、自動タグ、要約、および関連機能です。

Karakeep にはどれくらいの RAM が必要ですか?

Ollama を使わない 1 ユーザー向けの実用的な開始点は 2 GB RAM です。大量インポート、複数ユーザー、頻繁な処理には 4 GB の方が快適です。

ブラウザーや Pocket からブックマークをインポートできますか?

はい。ブラウザー標準のブックマーク HTML ファイル、Pocket、Omnivore、そのほか複数の形式に対応しています。インポート後、Karakeep がページを処理し、検索対象へ追加します。

元のサイトが消えた場合も記事は残りますか?

Karakeep は抽出した本文とスクリーンショットを保存し、完全アーカイブを有効にするとローカルコピーまたは PDF も保存します。ログインが必要なページや複雑な Web アプリケーションは、一部しか保存されない場合があります。