サーバ上でOffice環境をセルフホストして、Microsoft 365のような環境を構築するとWordやExcelのファイルを扱うのにかなり便利になるので、この構築手順を簡単に紹介します。ここではUbuntu上にONLYOFFICE Docsをインストールする手順で説明します。互換性も高く、かなり実用になると思います。バージョンはそれぞれ下記です。
サーバ:Ubuntu 25.10
Office:ONLYOFFICE Docs 9.3
1. データの保存先ディレクトリ作成
まずはONLYOFFICE用の必要なフォルダを作成していきます。再起動してもドキュメントや設定が消えないよう、ホストOS側に保存領域を作成します。
また、ONLYOFFICE Docs自体はサーバ上でOffice機能を提供するだけでファイル管理は行わないため、実際に運用するにはNextcloudなどと連携する必要があります。Nextcloudと同じサーバで実行することを想定し、あらかじめ共有ネットワークも作成しておきます。
# 共有ネットワーク作成
docker network create onlyoffice_net
# 保存用ディレクトリをまとめて作成
mkdir -p ~/onlyoffice/logs ~/onlyoffice/data ~/onlyoffice/lib ~/onlyoffice/db
2. コンテナの起動(JWTキー固定)
セキュリティ用の「合言葉(JWT)」を固定して起動します。これにより、再起動のたびにNextcloudとの連携が切れるのを防ぎます。 ※以下の my_stable_secret_2026 は好きな文字列に変更可能です。
docker run -i -t -d -p 80:80 --restart=always --name onlyoffice-docs \
--network onlyoffice_net \
-e JWT_ENABLED=true \
-e JWT_SECRET=my_stable_secret_2026 \
-v ~/onlyoffice/logs:/var/log/onlyoffice \
-v ~/onlyoffice/data:/var/www/onlyoffice/Data \
-v ~/onlyoffice/lib:/var/lib/onlyoffice \
-v ~/onlyoffice/db:/var/lib/postgresql \
onlyoffice/documentserver:latest
まずはONLYOFFICE Docが無事インストール出来たか確認してみましょう。
「http://ホスト名またはIPアドレス」にアクセスします。

端末で下記コードを実施して、下のほうに表示されている「Start test example:」のコードを端末で実行し、その下にある「GO TO TEST EXAMPLE」 のリンクをクリックします。するとデモサイトが開くはずです。日本語表示にお変更出来るので、変更して動作を試してみましょう。

けっこうサクサク動作すると思います。

3. Nextcloud側での連携設定
Nextcloudで右上のユーザーアイコンをクリックし、「アプリ」メニューから「Only Office」を選択します。

次は「管理者設定」の「ONLYOFFICE」を開き、以下を入力します。
- Document Editing Service address:
http://<サーバーのIPアドレス>/ - Secret Key (シークレットキー):
my_stable_secret_2026(手順2で指定したもの)

もしここで接続エラーが出るようなら、ローカル通信を許可するコマンドを実施します。実施後、再度Nextcloudのトップページからアクセスして、連携してみてください。
docker exec --user www-data nextcloud-app-1 php occ config:system:set allow_local_remote_servers --value true --type bool
無事連携ができたら、ファイルメニューからOfficeファイルを開いたり、新規作成でOfficeファイルを作成出来るはずです。


ちなみにHTTPで運用している間は証明書検証そのものが発生しないため設定不要です。 将来HTTPS化した際に自己署名証明書を使う場合のみ必要になります。Let’s Encryptなど正規の証明書であれば、HTTPS化後も不要です。
# HTTPSかつ自己署名証明書を使う場合のみ必要(今は設定しない)
# sudo -u www-data php /var/www/nextcloud/occ config:system:set onlyoffice --value '{"verify_peer_off":true}' --type json
