Mattermost 安装配置 - 狂飙

介绍

Mattermost 是一个灵活、开源的聊天消息平台,是 Slack 的开源私有部署版本。

可以用于内网聊天,自带桌面与移动平台客户端,易于使用。

系列文章

  • GitLab 安装配置 - 狂飙git.company.com
  • Jira 安装配置 - 狂飙jira.company.com
  • Jenkins 安装配置 - 狂飙ci.company.com
  • Mattermost 安装配置 - 狂飙mattermost.company.com

这一系列文章中的软件是在同一台机器上安装配置的,完整地记录了配置过程。解决了同时部署各种服务之间可能会产生的问题,最终将各种服务整合到一起。每个服务都配置使用域名访问,便于使用。

账号系统未使用 LDAP,因此 Jira 与 GitLab 账号是独立的,Jenkins 与 Mattermost 使用 GitLab 账号登录。

比较

  • RTX 腾迅出品,2015年之后就没有更新过,RTX for mac 经常崩溃、掉线,而且无法获取组织架构信息,导致无法找人。
  • 钉钉 阿里出品,可以打卡、考勤,官方还出了考勤机,与钉钉自动连接。
  • BearyChat 比较卡顿,搜索功能较差。

环境

  • CentOS 7.6 1810
  • MySQL 5.7.25
  • Mattermost 5.8.0 2019/02/16

安装流程

官方提供了完整的安装流程,可以根据自己的实际情况决定如何安装。本文章记录了在实际环境中安装的全过程,仅供参考。

  • Installing Mattermost on RHEL 7.1 — Mattermost 5.8 documentation

MySQL

安装

                12345
                rpm -ivh https://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm
yum install -y mysql-server

systemctl enable mysqld
systemctl start mysqld

设置 root 密码

                1234
                sudo grep 'temporary password' /var/log/mysqld.log
mysql -uroot -p
# 输入上面提示的密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourmysqlpassword';
  • MySQL :: A Quick Guide to Using the MySQL Yum Repository

注意:密码必须设置地复杂,否则会提示 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

创建 Mattermost 数据库

                1234
                mysql -u root -p
mysql> create user 'mmuser'@'%' identified by 'yourmattermostpassword';
mysql> create database mattermost;
mysql> flush privileges;

Mattermost 安装

                123456789
                wget https://releases.mattermost.com/5.8.0/mattermost-5.8.0-linux-amd64.tar.gz
tar -xvzf mattermost-5.8.0-linux-amd64.tar.gz

sudo mv mattermost /opt
mkdir /data/mattermost

sudo useradd --system --user-group mattermost
sudo chown -R mattermost:mattermost /opt/mattermost
sudo chmod -R g+w /opt/mattermost

配置

配置 MySQL 以及根据需要决定是否修改文件保存目录

