Mattermost是一个 Slack 的开源替代品。Mattermost 采用Go和React开发,这是一个开源的团队通讯服务。为团队带来跨 PC 和移动设备的消息、文件分享,提供归档和搜索功能。
Mattermost和Slack是兼容的,你可以从Slack中把用户、历史、事件等导入到Mattermost中。
- Mattermost源代码:https://github.com/mattermost/platform
这里安装的Mattermost使用PostgreSQL做为数据库,Nginx做为反向代理。所有软件都安装在单一的服务器上,当然,你也可以把PostgreSQL安装到其它服务器上。
#1 安装配置PostgreSQL数据库
Mattermost除了支持PostgreSQL,还支持MySQL数据库。我使用PostgreSQL。
安装PostgreSQL:
1 2 |
$ sudo apt update $ sudo apt install postgresql postgresql-contrib |
进入postgresql命令行,设置密码:
1 2 |
$ sudo su - postgres $ psql |
更改postgres用户密码:
1 |
postgres=# \password postgres |
为Mattermost创建一个新数据库(mattermost_db)和用户(matter_user,密码test1234):
1 2 3 |
postgres=# CREATE DATABASE mattermost_db; postgres=# CREATE USER matter_user WITH PASSWORD 'test1234'; postgres=# GRANT ALL PRIVILEGES ON DATABASE mattermost_db TO matter_user; |
退出postgresql命令行:
1 |
postgres=# \q |
1 |
$ exit |
#2 安装配置Mattermost
我要以一个普通用户运行Mattermost,首先创建一个新用户matter:
1 2 |
$ sudo useradd -m -s /bin/bash matter $ sudo passwd matter # 设置matter用户密码 |
切换到新用户:
1 |
$ su - matter |
下载Mattermost(去官网检查最新版本):
1 |
$ wget https://releases.mattermost.com/3.4.0/mattermost-3.4.0-linux-amd64.tar.gz |
解压tar包:
1 2 |
$ tar -xzvf mattermost-3.4.0-linux-amd64.tar.gz $ cd mattermost/ |
创建一个data目录用来存储用户数据:
1 |
$ mkdir data/ |
编辑配置文件:
1 |
$ vim config/config.json |
由于我要使用Nginx做为反向代理,Mattermost只需本地访问。找到ServiceSettings一段:
1 |
"ListenAddress": "127.0.0.1:8065", |
找到SqlSettings,配置数据库连接信息:
1 2 |
"DriverName": "postgres", "DataSource": "postgres://matter_user:test1234@127.0.0.1:5432/mattermost_db?sslmode=disable&connect_timeout=10", |
注意替换数据库用户和密码
运行mattermost,测试:
1 2 |
$ cd bin/ $ ./platform |
Ctrl+C终止服务运行。
把mattermost配置为后台服务:
1 2 |
$ exit # 退出matter用户 $ sudo vim /etc/systemd/system/mattermost.service |
添加如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[Unit] Description=Mattermost is an open source, self-hosted Slack-alternative After=syslog.target network.target [Service] Type=simple User=matter Group=matter ExecStart=/home/matter/mattermost/bin/platform PrivateTmp=yes WorkingDirectory=/home/matter/mattermost Restart=always RestartSec=30 LimitNOFILE=49152 [Install] WantedBy=multi-user.target |
服务的启动和停止:
1 2 3 4 |
sudo systemctl daemon-reload sudo systemctl start mattermost sudo systemctl enable mattermost #sudo systemctl stop mattermost |
#3 安装配置Nginx
Nginx的作用是做为Mattermost的反向代理,需要映射HTTP(80)和HTTPS(443)端口到mattermost的8056端口。
安装Nginx:
1 |
$ sudo apt install nginx |
我这里使用自签名证书,你可以选择使用免费的letsencrypt或付费证书。
生成SSL证书:
1 2 3 4 |
$ cd /etc/nginx/ $ sudo mkdir ssl/; cd ssl/ $ sudo openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/mattermost.crt -keyout /etc/nginx/ssl/mattermost.key $ sudo chmod 400 mattermost.key |
创建虚拟主机配置文件:
1 |
$ sudo vim /etc/nginx/sites-available/mattermost |
写入如下内容:
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 33 |
server { listen 80; server_name your_domain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name your_domain.com; ssl on; ssl_certificate /etc/nginx/ssl/mattermost.crt; ssl_certificate_key /etc/nginx/ssl/mattermost.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; location / { gzip off; proxy_set_header X-Forwarded-Ssl on; client_max_body_size 50M; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 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_pass http://127.0.0.1:8065; } } |
注意替换上面的域名/IP。
是生效:
1 2 3 |
$ sudo ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/ $ sudo nginx -t $ sudo systemctl restart nginx |
#4 完成Mattermost安装
使用浏览器访问:your_domain.com
创建用户:
设置为中文语言: