前提・実現したいこと
OnlyOfficeを起動するとブラウザのコンソールログにWSSエラーが残る。
WSSエラーを解決したい。
※OnlyOffice自体を操作している分には不具合は感じないのが救い。
発生している問題・エラーメッセージ
まずWebブラウザのコンソールログのエラー
wss://oo.my-svr.com/5.4.1-39//doc/2953792654/c/611/nuy3qftb/websocket のサーバーへの接続を確立できませんでした。 wss://oo.my-svr.com/5.4.1-39//spellchecker/doc/2953792654/c/473/v2slqv2j/websocket のサーバーへの接続を確立できませんでした。 Chromium系だとエラー番号400がつきます。
PLESK Onyxを使ってDockerを構築
コンテナを作る際、PLESKだと80ポート用、443ポート用の2つが強制的に作られる。
sudo docker run -i -t -d -p 880:80 -p 3443:443 onlyoffice/documentserver
当然ながら ドメイン:380ではコンテナにアクセスできますが、ドメイン:3443では接続を確立できません。
- Plesk内蔵のLet's Encryptを利用してサイトをSSL化しています。
- PleskにはDockerプロキシルールという設定があり、そこで80ポートで紐付けることができます。裏で自動的にnginx.confを書いているようです。
- PleskのDockerプロキシルール設定で443(3443)ポートを指定すると接続を確立できない。
OnlyOfficeを動かすサイトをoo.my-svr.comだとして、
アクセス可能 「Document Server is running」という成功表示がされます。
アクセス不可 接続拒否、接続を確立できない。
OnlyOfficeのフロントエンドとしてNextcloudを利用
Nextcloudではhttps://oo.my-svr.com指定が必須。
Docker構築参考サイトGithub
Dockerコンテナには上記を元に自己証明書を作っています。
サイト自体はLet's EncryptでSSL化ができていて、
80ポートでコンテナに繋がりOnlyOfficeに行く。
試したこと。
- コンテナ内にcrt, keyファイルを置いてコンテナ内で自己証明を設置。
- コンテナ内のnginx.confに証明書の場所を書いて、(コンテナ内)nginxをリスタート。
- 逆に証明書をローカルに設置。
- Firewallで380と3443を開放。
- VirtualBoxにCentOS7.7を入れてDockerが動くまで構築して検証。
- 公式マニュアルの通りに「docker run -i -t -d -p 443:443」でコンテナを作成しても、結局は同じ結果。コンテナ内に入りIPを調べhttps://172.xx.xx.xでもアクセス拒否。https://localhostも拒否。
- 外部からはcurl (35) で期限切れ。これらすべて本番と同じ結果です。コンテナに対しHTTPS接続して期限切れというのは普通なんでしょうか?
- 逆にコンテナ内に用意する自己証明書を無くして、指定ディレクトリも未設置・未設定。
→ これだと純粋にLet's Encryptの証明書がコンテナまで行くのか淡い期待。しかし全く変化無し。つまりは、コンテナに証明書は要らない??
- oo.my-svr.comのnginx.confに下記のようなプロキシ設定を書いても全く影響なし。
location .*/websocket$ { proxy_pass http://localhost:380; #またはproxy_pass http://localhost:3443; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }
補足情報(FW/ツールのバージョンなど)
- CentOS 7.7
- Docker 19.03.4
- Plesk Onyx 17.8.11
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。