Nextcloud と OneDrive の連携設定を行う手順

:::note alert
本記事で紹介している `External Storage: OneDrive` アプリは、2024/9/30 時点で Nextcloud 22 以降のバージョンに対応したものがリリースされておりません。
最新のNextcloudでは、外部ストレージとしてOneDriveを連携することはできませんので、あらかじめご了承ください。
:::

# はじめに
Nextcloud では、システム自身のストレージのほかに、 NFS、 Amazon S3、 SMB/CIFS 等様々な外部ストレージを連携することができます。
普段の業務等で Microsoft 365&reg; にバンドルされている OneDrive をクラウドストレージとして利用している方もいらっしゃるかと思いますが、ここでは、OneDrive を Nextcloud の外部ストレージとして連携する手順を展開します。

# 連携設定手順

## ■Nexcloud 側の設定 (管理者)
※まず、Nextcloud で OneDrive 連携を行うための追加アプリをインストール / 設定します。

1. Nextcloud に管理者権限をもつアカウントでログインし、アプリ画面を開く。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/27129eb8-5e0c-4f71-ca24-fa2c1d18981a.png)

2. 右上の虫メガネアイコンをクリックし、 "`OneDrive`" のキーワードを入力すると `External Storage: OneDrive` アプリが表示されるので、`有効にする`(ダウンロード済みの場合) / `ダウンロードして有効にする`(未ダウンロードの場合) をクリックする。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/4c638eb2-d324-095e-70bd-6a84f43a7ce8.png)

3. Nextcloud 設定画面を開く。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/f28be3a2-19ce-add6-9e9a-ec491ddf149e.png)

4. 「管理」の下にある `外部ストレージ` をクリックする。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/6915dfb1-ea7a-2659-fc27-84db92d7c13a.png)

5. `外部ストレージ` 設定画面にて以下の設定を行う。設定は即時反映される。
    - `ユーザーに外部ストレージの接続を許可する` をチェックする。
    - `OneDrive` をチェックする。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/f620c729-aa4c-e50f-f1f6-2e9c57555b86.png)

## ■OneDrive 側の設定

1. https://portal.azure.com/ にアクセスし、OneDrive に接続する Microsoft アカウントでログインする。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/7fbe9809-8d33-a0e3-9585-d8bb3b48f16e.png)

2. `Azure Active Directory` をクリックする。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/4a84e174-f8e5-d498-d6e5-d3af152ce9b3.png)

3. `アプリの登録` をクリックする。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/eebbbf51-50a2-b794-0852-d72ebcb74f48.png)

4. `新規登録` をクリックする。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/b22fb33b-1f0b-97a4-90ce-dc0a52de54c2.png)

5. 以下の設定を行い、`登録` をクリックする。
    - `名前` は識別できるものを適当に設定する。
    - `任意の組織ディレクトリ内のアカウント (任意の Azure AD ディレクトリ - マルチテナント) と個人の Microsoft アカウント (Skype、Xbox など)` を選択する(デフォルトで選択済み)。
    - `リダイレクトURI` は、`Web` を選択し、 `https://(NextcloudのFQDN)/settings/user/externalstorages` (=Nextcloud の外部ストレージ設定画面のURLと同一です) を入力する。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/d2dfb5d6-4b27-0fd7-75bd-6a2472ebc972.png)

6. `アプリケーション (クライアント) ID` にマウスカーソルをあてると `クリップボードにコピー` がでてくるので、コピーしメモ帳などで保存しておく。
引き続き、 `証明書とシークレット` をクリックする。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/2efa750b-e188-d196-5a5a-4d16331e5c55.png)

7. `新しいクライアントシークレット` をクリックする。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/c8aa27ad-377c-f05f-d55d-191e77aad07d.png)

8. 以下の設定を行い、`追加` をクリックする。
    - `説明` は識別できるものを適当に設定する。
    - `有効期間` は用途に応じて適切に設定する。動作確認程度なら「1 年」でもOK。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/82a556e0-6421-b2d0-be22-32448ce43a76.png)

