ONLYOFFICE DockerでHTTPSとSSL証明書を設定する方法

ONLYOFFICE DocsをDockerでHTTPS経由で動作させるには、公開ホスト名に一致する証明書を使用し、それをコンテナ内で利用可能にして、コンテナのHTTPSポートを公開します。HTTPSは暗号化されたWeb接続です。TLS証明書は、ブラウザが期待どおりのサーバーに到達したことを検証するのに役立ちます。このガイドでは、信頼できる認証局(CA)から既に取得済みの証明書と秘密鍵を使用します。リバースプロキシを使用する場合は、プロキシがHTTPSを処理する可能性があるため、以下の別のオプションに従ってください。

どのHTTPS設定がお客様の導入環境に適していますか?

ONLYOFFICE Docsは、Dockerコンテナから直接HTTPSを提供できます。また、NGINXやTraefikなどのリバースプロキシを使用してHTTPSを受け入れ、リクエストをDocsに転送することも可能です。パブリックポート80と443が利用可能なスタンドアロンサーバーの場合は、直接TLSを使用するのが簡単な選択肢です。これらのポートを既に別のWebサービスが使用している場合や、複数のサイトが1つのサーバーを共有している場合は、リバースプロキシの方が簡単な場合が多いです。両方のレイヤーを無計画に設定することは避けてください。TLSを終端するコンポーネントを決定し、プロキシとコンテナ間の接続がHTTPかHTTPSかを文書化してください。

このチュートリアルでは、CA 発行の証明書を使用して直接 HTTPS を設定する方法を説明します。ONLYOFFICE では、Let's Encrypt の自動オプションについても説明していますLETS_ENCRYPT_DOMAIN。LETS_ENCRYPT_MAILこのオプションでは、ポート 80 と 443 がアクセス可能で、プロキシによって既に占有されていないことが必要です。自己署名証明書はプライベート テスト ネットワークには便利ですが、パブリック ブラウザーや接続されたストレージ サービスでは自動的に信頼されません。

まず最初に何を準備すべきですか?

  • Docker EngineとDocker ComposeプラグインがインストールされたLinuxホスト。
  • ホスト名(例:)に対応するDNS Aレコードを作成し、docs.example.comホストのパブリックIPv4アドレスを指定します。IPv6が設定され、到達可能な場合にのみ、AAAAレコードを追加してください。
  • TCP 443を許可する受信ファイアウォールおよびクラウドファイアウォールルールが必要です。HTTP検証を使用して証明書を要求または更新する場合は、TCP 80も必要になる場合があります。
  • ホスト名とそれに対応する秘密鍵の証明書チェーン。認証局は通常、証明書チェーン全体ファイルと秘密鍵ファイルを提供します。
  • ONLYOFFICEデータボリューム用の永続的なホストディレクトリと、強力なJWTシークレットが必要です。JWT(JSON Web Token)は、Docsと連携アプリケーション間のリクエストを認証するために使用される共有シークレットです。
Linuxターミナルには、docs.example.comがIPアドレスに解決され、TCPポート443でリスナーが動作していることが表示されます。
コンテナを変更する前に、DNS解決を確認し、DockerホストがHTTPSポート443でリッスンできることを確認してください。

ステップ1:証明書と秘密鍵をホストに配置する

この例では、ホストは永続データを の下に保持します/srv/onlyoffice/data。サンプルホスト名とパスを、ご自身のものに置き換えてください。証明書の完全なチェーンを としてtls.crt、対応する秘密鍵を として、サブディレクトリtls.keyに保存しますcerts。

sudo mkdir -p /srv/onlyoffice/data/certs
sudo install -m 0644 /path/to/fullchain.pem /srv/onlyoffice/data/certs/tls.crt
sudo install -m 0600 /path/to/privkey.pem /srv/onlyoffice/data/certs/tls.key
sudo chown root:root /srv/onlyoffice/data/certs/tls.key

秘密鍵は、それを必要とするアカウントまたはサービスのみが読み取れるようにしてください。Compose ファイル、問題報告、または公開リポジトリに貼り付けないでください。所有権または権限の問題で Docker が鍵を読み取れない場合は、鍵を誰でも読み取れるようにするのではなく、コンテナのランタイムに対してアクセス権限を限定的に調整してください。

