Collabora CODE Dockerでカスタムフォントを利用できるようにする
フォントファイルをDockerとCollaboraのシステムプレートにマウントすることで、カスタムフォントがエディタに表示され、ドキュメント内で正しくレンダリングされるようになります。
Docker で実行されている Collabora Online CODE でカスタムフォントをレンダリングするには、フォントファイルをホスト上に保持し、同じディレクトリをコンテナのシステムフォントディレクトリとドキュメントシステムプレートの両方にマウントします。システムプレートは分離されたドキュメントプロセスにファイルを提供します。フォントを 1 つだけにマウントすると、/usr/share/fontsフォントメニューにフォントファミリーが表示されても、ドキュメントにレンダリングされない場合があります。このガイドでは、Docker Compose と現在の CODE イメージパスを使用しています/opt/cool/systemplate。別のイメージ行を使用する場合は、パスを確認してください。

読み取り専用のバインドマウントは、通常、単一のDockerホストに対して最も簡単なオプションです。CODEコンテナの再作成やアップグレード時にフォントファイルが保持され、コンテナが読み取れるファイルを正確に確認できます。サーバーにインストールおよび再配布する権限のあるフォントファイルを使用してください。ライセンスを確認し、必要なファイルである場合を除き、デスクトップシステムのフォントディレクトリ全体をコピーしないでください。
ご使用の環境でサポートされている形式(一般的には TrueType ( .ttf) または OpenType ( .otf))の非圧縮フォントファイルを使用してください。標準、太字、斜体、太字斜体など、ドキュメントに必要なスタイルを含めてください。ファミリー名とファイル名は明確にし、コンテナユーザーがすべてのディレクトリとファイルを読み取れるようにしてください。スタイルが 1 つしか含まれていないフォントを使用すると、ドキュメントで太字または斜体が要求されたときに Collabora が別のフォントに置き換える可能性があります。
まず、専用のホストディレクトリを作成し、承認済みのファイルをそこにコピーします。
sudo mkdir -p /srv/collabora/fonts
sudo cp BrandSans-Regular.ttf BrandSans-Bold.ttf /srv/collabora/fonts/
sudo chmod -R a+rX /srv/collabora/fonts
サンプルファイル名を実際のフォントファイル名に置き換えてください。現在のイメージではCODEプロセスが非特権アカウントで実行されるため、読み取り権限が重要になります。ディレクトリパスは変更しないでください。Composeのバインドマウントはこのパスを参照します。
既存のcollaboraサービスにdocker-compose.yml、以下のボリュームエントリを追加してください。既存のイメージ、ポート、ドメイン許可リスト、SSL設定、シークレット、再起動ポリシーはそのまま保持してください。以下のスニペットはフォントのマウントのみを示しています。

services:
collabora:
volumes:
- /srv/collabora/fonts:/usr/share/fonts/truetype/more:ro
- /srv/collabora/fonts:/opt/cool/systemplate/usr/share/fonts/truetype/more:ro
最初のターゲットは、コンテナの通常のフォント検出でフォントを利用できるようにします。2番目のターゲットは、分離されたドキュメント環境を準備するために使用されるテンプレート内にフォントを配置します。CollaboraのSDKマニュアルには、Docker用のこの2つの場所へのボリュームパターンが記載されています。/usr/share/fontsシステムプレートディレクトリ全体をマウントしないでください。イメージによって既に提供されているフォントが隠されてしまう可能性があります。
システムテンプレートのパスはバージョンに依存します。現在のCODE 26.04イメージのメタデータでは/opt/cool/systemplate、システムテンプレートのパスとして指定されており、Collaboraの最新ドキュメントでもその場所が使用されています。古いイメージやベンダー固有のビルドを使用する場合は、ターゲットパスを編集する前に、そのイメージのドキュメントまたは起動構成を確認してください。
Compose ファイルを保存し、フォント ファイルをホストに配置した後、CODE サービスを再作成して、Docker がバインド マウントを適用するようにします。

docker compose up -d --force-recreate collabora
docker compose exec -T collabora fc-list
出力結果から、フォントファミリー名またはマウントされたファイルパスを探してください。リストを絞り込むには、grepフォント自体が報告するファミリー名をパイプで渡します。例:
docker compose exec -T collabora fc-list | grep -i "Brand Sans"
コマンドが一致する結果を報告しない場合は、ホスト パス、ファイル権限、マウント インデント、およびコンテナ ログを確認してください。docker inspect実行中のコンテナで有効なマウントを検査するか、docker compose configYAML のインデントエラーを検出するためにを使用できます。docker compose downボリュームの変更を適用するためだけにを実行する必要は通常ありません。サービスを再作成するだけで十分です。

通常の Nextcloud または WOPI 連携機能を使用してテスト文書を開き、短いテキストサンプルを選択して、フォントピッカーからカスタムファミリーを選択します。そのフォントで新しい行を入力し、保存して閉じ、再度ファイルを開きます。通常のテキストと太字のテキストを確認し、改行やページレイアウトを元の文書と比較します。メニューにファミリーが表示されるのは検出チェックに過ぎません。再度開いた後にテキストが表示されることが、実際のレンダリングチェックとなります。
fc-list出力とコンテナの起動ログを調べてください。バインドマウントを使用すると、フォントはCODEイメージから独立しますが、すべてのクライアントまたはすべてのドキュメントでレイアウトが同一になることは保証されません。フォントの置換、グリフの欠落、フォントバージョンの違い、およびドキュメント固有の書式設定によって、行の折り返しが変わる可能性があります。詳細な設定については、Collaboraのフォントインストールに関するドキュメント、CODE Dockerイメージガイド、およびCollabora Online SDKマニュアルを参照してください。CODEのバージョンを変更する場合は、マニュアルのDockerサンプルと最新のイメージに関するドキュメントを再度確認してください。
フォントファイルをDockerとCollaboraのシステムプレートにマウントすることで、カスタムフォントがエディタに表示され、ドキュメント内で正しくレンダリングされるようになります。
coolwsd.xmlとそのデプロイメントソースをバックアップし、安全に復元してから、ユーザーが編集を再開する前にCODEを検証してください。
CODE内でNextcloudまたはその他のWOPIオリジンを正確に許可し、アクティブなホスト許可リストを確認して、Nextcloudの送信元IP制限と区別します。
Collaboraのブラウザ、WOPI、およびWebSocket接続をトレースして、ドキュメントが開かない理由を特定し、Nextcloudの設定に合った修正を適用してください。
Helmを使用してCollabora CODEレプリカをデプロイし、WOPIアフィニティによって各ドキュメントを1つのポッドに保持し、イングレス、ノード配置、およびNextcloud編集を検証します。
ブラウザからcoolwsdまでのソケットハンドシェイクの失敗を追跡し、CODE 26.04 Apacheの変更を含め、リバースプロキシのルートをCollaboraのバージョンに一致させます。
Collabora WOPI 認証の失敗を、鍵の不一致、古い検出データ、クロックのずれ、プロキシ URL の変更などが原因で発生する場合でも、検証の信頼性を損なうことなく追跡できます。
ブラウザのズームをリセットし、クリーンなセッションをテストし、サイズが不正なメニューにCollaboraサーバーのアップデートが必要なタイミングを特定します。
Collabora CODEをDockerでデプロイし、Nextcloud Officeに安全に接続し、実用的なWOPIおよびプロキシチェックでドキュメント編集を検証します。
一時的にcoolwsdをデバッグモードに上げ、オープンに失敗したログを1つキャプチャし、ログシーケンスを使用してWebSocket、WOPI、プロキシ、およびコンテナの問題を分離します。