Collabora CODEをTLS終端処理付きでNginxの背後で実行する

Collabora CODEをHTTPSの背後に置くと、プロキシとCODEの間でTLSの終了位置に関する意見の相違や、プロキシがWebSocketトラフィックをドロップするため、ドキュメントが停止する場合があります。Nginxを設定して、公開証明書を提示し、プライベートCODEリスナーに転送し、WebSocketルートを渡すようにします。CODEの設定はssl.enable=falseとですssl.termination=true。

この例では、Dockerホスト上でNginxを使用しています。別のコンテナでプロキシを使用する場合は、代わりにプライベートDockerネットワークを使用してください。バージョン固有のオプションについては、Collaboraのプロキシ設定とCODE Dockerイメージガイドを参照してください。

SSL終端処理がどのような変更をもたらすかを理解しましょう

TLS終端とは、NginxがブラウザのHTTPS接続と証明書を処理し、CODEは背後のポート9980でHTTPを使用することを意味します。リスナーはプライベートに保つようにしてください。単一ホストのループバックにバインドするか、プライベートなDockerネットワークを使用してください。プロキシからCODEへのトラフィックが信頼できないネットワークを経由する場合は、TLSまたはトンネルを使用してそのリンクを保護してください。

ブラウザのHTTPSがNginxで終端し、その後プライベートHTTPが127.0.0.1ポート9980のCollabora CODEコンテナに到達するネットワーク図。
ブラウザはNginxへの通信にHTTPSを使用し、HTTPはプロキシとCODE間のプライベートリンクに限定されます。

容器と証明書を準備する

  1. 公開ホスト名を選択します。Nginxプロキシを指すようなDNSレコードを作成しますoffice.example.com。そのホスト名に対応する証明書を取得し、証明書チェーンと秘密鍵をプロキシにインストールします。
  2. CODEのポートは非​​公開にしてください。Dockerホストに直接インストールされたNginxの場合、コンテナポートはループバックインターフェースでのみ公開してください。Composeでは、関連するマッピングは です。ファイアウォールやネットワーク設計で明示的に制限されていない限り、すべてのホストインターフェースで127.0.0.1:9980:9980公開しないでください。9980:9980
  3. CODEのTLSモードを設定します。Composeサービスで、CODEの設定に2つのオプションを追加します。以下の例では、画像変数を使用して、確認およびテスト済みのタグをピン留めできるようにしています。
Docker Composeエディタで、Collaboraサービスポートが127.0.0.1のポート9980にバインドされていることが表示されている。
127.0.0.1にバインドすることで、CODEリスナーはDockerホストからのみアクセス可能になります。
Collabora CODE の Docker Compose 環境設定で、ssl.enable=false と ssl.termination=true を指定します。
これらのオプションは、TLSがリバースプロキシによって処理されることをCODEに指示します。
services:
  collabora:
    image: ${COLLABORA_CODE_IMAGE}
    restart: unless-stopped
    ports:
      - "127.0.0.1:9980:9980"
    environment:
      extra_params: "--o:ssl.enable=false --o:ssl.termination=true"

テスト済みの固定イメージタグを設定しますCOLLABORA_CODE_IMAGE。WOPIホストの許可リストと認証設定はそのまま維持してください。TLS終端ではこれらの設定は置き換えられません。Nginxが別のDockerサービスである場合は、ホストポートのマッピングを省略し、http://collabora:9980共有プライベートネットワークにプロキシしてください。

Nginxを設定してTLSを終端し、CODEトラフィックをプロキシするようにします。

  1. HTTPS仮想ホストを追加します。以下の場所を、公開Collaboraホスト名のNgi​​nxサーバーブロック内に配置します。例のホスト名と証明書パスを置き換えてください。この設定は、ルートレベルのCollabora URL用であり、などのパスの下にマウントされたURL用ではありません/office/。
