Server インストール(セルフホスト)

docker compose で Paprika を自分の環境に立ち上げる最短手順 — Hub + Worker + Redis 一式を起動、最初のジョブを投げ、結果を取得。動作確認まで 5 分。

Paprika の サーバー側(Hub + Worker + Redis 一式)を自分の環境に立ち上げる手順です。docker compose up で一式を起動し、最初のジョブを投げて結果を取るまで 5 分で動作確認できます。

クライアント側(SDK)から接続するだけなら Client インストール へ。概念は アーキテクチャ概要、API は HTTP API を参照。

必要なもの

対応 OS: Linux / macOS。GitHub Pages 配信のこのドキュメントでは Windows 手順は扱いません。

1. リポジトリを取得

git clone https://github.com/paps-jp/paprika.git
cd paprika

2. 設定ファイルを作る

cp .env.example .env

最初は そのままで動きます(同一ホストで Hub と Worker を立てる構成のため)。別ホストにワーカーを足すときだけ、後で .env を編集します(ワーカーを別ホストに追加)。

3. 起動

docker compose up -d --build

立ち上がるサービス:

サービス 役割 ポート
redis 揮発状態の共有(複数 Hub 構成の基盤) 6379
hub API ・ 管理画面 ・ Worker 制御 8000
worker ブラウザ Lane × N(既定 2) (内部)
agent ジョブログ等のサイドカー (内部)

既定で Lane = 2(= 同時実行 2 ジョブ)。後で .envLANE_POOL / MAX_CONCURRENT を増やせます。

4. 動いているか確認

curl http://localhost:8000/health

status: ok と接続中のワーカー数が返れば成功です。管理画面は次の URL でも開けます。

http://localhost:8000/

Paprika 管理画面の Submit タブ

起動直後の管理画面(実行タブ)。URL を入れて押すだけでジョブを投入できます。

5. 最初のジョブを投げる

curl -X POST http://localhost:8000/jobs \
  -H 'Content-Type: application/json' \
  -d '{"url":"https://example.com","options":{"mode":"fetch","capture_assets":true}}'

返ってきた job_id を控えます。

完了を待ちます:

JID=<job_id>
while :; do
  s=$(curl -s "http://localhost:8000/jobs/$JID" | python -c 'import sys,json;print(json.load(sys.stdin)["status"])')
  echo "$s"; case "$s" in completed|failed|cancelled) break;; esac; sleep 2
done

取れたものを見ます:

curl -s "http://localhost:8000/jobs/$JID/assets.json"

API の詳しい使い方は HTTP API を、SDK は Client インストール を参照。

6. SDK から叩く(任意)

pip install paprika-client
export PAPRIKA_HUB=http://localhost:8000
import asyncio
from paprika_client import paprika

async def main():
    async with paprika() as cli:
        result = await cli.fetch("https://example.com")
        print(result.assets)

asyncio.run(main())

ワーカーを別ホストに追加

同じ Hub に 別マシンのワーカー をぶら下げてスケールできます。ワーカー側ホストで:

git clone https://github.com/paps-jp/paprika.git
cd paprika
cp .env.example .env

.env を編集:

# Hub の場所
HUB_URL=ws://<hub-host>:8000

# このワーカーの LAN IP / DNS。noVNC ライブ画面のリンク生成に使う
NOVNC_PUBLIC_HOST=<this-host-lan-ip>

起動:

docker compose -f docker-compose-worker.yml up -d --build

Hub の管理画面で ワーカー一覧に出てくれば成功です。

よく使う操作

# ログを見る
docker compose logs hub --tail 50
docker compose logs worker --tail 50

# 設定変更を反映
docker compose restart hub

# 一旦止める / 再開
docker compose down
docker compose up -d

ワーカー側コードを変えたとき: 普段は ハブを再起動するだけで OK。ワーカーは次のハンドシェイクで自動更新します(ワーカー自動デプロイ)。

うまく動かないとき

次のステップ