Mattermost是一个开源的Slack和Microsoft Teams替代方案。它允许你自托管在线聊天,并支持多种功能,包括文件共享、搜索、自动化和第三方集成。

Mattermost是一个专为组织和企业内部通讯设计的协作平台。它将消息系统、自动化、集成和安全功能结合在一起,用于关键工作流程。

在本教程中,你将学习如何在Ubuntu 24.04服务器上安装Mattermost。你将使用PostgreSQL作为数据库,Nginx作为反向代理来安装Mattermost。你还将使用HTTPS来保护Mattermost,并创建你的第一个Mattermost工作空间。

前提条件

在开始本教程之前,请确保你具备以下条件:

- 一台Ubuntu 24.04服务器
- 一个具有管理员权限的非root用户
- 一个已指向服务器IP地址的域名

安装依赖

要安装Mattermost,你必须在服务器上安装依赖项,包括PostgreSQL数据库服务器、Nginx Web服务器和Certbot。

首先,运行以下apt命令来更新Ubuntu软件包索引并安装PostgreSQL、Nginx Web服务器和Certbot等依赖项。PostgreSQL服务器将用作Mattermost的默认数据库,Nginx将用作反向代理。

sudo apt update && sudo apt install postgresql postgresql-contrib nginx certbot

输入Y确认安装。

Ubuntu 24.04安装Mattermost团队协作平台教程

安装完成后,检查PostgreSQL服务状态以确保它正在运行。

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

你可以看到PostgreSQL服务器已启用并正在运行。

Ubuntu 24.04安装Mattermost团队协作平台教程

现在使用以下命令检查Nginx Web服务器状态。你将看到Nginx也在你的Ubuntu系统上运行和启用。

sudo systemctl is-enabled nginx
sudo systemctl status nginx

Ubuntu 24.04安装Mattermost团队协作平台教程

配置PostgreSQL数据库和用户

安装完依赖项后,你将使用psql(PostgreSQL shell)为Mattermost创建PostgreSQL数据库和用户。最后,你还将使用新用户检查PostgreSQL的身份验证。

使用以下psql命令登录到PostgreSQL shell。

sudo -u postgres psql

现在运行以下查询来创建新数据库mattermostdb和新用户mmuser,密码为password。

CREATE DATABASE mattermostdb;
CREATE USER mmuser WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE mattermostdb to mmuser;

Ubuntu 24.04安装Mattermost团队协作平台教程

创建数据库和用户后,运行以下查询来列出PostgreSQL服务器中可用的数据库和用户。

\du
\l

在以下输出中,你可以看到数据库mattermostdb和用户mmuser在PostgreSQL服务器上可用。

现在输入quit退出PostgreSQL。

Ubuntu 24.04安装Mattermost团队协作平台教程

接下来,运行以下psql命令以用户mmuser的身份登录到数据库mattermostdb。出现提示时输入你的密码。

sudo -u postgres psql --host=localhost --dbname=mattermostdb --username=mmuser --password

最后,运行以下conninfo查询验证你的连接。确保你以用户mmuser的身份登录到了数据库mattermostdb。

\conninfo

Ubuntu 24.04安装Mattermost团队协作平台教程

下载Mattermost

数据库准备就绪后,现在你将下载Mattermost,创建数据目录,设置Mattermost域名和PostgreSQL作为数据库,然后为Mattermost设置适当的权限和所有权。

首先,运行以下useradd命令在你的系统上创建一个新的mattermost用户。

sudo useradd --system --user-group mattermost

使用以下wget命令下载Mattermost二进制文件。然后使用tar命令解压Mattermost。

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

现在使用以下命令将解压后的目录移动到/opt/mattermost/。

mv mattermost /opt/

接下来,创建一个新的数据目录/var/mattermost/data/用于存储用户数据。

sudo mkdir -p /opt/mattermost/data

之后,使用nano编辑器编辑默认配置/opt/mattermost/config/config.json。

sudo nano /opt/mattermost/config/config.json

在ServiceSettings部分中,将你的域名输入到SiteURL行。

