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确认安装。

安装完成后,检查PostgreSQL服务状态以确保它正在运行。
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql
你可以看到PostgreSQL服务器已启用并正在运行。

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

配置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;

创建数据库和用户后,运行以下查询来列出PostgreSQL服务器中可用的数据库和用户。
\du
\l
在以下输出中,你可以看到数据库mattermostdb和用户mmuser在PostgreSQL服务器上可用。
现在输入quit退出PostgreSQL。

接下来,运行以下psql命令以用户mmuser的身份登录到数据库mattermostdb。出现提示时输入你的密码。
sudo -u postgres psql --host=localhost --dbname=mattermostdb --username=mmuser --password
最后,运行以下conninfo查询验证你的连接。确保你以用户mmuser的身份登录到了数据库mattermostdb。
\conninfo

下载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正在运行,你将在屏幕上看到以下输出。

配置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

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

- 点击"View in Browser"来设置Mattermost。
- 输入你的账户详细信息并点击"Create Account"。
- 输入你的组织名称并点击"Continue"。
- 点击"Finish setup"完成配置。
现在你将看到你的工作空间的以下仪表板。

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