はじめに
どうも!生産技術部のエンジニアです。GrowiとMattermostをひとつのサーバに同居させ、社内のプロキシ環境下で、Mattermost宛てのwebhookをしようとしたところ、うまく通知が飛ばない問題がありました。解決する方法を紹介します。
環境
※現在、Growiのバージョンは3.7.2が最新ですが、webhookの設定ができなかったため、バージョンを落としています。この問題についてはSlackにて連絡し、即座に修正いただきました。お忙しい中ありがとうございました。
fix notification setting can't update without slack token #1849
前提条件
Growiの導入が実施済みであること。プロキシ環境下で立ち上げる場合は以下を参考にしてください。
「プロキシ環境下でDocker Composeを用いてGrowiを立ち上げる」
ただし、以下の様にgrowiのバージョンを指定して導入しました。
# FROM weseek/growi:3
FROM weseek/growi:3.7.0
まず試したこと
mattermostの公式ドキュメントを参考にcurlコマンドを使って、webhookが正常に動作しているか確認しました。
1.growi,mattermost同居のサーバ⇒mattermostにcurlを実行
curl -i -X POST -H 'Content-Type: application/json' -d '{"text": "Hello, this
is some text\nThis is more text. :tada:"}' http://<サーバIP:ポート>/hooks/xxx-generatedkey-xxx
通知できず失敗
2.社内にある別PC⇒mattermostにcurlを実行
コマンドは1と同様。通知できず失敗。どうやらプロキシを使っているからうまく届いていない様だ。
3.プロキシを使用しないように設定し、curlを実行
curl --noproxy <サーバIP> -i -X POST -H 'Content-Type: application/json' -d '{"text": "Hello, this
is some text\nThis is more text. :tada:"}' http://<サーバIP:ポート>/hooks/xxx-generatedkey-xxx
--noproxyオプションを追加することで、growi,mattermost同居のサーバからでも、社内にある別PCからでも通知成功。あとは、growiにnoproxyを設定するだけ!
noproxyを設定し、growiからwebhookする
Dockerfileに環境変数を設定することで、解決します。
ENV http_proxy 'proxy.example.com:8888'
ENV https_proxy 'proxy.example.com:8888'
# 以下の行を追加
ENV no_proxy '<サーバIP>'
docker-composeでbuildし直し、動作確認すると、うまく通知が出来るようになりました。
最後に
これでwebhookも利用でき、必要な設定がある程度完了しました。これで運用が開始できます。
ただし、
社内では、growiでサポートされていないIEしか使わない人がほとんどなので、ここが一番の問題ですw みんなChromeに乗り換えてくれえええ