サービスを開始する前に、証明書の日付とホスト名を確認してください。

openssl x509 -in /srv/onlyoffice/data/certs/tls.crt -noout -subject -issuer -dates -ext subjectAltName

サブジェクト代替名(SAN)リストには、ユーザーがアクセスするホスト名を正確に含める必要があります。証明書から生成された公開鍵と秘密鍵を比較すると、2つのハッシュ値が一致するはずです。

openssl x509 -in /srv/onlyoffice/data/certs/tls.crt -pubkey -noout | openssl sha256
openssl pkey -in /srv/onlyoffice/data/certs/tls.key -pubout | openssl sha256
ターミナルには、ONLYOFFICE証明書ディレクトリ内にtls.crt、tls.key、およびdhparam.pemが表示され、キーに対するアクセス権限は制限されています。
証明書とその対応する秘密鍵は、ホストの永続的な証明書ディレクトリに保存し、秘密鍵はアクセス権限を制限して保護してください。

ステップ2:Docker Composeサービスの設定

ONLYOFFICE の Docker ドキュメントで/var/www/onlyoffice/Data/certsは、証明書を に配置しています。現在の環境変数リストでは、デフォルトの証明書ファイル名として と が指定されていますtls.crtがtls.key、インストール手順の例では と も使用されていますonlyoffice.crt。onlyoffice.keyパスを明示的に設定することで、ファイル名の規則に依存することを回避できます。ホスト ディレクトリは、対応するコンテナ データ ディレクトリにバインド マウントされ、ポート 443 はホスト ポート 443 として公開されます。

以下のようなファイルを作成しcompose.yaml、サンプルJWT値を、ご使用の環境で生成された秘密鍵に置き換えてください。以下のイメージタグはサンプルバージョンです。公式イメージ一覧を確認し、ご自身が管理する予定のバージョンを使用してください。

services:
  documentserver:
    image: onlyoffice/documentserver:9.4.0
    container_name: onlyoffice-documentserver
    restart: unless-stopped
    ports:
      - "443:443"
    volumes:
      - /srv/onlyoffice/data:/var/www/onlyoffice/Data
    environment:
      SSL_CERTIFICATE_PATH: /var/www/onlyoffice/Data/certs/tls.crt
      SSL_KEY_PATH: /var/www/onlyoffice/Data/certs/tls.key
      JWT_SECRET: replace_with_a_long_random_secret

強力なシークレットを生成しopenssl rand -hex 32、適切なファイル権限で環境ファイルまたはCompose構成に配置してください。別のアプリがDocsと統合する場合は、そのアプリにも同じJWTシークレットと公開HTTPSアドレスを設定してください。既存のインストールの場合、既存のComposeファイルを編集する際に、ボリューム、ネットワーク、その他の環境変数、および統合設定を保持してください。動作中のサービス定義をこの最小限のサンプルで置き換えないでください。

Composeファイルを含むディレクトリからサービスを開始または再作成します。

docker compose up -d
docker compose ps
docker compose logs --tail=100 documentserver
コードエディタには、ポート443を公開し、ONLYOFFICE Docsの証明書と秘密鍵のパスを設定するDocker Composeサービスが表示されます。
ComposeサービスはHTTPSを公開し、ONLYOFFICE Docsをそのデータディレクトリにマウントされた証明書ファイルを参照するように設定しています。

ステップ3:HTTPSと証明書をテストする

ホスト名を置き換えてブラウザで開きますhttps://docs.example.com。ブラウザに安全な接続が表示され、名前の不一致、証明書の有効期限切れ、または信頼できない発行者に関するエラーが報告されないことを確認してください。ONLYOFFICE Docs のウェルカム ページが読み込まれることを確認してください。Docs が Nextcloud、ownCloud、またはその他のプラットフォームに接続されている場合は、ドキュメントの開閉と保存もテストしてください。ブラウザがロックされるだけでは、統合のコールバック リクエストや JWT 構成が正しく機能していることを証明できません。

