> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Mendeley 連携

> Kubernetes デプロイで、ユーザーが Mendeley ライブラリから .bib ファイルをインポートできるようにします。

Mendeley インポートは、すべての Ayakaleaf Pro Pod の **web** サービス（`tpr-webmodule` モジュール）で動作します。[Mendeley 連携](https://ayakaleaf-pro.mintlify.site/ja/on-premises/configuration/overleaf-toolkit/integrations/mendeley-integration.md)の手順に従い、リダイレクト URL を `${OVERLEAF_SITE_URL}/user/mendeley/oauth/callback` として Mendeley アプリケーションを登録してから、以下のように Kubernetes を設定します。

| | |
| - | - |
| サービス | web、すべての Ayakaleaf Pro Pod 内。web の起動時に読み込まれる |
| Pod → Mendeley | `https://api.mendeley.com`（OAuth トークンと API）。ユーザーが Mendeley を連携したとき、またはファイルをインポート・更新したとき |
| ブラウザー → Mendeley | `https://api.mendeley.com/oauth/authorize`。その後リダイレクト URL に戻る |
| Mendeley → Overleaf | なし: インスタンスにインターネットからアクセスできる必要はない |
| 保存されるデータ | ユーザーの Mendeley トークン（暗号化済み、MongoDB 内） |
| 定期ジョブ | なし: ファイルはユーザーが要求したときにのみ更新される |

### 設定

**1. ConfigMap**

```yaml title="30-config.yaml (changes)" theme={null}
  ENABLED_LINKED_FILE_TYPES: project_file,project_output_file,url,mendeley
  MENDELEY_CLIENT_ID: "<application ID>"
  # optional: send the module's requests to Mendeley through an HTTP proxy
  # MENDELEY_PROXY_URL: http://proxy.example.com:3128
```

アプリケーション ID は引用符で囲んでください。ID は数値ですが、ConfigMap は文字列しか保持できません。`ENABLED_LINKED_FILE_TYPES` はインストール時の値を置き換えます。既存のタイプを残したまま `mendeley`（両方を使う場合は `zotero` も）を追加してください。

**2. Secret**

```bash theme={null}
kubectl -n overleaf patch secret overleaf-secrets --type merge -p '{"stringData":{
  "MENDELEY_CLIENT_SECRET":"<secret>",
  "MENDELEY_CIPHER_PASSWORD":"'"$(openssl rand -hex 32)"'"}}'
```

`MENDELEY_CIPHER_PASSWORD` は、MongoDB 内のユーザーの Mendeley トークンを暗号化します。これがない場合、各 Pod はそれぞれの `/var/lib/overleaf/data` に鍵ファイルを生成します。そのため[複数のレプリカ](https://ayakaleaf-pro.mintlify.site/ja/on-premises/configuration/kubernetes/horizontal-scaling.md)では各ノードが異なる鍵を持つことになり、別のレプリカで処理されたユーザーは連携済みの Mendeley アカウントを使用できません。最初のユーザーが Mendeley を連携する前に設定してください。後から変更すると、すべてのユーザーが Mendeley を再度連携する必要があります。

**3. 適用と再起動**

```bash theme={null}
kubectl apply -f 30-config.yaml
kubectl -n overleaf rollout restart deployment/overleaf     # or statefulset/overleaf
```

### 複数のレプリカ

上記のとおり、Secret に `MENDELEY_CIPHER_PASSWORD` を設定してください。Mendeley トークンは Zotero キーと同じコードで暗号化されます。パスワードがない場合、[Zotero](https://ayakaleaf-pro.mintlify.site/ja/on-premises/configuration/kubernetes/integrations/zotero-integration.md#several-replicas) で確認したように、あるレプリカでインポートしたファイルを別のレプリカで更新することはできません。OAuth の `state` は Redis 内のセッションに保持されるため、コールバックはどのレプリカに届いても構いません。

### Kubernetes でのテスト

api.mendeley.com のモック（`overleaf-certs` の `NODE_EXTRA_CA_CERTS` を通じて信頼）に対して、Kubernetes 1.37 上で HAProxy の背後に 3 つのレプリカを置いた状態で、Mendeley のエンドツーエンドテスト（18 ケース）に合格しています。対象は、OAuth 2.0 による連携と連携解除、ライブラリとグループの `.bib` ファイルへのインポート、その更新、期限切れ間近のアクセストークンの更新、失効したトークン、再連携の要求、共同編集者による参考文献の検索、インポートしたユーザーのみが更新できること、API エラー、Mendeley への低速な接続です。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.