CODE Dockerを使ってNextcloud Officeを10分でセットアップする方法

2026年版の最新情報: Nextcloud 35のドキュメントでは、Euro-Officeを基盤とするNextcloud Officeと、引き続きサポート対象であり、公式のCODE Dockerイメージを使用してセルフホスト可能なCollabora Onlineが分離されています。このガイドでは、外部のCollabora/CODEパスを使用します。古いガイドでは、CODEが「Nextcloud Office」の背後にある唯一のサーバーであるかのように説明されていることが多いため、この名称は重要です。古いリリース向けに書かれた手順を適用する前に、最新のNextcloud Officeの概要を参照してください。

Nextcloudサイトが既にHTTPSで動作しており、Dockerがインストールされ、Collabora用のDNS名(例:office.example.comready for Collabora)が設定されている場合、統合自体は約10分で完了します。DNS伝播、証明書の発行、ファイアウォールの変更、リバースプロキシのトラブルシューティングにはさらに時間がかかる場合があり、上記の所要時間には含まれていません。

始める前に必要なもの

高速な手順では、既存のNextcloudインスタンス1つ、Dockerを実行できるLinuxホスト1つ、およびCODE専用のHTTPSホスト名が必要です。Nextcloudの現在のDockerの例では、別のサブドメインと有効なTLS証明書の使用を推奨しています。CODEは内部的にポート9980でリッスンし、リバースプロキシによってブラウザとNextcloudに安全に公開されます。

  • 次のような URL でアクセスできる、動作中の Nextcloud サーバーhttps://cloud.example.com。
  • CODEを実行するホスト上のDocker Engine。
  • office.example.comリバースプロキシを指すようなDNSレコード。
  • オフィスホスト名に対応する有効なHTTPS証明書。
  • Nextcloudへの管理者権限、およびDockerホストへのrootまたはsudo権限が必要です。

Nextcloudの現在のインストール手順書によると、組み込みのCODEサーバーは個人または小規模チームでの使用には最適ですが、パフォーマンス向上のためには専用のCollabora Onlineのインストールを推奨しています。以下で使用するイメージは、Docker Hubにある公式のcollabora/codeイメージです。

ターミナルウィンドウにDockerのバージョン出力と、公式のcollabora/codeイメージがプルされている様子が表示されます。
まずDockerの動作確認を行い、その後公式のCollabora CODEイメージをプルしてください。表示されているDockerのバージョンはあくまで例示です。ご使用のホストで現在サポートされているDockerリリースを使用してください。

ステップ1:CODE Dockerイメージをプルする

Dockerホスト上で、Dockerが利用可能であることを確認し、公式イメージをプルします。

docker --version
docker pull collabora/code:latest

Collaboraは頻繁にアップデートを公開するため、このlatestタグは簡単なセットアップガイドには便利です。本番環境では、テスト済みの特定のバージョンを固定し、再構築中に予期せぬイメージ変更が発生するのを防ぐため、計画的なアップグレードをスケジュールすることをお勧めします。

ステップ2:NextcloudホストでCODEを起動する

現在の Nextcloud Docker の例では、aliasgroup1CODE に対してどの Nextcloud ホストとの統合を許可するかを伝えるために使用します。例のホスト名を実際の Nextcloud URL に置き換えてください。

docker run -t -d   --name collabora-code   -p 127.0.0.1:9980:9980   -e 'aliasgroup1=https://cloud.example.com:443'   --restart always   --cap-add MKNOD   collabora/code:latest

バインディングを設定することで127.0.0.1、リバースプロキシが同じサーバー上で動作している場合、ポート9980がインターネットに直接公開されるのを防ぎます。プロキシが別のマシン上で動作している場合は、プロキシのみがCODEにアクセスできるようにネットワークルールを設計し、ポート9980を誰にでも公開しないようにしてください。

ローカルホストのポート9980で起動したCODEコンテナがdocker psコマンドで一覧表示されているターミナルウィンドウ。
同じホスト上のリバースプロキシがパブリックHTTPSエンドポイントを提供する場合、127.0.0.1:9980でCODEを実行します。

コンテナが実行されていることを確認してください。

docker ps --filter name=collabora-code
docker logs --tail 50 collabora-code

ステップ3:CODEの前にHTTPSとリバースプロキシを配置する