"ServiceSettings": {
 "SiteURL": "mattermost.howtoforge.local",

在SqlSettings部分中,将数据库详细信息更改为你的PostgreSQL数据库详细信息。

"SqlSettings": {
 "DriverName": "postgres",
 "DataSource": "postgres://mmuser:password@localhost/mattermostdb?sslmode=disable&connect_timeout=10&binary_parameters=yes",

完成后保存文件并退出。

最后,执行以下命令将/opt/mattermost/目录的所有权更改为mattermost用户,并启用对该目录的写入权限。

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

此外,出于测试目的,你可以使用以下命令手动启动Mattermost。

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

将Mattermost配置为systemd服务

在本节中,你将为Mattermost创建一个新的systemd服务文件。这样,Mattermost将在后台运行,你可以通过systemctl命令轻松管理它。

使用nano编辑器创建新的systemd服务文件/etc/systemd/system/mattermost.service。

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

将以下配置插入到文件中。

[Unit]
Description=Mattermost
After=network.target
After=postgresql.service
BindsTo=postgresql.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=multi-user.target

完成后保存文件并退出编辑器。

现在运行以下systemctl命令重新加载systemd管理器。

sudo systemctl daemon-reload

最后,使用以下命令启动并启用mattermost服务,然后检查它以确保正在运行。

sudo systemctl enable --now mattermost
sudo systemctl status mattermost

如果Mattermost正在运行,你将在屏幕上看到以下输出。

Ubuntu 24.04安装Mattermost团队协作平台教程

配置Nginx反向代理

此时,Mattermost已经启动并运行,现在你将通过Certbot为Mattermost生成SSL/TLS证书,然后设置Nginx作为反向代理。因此请确保你的域名已指向服务器IP地址。

在设置Nginx之前,运行以下certbot命令为你的Mattermost安装生成SSL/TLS证书。请确保将邮箱地址和域名更改为你的详细信息。

sudo systemctl stop nginx
sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m admin@example.com -d mattermost.howtoforge.local

现在使用nano打开默认的Nginx配置文件/etc/nginx/nginx.conf。

sudo nano /etc/nginx/nginx.conf

在include /etc/nginx/conf.d/*.conf;行之前插入以下行。

server_names_hash_bucket_size 64;
include /etc/nginx/conf.d/*.conf;

完成后保存并退出文件。

接下来,使用nano编辑器创建新的Nginx服务器块配置/etc/nginx/sites-available/mattermost。

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

插入以下配置,并确保将域名更改为你的信息。

upstream backend {
server 127.0.0.1:8065;
keepalive 32;
}

server {
listen 80 default_server;
server_name mattermost.howtoforge.local;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name mattermost.howtoforge.local;

http2_push_preload on;

ssl_certificate /etc/letsencrypt/live/mattermost.howtoforge.local/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mattermost.howtoforge.local/privkey.pem;
ssl_session_timeout 1d;

ssl_protocols TLSv1.2 TLSv1.3;
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-SHA384:ECDHE-RSA-AES256-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
add_header Strict-Transport-Security max-age=15768000;
ssl_stapling on;
ssl_stapling_verify on;

add_header X-Early-Data $tls1_3_early_data;

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 $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 60s;
send_timeout 300s;
lingering_timeout 5s;
proxy_connect_timeout 90s;
proxy_send_timeout 300s;
proxy_read_timeout 90s;
proxy_http_version 1.1;
proxy_pass http://backend;
}

location / {
client_max_body_size 100M;
proxy_set_header Connection "";
proxy_set_header Host $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_http_version 1.1;
proxy_pass http://backend;
}
}

map $ssl_early_data $tls1_3_early_data {
"~." $ssl_early_data;
default "";
}

完成后保存文件并退出编辑器。

现在运行以下命令激活mattermost服务器块并验证Nginx语法。如果Nginx语法正确,你将看到syntax is ok - test is successful之类的消息。

sudo ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/
sudo nginx -t

最后,运行以下systemctl命令重新启动Nginx Web服务器。这样,Mattermost安装将准备就绪,HTTPS也已启用。

sudo systemctl start nginx

Ubuntu 24.04安装Mattermost团队协作平台教程

访问Mattermost

打开你的Web浏览器并访问你的域名https://mattermost.howtoforge.local/。从这里,你可以在Mattermost中创建你的第一个工作空间。

Ubuntu 24.04安装Mattermost团队协作平台教程

- 点击"View in Browser"来设置Mattermost。
- 输入你的账户详细信息并点击"Create Account"。
- 输入你的组织名称并点击"Continue"。
- 点击"Finish setup"完成配置。

现在你将看到你的工作空间的以下仪表板。

Ubuntu 24.04安装Mattermost团队协作平台教程

总结

恭喜!你已完成在Ubuntu 24.04服务器上安装Mattermost。Mattermost正在运行,使用PostgreSQL作为数据库,Nginx作为反向代理。你还使用Let's Encrypt的SSL保护了Mattermost。