Docker版MattermostのSSL証明書を更新してみた

Dockerで動かしているMattermostのSSL証明書ってどうやって更新するんでしょうか。

MattermostはDocker上で動かすことができます。
公式の手順に沿って進めるだけで、数分もあればLet’s Encryptを使ってSSLに対応させた状態で立ち上げることができます。

そのLet’s Encrypt発行のSSL証明書を更新する場合、どうするのが確実か悩むところだと思います。
この記事を読めばその解決策が分かります。

先に結論を申しますと……

ホストマシンでコマンドを使って更新することになります。

私の環境においてちょうどSSL証明書が期限切れになっていたので試してみたところうまく更新されたので動作確認も済んでいます。

ぜひ試してみてください。

目次

実行するコマンド

ホストマシンで実行するコマンドは下記になります。

コマンドを実行する前にMattermost用のディレクトリに移動しておいてください。

いきなり更新するのは怖いのでまずはdry-runしてみます。

sudo docker run --rm --name certbot --network mattermost \
-v "${PWD}/certs/etc/letsencrypt:/etc/letsencrypt" \
-v "${PWD}/certs/lib/letsencrypt:/var/lib/letsencrypt" \
-v shared-webroot:/usr/share/nginx/html \
certbot/certbot renew --webroot-path /usr/share/nginx/html --dry-run

dry-runで問題ないことが確認できたら更新します。

sudo docker run --rm --name certbot --network mattermost \
-v "${PWD}/certs/etc/letsencrypt:/etc/letsencrypt" \
-v "${PWD}/certs/lib/letsencrypt:/var/lib/letsencrypt" \
-v shared-webroot:/usr/share/nginx/html \
certbot/certbot renew --webroot-path /usr/share/nginx/html

更新が問題なく終わったらコンテナを再起動して更新されたSSL証明書を反映させます。

sudo docker-compose -f docker-compose.yml -f docker-compose.nginx.yml restart

参考にしたサイト

実際の結果

うちの環境で実行した際の結果です。

一部、伏せ字や画像処理をしております。
予めご了承ください。

Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/xxxxx.xxxxx.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Simulating renewal of an existing certificate for xxxxx.xxxxx.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
  /etc/letsencrypt/live/xxxxx.xxxxx.com/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

問題なく有効期限が更新されました。

更新前の有効期限
更新前の有効期限
更新後の有効期限
更新後の有効期限

まとめ

Docker版Mattermostを構築する際に使うSSL証明書取得用のスクリプトはスタンドアローンモードで証明書を取得します。
その後、同スクリプト内でウェブルートモードで更新ができるように設定ファイルを書き換えています。

ウェブルートのディレクトリはdocker volumeとして複数のコンテナで使い回せるようにしているので今回のようなことができるみたいです。

なかなか奥深いですね。

当ブログでは他にもMattermost関連の記事を公開しています。
こちらもあわせてご覧ください。



この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次