Nextcloud の Client Push を AlmaLinux 9 + OpenLiteSpeed の環境に設定する

Nextcloud Enterprise Linux 9
このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。
スポンサーリンク

AlmaLinux 9 + OpenLiteSpeed 上に構築した Nextcloud をバージョン 32 にアップデートしたところ、Client Push がインストールされていないというエラーが出るようになりました。

Client Push

Client Push is not installed, this might lead to performance issues when using desktop clients.

Client Push は、デスクトップアプリにプッシュ更新のサポートをする HPB(High Performance Backend)です。

Client Push が導入されていない環境で、接続するデスクトップクライアントの数が多い場合、サーバーの負荷が大きくなる可能性があります。また、ファイルの変更には一定の遅延が発生してしまいます。

今回はこの Client Push を設定していきます。

環境

  • OS: AlmaLinux release 9.6 (Sage Margay)
  • ウェブサーバー: OpenLiteSpeed 1.8.4
  • Nextcloud: Hub 10(31.0.10)⇒ Hub 25 Autumn(32.0.1)
    • ドメイン直下ではなく、サブディレクトリ運用
    • Docker コンテナの All-in-One ではなく、個別にセットアップ
  • ホスティング: ConoHa VPS(メモリ 2GB)
ConoHa VPS

Client Push のセットアップ

Client Push は、Nextcloud OfficeDeck などのアプリをブラウザから使う際に、フォーカスが意図せず移動するなどの不具合があるようです。

これらのアプリを使う場合は、事前に Client Push を導入する必要があるか検討したほうが良いでしょう。

When the app is active, it affects "Deck" and "Nextcloud Office" in the frontend · Issue #580 · nextcloud/notify_push
How to use GitHub Please use the 👍 reaction to show that you are affected by the same issue. Please don't comment if you...

※私は Nextcloud Office を使っていないため未検証です。Deck についてはアプリをインストールして軽く触ってみましたが、特に問題は発生しませんでした。

Redis のインストール

Redis が必要になりますので、まだ導入されていない方は下記を参考にしてください。

Client Push アプリのインストール

Nextcloud に管理者でログインし、アプリ > ツール から Client Pushダウンロードして有効にします。

Client Push のバージョン 1.2.1 がインストールされました。

クイックセットアップ

GitHub - nextcloud/notify_push: Update notifications for nextcloud clients
Update notifications for nextcloud clients. Contribute to nextcloud/notify_push development by creating an account on Gi...

OLS なので無理そうだと予想しつつクイックセットアップを試みましたが、案の定エラーになりました。

公式ページ を参考にマニュアルでセットアップしていきます。

systemd の作成

/etc/systemd/system/notify_push.service を作成します。

参考にしたページは Nginx 用の設定だったので、サービスとユーザーを OLS 用に修正して作成しました。

notify_push サービスを起動して、自動起動も設定しておきます。

OpenLiteSpeed の設定

予想以上に沼にハマったので、駄目だった方法も含めて共有します。

Web Socket Proxy を追加(NG)

OLS 管理画面にログインし、バーチャルホスト > (ドメイン名) > Web Socket Proxy と辿り、下記を追加しました。

  • URI:/nextcloud/push
  • アドレス:127.0.0.1:7867

occ notify_push:setup を実行したところ、HTTP でプッシュサーバーに到達できないようです。

作成した Web Socket Proxy は削除して、別の方法を探りました。

Rewrite ルールにプッシュサーバーを指定(NG)

OLS 管理画面で、バーチャルホスト > (ドメイン名) > Rewrite の「Rewrite ルール」に下記の設定を追加しましたが、この方法でもうまくいきませんでした。(エラー内容は Web Socket Proxy の時と同じ)

外部アプリとしてプッシュサーバーを指定(一部 OK)

先に外部アプリとしてプッシュサーバーを登録し、その外部アプリの名前で設定したところ、HTTP の転送はできるようになりました。

occ notify_push:setup を実行しましたが、プッシュサーバーが Nextcloud の trusted proxy に設定されていないというエラーになりました。

Nextcloud の設定ファイルを修正

エラーメッセージに従って Nextcloud の設定ファイル(/usr/share/nextcloud/config/config.php)の trusted_proxies に、サーバーのグローバル IP アドレスを追加。

再び occ notify_push:setup を実行すると、全てパスする事ができました。

テストクライアントで確認

Client Push 用のテストクライアントが用意されていますので、Windows 用のクライアント(test_client-x86_64-pc-windows-gnu.exe)をダウンロードしました。

Release v1.2.1 ?? nextcloud/notify_push
What's ChangedAdd soft dependencies to systemd service by @JustArchi in #649docs(readme): mention METRICS_SOCKET_PATH en...

Windows 側でコマンドプロンプトを起動し、テストクライアントを実行したところ、今度は WebSocket が到達できずにエラーになりました。

Rewrite ルールの修正(OK)

公式サイトの Apache の設定例 のように、/push/ws(WebSocket)と /push(HTTP)を分けることで上手くいきました。

HTTP には外部アプリ名で指定する必要があるのに、WebSocket ではループバックアドレスを指定する必要がある(外部アプリ名で指定すると NG)ので、その点に注意してください。

テストクライアントで確認

Authenticated となったので、無事に設定完了です。

その他のセットアップ警告

Nextcloud Hub 25 Autumn (32.0.1) にアップデートした際に出た Client Push 以外のセットアップ警告についても対処していきます。

AppAPI デプロイデーモン

AppAPI デプロイデーモンについては利用する予定がないので、アクティブなアプリから「AppAPI」を無効にすることで解消しました。

Mimetype の移行が可能

説明の通り、Mimetype のマイグレーションを行います。

OpenLiteSpeed なので、nobody の権限で LSPHP を使ってコマンドを実行しました。

データベースに存在しないインデックス

先程と同様に、新しいインデックスを追加します。


以上で、Nextcloud Hub 25 Autumn (32.0.1) にアップデートした際のセットアップ警告を全て潰すことができました。

ConoHa VPS

コメント

タイトルとURLをコピーしました