フォーム読み込み中
2022年8月29日掲載
Alibaba CloudのサーバレスkubernetesサービスASK上で構築したNextCloudを利用する際、Officeのファイルをそのまま開きたい、また共同編集をしたいとの声がありました。
今回、そのニーズを満たすべく、Alibaba CloudのSimple Application Serverを使ってDocker版のOnlyOfficeをデプロイし、NextCloudとの連携する方法を紹介します。
全体からみる俯瞰的な構成図は次の通りです。
Single Application ServerにOnlyOfficeをデプロイし、それをサーバレス版KubernetesにデプロイしたNextCloudと連携することで、NextCloudでOfficeファイルが使えるようになります。
OnlyOfficeはAscebsio Systems社が開発するサーバーアプリケーションで、NextCloudの他、ownCloudやjira、Confluence、Alfresco、Chamilo、他のクラウドにもアタッチすることができます。そのため、NextCloudとOnlyOfficeは別々のプラットフォームなので、全体的なフローとしては次の通りになります。
ユーザがWebブラウザでNextCloudのOfficeへアクセスしたら、サーバレスKubernetesサービスASK上のNextCloudからSimple Application Server上のOnlyOfficeサーバへリクエスト処理します。
NextCloudはOfficeファイルを管理する一方で、OnlyOfficeはOfficeファイルのデータを管理する役割を持つため、OfficeファイルはOnlyOfficeとNextCloudが連携で管理する必要があります。
ユーザーが指定した特定のOfficeファイルをNextCloudサーバ経由で閲覧・編集操作できるようになれば、WebブラウザのNextCloud経由でOfficeファイルを閲覧、編集することができます。
$ sudo docker run -d \
--name='onlyofficedocumentsrv' \
-e TZ="America/Denver" \
-e HOST_OS="Unraid" \
-e 'JWT_ENABLED'='true' \
-e 'JWT_SECRET'='45713791378C43A0DD1AD628777961F175314040C309316A060DA83C1210E92F' \
-e 'JWT_HEADER'='AuthorizationJwt' \
-e 'JWT_IN_BODY'='true' \
-e 'USE_UNAUTHORIZED_STORAGE'='true' \
-p '80:80/tcp' \
-p '443:443/tcp' \
-v '/home/admin/onlyoffice/logs':'/var/log/onlyoffice':'rw' \
-v '/home/admin/onlyoffice/data':'/var/www/onlyoffice/Data':'rw' \
-v '/home/admin/onlyoffice/lib':'/var/lib/onlyoffice':'rw' \
-v '/home/admin/onlyoffice/database':'/var/lib/postgresql':'rw' \
-v '/home/admin/onlyoffice/fonts':'/usr/share/fonts/':'rw' \
'onlyoffice/documentserver'
AlibabaCloud上にNextCloudをデプロイする方法は以前のブログをご参考ください。
Simple Application ServerのコンソールにてDockerインストール済みのサーバを購入することができます。以下の条件のサーバを3.5ドル/月で利用することが可能です。
・vCPU:2 Core
・Memory:0.5 GB
・Transfer:1 TB
・ESSD:40 GB
・Bandwidth:30 Mbps(Peak)
上記手順通り、コンソール画面にてSimple Application Serverを購入するだけで、以下の通りサーバが作成されます。
コンソールからサーバに接続します。コンソール画面にて、Connectをクリックします。
サーバに接続ができたら、以下のコマンドでOnlyOfficeをデプロイします。
$ sudo docker run -d \
--name='onlyofficedocumentsrv' \
-e TZ="America/Denver" \
-e HOST_OS="Unraid" \
-e 'JWT_ENABLED'='true' \
-e 'JWT_SECRET'='45713791378C43A0DD1AD628777961F175314040C309316A060DA83C1210E92F' \
-e 'JWT_HEADER'='AuthorizationJwt' \
-e 'JWT_IN_BODY'='true' \
-e 'USE_UNAUTHORIZED_STORAGE'='true' \
-p '80:80/tcp' \
-p '443:443/tcp' \
-v '/home/admin/onlyoffice/logs':'/var/log/onlyoffice':'rw' \
-v '/home/admin/onlyoffice/data':'/var/www/onlyoffice/Data':'rw' \
-v '/home/admin/onlyoffice/lib':'/var/lib/onlyoffice':'rw' \
-v '/home/admin/onlyoffice/database':'/var/lib/postgresql':'rw' \
-v '/home/admin/onlyoffice/fonts':'/usr/share/fonts/':'rw' \
'onlyoffice/documentserver'
上記のコマンドだけでOnlyOfficeのデプロイができました。Simple Application Server作成時、グローバルIPも付与されていますので、DNSにAレコードを登録します。
以下の通り、OnlyOfficeのページにアクセスができました。
Cloud Shellを利用してClusterに接続します。
Cloud ShellはAlibaba Cloudコンソール上で操作できるWebターミナルです。
$ kubectl get pod
$ kubectl exec -it nextcloud-74b5c5645d-jh5ql -- /bin/bash
$ apt-get update
$ apt-get install vim
$ vi config/config.php
VIでconfig.phpが編集できるようになったら、以下の行を挿入します。
'onlyoffice' => array (
'verify_peer_off' => true,
'jwt_header' => "AuthorizationJwt"
注目のアプリからOnlyOfficeをダウンロードして有効にします。
OnlyOfficeのサーバのアドレス及びシークレットキーを入れます。シークレットキーはDocker runで設定した際に指定した値を入れます。「設定が更新されました」と表示されれば、接続成功です。
以下の通り、Wordのファイルを開くことができました。
「接続時にエラーが発生しました (ドキュメントサービスでエラーが発生しました: Error while downloading the document file to be converted.) (バージョン 7.1.1.23)」が表示されました。
原因はNextCloud側のconfig.phpに以下のようなOnlyOfficeの定義が必要でした。Kubernetesの環境変数で変更することができないので、今回は「構築手順 - 3. NextCloud側のconfig.phpを編集」に説明してるように、手動でconfig.phpを変更することで対処します。
'onlyoffice' => array (
'verify_peer_off' => true,
'jwt_header' => "AuthorizationJwt"
),
今回はAlibaba CloudのSimple Application Serverを使ってDocker版のOnlyOfficeをデプロイし、NextCloudとの連携を検証してみました。
Simple Application ServerはDockerを選んで作成するため、立ち上がったらdocker runのコマンドを実施するだけでOnlyOfficeのデプロイが可能です。
しかし、NextCloud側のconfig.phpを手動変更が必要のため、次回はOnlyOfficeもKubenetesでデプロイし、NextCloudのconfig.phpをConfigMapを使って自動反映する方法を紹介したいと思います。
条件に該当するページがございません