セルフホストな karakeep を日本語に対応させる備忘録

Environment
Photo by hyt.

セルフホストな karakeep を日本語に対応させる備忘録です.

まずは結論から書くと,

コンテナ karakeep-chrome に fonts-noto-cjk と fonts-noto-cjk-extra を追加

することで日本語対応の karakeep を導入できます.

Amazon | Joyberg 文具しおり 本 15個 多色 マグネットブックマーク 栞 おしゃれ ねこ/いぬ/花がら/海 本が好き、学生、教師、読書 ページマーカー | 挟むタイプ はさむ | しおり | 文房具・オフィス用品
オンライン通販のAmazon公式サイトなら、Joyberg 文具しおり 本 15個 多色 マグネットブックマーク 栞 おしゃれ ねこ/いぬ/花がら/海 本が好き、学生、教師、読書 ページマーカー | 挟むタイプ はさむを文房具・オフィス用品...

karakeep ってなに?

karakeep

セルフホストができるブックマーク管理アプリです.昔は Hoarder という名前だったみたいです.元サイトは

GitHub - karakeep-app/karakeep: A self-hostable bookmark-everything app (links, notes and images) with AI-based automatic tagging and full text search
A self-hostable bookmark-everything app (links, notes and images) with AI-based automatic tagging and full text search -...

ですが,セルフホストではなく(無料枠ありですが,ほぼお試しレベルなので,実質的には有料の)クラウドサービス

Karakeep - The Bookmark Everything App | Save, Organize & Tag with AI
Karakeep is the open-source bookmark manager for links, notes, and images. Automatically organize and tag your bookmarks...

での利用も可能です.もちろん私の場合はセルフホスト版を使います.

karakeep と Linkwarden

同様のアプリとして Linkwarden

Linkwarden — Bookmarks, Evolved
Collect, read, annotate, and fully preserve what matters. Open-source, self-hostable bookmark manager with full-page arc...

もありますが,こちら によると違いは,

機能・特徴 karakeep Linkwarden
主な用途 なんでも取り込めるスクラップブック 確実な魚拓と,記事の精読・注釈
UI モダンでレイアウトが豊富 堅実,実用性重視(少し古風)
アーカイブ形式 HTML,画像,動画 (yt-dlp 内蔵) スクリーンショット,PDF,HTML
AI サポート 非常に強力(要約,OCR,ローカルLLM対応) タグ付けなどの基本的なサポート
重複URLの処理 完全に弾く・整理しやすい 警告は出るが保存は可能

らしいです(ただし,今回は AI サポートの設定は行いません.これは後日検討します).

Amazon.co.jp: Docker実践ガイド 第3版 (impress top gear) : 古賀 政純: 本
Amazon.co.jp: Docker実践ガイド 第3版 (impress top gear) : 古賀 政純: 本

導入

日本語への対応

まず,何も考えずにそのまま導入してもメニュー等は切り替えできちんと日本語になります.日本語の対応で問題になるのは,アーカイブやスクリーンショットです.コンテナに何も手を加えず karakeep を導入すると,日本語の文字の部分がいわゆる TOFU(□□□のような四角い記号)になります.

これは,karakeep が,アーカイブやスクリーンショットの取得のため利用しているヘッドレスの chrome コンテナに日本語のフォントが含まれていないためです.したがって,この問題を解決するには,karakeep が利用するヘッドレスの chrome コンテナに日本語フォントを追加してやれば良いことになります.実際の手順は以下の通りです.

docker-compose.yml の準備

まず,docker-compose.yml を準備します.このファイルを置くフォルダを適当な名前で準備し,以下の内容で docker-compose.yml を保存します.なお,karakeep と関連するコンテナがデータを保存する場所として,

  • /var/lib/containers/volumes/karakeep/data
  • /var/lib/containers/volumes/karakeep/meili_data

を指定していますが,これは,自分の環境に合わせてください.また,私の場合は docker ではなく podman を使うので,以下の設定は podman でもエラーが出ないよう少し標準のものから書き換えています.

