【OnlyOffice】リバースプロキシ + Dockerを使ったインストールと初期設定(Nextcloudとの連携)

2024-02-10

前提条件

ストレージ容量を消費するため自宅サーバーで稼働(Docker Engineはインストール済み)。

VPSのYunohostでリバースプロキシ(SSL終端)

参考サイト(OnlyOffice for Docker)

導入手順

docker-compose.ymlの作成

version: '3'

services:
  OnlyOffice:
    restart: always
    image: onlyoffice/documentserver
    container_name: oo-documentserver

    # Secretキーの固定はできなかったのでコメント化
    #environment:
    #  - JWT_ENABLED=true
    #  - JWT_SECRET=Rtnl2pEQ0QWZRsvwvDVFQQuCETYodmPZ
    ports:
      - 50080:80
      - 50443:443
    #volumes:
    #  - ./local.json:/etc/onlyoffice/documentserver/local.json

リバースプロキシの構成(nginxの設定ファイル)

redirectアプリの設定では動作しなかったので、yunohostアプリのOnlyOfficeから構成をコピーしています。

ドメインの設定、証明書の取得が終わってからの作業です。

#sub_path_only rewrite ^/$ / permanent;
location / {
  proxy_pass        http://自宅サーバーのIPアドレス:ポート番号;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  #proxy_set_header Connection $proxy_connection;
  proxy_set_header Connection "upgrade";
  proxy_set_header  X-Forwarded-Host $server_name;
  proxy_set_header  X-Forwarded-Proto $scheme;
  proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_redirect    off;
  proxy_set_header  Host $host;
  proxy_set_header  X-Real-IP $remote_addr;

  more_set_headers "X-Frame-Options : ALLOW-FROM https://Nextcloudをインストールしているドメイン名 always";

  client_max_body_size 10G;
}

注意点

OnlyOffice、Nextcloudのどちらも認証不要でアクセス(ログインでは無く)できる必要があります(basic認証等が必要な場合は、Nextcloud → OnlyOfficeへのアクセスや、Nextcloudで保存ができなくなります)。

コンテナを再起動するとsecretキーが変わるのでNextcloud側もシークレットキーの変更が必要になります。

備考

物理サーバーが同じでも、ドメインが別の場合は(バーチャルホスト設定)NextcloudとOnlyOfficeのどちらもインストールできます。

RedmineでもプラグインのインストールでOfficeファイルの編集ができます(その際、more_set_headers “X-Frame-Options : ALLOW-FROM https://Nextcloudをインストールしているドメイン名 always";にredmineのドメイン名の記載が必要?かもしれません)。