シェルからサーバーにTLS証明書を要求し、HTTPS応答をテストします。

openssl s_client -connect docs.example.com:443 -servername docs.example.com </dev/null
curl -I https://docs.example.com/

この-servernameオプションは、ホスト名をサーバー名表示(SNI)を使用して送信します。SNIを使用すると、複数のホスト名が同じアドレスを共有している場合でも、サーバーは適切な証明書を選択できます。証明書の日付、発行者、SANは、インストールした証明書と一致している必要があります。docker compose logsブラウザが接続できない場合や、コンテナが繰り返し再起動する場合は、これらの点を確認してください。

ブラウザのアドレスバーには、一般的な ONLYOFFICE Docs のウェルカム画面の横に鍵アイコンが付いた https://docs.example.com が表示されます。
デプロイ後、公開されているHTTPSホスト名にアクセスし、証明書の警告が表示されずにページが読み込まれることを確認してください。

リバースプロキシが既にHTTPSを処理している場合はどうなりますか?

NGINX、Traefik、Caddy、またはホスティングゲートウェイが既にパブリックポート80と443を所有している場合は、そのプロキシにパブリック証明書をインストールする方が良いでしょう。そのトポロジでは、DocsコンテナをプライベートDockerネットワークにのみ公開するか、HTTPポートをループバックにバインドし、プロキシを設定して必要なリクエストとWebSocketトラフィックを転送します。統合アプリケーションのONLYOFFICEアドレスをパブリックhttps://URLに設定します。転送ヘッダーとアップストリームTLSについては、プロキシとONLYOFFICEの現在の指示に従ってください。コンテナのポート443を、プロキシが既に使用しているホストポートと同じポートに公開しないでください。

1つのプロキシで複数のサービスのトラフィックをルーティングする場合は、このパターンを選択してください。DocsがパブリックHTTPSエンドポイントを所有し、必要なポートが空いている場合は、上記の直接コンテナ設定を使用してください。プロキシがHTTP経由でコンテナに接続する場合、その内部ホップは暗号化されません。セキュリティ要件に応じて、信頼できるプライベートネットワーク上に維持するか、アップストリームTLSを設定してください。

よくある問題とその解決方法

  • ブラウザに証明書が無効であると表示されます。SANホスト名、証明書の有効期限、証明書チェーン全体、およびDNSが目的のホストを指していることを確認してください。ベアドメイン用の証明書は、サブドメインを自動的にカバーするものではありません。
  • コンテナは証明書またはキーが見つからないと報告しています。ホストのソースパス、バインドマウント先、正確なファイル名、および2つのSSL_..._PATH値を確認してください。Dockerの--mount構文ではソースパスが存在する必要があります。Composeのバインドマウントも、意図した既存のディレクトリを指している必要があります。
  • ポート443は既に割り当てられています。競合しているサービスを停止するか、リバースプロキシを使用するか、別のパブリックホストポートを選択して、URLとファイアウォールがそれを反映していることを確認してください。プロキシが前面にある場合は、通常、パブリックポート443はプロキシが所有します。
  • HTTPSは正常に動作するが、ドキュメントの編集が失敗する。統合URL、両サービスのJWTシークレット、プロキシ転送ルール、およびDocsがストレージプラットフォームにアクセスできるかどうかを確認してください。実際にファイルを開いて保存する操作をテストしてください。
  • 証明書は更新されましたが、サイトは依然として古い証明書を使用しています。更新によってホストにマウントされたファイルが更新され、ONLYOFFICEがそれを再読み込みしたことを確認してください。必要に応じて、更新後にサービスを再起動してください。例えば、docker compose restart documentserverComposeプロジェクトディレクトリから実行されるCertbotのデプロイフックを使用するなどです。自動化に頼る前に、Certbotのドライランオプションを使用して更新をテストしてください。

証明書を最新の状態に保ってください

HTTPS の設定は、更新が計画されるまで完了しません。証明書の発行者と更新者、秘密鍵の保存場所、更新されたファイルをマウントされたディレクトリにコピーするプロセス、およびサービスがそれらを再読み込みする方法を記録してください。更新クライアントのドライランテストを実行し、証明書の有効期限を監視し、更新のたびに公開エンドポイントを確認してください。ホスト管理証明書の代わりに ONLYOFFICE の組み込み Let's Encrypt 変数を使用する場合は、その方法に関する最新の Docker の手順に従い、実行するイメージとデプロイメントに合わせて更新動作を確認してください。

