Mattermostを外部ネットワークに公開したい方へ (IISを利用)


 Mattermost


この記事では以下の環境を想定しています。
・Windows Server 2019
・IIS 10


Mattermostを外部ネットワークで公開する方法については
そう珍しいものでもありませんが、

Windows Serverで実現するちょうどいい方法が見つからなかったので、
(いない気がしますが)後に続こうという方へむけてメモを残しておこうと思いました。

なお、大まかな設定については下記のMattermost公式の説明をご覧ください。
https://docs.mattermost.com/install/prod-windows-2012.html#install-windows-server-2012



■ダウンロード

さて、まずはEnterpriseエディションが下記からダウンロードできますのでどうぞ。
👉 https://releases.mattermost.com/5.15.0/mattermost-5.15.0-windows-amd64.zip (Ver 5.15.0) 👈


公にはTeamエディションのリンクしか紹介されていませんが
実はEnterpriseエディションもあったんですねー。

わざわざTeamエディションを利用する理由もないかと思いますので
こっちを使いましょう。


■IISの設定

お次はIISの設定です。
前提として、ローカルネットワーク上に下記URLでMattermostを動かしているとします。

http://localhost:8065/mattermost/



つまり、Config.jsonでこのように指定しているわけですね。
{
    "ServiceSettings": {
        "SiteURL": "http://localhost:8065/mattermost",
(~以降省略~)
※SiteURLに末尾スラッシュ(トレイリングスラッシュ)がない!と思うかもしれませんが、
これはこれでいいのです。
どうせ、Mattermost起動時に自動で取り除かれてしまいますので。。。


そしてあなたは下記のようなURLで
外部にMattermostを公開したいと考えていたとしましょう。

https://website.com/mattermost/


website.comはあなたの管理しているドメインと置き換えて考えてください。
サブドメインがついていてもいいですよ。

さて、あなたはMattermost公式の説明を途中まで読んで、
『IISのURL書き換えをちょちょっと利用すれば公開できるな!』
と思ったことでしょう。

私はここで躓きました。


大きな問題として、URL書き換え(及びリバースプロキシ)というものの存在について、
ここで初めて知ったんです。

正規表現がどうたら、インバウンド、アウトバウンドがどうたらと
迷いに迷って(5日間)、やっと編み出したURL書き換えの設定がこちらです。

web.configの中身をそのまま貼りだしますね。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="Add Trailing Slash Rule (website.com/mattermost)" enabled="true">
                    <match url="(.*[^/])$" />
                    <conditions>
                        <add input="{HTTP_HOST}" pattern="^website\.com$" />
                        <add input="{REQUEST_URI}" pattern="^/mattermost$" />
                        <add input="{REQUEST_FILENAME}" pattern="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" pattern="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="{R:1}/" />
                </rule>
                <rule name="Inbound Rule (website.com/mattermost/)" enabled="true">
                    <match url="^mattermost/(.*)" />
                    <conditions>
                        <add input="{HTTP_HOST}" pattern="^website\.com$" />
                    </conditions>
                    <action type="Rewrite" url="http://localhost:8065/mattermost/{R:1}" />
                </rule>
            </rules>
        </rewrite>
        <urlCompression doDynamicCompression="false" />
    </system.webServer>
</configuration>

これをそのまま、「Default Web Site」のURL書き換えに適用してください。

Web.configを差し替えるなり、上記の内容を眺めながらGUIでポチポチしてもいいです。
※もちろんですが、website.comはご自身で管理しているドメインで置き換えてくださいね!


Web.configについて補足しておくと、下記を実現しています。
・URLをトレイリングスラッシュありになるように書き換える。
・localhost:8065をドメイン名に書き換える(逆かな?)
・動的圧縮を無効化する (有効だとURL書き換えできなくなるらしいです。ほんとう??)


たったこれだけですが、メモは以上です。

残る問題としてはWindowsだとSendMailが使えないよーとかそのあたりでしょうか。
私もわからないので誰か教えて。。。。

コメント