TLSリスナー、office.example.comサーバー名、および証明書ファイルパスを含むNginx設定スニペット
Nginxは公開証明書を保持し、Collaboraホスト名に対してHTTPSでリッスンします。
server {
    listen 443 ssl;
    server_name office.example.com;
    ssl_certificate /etc/letsencrypt/live/office.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/office.example.com/privkey.pem;

    location ^~ /browser {
        proxy_pass http://127.0.0.1:9980;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    location ^~ /hosting/discovery {
        proxy_pass http://127.0.0.1:9980;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    location ^~ /hosting/capabilities {
        proxy_pass http://127.0.0.1:9980;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location ~ ^/cool/(.*)/ws$ {
        proxy_pass http://127.0.0.1:9980;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 36000s;
    }
    location ^~ /cool/adminws {
        proxy_pass http://127.0.0.1:9980;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 36000s;
    }
    location ~ ^/(c|l)ool {
        proxy_pass http://127.0.0.1:9980;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

エディターのアセット、検出、および機能のルートを転送します。および/cool/.../wsの/cool/adminws場所には、Nginx が WebSocket をトンネルできるように HTTP/1.1 および Upgrade ヘッダーが必要です。長い読み取りタイムアウトにより、編集セッションが開いたままになります。Nginx のWebSocket プロキシに関するドキュメントを参照してください。

Nginxロケーションブロックにより、ブラウザの転送とホスト検出パスがプライベートCODEリスナーに渡されます。
エディターアセット、WOPI検出、および機能エンドポイントを同じCODEリスナーに転送します。
HTTP 1.1、UpgradeおよびConnectionヘッダー、長い読み取りタイムアウトを備えたクールなパスのNginx WebSocketロケーション
メインのWebSocketルートにはHTTP/1.1とUpgradeヘッダーが必要です。そうでない場合、エディタは読み込まれても使用できなくなる可能性があります。
クールな管理画面のWebSocketとCollaboraのクールなリクエストパスのためのNginx設定
管理用WebSocketと残りの文書転送経路も転送してください。

変更を適用し、バージョンに依存する動作を確認します。

  1. 再起動する前に Nginx を検証してください。を実行しますnginx -t。Nginx が構成テストが成功したと報告した場合のみ続行し、システムの通常のサービス コマンドを使用して Nginx を再起動してください。
  2. CODEコンテナを再作成します。Composeの変更を適用しますdocker compose up -d collabora。コンテナのログで起動エラーを確認し、アクティブな構成に両方のSSLオプションが含まれていることを確認します。
リバースプロキシの設定を検証するために、nginx -t コマンドが表示されたターミナルウィンドウ
再読み込み前に構文テストを実行して、不正な形式のサーバーブロックが他のサイトに影響を与えないようにしてください。

バージョンコンテキストとして、Collaboraのリポジトリには2026年7月22日に、CODE 26.04.2.2以降の組み込みcoolwsd --probeヘルスチェックが、TLSがプロキシで終了している場合でもポート9980でHTTPSをチェックできるという報告が記録されています。これにより、パブリックエンドポイントが応答しているにもかかわらず、コンテナが不正常とマークされる可能性があります。イメージタグの課題記録を確認し、ヘルスステータスのみをTLS障害の証拠とする前に、パブリックエンドポイントと編集セッションをテストしてください。ヘルスチェックは、別のモニターに置き換えられるまで維持してください。

HTTPS検出と実際の編集セッションを確認する

https://office.example.com/hosting/discoveryブラウザまたはを使用してリクエストしてcurlください。HTTPS 経由で WOPI 検出 XML が返され、URL には公開 HTTPS ホスト名が使用されます。証明書の警告はホスト名または証明書の問題を示唆します。HTTP URL は TLS モードまたは転送スキームの不一致を示唆します。502 はプロキシが CODE に到達できないことを示唆します。

次に、接続された WOPI ホストからテスト ドキュメントを開き、編集が機能することを確認します。ブラウザの開発者ツールでは、/cool/.../wsリクエストによって WebSocket 接続が確立されるはずです。検出は機能するものの編集が停止する場合は、WebSocket の場所とヘッダーを確認してください。統合が WOPI ホストを許可し、 を指していることを確認しますhttps://office.example.com。

設定が成功しました。証明書は信頼され、検出にはHTTPSが使用され、ポート9980はプライベートのままで、テストドキュメントがWebSocket経由で開いて編集できます。

コメントを残す

Collabora CODEをTLS終端処理付きでNginxの背後で実行する

Collabora CODEをTLS終端処理付きでNginxの背後で実行する

Collabora CODEコンテナのHTTPSをNginxに任せ、WebSocketのフォワード編集を正しく行い、ポート9980を公開せずにパブリックエンドポイントを検証します。

Collaboraモバイルキーボードを開いたときにテキストを表示したままにする

Collaboraモバイルキーボードを開いたときにテキストを表示したままにする

Collabora Onlineでモバイルブラウザのキーボードがテキストを覆い隠してしまう問題のトラブルシューティング。ブラウザ、埋め込みWebView、ホストページそれぞれについて、迅速な回避策と個別のチェック方法を紹介します。

ONLYOFFICEで不要な印刷とダウンロードを停止する

ONLYOFFICEで不要な印刷とダウンロードを停止する

ONLYOFFICEリンク、会議室メンバー、またはDocs APIセッションに対して印刷とダウンロードの制限を設定し、受信者アカウントから制限内容を確認します。

ONLYOFFICE Workspaceの信頼性の高いバックアップをスケジュールする

ONLYOFFICE Workspaceの信頼性の高いバックアップをスケジュールする

ONLYOFFICE Workspaceでバックアップ先、スケジュール、メールのカバー範囲、および保持期間を設定し、アーカイブが復元できる状態になっていることを確認してください。

ONLYOFFICE Docs Enterpriseを公式のComposeファイルと共に展開する

ONLYOFFICE Docs Enterpriseを公式のComposeファイルと共に展開する

Enterprise Docker Composeスタックを起動し、ライセンスとデータを永続化し、JWTを安全に設定し、エディターが統合準備完了であることを確認します。

再利用可能なONLYOFFICEマクロでスプレッドシートのテキストをクリーンアップする

再利用可能なONLYOFFICEマクロでスプレッドシートのテキストをクリーンアップする

ONLYOFFICEのJavaScriptマクロを使用して、指定したスプレッドシート範囲から印刷されない文字を削除し、余分なスペースをトリミングします。安全なレビューワークフローも利用可能です。

ONLYOFFICEワークスペースのデフォルトの保存場所を変更する

ONLYOFFICEワークスペースのデフォルトの保存場所を変更する

ポータルデータをディスクデフォルトからサポートされているクラウドストレージプロバイダーに移動するか、ホストボリュームマッピングを変更してDockerデータを安全に移動します。

LinuxからONLYOFFICE Document Serverを完全に削除する

LinuxからONLYOFFICE Document Serverを完全に削除する

ドキュメントサーバーがLinuxパッケージを使用しているかDockerを使用しているかを特定し、そのコンポーネントのみを削除し、共有サービスを誤って削除することなく残りのデータを確認します。

ONLYOFFICEの共同編集の遅延を解消するために、ボトルネックを見つけましょう

ONLYOFFICEの共同編集の遅延を解消するために、ボトルネックを見つけましょう

共同編集の速度低下の原因を、Dockerリソースの負荷、プロキシ接続、またはドキュメントの読み込み状況から特定し、測定結果に合致する解決策を選択してください。

Docker 内の ONLYOFFICE Docs の HTTPS を設定する

Docker 内の ONLYOFFICE Docs の HTTPS を設定する

TLSの終端場所を選択し、信頼できる証明書と秘密鍵を安全にマウントし、Dockerコンテナ化されたONLYOFFICE DocsサーバーへのHTTPSアクセスを検証します。