--> -->

skimemo


skimemo - 日記/2022-03-17/RocketChatのプライベートグループアイコンを任意の画像にする

_ RocketChatのプライベートグループアイコンを任意の画像にする

RocketChatはユーザーのアイコン(アバター)は任意に設定できますが、チャンネルやグループのアイコンは変更することができません。

e55f97p1.png

それを無理矢理サーバー側で置き換えてしまおう、というのが今回の趣旨です。

_ 条件

  1. RocketChatのサーバー管理者であること
  2. WEBサーバー(今回はApache)が表にあってリバースプロキシで接続されていること
  3. WEBサーバーのリバースプロキシ設定を変更できること

_ 方法

  1. 変更対象のavatarを特定する
    1. RocketChatにブラウザでアクセスします。(例: https://rocketchat.example.jp/
    2. F12で開発ツールを開き、エレメントピッカーで対象のアイコンを特定します。

      e1.png

      するとアバターのURLが分かります。(以下の場合は /avatar/%40developer

      e2.png

      このURLだけをApacheのrewirteで別のURLに飛ばしてやれば書き換えられます。

  2. WEBサーバー上に画像を置く
    1. RocketChatとは別のURL(例: https://rcavatar.example.jp/avatar/)上に対象の画像をアバターと同名で置きます。(上記の例では developer.png

  3. Apacheの設定に追加する
      1
      2
      3
      4
      5
      6
      7
    
    RewriteEngine On
    RewriteRule /avatar/@(developer|hoge|fuga)$  https://rcavatar.example.jp/avatar/$1.png [L]
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule /(.*)           ws://localhost:3000/$1 [P,L]
    RewriteCond %{HTTP:Upgrade} !=websocket [NC]
    RewriteRule /(.*)           http://localhost:3000/$1 [P,L]
    ProxyPassReverse / http://localhost:3000/
    2行目が追加された行で、それ以外は元からあったリバースプロキシ設定です。
    書き換えたい対象が増える毎にここも書き換える必要があります。
    毎回書き換えるのを避けたい場合は、ユーザー名とグループ名にそれぞれ命名規則を設ければ正規表現一発でいけると思います。

_ 蛇足

本当はRocketChatと同じURL上(https://rocketchat.example.jp/avatar/group/***)に置きたかったのですが、私の力では簡単にはできなさそうだったので、安易に別ドメインに置きました。
WEBサーバー側の設定に慣れた方ならもう少しスマートにできるかもしれません。

Category: [Linux] - 16:43:27



 
Last-modified: 2022-03-17 (木) 17:33:40 (827d)