LoginSignup
4
1

More than 1 year has passed since last update.

MattermostをGCP無料枠で試す

Posted at

Mattermostセットアップメモ

例によってドはまりしたので記録を残す。

起こったこと

Slackの例の90日制限。
相変わらず予算は無い。
GCP無料枠でMattermostを使う。

ハマったこと

  1. Mattermostのシステムコンソールでhttpsの設定はしない。
  2. opensslのオレオレ証明書作成方法
  3. nginxの設定
  4. 各種設定ファイル、実行ファイルの場所

前提

GCPで適当なVMを起こせるアカウントを作っておく。
クレジットカードの登録が必要なはずだが、これだけなら課金はされない。

手順

ツール→Deploymentmanager→デプロイ→Deploy marketplace solution
image.png

mattermostで検索
Mattermost Team Edition packaged by Bitnami
を選ぶ。→運用開始
image.png

無料枠の条件設定

  1. つまりus-central1, west1, east1のいずれかであり、
  2. e2-micro
  3. standard-persistent disk <= 30G
    ってこと。
    https://cloud.google.com/free/docs/gcp-free-tier/#compute

ネットワーク設定はとりあえずデフォルトである。
HTTPでヒェッってなるがそのまま進める。

以下のように表示されるはずた。
とりあえずアクセスしてみよう。暗号化保護されていないとかでブラウザから警告が出るが、無視する。表示のuser,パスワードでログインできるだろうか。

image.png

で、ここからハマったところになる。
左上のメニューからシステムコンソールを呼ぶ。
(すでに日本語化している)
image.png

以下のWebサーバーからTSLの設定をするのかと思ったが、
こちらで443で受けるような設定をすると、うまくいかない。
mattermostその他がrestartしても起きなくなる。
これでめっちゃ時間が溶けた。
image.png

結論としては今回のデプロイしたあれこれは、nginxでアクセスを受けて、
内部でmattermostに繋いでいるっぽい。
ので、nginxの設定をいじる必要がある。
マシンにSSH接続する設定があるが、GCPのブラウザSSHでもいいし、
適当な鍵を登録して普通にSSH接続しても良い。22番ポートで入れるはずだ。

じゃあnginxどこにいるのって話だが、以下を見るに、
https://docs.bitnami.com/google/apps/mattermost/administration/create-ssl-certificate-nginx/

/opt/bitnami/nginx/

あたりに居る。

sudo /opt/bitnami/ctlscript.sh stop nginx

してから作業する。
ようするにここでオレオレ証明書を作って、それでアクセスすればいいよねって話だろう。
上のページに沿って証明書をつくる、だけではうまくいかなかった。これもドはまり。

うえの記載ではsubjectAltNameとやらが記載されていないので、
相変わらずその証明書ではクロームくんは許してくれない。

以下を参考に、SANつきオレオレ証明書を造る。
https://qiita.com/nis_nagaid_1984/items/b8f87d41ea108d47af61
san.txtに相当する内容はしかし、IPアドレスしか無い。ドメイン名無いよ、なので、

subjectAltName = IP:xxx.xxx.xxx.xxx

となる。xxxのところはデプロイしたマシンのIPアドレスね。

出来上がったserver.crtを、

openssl x509 -text -in server.crt -noout

してみて、subjectAltNameが記載されていればたぶんOK

で、この作った証明書どうするのって話だが、nginxの設定ファイルをいじる必要がある。

/opt/bitnami/nginx/conf/

に色々confファイルが有って、「どれだよ」なるよね。
当初、nginx.confを

   # HTTP Server
    server {
        # Port to listen on, can also be set in IP:PORT format
        # listen  80;
        listen 443 ssl;

        include  "/opt/bitnami/nginx/conf/bitnami/*.conf";

        location /status {
            stub_status on;
            access_log   off;
            allow 127.0.0.1;
            deny all;
        }

        ssl_certificate     /opt/bitnami/nginx/conf/server.crt;
        ssl_certificate_key  /opt/bitnami/nginx/conf/server.key;

とかしてみたけどだめだった。ここで指定したserver.crtは全く使われない。
じゃあどこだよって話だけど、

/opt/bitnami/nginx/conf/server_blocks

にある

default-https-server-block.conf
mattermost-https-server-block.conf

とかだ。

unk@buri:/opt/bitnami/nginx/conf/server_blocks$ cat default-https-server-block.conf
# HTTPS Server
server {
    # Port to listen on, can also be set in IP:PORT format
    listen  443 ssl;

    ssl_certificate      /opt/bitnami/nginx/conf/server.crt;
    ssl_certificate_key  /opt/bitnami/nginx/conf/server.key;

    #ssl_certificate      bitnami/certs/server.crt;
    #ssl_certificate_key  bitnami/certs/server.key;

    include  "/opt/bitnami/nginx/conf/bitnami/*.conf";

    location /status {
        stub_status on;
        access_log   off;
        allow 127.0.0.1;
        deny all;
    }
}

みたいな修正をして、

sudo /opt/bitnami/ctlscript.sh start nginx

あとはアクセすする端末に証明書をインストール

ダブルクリック→
証明書インストール→
現在のユーザーに→
次のストアに配置→
参照→
信頼されたルート信頼期間
でインストールされるはず。ブラウザの再起動が必要かもしれない。

そして

https://xxx.xxx.xxx.xxx:443/

にアクセスして怒られなければOK。

あと、GCPのFireWallルールで、当該デプロイへのポート80での上がりを無効化しておく。
これでHTTPで通信はしないはず。

SMTPの設定とかは、SendGrid使うよりかは、適当なHotmailアカウントを作ってしまったほうがよっぽど楽かもしれない。

結論

結局VMを管理し続ける手間が増えた
Slackが使い物にならなくなったが、問題の種類が変わっただけに見える。
うーんこの

参考

以下参考にいたしました。
皆様に感謝いたします。

https://www.karelie.net/mattermost-gce-ssl/
https://gihyo.jp/admin/serial/01/ubuntu-recipe/0700
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/deployment_guide/sssd-ldap-domain-ip

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1