Alibaba CloudのSimple Application Serverを使ってOnlyOfficeをデプロイし、NextCloudと連携してみた※構築手順付き

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ファイルを閲覧、編集することができます。

(参考:OnlyOffice Installation Guides

$ 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をデプロイする方法は以前のブログをご参考ください。

参考:サーバレス版KubernetesでNextCloudをAlibabaCloud上に構築する手順

構築手順 - 1. Simple Application Serverの作成

Simple Application ServerのコンソールにてDockerインストール済みのサーバを購入することができます。以下の条件のサーバを3.5ドル/月で利用することが可能です。

・vCPU:2 Core
・Memory:0.5 GB
・Transfer:1 TB
・ESSD:40 GB
・Bandwidth:30 Mbps(Peak)

構築手順 - 2. Docker版OnlyOfficeデプロイ

上記手順通り、コンソール画面にて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のページにアクセスができました。

構築手順 - 3. NextCloud側のconfig.phpを編集

Cloud Shellを利用してClusterに接続します。

Cloud ShellはAlibaba Cloudコンソール上で操作できるWebターミナルです。

(参考:Alibaba Cloud Using Cloud Shell)    

$ 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"

構築手順 - 4. NextCloud側でOnlyOfficeを設定

注目のアプリから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を使って自動反映する方法を紹介したいと思います。

関連サービス

Alibaba Cloud

Alibaba Cloudは中国国内でのクラウド利用はもちろん、日本-中国間のネットワークの不安定さの解消、中国サイバーセキュリティ法への対策など、中国進出に際する課題を解消できるパブリッククラウドサービスです。

MSPサービス

MSP(Managed Service Provider)サービスは、お客さまのパブリッククラウドの導入から運用までをトータルでご提供するマネージドサービスです。

おすすめの記事

条件に該当するページがございません