vi /opt/mattermost/config/config.json

                1234567891011
                "SqlSettings": {
        "DriverName": "mysql",
        "DataSource": "mmuser:[email protected](127.0.0.1:3306)/mattermost?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s",

    "FileSettings": {
        "EnableFileAttachments": true,
        "EnableMobileUpload": true,
        "EnableMobileDownload": true,
        "MaxFileSize": 52428800,
        "DriverName": "local",
        "Directory": "/data/mattermost/",

防火墙

如果不使用默认的 8065 端口访问,而是使用后续介绍的 Nginx 绑定域名+80端口访问的话,此步可以跳过。

                123456
                firewall-cmd --permanent --new-service=mattermost
firewall-cmd --permanent --service=mattermost --set-short="Mattermost Service Ports"
firewall-cmd --permanent --service=mattermost --set-description="Mattermost service firewalld port exceptions"
firewall-cmd --permanent --service=mattermost --add-port=8065/tcp
firewall-cmd --zone=public --add-service=mattermost --permanent
firewall-cmd --reload

启动测试

                12
                cd /opt/mattermost
sudo -u mattermost ./bin/mattermost

等待一会儿出现 Server is listening on :8065字样后就可以按 Ctrl+C 停止运行,继续后面的操作。 这步最主要的作用是确定前面的配置是否正确,如果有异常,可以根据实际提示去修改配置。

自动启动

sudo vi /etc/systemd/system/mattermost.service

                123456789101112131415
                [Unit]
Description=Mattermost
After=syslog.target network.target mysqld.service

[Service]
Type=notify
WorkingDirectory=/opt/mattermost
User=mattermost
ExecStart=/opt/mattermost/bin/mattermost
PIDFile=/var/spool/mattermost/pid/master.pid
TimeoutStartSec=3600
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

配置自动启动

                1234
                sudo chmod 664 /etc/systemd/system/mattermost.service
sudo systemctl daemon-reload
sudo systemctl enable mattermost
sudo systemctl start mattermost

域名

增加 A 记录 mattermost.company.com 这样访问时 URL 中不需要增加端口

Nginx

server替换成 127.0.0.1server_name替换为域名

vi /etc/nginx/conf.d/mattermost.conf

                123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
                upstream backend {
   server 127.0.0.1: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;
   server_name    mattermost.company.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;
   }
}

systemctl restart nginx

经过这样配置后就可以使用 http://mattermost.company.com访问。

Mattermost 站点网址

  • 打开 系统控制台 - Mattermost
  • 站点网址修改为 http://mattermost.company.com,然后保存
  • 执行 systemctl restart mattermost重启服务

GitLab OAuth 登录

使用 GitLab 登录可以减少需要注册的账号数量,而且方便管理。

GitLab

在 GitLab 中添加应用时,一定要注意,URI 要添加两行

                12
                http://mattermost.company.com/login/gitlab/complete
http://mattermost.company.com/signup/gitlab/complete

其次范围选择 api,否则无法登录。

Mattermost

将上一步产生的应用程序 ID 与密钥填写即可,然后输入 GitLab 地址,保存后注销后在登录界面点击 GitLab Login按钮登录测试。

  • GitLab Single Sign-On — Mattermost 5.8 documentation

邮件通知

可以在公司使用的企业邮箱内创建单独的管理账号,并且赋予多个别名,分别用于不同用途,如 Jenkins、GitLab、Jira、Mattermost 等等。

然后查找企业邮箱对应的 SMTP 发件服务器客户端设置,填写到 系统控制台 - Mattermost,最后使用 测试连接按钮发送测试邮件即可。

注意:强烈建议使用 TLS 加密连接方式,增强安全性。

WebHooks 通知

Mattermost 中增加 Jenkins 用户,用于发送 Jenkins 打包通知。 需要将用户角色从成员改为团队管理员,这样才可以使用集成中的 WebHooks 功能。

  • Incoming Webhooks — Mattermost 5.8 documentation
  • Incoming Webhooks - Developers
  • Convert cURL command syntax to Python requests, Node.js, R, PHP, Strest, Go, JSON, and Rust code

客户端

官方有 Android iOS macOS Windows Linux 客户端,覆盖全面。

  • Download - Mattermost Private Cloud Messaging

打开客户端只需要填写服务器地址,然后使用 GitLab 登录即可。

iOS 客户端登录后可以接收到 Mattermost 发送的消息,即使应用不在前台也不在内网也会收到消息对应的 iOS 通知,因为默认使用 Mattermost 官方的外网推送服务器发送消息。

其他设置

每个团队最多用户数建议根据实际情况由 50 改为更高的的 100

  • 成员和团队 - 系统控制台 - Mattermost

建议 团队队友的名字显示:改为 若存在昵称显示昵称,否则显示姓名,因为默认显示全名的话是按照名在前姓在后显示的,不符合国人习惯。这样需要所有人将昵称改为姓在前名在后的全名。

  • 成员和团队 - 系统控制台 - Mattermost

关闭邮件注册功能

  • 邮件验证 - 系统控制台 - Mattermost

你可能感兴趣的:(Mattermost 安装配置 - 狂飙)