找回密码
 立即注册

QQ登录

只需一步,快速开始

本帖最后由 lou 于 2020-4-27 11:27 编辑

Geek专栏:非常时期的非常办公指南:使用 Mattermost 作为远程办公的即时沟通工具



今天Geek专栏为大家带来
乐聚研发部黄怀贤的
“使用Mattermost 作为远程办公的即时沟通工具”

背景

2020年的疫情非常严峻,为了保证大家的身体健康,即使在复工的前提下在办公室内部也尽量使用聊天工具沟通。减少口头沟通,避免唾沫传播。
我们的工作平台是Gitlab 。Gitlab 用来管理具体事务,跟踪项目推进是非常好用的。但是如果想实时沟通的话就没那么便利。所以需要找到一款补充的软件,在原有的开发流程基础上作为日常即时沟通的补充。
期间调研了一些软件。类似 Rocket.chat, Martix, 这两款软件的特点是开源并且可以自行部署,这样一来就是自己保管自己的数据和信息。数据和信息是一家公司的关键,将项目敏感信息放到微信,钉钉,Slack 沟通是不明智的。当然如果项目是以开源的方式运行,所有信息透明公开,那么就不需要有这个顾虑。
Martix 因为 Mozilla 采用有了一定知名度,同时架构设计也是分布式的。本来已经比较倾向于使用 Martix, 不过刚好和一个朋友聊天提起来。他建议使用 Mattermost。
经过一些功能验证和调研,最终采用了 Mattermost。有一个非常关键的优点,就是可以使用 Gitlab 的账号直接登录。

基本功能和特点

  • 有开源的手机客户端软件,并且一直在积极更新
Android 的推送有些限制,不过如果再自行部署一个推送服务器的话就没有当前的限制。

  • 基本上照搬 Slack 的产品逻辑
与微信对比的话,能将讨论的内容按照频道(主题)分开。

  • 支持 webhook, bot 账号
这样就覆盖了一些auto devops 的场景。将原来命令,网页式的操作变成会话式的控制。
同时和Gitlab 对接,可以简单的创建,读取工单。

部署方法

  • 首先需要准备一个运行环境
我现在都习惯使用Docker 来部署。所以使用了https://github.com/mattermost/mattermost-docker 这个项目来部署。
当前使用的环境:
1.     Ubuntu 19.04
2.     Docker version 18.09.7, build 2d0083d
3.     docker-compose version 1.21.0, build unknown
4.     需要使用服务器的 80,443 端口
  • 在制作镜像之前需要对 Docker-compose 进行修改
       因为我使用的是社区版,但是仓库里面默认编译使用的是商业版。

  1. app:
  2. -    build: app
  3. -      # uncomment following lines for team edition or change UID/GID
  4. -      # args:
  5. -      #   - edition=team
  6. +    build:
  7. +      # change `build:app` to `build:` and uncomment following lines for team edition or change UID/GID
  8. +      context: app
  9. +      args:
  10. +         - edition=team
复制代码

  • 先根据说明执行一遍镜像制作
docker-compose build

  • 启动之前的准备
如果想要启用https, 那么需要打开

  1. @@ -60,4 +61,4 @@ services:
  2.         - /etc/localtime:/etc/localtime:ro
  3.       # Uncomment for SSL
  4.       # environment:
  5. -    #  - MATTERMOST_ENABLE_SSL=true
  6. +      - MATTERMOST_ENABLE_SSL=true
复制代码

同时准备好证书。如果你使用的是 let's encrypt 生成的证书

  1. cp ./volumes/web/cert/privkey.pem ./volumes/web/cert/key-no-password.pem
复制代码

因为服务默认找到的是 key-no-password.pem。如果没有这个文件,并且开启了 SSL 那么网站启动之后将无法访问。
如果要修改数据库账户默认的密码,则更新 MM_PASSWORD, POSTGRES_PASSWORD, MM_SQLSETTINGS_DATASOURCE 中对应的密码配置。
我在踩坑的过程中漏了配置 MM_SQLSETTINGS_DATASOURCE。就导致了启动之后 app 的 log 里面提示数据库密码错误的问题。

同时常规的坑为:

  1. Error: failed to load configuration: failed to load: failed to persist required changes after load: failed to write file: open /mattermost/config/config.json:
复制代码

以上的问题原因是没有设置: chown -R 2000:2000 ./volumes/app/mattermost/

  • 启动服务器
docker-compose up

基本配置

  • 邮件配置
配置 SMTP 的账号:

86.png

启动邮件通知

87.png

  • 使用 Gitlab 账号进行登录
首先,这是公司内部使用的服务。所以我禁止了注册功能。
开启创号创建需要启动。因为通过 Gitlab 账号登录的机制是:读取 Gitlab 的信息并自动在 Mattermost 上新建一个账号。如果这里配置错了,跳转登录的时候会提示失败。

88.png

同时我禁止了邮件和账号登录

89.png

这样一来用户打开页面,就只有一个登录的按钮。

90.png



不一定美观,但是够用。

使用总结

1. 搜索需要改进, Gitlab 也存在同样的问题。因为这是西文国家的人设计的,他们在考虑最小输入单位来触发搜索的时候是以字母来计算长度,但是放到中文中就不够了。要想起六个字才能搜索历史记录,几乎不可能。这点我打算改进。
2. 手机端还未使用,目前主力是在 PC 端。
3. 将主题作为频道分割开,解决了在微信上沟通工作低效的问题,又保证了数据的安全性。

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册