*当サイトのリンクにはAmazonアソシエイトやアフィリエイトリンクが含まれております。

Slack の代わりに Mattermost を導入するメモ 

今回も自分用メモ。
会社使っているSlackが90日の保存期間になるとの事で、別の仕組み無いか?
と上の人に言われてMattermostを構築してみた。

その時のメモ。
きっと別サーバーで立ち上げやる可能性あるし。

広告

インストール手順

rootに昇格前提での作業。

お決まり


apt-get update
apt-get upgrade
apt-get dist-upgrade
reboot

データベース

mariadb使います。
なんか慣れちゃったので。


apt install -y mariadb-server
/etc/init.d/mysql start

MariaDB [(none)]> CREATE USER 'hogehoge'@'localhost' IDENTIFIED BY 'hogehoge-password';
MariaDB [(none)]> CREATE DATABASE mattermost;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON mattermost.* to 'hogehoge'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit;


*2022/12/21 追記*
mariadbサポートしないらしく、MySQLのが良いかも。
MySQLのインストは↓↓


# apt install mysql-server mysql-client
# apt systemctl start mysql.service
# apt systemctl status mysql.service

# mysql -u root

あとはmariadbと同じ。

mattermost インストール

最新版は本家で確認して下さい。

インストールから権限系まで。


wget https://releases.mattermost.com/7.1.2/mattermost-7.1.2-linux-amd64.tar.gz

tar -xvzf mattermost-7.1.2-linux-amd64.tar.gz
mv mattermost /opt
mkdir /opt/mattermost/data

useradd --system --user-group mattermost

chown -R mattermost:mattermost /opt/mattermost
chmod -R g+w /opt/mattermost

設定ファイル


nano /opt/mattermost/config/config.json


"SqlSettings": {
        "DriverName": "mysql",
        "DataSource": "hogehoge:hogehoge-password@tcp(localhost:3306)/mattermost?charset=utf8mb4,utf8\u0026writeTimeout=30s",

 "ServiceSettings": {
        "SiteURL": "https://myurl.com",


mariadbでも”DriverName”: “mysql”。
DataSource は DBユーザー:パスワード~~ で記述。


cd /opt/mattermost
sudo -u mattermost ./bin/mattermost
:"Server is listening on [::]:8065"

設定が大丈夫か確認。
Server is listening on [::]:8065 みたいのがないとERROR。
多分DataSourceを間違ってるんじゃない??

serviceの設定


touch /lib/systemd/system/mattermost.service
nano /lib/systemd/system/mattermost.service

[Unit]
Description=Mattermost
After=network.target
After=mysql.service
BindsTo=mysql.service

[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
KillMode=mixed
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152

[Install]
WantedBy=mysql.service

そんで確認。


systemctl daemon-reload
systemctl status mattermost.service
● mattermost.service - Mattermost
     Loaded: loaded (/lib/systemd/system/mattermost.service; disabled; vendor preset: enabled)
     Active: inactive (dead)

systemctl start mattermost.service

問題無くスタート出来れば、IPアドレスで入れる。

nginxのインストール

続いてnginx入れていく。


apt install nginx
systemctl enable nginx


設定ファイル

サーバーの8065ポートを開けておく。


touch /etc/nginx/sites-available/mattermost
nano /etc/nginx/sites-available/mattermost

upstream backend {
    server サーバーIP:8065;
    keepalive 32;
    }

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off;

server {
    listen 80 default_server;
    server_name 自分のドメイン.com;

    location ~ /api/v[0-9]+/(users/)?websocket$ {
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        client_max_body_size 50M;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Frame-Options SAMEORIGIN;
        proxy_buffers 256 16k;
        proxy_buffer_size 16k;
        client_body_timeout 60;
        send_timeout 300;
        lingering_timeout 5;
        proxy_connect_timeout 90;
        proxy_send_timeout 300;
        proxy_read_timeout 90s;
        proxy_pass http://backend;
    }

    location / {
        client_max_body_size 50M;
        proxy_set_header Connection "";
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Frame-Options SAMEORIGIN;
        proxy_buffers 256 16k;
        proxy_buffer_size 16k;
        proxy_read_timeout 600s;
        proxy_cache mattermost_cache;
        proxy_cache_revalidate on;
        proxy_cache_min_uses 2;
        proxy_cache_use_stale timeout;
        proxy_cache_lock on;
        proxy_http_version 1.1;
        proxy_pass http://backend;
    }
}


rm /etc/nginx/sites-enabled/default
ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/mattermost

systemctl restart nginx

これでドメインでアクセスできる。

SSL化する


apt install python3-certbot-nginx
certbot --nginx -d myurl.com

#あとは対話型の流れのままに

設定ファイルを再変更


nano /etc/nginx/sites-available/mattermost

upstream backend {
    server サーバーIP:8065;
   keepalive 32;
    }

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off;

server {
    server_name 自分のドメイン.com;

    location ~ /api/v[0-9]+/(users/)?websocket$ {
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        client_max_body_size 50M;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Frame-Options SAMEORIGIN;
        proxy_buffers 256 16k;
        proxy_buffer_size 16k;
        client_body_timeout 60;
        send_timeout 300;
        lingering_timeout 5;
        proxy_connect_timeout 90;
        proxy_send_timeout 300;
        proxy_read_timeout 90s;
        proxy_http_version 1.1;
        proxy_pass http://backend;
    }

    location / {
        client_max_body_size 50M;
        proxy_set_header Connection "";
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Frame-Options SAMEORIGIN;
        proxy_buffers 256 16k;
        proxy_buffer_size 16k;
        proxy_read_timeout 600s;
        proxy_cache mattermost_cache;
        proxy_cache_revalidate on;
        proxy_cache_min_uses 2;
        proxy_cache_use_stale timeout;
        proxy_cache_lock on;
        proxy_http_version 1.1;
        proxy_pass http://backend;
    }

    listen 443 ssl http2; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/自分のドメイン.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/自分のドメイン.com/privkey.pem; # managed by Certbot
    # include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    ssl_session_timeout 1d;

    # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
    ssl_protocols TLSv1.2 TLSv1.3;

    # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
    # prevent replay attacks.
    #
    # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
    ssl_early_data on;

    ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:50m;
    # HSTS (ngx_http_headers_module is required) (15768000 seconds = six months)
    add_header Strict-Transport-Security max-age=15768000;
    # OCSP Stapling ---
    # fetch OCSP records from URL in ssl_certificate and cache them
    ssl_stapling on;
    ssl_stapling_verify on;
}


server {
    if ($host = 自分のドメイン.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80 default_server;
    server_name 自分のドメイン.com;
    return 404; # managed by Certbot

}

本家にあった通りに変更。
別に変えなくて大丈夫だったんだけど、本家には変えましょうみたいに書いてあった気がしたから。


rm /etc/nginx/sites-enabled/mattermost
ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/mattermost
systemctl restart nginx

これで全部終わり。
あとはWEBからログインしてメールの設定やらを済ませて終了です。

ではでは


おすすめのコンテンツ

広告

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

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