9. `値` にシークレットキーが表示されるのでアイコンをクリックしてコピーしてメモ帳などで保存しておく。
引き続き `API のアクセス許可` をクリックする。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/fc58cdef-0a8d-d063-3482-bbe4b109f4ba.png)

10. `アクセス許可の追加` をクリックする。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/6456499c-19f1-0056-e97a-82aa4487d419.png)

11. （見えない場合は下にスクロールして） `Microsoft Graph` をクリックする。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/fe61bfaa-c73f-5c7e-62a6-df2dc0898ab3.png)


12. `委任されたアクセス許可` をクリックする。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/807f4f34-9e9e-5328-cfb6-ed4affdc9b1e.png)

13. `アクセス許可を選択する` で以下のアクセス許可を選択する。
    「アクセス許可を選択する」の下の入力欄でキーワード絞り込みができる。
    - `Files.ReadWrite.All`
    - `offline_access`
    - `User.Read` (これはデフォルトで選択済み)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/29b82569-c6a1-04f6-7486-dd2a86c45dd0.png)

14. 選択したら `アクセス許可の追加` をクリックする。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/693c3434-0518-e68e-9f32-0008ecb9bea9.png)

15. ここまできたら、 Azure Active Directory (=OneDrive側) の設定は完了です。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/6ca7f20e-f817-ffd2-3dca-178e522fd9db.png)

## ■Nexcloud 側の設定 (利用者)

1. Nextcloud にログインし、設定画面を開く。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/012d5dbf-fe2b-d94c-45c5-c7df62a40853.png)

2. `外部ストレージ` をクリックする。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/259925b7-fc69-ef7e-1bf1-6b05b187b1ad.png)

3. `外部ストレージ` 設定画面にて以下の設定を行い `アクセスを許可` をクリックする。
    - `フォルダー名` は Nextcloud で表示させるフォルダー名を設定する。
    - `外部ストレージ` は `OneDrive` を選択する。
    - `認証` は `OAuth2` が自動選択される。
    - `設定` では以下を設定する。
        - `クライアントID` に OneDrive 側設定で取得した `アプリケーション (クライアント) ID` を設定する。
        - `クライアント秘密鍵` に OneDrive 側設定で取得した `シークレットキー` を設定する。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/068a194e-8e35-16ff-1c82-7d655e15cdec.png)

4. Microsoft サインイン画面が表示されるので、OneDrive 接続を行っている Microsoft アカウントでサインインする。![fig-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/fa722303-702f-f182-c81b-8980d3c2e642.png)

5. `要求されているアクセス許可` で `承諾` をクリックする。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/d7835be4-ed42-dcda-f9f9-66a182064531.png)

6. Nextcloud 設定画面に戻り、グリーンシグナルになっていれば設定完了です。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316764/9f49a8b1-ebef-0ba6-1dbd-4148a0b35809.png)

7. 通常のファイル表示画面に戻ると、外部ストレージとして OneDrive のフォルダーが表示されているはずです。

# 注意点
* Nextcloud の `External Storage: OneDrive` アプリは、古いバージョンではバグがあり、連携設定が完了しても OneDrive へのアクセスがエラーとなることがあるので、最新版を利用するようにしてください。 

# あとがき
Nextcloud と OneDrive の連携設定は、OneDrive 側の設定が若干面倒ですが、連携設定することで異なるクラウドストレージのアクセスを Nextcloud に統合できますので、試してみてください。

# 謝辞
Nextcloud の OneDrive 連携プラグインを開発いただいている Mario さんに感謝申し上げます。

【参考】[GitHub - hevelius/files_external_onedrive](https://github.com/hevelius/files_external_onedrive)

# 更新履歴
* 2020/1/5: 初版。
* 2020/12/17: Nextcloud 20 上での動作に即した小修正。


**★この記事は、[スタイルズ社のNextcloudサイト](https://nextcloud.stylez.co.jp/) の [Nextcloudブログ](https://nextcloud.stylez.co.jp/nextcloudblog)にも公開しております！**