この記事はAIによって翻訳されました

KylinOSにDockerでONLYOFFICE Docsエンタープライズ版をインストールする

はじめに

エンタープライズ版では、ONLYOFFICE Docsをローカルサーバーにインストールし、ONLYOFFICEのコラボレーションプラットフォームや他の人気システムとオンラインエディターを統合することができます。

ONLYOFFICE Docsは、テキスト、スプレッドシート、プレゼンテーション用のビューアーとエディターを含むオンラインオフィススイートで、Office Open XML形式(.docx、.xlsx、.pptx)と完全に互換性があり、リアルタイムでの共同編集を可能にします。

機能

  • ドキュメントエディター
  • スプレッドシートエディター
  • プレゼンテーションエディター
  • モバイルウェブビューアー
  • モバイルウェブエディター
  • 共同編集
  • 漢字サポート
  • すべての人気フォーマットのサポート:DOC、DOCX、TXT、ODT、RTF、ODP、EPUB、ODS、XLS、XLSX、CSV、PPTX、HTML

ONLYOFFICE Docs エンタープライズ版で利用可能な詳細な機能一覧をご覧ください。

ONLYOFFICE Workspace内で使用することで、以下のことが可能になります:

  • ファイルを共有する;
  • ドキュメントへのアクセス権を管理する;
  • ウェブサイトにドキュメントを埋め込む;
  • ONLYOFFICEに接続されたDrive、Box、Dropbox、OneDrive、OwnCloudに保存されたファイルを表示および編集する。

バージョン7.2以降、ONLYOFFICE DocsのDockerイメージはKylin Linux Advanced Server OSリリースV10での実行用に再構築されています。このガイドでは、KylinOSにONLYOFFICE Docs エンタープライズ版のDockerバージョンをインストールする方法を示します。

システム要件
  • CPU
    デュアルコア2 GHz以上
  • RAM
    4 GB以上
  • HDD
    少なくとも40 GBの空き容量
  • SWAP
    少なくとも4 GB、ただしホストOSに依存します。多い方が良いです。
  • OS
    amd64 Linuxディストリビューション、カーネルバージョン3.10以降
  • Docker:KylinOSでサポートされている任意のバージョン

ONLYOFFICE Docsのインストール

DockerはデフォルトでGoogleのDNSサーバーを指定しています。ONLYOFFICE Docsがインターネットにアクセスしない場合、デフォルトのDocker DNSアドレスをローカルDNSサーバーのアドレスに変更することをお勧めします。そのためには、/etc/default/dockerファイルに移動し、以下の行のIPアドレスをローカルネットワーク内のDNSサーバーのIPアドレスに変更します:
docker_OPTS="--dns 8.8.8.8"

CentOSのようなRPMベースのオペレーティングシステムの場合:

  1. 次の内容で/etc/docker/daemon.json設定ファイルを作成します:
    { "dns" : [ "8.8.8.8" ] }
  2. Dockerサービスを再起動します:
    sudo systemctl restart docker.service
SELinuxを無効にする

/etc/selinux/config設定ファイルでSELinuxを無効にする必要があります。

任意のテキストエディターで/etc/selinux/configファイルを開き、SELINUX=enforcingまたはSELINUX=permissiveの文字列をSELINUX=disabledに置き換え、変更を保存します。

変更を有効にするためにサーバーを再起動します。SELinuxが無効になっていることを確認してください:

[root@test ~]# sestatus
SELinux status:                 disabled
ONLYOFFICE Docsのインストール

以下のコマンドを実行してONLYOFFICE Docsをインストールします:

sudo docker run -i -t -d -p 80:80 --security-opt seccomp=unconfined --restart=always -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver-ee
重要 バージョン7.2以降、JWTシークレットのランダム生成を追加しました。環境変数でJWTシークレットが指定されていない場合、VMまたは物理サーバーの再起動時に再生成されるため、統合に問題が生じる可能性があります。この問題を避けるには、-e JWT_SECRET=my_jwt_secretで独自の値を指定してください。

インストールでJWTを使用しない場合は、-e JWT_ENABLED=falseを使用してください。

--security-opt seccomp=unconfinedキーは、コンテナのセキュリティプロファイルを無効にするために必要です。詳細はこちらをご覧ください。