Nextcloud では、必要な Collabora パスとして/browser、/hosting/discovery、/hosting/capabilities、/cool/adminws、/cool、さらに WebSocket トラフィックを の下に記述しています/cool/.../ws。そのため、一般的な「WebSocket 以外のすべてをプロキシする」設定では、エディタが部分的に開いた後、切断されることがよくあります。

ブラウザ、ホスティング検出、機能、クール、およびWebSocketパスのリバースプロキシルートを表示する設定エディタ。
リバースプロキシは、Collaboraのブラウザ、ディスカバリ、機能、/cool、およびWebSocketエンドポイントを転送する必要があります。アップストリームプロトコルをCODEコンテナのSSLモードに一致させてください。

Nginxの場合、以下の簡潔な例ではCODEのデフォルトの内部HTTPSを維持し、Nginxで公開TLSを終端します。証明書のパスはご自身で設定してください。

server {
    listen 443 ssl http2;
    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 https://127.0.0.1:9980; proxy_set_header Host $host; proxy_ssl_verify off; }
    location ^~ /hosting/discovery { proxy_pass https://127.0.0.1:9980; proxy_set_header Host $host; proxy_ssl_verify off; }
    location ^~ /hosting/capabilities { proxy_pass https://127.0.0.1:9980; proxy_set_header Host $host; proxy_ssl_verify off; }
    location ^~ /cool/adminws { proxy_pass https://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 $host; proxy_ssl_verify off; }
    location ~ ^/cool/(.*)/ws$ { proxy_pass https://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 $host; proxy_ssl_verify off; }
    location ^~ /cool { proxy_pass https://127.0.0.1:9980; proxy_set_header Host $host; proxy_ssl_verify off; }
}

これは意図的に最小限のルーティング例を示しており、Nginxのセキュリティ基準を完全に網羅したものではありません。代わりに内部TLSを無効にしてCODEを実行する場合、アップストリームはとなりhttp://127.0.0.1:9980、コンテナは一貫性のある構成にする必要があります。HTTPプロキシターゲットと、HTTPSを期待するCODEコンテナを混在させないでください。

ステップ4:公開されているCODEエンドポイントを確認する

Nextcloudの設定を変更する前に、ブラウザで次のURLを開いてください。

https://office.example.com/hosting/discovery
ブラウザに、office.example.comがホストするディスカバリからのWOPIディスカバリXMLレスポンスが表示されています。
/hosting/discovery からの有効な応答は、公開されている CODE エンドポイントとリバースプロキシが応答していることを迅速に確認する方法です。

プロキシエラー、証明書警告、または接続失敗ではなく、WOPI検出XMLを受信するはずです。コマンドラインからもテストできます。

curl -fsS https://office.example.com/hosting/discovery | head

これがうまくいかない場合は、まずDNS、TLS、プロキシ、またはコンテナを修正してください。Nextcloudを破損したエンドポイントに接続すると、トラブルシューティングの手順がさらに複雑になります。

ステップ5:Nextcloudオフィス統合を有効にする

管理者として Nextcloud にサインインし、[アプリ]を開いて[オフィスとテキスト]に移動し、インストールで使用可能なオフィス統合アプリを有効にします。Nextcloud 35 の概要では Euro-Office と Collabora の製品が区別されるようになりましたが、現在の Nextcloud Collabora Docker の例では、管理者に「Nextcloud Office」アプリをインストールし、Office 管理設定で外部サーバーを構成するように指示しています。

Nextcloud Officeが有効になっている、オフィスとテキストカテゴリのNextcloudアプリページ。
外部CODEサーバーのアドレスを入力する前に、Nextcloudでオフィス連携アプリを有効にしてください。

Nextcloudのリリースで使用されているラベルが若干異なる場合は、古いスクリーンショットと完全に一致すると想定するのではなく、ご自身の管理インターフェースに表示されている製品名に従ってください。

ステップ6:Nextcloudを外部CODEサーバーに向ける

管理設定 → Office を開きます。外部 Collabora/Office サーバーオプションを選択し、以下を入力します。

https://office.example.com
Nextcloud Officeの管理画面に、外部のCollabora OnlineサーバーのURL入力欄と、接続成功を示すインジケーターが表示されている。
プロキシに接続可能になった後、Office管理ページに外部CollaboraのURLを入力します。

設定を保存し、Nextcloudの接続チェックが完了するまでお待ちください。Nextcloudは、両側で同じプロトコルを使用することを推奨しており、HTTPSが推奨されます。チェックが成功したということは、NextcloudがCollaboraエンドポイントに到達できることを意味しますが、実際の編集セッション中にすべてのブラウザのWebSocketルートとWOPIリクエストが正常に動作することを保証するものではありません。

ステップ7:WOPIリクエストを制限する

基本的な接続が確立したら、WOPIの設定を強化してください。Nextcloudの最新の設定ガイドでは、WOPIリクエストをファイルを要求すると予想されるCollaboraサーバーのIPアドレスに制限することを強く推奨しています。管理設定 → オフィスで、利用可能な場合は「WOPIリクエストの許可リスト」フィールドを使用してください。

Nextcloud Officeの管理ページに、CollaboraサーバーのURL、接続成功ステータス、およびWOPI許可リストフィールドが表示されています。
接続が成功したら、WOPIの許可リストを確認し、想定されるCollaboraサーバーのアドレスのみがファイルを要求できるようにしてください。

これは重要なセキュリティ制御です。なぜなら、WOPIフローはCollaboraがNextcloudユーザーに代わってドキュメントを取得および書き込む方法だからです。デプロイメントで必要とされるCODEサーバーパスを実際に表すIPアドレスまたはネットワークを使用してください。サーバーのURLフィールドに似ているからといって、ホスト名をIP許可リストフィールドに貼り付けないでください。最新のオプションについては、 NextcloudのCollabora構成およびWOPIに関するガイダンスを参照してください。

ステップ8:実際のドキュメントを開き、保存を確認します。

Nextcloudで小さなODTまたはDOCXファイルを作成し、それを開いて文章を入力し、エディタを閉じて、再度ファイルを開きます。これにより、ブラウザ → 公開コードホスト名 → リバースプロキシ → コード → NextcloudへのWOPIリクエスト → ストレージへの保存、という一連の流れ全体がチェックされます。

Nextcloud内でブラウザベースのCollaboraドキュメントエディタが開き、サンプルプロジェクト計画書が表示されます。
最後のテストは実践的なものです。ドキュメントを作成または開き、エディタが読み込まれ、変更が受け入れられ、Nextcloudに保存されることを確認してください。

Office の設定ページでサーバーに接続可能と表示されたからといって、セットアップが完了したわけではありません。正常な状態とは、接続警告なしでエディターが起動し、ドキュメントを編集でき、保存した変更が再度開いた後も保持される状態です。エディターのシェルは起動するものの編集が切断される場合は、まず/cool/.../wsWebSocket ルートを確認してください。エディターがファイルを全く読み込めない場合は、CODE ログ、Nextcloud ログ、両サーバー間の DNS 解決、および WOPI の許可リストルールを確認してください。

簡単なトラブルシューティングチェックリスト

症状まずチェック
Nextcloudによると、オフィスサーバーにアクセスできないとのことです。/hosting/discoveryNextcloudホストからHTTPS経由で開きます。
ブラウザが502または504エラーを受け取るコンテナが実行されており、プロキシがアクセスできることを確認してください127.0.0.1:9980。
エディタが起動した後、接続が切断されるWebSocketアップグレードヘッダーと/cool/(...)/wsルートを確認してください。
証明書エラー公開証明書チェーンを修正し、設定されているURLが正しいホスト名を使用していることを確認してください。
WOPIへのアクセスが拒否されましたNextcloudのWOPI許可リストとCODEのNextcloudホスト許可設定を確認してください。
あるネットワークでは動作するが、別のネットワークでは動作しない分割DNS、ファイアウォールルール、およびNextcloudとCODEが互いのパブリック名を解決できるかどうかを確認してください。

アップグレードを予期せぬ事態にすることなく、CODEを常に最新の状態に保ちましょう。

CollaboraはCODEのアップデートを頻繁に公開しています。公式のDocker Hubページには、現在もメンテナンスされているタグが表示されており、Nextcloudのアップグレードガイドによると、Dockerデプロイメントは新しいイメージをプルしてコンテナを再作成することで更新されます。ホームサーバーであれば、追跡はlatest妥当な範囲でしょう。ビジネス用途の場合は、テスト済みのタグを固定し、リリースノートを読み、設定をバックアップしてから、メンテナンス期間中にアップグレードすることをお勧めします。

また、CODE の範囲にも留意してください。Docker Hub では CODE は家庭ユーザー向けの開発版と説明されていますが、Nextcloud のドキュメントでは、より大規模な環境や信頼性が重視される環境については、サポートされているエンタープライズ向けオプションを推奨しています。10 分で完了する Docker のセットアップは、個人用クラウド、ラボ、小規模チームには最適ですが、キャパシティプランニング、監視、バックアップ、エンタープライズサポートの代替にはなりません。

最終結果

コンテナが起動し、HTTPSプロキシが正しく動作し、/hosting/discovery応答があり、Nextcloud統合が を指しhttps://office.example.com、WOPIが制限され、実際のドキュメントが開いて保存されると、統合は完了です。最も重要なのはコマンドの数ではなく、ネットワークパスの一貫性を保つことです。Nextcloud、CODE、リバースプロキシ、およびユーザーのブラウザはすべて、正しいWebSocketおよびWOPIルートを使用して、期待されるHTTPSホスト名にアクセスできる必要があります。

コメントを残す

クライアントブラウザでのJitsi MeetにおけるCPU使用率の高さを修正する

クライアントブラウザでのJitsi MeetにおけるCPU使用率の高さを修正する

Jitsi MeetブラウザのCPUスパイクを診断し、ビデオタイル、カメラエフェクト、ブラウザグラフィック、ホスト設定をチェックすることで、クライアントの負荷を軽減します。

PrometheusとGrafanaを使用してJitsi Videobridgeのメトリクスを監視する方法

PrometheusとGrafanaを使用してJitsi Videobridgeのメトリクスを監視する方法

Jitsi Videobridgeに内蔵されたPrometheusエンドポイントを使用して、Jitsi Videobridgeの状態、会議の負荷、トラフィックを追跡し、Grafanaでデータを探索およびグラフ化できます。

Jitsi Meet Docker のカスタムドメイン名の設定方法

Jitsi Meet Docker のカスタムドメイン名の設定方法

Jitsi Meet Docker 用のカスタムドメインを、DNS、PUBLIC_URL、HTTPS、Let's Encrypt、ファイアウォールポート、NAT 設定、エンドツーエンド検証とともに構成します。

SSL更新後にZimbra管理コンソールで発生する404 Not Foundエラーを修正する

SSL更新後にZimbra管理コンソールで発生する404 Not Foundエラーを修正する

SSL更新後に発生するZimbra管理コンソールの404エラーを修正するには、正しいURLとポート、プロキシルーティング、サービスステータス、デプロイ済みの証明書、およびログを確認してください。

Nextcloudの「PHP OPcacheが正しく設定されていません」という警告を修正する

Nextcloudの「PHP OPcacheが正しく設定されていません」という警告を修正する

アクティブなPHP SAPI、サイズ制限、コメント、および再検証設定を確認することで、NextcloudのPHP OPcache構成警告を診断および修正する方法を学びましょう。

MySQLバージョンアップグレード後のKopanoデータベース移行エラーを修正する

MySQLバージョンアップグレード後のKopanoデータベース移行エラーを修正する

MySQLまたはMariaDBのアップグレード後にKopanoデータベースの移行が失敗した場合は、バックアップ、サーバーバージョン、SQLモード、文字セット、スキーマ状態、およびログを確認してトラブルシューティングを行います。

NextcloudでLDAPとActive Directory認証を設定する方法

NextcloudでLDAPとActive Directory認証を設定する方法

セキュアなトランスポート、ユーザーおよびグループフィルタ、ログイン属性、そしてテスト済みの展開機能を使用して、NextcloudをLDAPまたはActive Directoryに接続します。

GoogleサービスなしでElement Android通知を修正する方法:UnifiedPushガイド

GoogleサービスなしでElement Android通知を修正する方法:UnifiedPushガイド

UnifiedPush、Androidの権限設定、バッテリー設定、および信頼性の高い検証テストを設定することで、Googleサービスを削除した端末におけるElement Android通知の問題を修正します。

Nextcloudの「データベースに一部のインデックスが欠落しています」という警告を修正する

Nextcloudの「データベースに一部のインデックスが欠落しています」という警告を修正する

Nextcloudのデータベースインデックス不足警告を、公式のoccコマンドでクリアします。まずバックアップを作成し、変更内容をプレビューしてから修復を実行し、結果を確認してください。

Element WebでKeycloakを使用してシングルサインオン(SSO)を設定する方法

Element WebでKeycloakを使用してシングルサインオン(SSO)を設定する方法

Element Web 用の Keycloak SSO を設定するには、OIDC を Synapse に接続し、正確なコールバック URL を設定し、ユーザー クレームをマッピングし、ログアウトをテストします。