参考資料として、ONLYOFFICE DocsのDockerインストールおよびHTTPSガイド、Dockerバインドマウントに関するドキュメント、Docker Composeに関するドキュメント、ONLYOFFICE公式Dockerイメージタグ、およびCertbotの公式手順書を参照してください。利用可能なタグとインターフェースの詳細は変更される可能性があるため、新規デプロイメントを準備する際には必ず確認してください。

コメントを残す

Collabora CODEでテレメトリと外部接続を無効にする方法

Collabora CODEでテレメトリと外部接続を無効にする方法

Collabora CODEが行う外部接続を把握し、定期的な更新チェックとオプションの統合を無効にし、ドキュメントデータの取得を制限し、WOPIトラフィックの編集ニーズを維持します。

LibreOffice Writerで文書の特定セクションにパスワードを設定する方法

LibreOffice Writerで文書の特定セクションにパスワードを設定する方法

Writerの選択したセクションをパスワードで保護し、読み取り専用の結果を確認し、ファイル暗号化が必要な場合を把握できます。

ONLYOFFICE DocsとMicrosoft 365 Web Apps:どちらが書式設定をより良く保持できるか?

ONLYOFFICE DocsとMicrosoft 365 Web Apps:どちらが書式設定をより良く保持できるか?

ONLYOFFICE DocsとWord for the webを、DOCXレイアウト、ページコントロール、サポートされているフォーマット、そして共有や印刷前にフォーマットの正確性をテストする実用的な方法について比較します。

ONLYOFFICE DockerでHTTPSとSSL証明書を設定する方法

ONLYOFFICE DockerでHTTPSとSSL証明書を設定する方法

信頼できるTLS証明書、Docker Compose、安全なキー権限、および実践的な検証手順を使用して、DOcker上でONLYOFFICE DocsのHTTPSを設定する方法を学びましょう。

LibreOffice Calcの数式で結果ではなくテキストが表示される問題を修正する

LibreOffice Calcの数式で結果ではなくテキストが表示される問題を修正する

表示設定とテキスト形式の数式または古い計算式を見分ける方法を学び、シートに最適なCalcの修正方法を選択してください。

coolwsdログレベルを使用してCollaboraオンライン接続ログをデバッグする方法

coolwsdログレベルを使用してCollaboraオンライン接続ログをデバッグする方法

coolwsdのログレベルを一時的に引き上げ、Collabora Onlineの接続障害を追跡し、適切なログシンクを見つけて、安全な本番環境のログ記録を復元します。

How to Change the Default Storage Location in ONLYOFFICE Workspace

How to Change the Default Storage Location in ONLYOFFICE Workspace

Learn how to move ONLYOFFICE Workspace portal data from Disk Default to S3, Google Cloud Storage, Rackspace, or Selectel, with backup and verification steps.

変更履歴を有効にして、書式を失わずにDOCX形式でエクスポートする方法

変更履歴を有効にして、書式を失わずにDOCX形式でエクスポートする方法

LibreOffice Writerで変更履歴機能を有効にし、レビュー可能なDOCXファイルをエクスポートして、共有する前に改訂内容、フォント、表、ページレイアウトを確認してください。

ONLYOFFICE Workspaceデータの自動バックアップを設定する方法

ONLYOFFICE Workspaceデータの自動バックアップを設定する方法

コントロールパネルを使用して、ONLYOFFICE Workspaceの自動バックアップ、オフサイトストレージ、データ保持、メール保護、検証、および復元テストを設定します。

LibreOfficeで書籍執筆用のマスタードキュメントを設定する方法

LibreOfficeで書籍執筆用のマスタードキュメントを設定する方法

LibreOffice Writerのマスター文書の作成方法、章ファイルのリンクと順序付け方法、一貫したスタイルの適用方法、目次の更新方法、書籍のエクスポート方法を学びましょう。