また、カスタムセキュリティプロファイルを使用することもできます:kylin-seccomp7.json

デフォルトでは、ONLYOFFICE Docsはポート80を使用して着信接続をリッスンします。バージョン4.3以降、デフォルトのポートの代わりに使用する予定がある場合、ONLYOFFICE Docsのポートを変更することができます。これは、インストール時にマッピングポートを変更することで簡単に行えます:
sudo docker run -i -t -d -p <PORT_NUMBER>:80 --security-opt seccomp=unconfined --restart=always -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver-ee
ここで<PORT_NUMBER>は、ONLYOFFICE Docsが使用するポート番号です。

これにより、ONLYOFFICE Docsと必要なすべての依存関係がインストールされます(スクリプトが行うことのリストはこちらで確認できます)。

ファイアウォールの例外を追加する

また、firewalld.serviceサービスに例外を追加する必要があります:

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload

設定が完了したら、ブラウザのアドレスバーにhttp://localhostと入力してONLYOFFICE Docsのウェルカムページを開き、ドキュメントの例を有効にする方法や、提供されたAPIを使用してオンラインエディターをウェブアプリケーションに統合する方法についてのさらなる指示を見つけてください。

コンテナ外でのデータの保存

すべてのデータは、特別に指定されたディレクトリ、データボリュームに保存され、以下の場所にあります:

  • /var/log/onlyofficeONLYOFFICE Docsのログ用
  • /var/www/onlyoffice/Data:証明書用
  • /var/lib/onlyoffice:ファイルキャッシュ用
  • /var/lib/postgresql:データベース用
推奨 私たちは、データをDockerコンテナの外部、ホストマシン上に保存することを強くお勧めします。これにより、新しいバージョンがリリースされた際にデータを失うことなく、ONLYOFFICE Docsを簡単に更新できます。

コンテナの外部にあるデータにアクセスするには、ボリュームをマウントする必要があります。これは、docker runコマンドで-vオプションを指定することで行えます。

sudo docker run -i -t -d -p 80:80 --security-opt seccomp=unconfined --restart=always \
    -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice  \
    -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data  \
    -v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \
    -v /app/onlyoffice/DocumentServer/db:/var/lib/postgresql -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver-ee
注意:まだ作成されていないフォルダをマウントしようとすると、これらのフォルダは作成されますが、アクセスが制限されます。アクセス権を手動で変更する必要があります。

通常、コンテナデータを保存する必要はありません。コンテナの動作はその状態に依存しないためです。しかし、データを保存することは次の場合に役立ちます:

  • ログなどのコンテナデータに簡単にアクセスするため。
  • コンテナ内のデータサイズの制限を取り除くため。
  • PostgreSQL、Redis、RabbitMQなどのコンテナ外で起動されたサービスを使用する場合。

HTTPSを使用してONLYOFFICE Docsを実行する

sudo docker run -i -t -d -p 443:443 --security-opt seccomp=unconfined --restart=always \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver-ee

onlyofficeアプリケーションへのアクセスは、SSLを使用して保護することができます。これにより、不正アクセスを防止できます。CA認定のSSL証明書は、CAを通じて信頼の検証を可能にしますが、自己署名証明書も、各クライアントがウェブサイトのアイデンティティを確認するための追加手順を踏む限り、同等の信頼検証を提供できます。これを達成するための手順は以下に示されています。

SSLを介してアプリケーションを保護するには、次の2つが必要です:

  • プライベートキー(.key)
  • SSL証明書(.crt)

したがって、次のファイルを作成してインストールする必要があります:

/app/onlyoffice/DocumentServer/data/certs/onlyoffice.key
/app/onlyoffice/DocumentServer/data/certs/onlyoffice.crt

