tpr-webmodule モジュール)で動作します。Zotero 連携の手順に従い、コールバック URL を ${OVERLEAF_SITE_URL}/user/zotero/oauth/callback として Zotero OAuth クライアントを登録してから、以下のように Kubernetes を設定します。
設定
1
ConfigMap
30-config.yaml (changes)
ENABLED_LINKED_FILE_TYPES はインストール時の値を置き換えます。既存のタイプを残したまま zotero(両方を使う場合は mendeley も)を追加してください。2
Secret
ZOTERO_CIPHER_PASSWORD は、MongoDB 内のユーザーの Zotero キーを暗号化します。これがない場合、各 Pod はそれぞれの /var/lib/overleaf/data に鍵ファイルを生成します。そのため複数のレプリカでは各ノードが異なる鍵を持つことになり、別のレプリカで処理されたユーザーは連携済みの Zotero アカウントを使用できません。最初のユーザーが Zotero を連携する前に設定してください。後から変更すると、すべてのユーザーが Zotero を再度連携する必要があります。3
適用と再起動
複数のレプリカ
上記のとおり、Secret にZOTERO_CIPHER_PASSWORD を設定してください。これがない場合、あるレプリカでインポートしたファイルを別のレプリカで更新することはできません。そのレプリカの鍵ファイルではユーザーの Zotero キーを復号できないため、更新は “The remote service produced an error” で失敗します。Secret にパスワードを設定すれば、どのレプリカでも動作します。overleaf-0 でインポートして overleaf-1 で更新する方法で、両方のケースをテストしました。OAuth ハンドシェイクは状態を Redis 内のセッションに保持するため、コールバックはどのレプリカに届いても構いません。
Kubernetes でのテスト
www.zotero.org と api.zotero.org のモック(overleaf-certs の NODE_EXTRA_CA_CERTS を通じて信頼)に対して、Kubernetes 1.37 上で HAProxy の背後に 3 つのレプリカを置いた状態で、Zotero のエンドツーエンドテスト(18 ケース)に合格しています。対象は、OAuth 1.0a による連携と連携解除、ライブラリとグループの .bib ファイルへのインポート、その更新、Zotero 側でのキーの失効、再連携の要求、共同編集者による参考文献の検索、インポートしたユーザーのみが更新できること、API エラー、Zotero への低速な接続です。
