https-portalをリバースプロキシとして使うMattermostの構築手順

弊社は社内でのコミュニケーションツールにMattermostを利用しています。今までは手動でSSL証明書を発行する必要があり、それを自動化するために先日、リバースプロキシとしてhttps-portalを実装しました。今日はその手順をまとめてみたいと思います。

前提として、Ubuntu 22.04サーバでDocker Composeを利用してMattermostが動いていることとします。

1.https-portalの設定。

以下のコマンドでhttps-portalのymlファイルを作成します。

vim docker-compose.https-portal.yml

ymlファイルの中身はこんな感じになるかと思います。

version: '3'

services:
  https-portal:
    image: steveltn/https-portal:1
    ports:
      - '80:80'
      - '443:443'
    restart: always
    environment:
      DOMAINS: 'MattermostのURL -> http://host.docker.internal:8065'
      STAGE: 'production'
      FORCE_SSL: 'true'
      WEBSOCKET: 'true'
    volumes:
      - https-portal-data:/var/lib/https-portal
    extra_hosts:
      - 'host.docker.internal:host-gateway'

volumes:
    https-portal-data:

https-portal→ホスト→Mattermostの順に通信ができるようにhost.docker.internalという機能を使っています。host.docker.internalとはDockerコンテナからコンテナが動作しているマシンにアクセスするための特別なDNS名です。この機能を使うと、コンテナ内部からホストのIPアドレスを指定せずにホストのサービスにアクセスすることができます。

2.Mattermostのymlファイルの設定。

ローカルホストからのみ通信できるように、Mattermostの記述のポート部分を以下のように設定します。172.17.0.1はDockerがホストに割り当てるデフォルトのIPアドレスです。

    ports:
      - '172.17.0.1:8065:8065'

3.Mattermostの再起動。

一度、動いているコンテナを停止し、Mattermostを再起動します。https-portalをリバースプロキシとして使うので、これまでwebサーバおよびリバースプロキシとして使っていたnginxのコンテナは動かしません。

以上の手順で、https-portalをリバースプロキシとして使ったMattermostの環境構築ができました。これでSSL証明書の自動更新ができるようになったのとリバースプロキシを分離したことで、今後の管理がより簡単になりました。