CA認定証明書(例:Let's Encrypt)を使用する場合、これらのファイルはCAから提供されます。自己署名証明書を使用する場合は、これらのファイルを自分で生成する必要があります。

certbotを使用してONLYOFFICE DocsをHTTPSに切り替える

ONLYOFFICE DocsをHTTPSに切り替える最も簡単な方法は、Let's Encrypt SSL証明書をcertbotを使用して自動的に取得することです。

ポート80と443を指定し、変数に独自の値を設定してONLYOFFICE Docs Dockerコンテナを実行します:

sudo docker run -i -t -d -p 80:80 -p 443:443 --security-opt seccomp=unconfined --restart=always \
    -e LETS_ENCRYPT_DOMAIN=yourdomain.com -e LETS_ENCRYPT_MAIL=email@example.com -e JWT_SECRET=my_jwt_secret onlyoffice/documentserver-ee

ここで:

  • LETS_ENCRYPT_DOMAIN - 証明書に使用するドメイン名。
  • LETS_ENCRYPT_MAIL - 登録および復旧連絡用のメール。

letsencrypt.orgのCA署名付き証明書が自動的に生成され、サーバーにインストールされます。これで、ONLYOFFICE Docshttps://yourdomain.comアドレスで利用可能になります。

自己署名証明書の生成

自己署名SSL証明書の生成は、簡単な3ステップの手順で行います:

ステップ1:サーバープライベートキーの作成

openssl genrsa -out onlyoffice.key 2048

ステップ2:証明書署名要求(CSR)の作成

openssl req -new -key onlyoffice.key -out onlyoffice.csr

ステップ3:プライベートキーとCSRを使用して証明書に署名

openssl x509 -req -days 365 -in onlyoffice.csr -signkey onlyoffice.key -out onlyoffice.crt

これで、365日間有効なSSL証明書が生成されました。

サーバーセキュリティの強化

このセクションでは、サーバーセキュリティを強化するための手順を提供します。

これを達成するには、より強力なDHEパラメータを生成する必要があります。

openssl dhparam -out dhparam.pem 2048
SSL証明書のインストール

上記で生成された4つのファイルのうち、onlyoffice.keyonlyoffice.crtdhparam.pemファイルをonlyofficeサーバーにインストールする必要があります。CSRファイルは必要ありませんが、後で必要になる可能性があるため、安全にバックアップしてください。

onlyofficeアプリケーションがSSL証明書を探すように設定されているデフォルトのパスは/var/www/onlyoffice/Data/certsですが、これはSSL_KEY_PATHSSL_CERTIFICATE_PATHSSL_DHPARAM_PATHの設定オプションを使用して変更できます。

/var/www/onlyoffice/Data/パスはデータストアのパスであるため、/app/onlyoffice/DocumentServer/data/内にcertsというフォルダを作成し、ファイルをそこにコピーする必要があります。また、セキュリティ対策として、onlyoffice.keyファイルの権限を所有者のみが読み取り可能に更新します。

mkdir -p /app/onlyoffice/DocumentServer/data/certs
cp onlyoffice.key /app/onlyoffice/DocumentServer/data/certs/
cp onlyoffice.crt /app/onlyoffice/DocumentServer/data/certs/
cp dhparam.pem /app/onlyoffice/DocumentServer/data/certs/
chmod 400 /app/onlyoffice/DocumentServer/data/certs/onlyoffice.key

そして、Dockerコンテナを再起動します:

sudo docker restart {{DOCUMENT_SERVER_ID}}

これで、アプリケーションのセキュリティが強化されるまであと一歩です。

利用可能な設定パラメータ
docker runコマンドの--env-fileフラグのオプションを参照してください。これにより、すべての必要な環境変数を1つのファイルで指定できます。これにより、長いdocker runコマンドを書く手間が省けます。

以下は、環境変数を使用して設定できるパラメータの完全なリストです。

  • ONLYOFFICE_HTTPS_HSTS_ENABLED:HSTS設定をオフにするための高度な設定オプション。SSLが使用されている場合にのみ適用されます。デフォルトはtrueです。
  • ONLYOFFICE_HTTPS_HSTS_MAXAGE:onlyoffice NGINX vHost設定でのHSTSの最大年齢を設定するための高度な設定オプション。SSLが使用されている場合にのみ適用されます。デフォルトは31536000です。
  • SSL_CERTIFICATE_PATH:使用するSSL証明書のパス。デフォルトは/var/www/onlyoffice/Data/certs/tls.crtです。
  • SSL_KEY_PATH:SSL証明書の秘密鍵のパス。デフォルトは/var/www/onlyoffice/Data/certs/tls.keyです。
  • SSL_DHPARAM_PATH:Diffie-Hellmanパラメータのパス。デフォルトは/var/www/onlyoffice/Data/certs/dhparam.pemです。
  • SSL_VERIFY_CLIENTCA_CERTIFICATES_PATH fileを使用してクライアント証明書の検証を有効にします。デフォルトはfalseです。
  • DB_TYPE:データベースの種類。サポートされている値はpostgresmariadb、またはmysqlです。デフォルトはpostgresです。
  • DB_HOST:データベースサーバーが実行されているホストのIPアドレスまたは名前。
  • DB_PORT:データベースサーバーのポート番号。
  • DB_NAME:イメージの起動時に作成されるデータベースの名前。
  • DB_USER:データベースアカウントのスーパーユーザー権限を持つ新しいユーザー名。
  • DB_PWD:データベースアカウントに設定されたパスワード。
  • AMQP_URI:メッセージブローカーサーバーに接続するためのAMQP URI
  • AMQP_TYPE:メッセージブローカーの種類。サポートされている値はrabbitmqまたはactivemqです。デフォルトはrabbitmqです。
  • REDIS_SERVER_HOST:Redisサーバーが実行されているホストのIPアドレスまたは名前。
  • REDIS_SERVER_PORT:Redisサーバーのポート番号。
  • NGINX_WORKER_PROCESSES:NGINXワーカープロセスの数を定義します。
  • NGINX_WORKER_CONNECTIONS:NGINXワーカープロセスが開くことができる同時接続の最大数を設定します。
  • SECURE_LINK_SECRET:nginxの設定ディレクティブsecure_link_md5のためのシークレットを定義します。デフォルトはランダム文字列です。
  • JWT_ENABLEDONLYOFFICE DocsによるJSON Webトークンの検証を有効にするかどうかを指定します。デフォルトはtrueです。
  • JWT_SECRETONLYOFFICE DocsへのリクエストでJSON Webトークンを検証するためのシークレットキーを定義します。デフォルトはランダム値です。
  • JWT_HEADER:JSON Webトークンを送信するために使用されるHTTPヘッダーを定義します。デフォルトはAuthorizationです。
  • JWT_IN_BODYONLYOFFICE Docsへのリクエストボディでのトークン検証を有効にするかどうかを指定します。デフォルトはfalseです。
  • WOPI_ENABLED:wopiハンドラーの有効化を指定します。デフォルトはfalseです。
  • USE_UNAUTHORIZED_STORAGE:ストレージサーバーに自己署名証明書を使用する場合にtrueに設定します(例:Nextcloud)。デフォルトはfalseです。
  • GENERATE_FONTStrueの場合、起動時にフォントリストとフォントのサムネイルなどを再生成します。デフォルトはtrueです。
  • METRICS_ENABLEDONLYOFFICE DocsのStatsDの有効化を指定します。デフォルトはfalseです。
  • METRICS_HOST:StatsDのリスニングホストを定義します。デフォルトはlocalhostです。
  • METRICS_PORT:StatsDのリスニングポートを定義します。デフォルトは8125です。
  • METRICS_PREFIX:バックエンドサービス用のStatsDメトリックプレフィックスを定義します。デフォルトはds.です。
  • LETS_ENCRYPT_DOMAIN:Let's Encrypt証明書のドメインを定義します。
  • LETS_ENCRYPT_MAIL:Let's Encrypt証明書のドメイン管理者のメールアドレスを定義します。

エンタープライズ版の登録

エンタープライズ版を購入し、license.licファイルを受け取った場合は、インストールに配置してソフトウェアのフルバージョンを取得できます。

Dockerコンテナを使用している場合、license.licファイルは任意のフォルダに配置できます(例:/app/onlyoffice/DocumentServer/data/license.lic)。ただし、コンテナの起動時にこのフォルダをマウントする必要があります:

sudo docker run -i -t -d -p 80:80 --security-opt seccomp=unconfined --restart=always \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
-e JWT_SECRET=my_jwt_secret onlyoffice/documentserver-ee

その後、エンタープライズ版が登録され、フル機能が利用可能になります。

次の項目が含まれている記事:タグ:
すべてのタグを見る