ConoHa Advent Calendar 2018 〜5日目〜
こちらは ConoHa Advent Calendar 2018 5日目のエントリです。4日目は @yoku0825 さんの 相変わらずConoHaでMySQLをビルドします でした!ビルドアップ!!
あっという間に年の瀬ですね。皆様いかがお過ごしでしょうか。平成最後のアドベントカレンダー、張り切ってまいりましょう!登録しすぎてしにそう(しなない)!
ちなみに今日は私の誕生日です。ハッピーバースデー、デビルマン!!!(1回目)
Mattermost を起動した話
前から気になってた Mattermost(マッターモスト) を アプリケーションイメージ から起動した話をします。Mattermost は Slack 風のチャットツールです。私が個人的に魅力的だと思ったのが遡れるメッセージの制限がないことです。Slack 無料版は最新10,000件のメッセージまでしか遡れないけど、Mattermost はすべてのメッセージを遡れます。
ただ起動するだけだとアレなので↓の設定を適用しました。
- 独自ドメイン(サブドメイン)の設定
- HTTPS 設定
サーバ起動
Mattermostアプリケーションイメージの使い方 を参照しながらサーバを起動します。今回起動したサーバの構成は以下のとおりです。(2018年12月時点)
OS/ミドルウェア名 | バージョン |
---|
CentOS | 7.5.1804 |
Nginx | 1.12.2 |
MariaDB | 10.3.11 |
Mattermost | 5.4.0 |
初期設定
起動直後のサーバ設定を一部変更します。
ホスト名変更
サーバのホスト名を任意の名前へ変更します。
1
| # hostnamectl set-hostname (任意の名前)
|
SSH接続設定の変更
SSHのポート番号がデフォルトかつ全開放のため、受け付けるポートを変更します。(変更はお好みで…)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| # cp -a /etc/ssh/sshd_config{,.org}
# vi /etc/ssh/sshd_config
# diff /etc/ssh/sshd_config{,.org}
## 以下追記
Port 2222
ListenAddress 0.0.0.0
Protocol 2
LoginGraceTime 2m
MaxAuthTries 6
# sshd -t
# systemctl restart sshd
# systemctl status sshd
|
アクセス制御
SSHポートの変更とあわせて開放するポートを変更します。あわせて元のSSH許可設定を削除します。firewalld については RedHat の公式ドキュメント を参照して設定を追加します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| # vi /etc/hosts.deny
## 以下追記
ALL: ALL
# vi /etc/hosts.allow
## 以下追記
ALL: 127.0.0.1
sshd: ALL
# cp -a /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/my-ssh.xml
# vi /etc/firewalld/services/my-ssh.xml
## 以下変更
port="22" -> port="2222"
# firewall-cmd --reload
# firewall-cmd --zone=public --add-service=my-ssh
# firewall-cmd --zone=public --add-service=my-ssh --permanent
|
変更後のポートでSSH接続できることを確認したら、元のSSH許可設定(22番ポート)を削除します。
1
2
3
4
| # firewall-cmd --zone=public --list-service
# firewall-cmd --zone=public --remove-service=ssh --permanent
# firewall-cmd --reload
# firewall-cmd --zone=public --list-service
|
パッケージアップデート
すべてのパッケージをアップデートします。
1
2
| # yum clean all
# yum update
|
ここまで完了したらサーバを再起動します。
ユーザの登録
Mattermostアプリケーションイメージの使い方 を参照しユーザを登録します。
Mattermostの設定変更
Mattermostアプリケーションイメージの使い方 を参照し以下の設定を変更します。
- 使用する言語
- サイトURL
- 通知電子メール
- 通知を設定する場合は SMTP設定の構成 も参照したほうがいいかも
接続テスト
を選択すると管理者のメールアドレス宛にメールが届きます。
HTTPS対応
サブドメインとサーバのグローバルIPアドレスをDNSレコードに登録し、SSL証明書の取得をすすめます。なお、Configuring NGINX with SSL and HTTP/2 にある方法だと、Let’s Encrypt でSSL証明書を取得する際に Nginx を止める必要があるので Webrootプラグイン を使ってSSL証明書を取得するよう設定します。
Let’s Encrypt でテスト用のSSL証明書を取得
Nginx は Mattermost へのリバースプロキシとして動作しているので、サブドメインへのリクエストがすべて Mattermost へ届いてしまいます。Let’s Encrypt の認証サーバから .well-known
配下に生成される一時ファイルへアクセスできるようにするため location
設定を追加します。追加後 certbot
コマンドで テスト用のSSL証明書 を取得します。(テスト用のSSL証明書はブラウザでアクセスすると認証エラーが発生します。)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| # yum install certbot
# mkdir -p /var/www/letsencrypt/.well-known
# cp -a /etc/nginx/conf.d/mattermost.conf{,.org}
# vi /etc/nginx/conf.d/mattermost.conf
:
server {
listen 80;
## サブドメインを追記
server_name (サブドメイン) localhost;
## /.well-known へのアクセス設定を追記
location /.well-known {
root /var/www/letsencrypt;
}
# diff /etc/nginx/conf.d/mattermost.conf{,.org}
# nginx -t
# systemctl reload nginx
# systemctl status nginx
# certbot certonly --staging --webroot --webroot-path=/var/www/letsencrypt -d (サブドメイン)
# ls -l /etc/letsencrypt/live/(サブドメイン)/
|
HTTPS設定の追加
テスト用のSSL証明書発行が完了したら HTTPS 設定を追加して Nginx を再起動します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| # openssl dhparam 2048 -out /etc/nginx/conf.d/dhparam.pem
# vi /etc/nginx/conf.d/mattermost.conf
## 以下編集
server {
listen 80;
server_name (サブドメイン) localhost;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name (サブドメイン) localhost;
ssl on;
ssl_certificate /etc/letsencrypt/live/(サブドメイン)/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/(サブドメイン)/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
ssl_dhparam /etc/nginx/conf.d/dhparam.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=15768000; includeSubdomains";
location /.well-known {
root /var/www/letsencrypt;
}
:
}
# nginx -t
# systemctl reload nginx
# systemctl status nginx
|
HTTPS ポート開放
ポート開放たまに忘れてしまう(;´Д`)
1
2
| # firewall-cmd --zone=public --add-service=https --permanent
# firewall-cmd --reload
|
テスト用のSSL証明書でアクセス確認
https://(サブドメイン)
へアクセスできるか確認します。なお、先ほど取得したSSL証明書は仮のものなので認証エラーが発生します。
Let’s Encrypt でSSL証明書を取得
認証エラー以外に問題がなければ正式(?)なSSL証明書を取得し直します。
1
2
3
4
5
6
7
8
9
10
11
12
13
| # certbot certonly --webroot --webroot-path=/var/www/letsencrypt -d (サブドメイン)
:
## テスト用に発行したSSL証明書を上書きします
What would you like to do?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Keep the existing certificate for now
2: Renew & replace the cert (limit ~5 per 7 days)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
# nginx -t
# systemctl reload nginx
# systemctl status nginx
|
SSL証明書の更新設定
Let’s Encrypt 認証局が発行するSSL証明書の有効期間は短期間のため、最低でも3ヶ月に1回は更新する必要があります。10日くらいの間隔で有効期限を確認するよう Cron へ以下の設定を追記します。
1
2
3
| # crontab -e
## 以下追記
0 4 10,20,30 * * certbot renew && systemctl reload nginx
|
SSL証明書でアクセス確認
https://(サブドメイン)
へアクセスし先ほど作成したユーザでログインできるか確認します。以下の設定変更も忘れずに!
- サイトURL
- http://(サブドメイン) -> https://(サブドメイン)
ログイン後の画面
UI は Slack と似ています。
ちょっといじった設定
いろいろ設定があるのでいじってみると楽しいかも。いじった設定は以下のとおりです。
- 投稿
- 言語
デフォルトのサーバー言語
と デフォルトのクライアント言語
を 日本語
へ変更
- ユーザーとチーム
チーム作成を有効にする
を無効アーカイブチャンネルを閲覧可能にする
を有効
- パスワード
最小パスワード長さ
を 8
へ設定パスワードの要件
にて以下を有効- 少なくとも1つの英小文字が必要です
- 少なくとも1つの英大文字が必要です
- 少なくとも1つの数字が必要です
まとめ
Mattermost は自分のサーバで Slack のようなチャットツールを使いたいなぁって人に超向いてます!!社内の事情で Slack を導入できない人にもおすすめしたいです。元号がかわってもこのはちゃんへの愛はかわりません!来年もよろしくチューニング!!
おまけ
ConoHa Mobile は進化中!
ConoHa Mobile にコンソール機能がついてた!!すごい!!!(語彙力不足)スマートフォン1つあれば何でもできる時代ですね。
自分自身におめでとう
XX回目の誕生日プレゼントを買いました。来年も遮二無二進化します。あとマイリトルポニー プリンセスの大冒険のCDを買いました。先日親子連れにまぎれて キネコ国際映画祭 で観たのですが最高でした。大きなスクリーンで観られたことがもう嬉しくてたまらなかった…DVDも購入済みです。Amaz○n待ちです。あとBluetoothの骨伝導イヤンホホを買いました。使うのが楽しみです。