ONLYOFFICEとRedmineの連携について

ONLYOFFICEは、[ONLYOFFICE Docs](https://www.onlyoffice.com/download-docs.aspx)とRedmineを統合し、以下のRedmineモジュールに添付されたオフィス文書でコラボレーションするための公式コネクタを提供しています。Issues、Files、Documents、Wiki、NewsのRedmineモジュールに添付されたオフィスドキュメントをコラボレーションすることができます。ONLYOFFICEコネクタは、Redmine MarketplaceまたはONLYOFFICE GitHubページよりダウンロードすることができます。本アプリケーションはApacheライセンスで配布されています。

### 主な機能

* ユーザーのアクセス権に応じたRedmineモジュールからのテキスト文書、スプレッドシート、スライドの表示と編集
* オンラインフォームの作成と入力
* リアルタイムでのドキュメントの共同編集：2つの共同編集モード（高速と厳格）、変更履歴、コメント、内臓チャット
* **JWTのサポート**により、適切な権利を持つユーザー以外がドキュメントにアクセスできないように、トラフィックを保護する

### 対応フォーマット

* 作成・編集用：DOCX, DOCXF, PPTX, XLSX
* フォームへの入力用：OFORM
* 閲覧用：DOC, DOCX, DOCM, DOT, DOTX, DOTM, ODT, FODT, OTT, RTF, TXT, HTML, HTM, MHT, XML, PDF, DJVU, FB2, EPUB, XPS, XLS, XLSX, XLSM, XLT, XLTX, XLTM, ODS, FODS, OTS, CSV, PPS, PPSX, PPSM, PPT, PPTX, PPTM, POT, POTX, POTM, ODP, FODP, OTP

### バージョン1.0.0での新機能

#### 追加された機能

* プラグイン設定ページ
* docx, docxf, xlsx, pptxファイルの共同編集機能
* ドキュメントエディタの外観をカスタマイズする機能
* ドキュメントエディタからファイルのあるページに戻ることができるようになりました。
* ブラウザのタブにONLYOFFICEのファビコンを表示する機能
* モバイルブラウザの検出

全変更履歴は[こちら](https://github.com/ONLYOFFICE/onlyoffice-redmine/blob/master/CHANGELOG.md)でご覧いただけます。

## ONLYOFFICE DocsとRedmineを連携させる

### 動作環境

* ONLYOFFICE Docs バージョン 6.4 以降
Redmineとエンドクライアントの両方から解決可能で接続可能なONLYOFFICE Docsのインスタンスが必要です。また、Redmineに直接POSTできる必要があります。

:::note warn
ONLYOFFICE Docsのインストールについては、[公式ドキュメント](https://helpcenter.onlyoffice.com/installation/docs-index.aspx)のページをご参照ください。
:::

* Redmine v4.0.0。Redmineを初めて使う場合は、[こちらの手順](https://www.redmine.org/projects/redmine/wiki/RedmineInstall)でインストールしてください。
* ONLYOFFICEコネクタv1.0.0 for Redmine

### Redmine 用 ONLYOFFICE コネクタのインストール

１．Redmine用のONLYOFFICE連携プラグインをダウンロードします。いくつかの方法があります。
　　a．Redmineの [Marketplace](https://www.redmine.org/plugins/onlyoffice_redmine) から最新のアーカイブされたバージョンをダウンロード
　　b．ONLYOFFICE [GitHub ページ](https://github.com/ONLYOFFICE/onlyoffice-redmine)から最新のアーカイブ版をダウンロード

```
wget https://github.com/ONLYOFFICE/onlyoffice-redmine/archive/refs/tags/v1.0.0.tar.gz
```

アーカイブを解凍してください。

```
tar -xvzf v1.0.0.tar.gz
```

　　c．masterブランチをクローンします。

```
git clone https://github.com/ONLYOFFICE/onlyoffice-redmine
```

:::note warn
プラグインのサブディレクトリは`onlyoffice_redmine`という名前にする必要があります。クローンした`onlyoffice-redmine`または解凍した`onlyoffice_redmine-x.y.z`フォルダの名前を`onlyoffice_redmine`に変更します。

mv onlyoffice-redmine onlyoffice_redmine
mv onlyoffice-redmine-1.0.0 onlyoffice_redmine

:::

プラグインをインストールする前に、Redmineのインスタンスが停止していることを確認してください。

２．`onlyoffice_redmine`のプラグインディレクトリを`plugins`ディレクトリに配置します。

```
cp -r /root/onlyoffice_redmine/. /redmine/plugins/onlyoffice_redmine
```

:::note warn
プラグインディレクトリへのパスは、Redmineのインストールオプションによって異なる場合があります。`find / -type d -name plugins` コマンドでパスを見つけることができます。
:::

３．Redmineのルートディレクトリに移動します。

```
cd redmine
```

４．依存関係をインストールします。

```
bundle install
```

５．データベースの初期化／更新を行います。

```
RAILS_ENV=production bundle exec rake db:migrate
```

```
RAILS_ENV=production bundle exec rake redmine:plugins:migrate NAME=onlyoffice_redmine
```

６．Redmineインスタンスを再起動します。

### RedmineのためのONLYOFFICEコネクタを設定する

管理パネル -> プラグインに行き、RedmineのためのONLYOFFICE統合プラグインを見つけ、設定をクリックしてください。以下のパラメータを指定します。

* **ドキュメント編集サービスアドレス** - ONLYOFFICE DocsがインストールされているURLアドレスとポートを入力します（例：`https://documentserver:8080`）。このフィールドは必須です。
* **シクレットキー** - データに署名するために使用する秘密を指定します。詳細は、本記事のONLYOFFICEとRedmineの連携におけるJWTの有効化の項をご参照ください。
* 必要に応じて、以下のカスタマイズ設定を確認してください。
  * チャットメニューボタンを表示する。
  * ヘッダーをよりコンパクトに表示する。
  * フィードバックとサポート」メニューボタンを表示する。
  * ヘルプ]メニューボタンを表示する。
  * モノクロのツールバーのヘッダーを表示する。

下部の「適用」ボタンをクリックして、変更を保存します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2655664/ff5dbeb0-904f-e4d8-3113-81afed3d838e.png)

### ONLYOFFICEとRedmineの連携でJWTを有効化する

不正なアクセスからドキュメントを保護するために、ONLYOFFICEエディタはJSON Web Token (JWT)を使用します。このトークンは、ドキュメントエディタが初期化されたとき、および内部のONLYOFFICE Docsサービス間のコマンドの交換の間に、構成に追加されます。秘密鍵は、ONLYOFFICE Docsへのリクエスト時に、JSONウェブトークンに署名し、トークンを検証するために使用されます。

ドキュメントを保護するために、トークン検証を有効にし、ONLYOFFICE Docs設定ファイルで独自の秘密鍵を指定し、コネクタ設定でも同じ秘密鍵を指定する必要があります。

**ステップ１**：ONLYOFFICE Docsを設定する

１．任意の利用可能なテキストエディターで local.json ファイルを開いてください。
* Linuxの場合 - `/etc/onlyoffice/documentserver/local.json`
* Windowsの場合 - `%ProgramFiles%\ONLYOFFICE\DocumentServer\config\local.json`
* Dockerの場合 - `docker exec -it <containerID> bash` コマンドを使用してONLYOFFICE Docsコンテナに入り、`/etc/onlyoffice/documentserver/local.json`を開いてください。

２．3つのセクションで`false`の値を`true`に変更して、トークン検証を有効にします。
* `services.CoAuthoring.token.enable.browser`
* `services.CoAuthoring.token.enable.request.inbox`
* `services.CoAuthoring.token.enable.request.outbox`

３．3つのセクションのsecret valueを独自のテキスト文字列に置き換えて、独自のシークレットキーを指定します。秘密鍵は同一である必要があります。

* `services.CoAuthoring.secret.inbox.string`
* `services.CoAuthoring.secret.outbox.string`
* `services.CoAuthoring.secret.session.string`

```
{
  "services": {
    "CoAuthoring": {
      "token": {
        "enable": {
          "request": {
            "inbox": true,
            "outbox": true
          },
          "browser": true
        }
      },
      "secret": {
        "inbox": {
          "string": "yoursecret"
        },
        "outbox": {
          "string": "yoursecret"
        },
        "session": {
          "string": "yoursecret"
        }
      }
    }
  }
}
```

４．変更内容を保存します。
５．設定変更を有効にするために、サービスを再起動します。

```
supervisorctl restart all
```

**ステップ２**：コネクタの設定で同じシークレットキーを指定する

コネクタの設定で、シークレットキーの欄に同じシークレットを指定し、設定を保存してください。

## Redmine内でONLYOFFICE Docsの利用を始める

:::note warn
ファイルの変更はすべて元のファイルに保存されます。
:::

### パーミッションの変更

各モジュールで利用可能なファイルアクション（表示または編集）は、ユーザーロールの権限に依存することに注意してください。

「**管理**」 -> 「**ロールと権限**」 で、必要なロールをリストから選択し、必要な権限にチェックを入れ、「**保存**」 をクリックします。

詳しくは、Redmineの[公式ドキュメント](https://www.redmine.org/projects/redmine/wiki/RedmineRoles)を参照してください。

### ファイルの表示と編集

#### 課題モジュール

課題に添付されたファイルや課題のコメントを対応するエディタで開くには、ファイル名の右側にあるONLYOFFICEアイコンの「**ONLYOFFICEで編集する**」「**ONLYOFFICEで開く**」ボタンをクリックします。

ドキュメントを編集する機能は、課題の編集権限を持つユーザー・ロールが利用できます。

閲覧のためにファイルを開く機能は、「課題を見る」権限を持つユーザー・ロールが利用可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2655664/341e167f-612e-392d-5e21-e49eeb9e1142.png)

#### ファイルモジュール

ファイルは、「**ファイルを見る**」または「**ファイルを管理する**」権限を持つユーザーのみが閲覧可能です。ファイルを対応するエディタで開くには、ファイル名の右側にあるONLYOFFICEアイコンの「**ONLYOFFICEで開く**」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2655664/c01ceaf4-1bf9-f920-c6d9-d607a803efa9.png)

#### ドキュメントモジュール

対応するエディタでファイルを開くには、ファイル名の右側にあるONLYOFFICEアイコンの「**ONLYOFFICEで編集する**」「**ONLYOFFICEで開く**」ボタンをクリックします。
ドキュメントを編集する機能は、「**ドキュメントを編集する**」権限を持つユーザー・ロールに利用可能です。
閲覧のためにファイルを開く機能は、「**ドキュメントを閲覧する**」権限を持つユーザー・ロールに利用可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2655664/333f0478-a73f-529b-3c2d-72578e455b5b.png)

フォームを作成するには、「**ONLYOFFICEで作成**」リンクをクリックし、「**フォームテンプレート**」オプションを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2655664/48e881a9-d987-3197-ecbb-0eab3144ad4e.png)

必要な項目を入力し、「**作成**」をクリックします。

:::note warn
フォームの詳細については、フォームの[作成](https://test-helpcenter.onlyoffice.com/onlyoffice-editors/onlyoffice-document-editor/UsageInstructions/CreateFillableForms.aspx)と[記入](https://test-helpcenter.onlyoffice.com/onlyoffice-editors/onlyoffice-document-editor/UsageInstructions/FillingOutForm.aspx)に関する対応する記事をお読みください。
:::

#### Wikiモジュール

対応するエディタでファイルを開くには、ファイル名の右側にあるONLYOFFICEアイコンの「**ONLYOFFICEで編集する**」「**ONLYOFFICEで開く**」ボタンをクリックします。

ドキュメントを編集する機能は、Wikiページを編集する権限を持つユーザー・ロールに利用可能です。

閲覧のためにファイルを開く機能は、Wiki閲覧権限を持つユーザーロールに対して利用可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2655664/436a2b05-a03a-49d5-8d1a-eac5f14ae8d6.png)

#### ニュースモジュール

ファイルを対応するエディタで開くには、ファイル名の右側にあるONLYOFFICEアイコンの「**ONLYOFFICEで編集する**」「**ONLYOFFICEで開く**」ボタンをクリックします。

ドキュメントを編集する機能は、「**ニュースを編集する**」権限を持つユーザーロールに対して利用可能です。

閲覧のためにファイルを開く機能は、「**ニュースを見る**」権限を持つユーザー・ロールに利用可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2655664/3bc7ba25-7960-f179-b9dc-70ead429f30f.png)