services:
  web:
    image: ghcr.io/karakeep-app/karakeep:${KARAKEEP_VERSION:-release}
    container_name: karakeep
    restart: always
    networks:
      karakeep:
        ipv4_address: 10.89.1.100
    volumes:
      # By default, the data is stored in a docker volume called "data".
      # If you want to mount a custom directory, change the volume mapping to:
      # - /path/to/your/directory:/data
      - /var/lib/containers/volumes/karakeep/data:/data
    env_file:
      - .env
    environment:
      MEILI_ADDR: http://meilisearch:7700
      BROWSER_WEB_URL: http://chrome:9222
      # OPENAI_API_KEY: ...

      # You almost never want to change the value of the DATA_DIR variable.
      # If you want to mount a custom directory, change the volume mapping above instead.
      DATA_DIR: /data # DON'T CHANGE THIS
  chrome:
    image: ghcr.io/karakeep-app/karakeep-chrome:release
    build:
      context: .
      dockerfile: Dockerfile.chrome
    container_name: karakeep-chrome
    restart: always
    networks:
      - karakeep
    ports:
      - 3000:3000
    init: true
    command:
      - --disable-gpu
      - --disable-dev-shm-usage
      - --ignore-certificate-errors
      - --hide-scrollbars
      - --disable-blink-features=AutomationControlled

  meilisearch:
    image: getmeili/meilisearch:v1.41.0
    container_name: meilisearch_for_karakeep
    restart: always
    networks:
      - karakeep
    env_file:
      - .env
    environment:
      MEILI_NO_ANALYTICS: "true"
    volumes:
      - /var/lib/containers/volumes/karakeep/meili_data:/meili_data

networks:
  karakeep:
    name: karakeep
    ipam:
      driver: default
      config:
        - subnet: 10.89.1.0/24
          gateway: 10.89.1.1

volume フォルダの追加

以下の通り,karakeep と関係するコンテナがデータを保存するフォルダを準備しておきます.

$ sudo mkdir /var/lib/containers/volumes/karakeep
$ sudo mkdir /var/lib/containers/volumes/karakeep/data
$ sudo mkdir /var/lib/containers/volumes/karakeep/meili_data

Dockerfile.chrome の準備

docker-compose.yml と同じフォルダに Dockerfile.chrome ファイルを以下の内容で準備します.

FROM ghcr.io/karakeep-app/karakeep-chrome:release

USER root

RUN apt-get update && \
    apt-get install -y --no-install-recommends fonts-noto-cjk fonts-noto-cjk-extra && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

.env の準備

docker-compose.yml と同じフォルダに .env ファイルを以下の内容で準備します.

KARAKEEP_VERSION=release
NEXTAUTH_SECRET=xxxxxxxxxxxxxxxxxxx # 適当なパスフレーズ
MEILI_MASTER_KEY=yyyyyyyyyyyyyyyyyyy # 適当なパスフレーズ
NEXTAUTH_URL=http://192.168.0.100:3000 # karakeep コンテナを起動したサーバーの IP Address

コンテナの起動

karakeep のコンテナを起動します.docker を使う場合は podman-compose を docker compose に置き換えてください.

$ sudo podman-compose up -d --build

karakeep の初期設定

あとは,http://192.168.0.100:3000 (karakeep をコンテナを動作させているサーバーの IP アドレス)にアクセスすれば以下のようなログイン画面になるはずなので,下にある「Don’t have an account? Sign up」をクリックしてアカウントを作成すれば使えるようになるはずです.

Photo by hyt.

これまで,個人的なブックマークの管理に flame

GitHub - pawelmalak/flame: Flame is self-hosted startpage for your server. Easily manage your apps and bookmarks with built-in editors.
Flame is self-hosted startpage for your server. Easily manage your apps and bookmarks with built-in editors. - pawelmala...

を使ってきたんですが,bookmark の追加手順がちょっと複雑で使いやすいとは言い難かったので,しばらく karakeep を使ってみたいと思います.

以上!

Amazon | 文字のしおり ちょっとしたプレゼントにも 栞 ブックマーク 読書 本 かわいい 面白い (真田紐「ここまで読んだ。」) | しおり | 文房具・オフィス用品
オンライン通販のAmazon公式サイトなら、文字のしおり ちょっとしたプレゼントにも 栞 ブックマーク 読書 本 かわいい 面白い (真田紐「ここまで読んだ。」)を文房具・オフィス用品ストアで、いつでもお安く。当日お急ぎ便対象商品は、 当日...
Environment
スポンサーリンク
Following hyt!
タイトルとURLをコピーしました