如何在 Ubuntu 上安装 Mattermost 团队协作工具

news2024/11/18 13:52:47

简介

Mattermost 是一个开源、自托管的通信平台,专为团队协作设计。它类似于 Slack,提供聊天、消息传递和集成功能。Mattermost 在重视数据隐私的组织中特别受欢迎,因为它允许团队在自己的服务器上管理通信。以下是 Mattermost 的一些关键特性和优势:

特点

  1. 团队消息和协作:Mattermost 提供实时消息传递,包括公共和私有频道、直接消息和线程对话。它还支持富文本格式、文件共享和表情符号反应,使沟通更加互动高效。
  2. 自托管和隐私:与云托管替代品不同,Mattermost 可以部署在本地或私有云上,使组织能够完全控制他们的数据和隐私。这对于医疗保健、政府或国防等数据安全至关重要的行业特别有用。
  3. 集成和可扩展性:Mattermost 支持与许多工具(如 GitLab、Jenkins 和 Jira)集成,非常适合软件开发团队。它还有一个灵活的 API,允许开发人员构建自定义插件和集成,实现与组织中使用的其他服务的无缝协作。
  4. 高级安全功能:Mattermost 包括企业级安全功能,如多因素认证(MFA)、加密消息和 GDPR 等标准的合规支持。此外,它还允许管理员控制谁可以访问特定频道并设置细粒度的权限级别。
  5. 多平台支持:Mattermost 提供桌面(Windows、macOS、Linux)、移动(iOS、Android)和网络客户端,确保团队成员可以从任何设备保持连接。
  6. 语音、视频和屏幕共享:Mattermost 与 Zoom 或 Jitsi 等工具集成,启用语音和视频会议以及屏幕共享,以实现远程协作。
  7. 自定义工作流和自动化:它通过机器人、命令和任务提醒支持工作流自动化,可以提高团队生产力。用户可以自动化重复性任务并创建自定义工作流以简化内部流程。

环境准备

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。本文将以雨云为例进行演示。
  • 一个指向你服务器IP的域名

我将以 雨云 为例,带大家创建一台自己的云服务器,以便尝试本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

点击 云产品云服务器立即购买

https://img-blog.csdnimg.cn/img_convert/6d1cfac48988a60f6430bf29b897ae00.png

选择距离你较近的区域,以保证低延迟。

https://img-blog.csdnimg.cn/img_convert/4c16271f125adea69da6ed9e7b2a4226.png

配置选择。

https://img-blog.csdnimg.cn/img_convert/fa69fed3142baf010a15ed36163d2215.png

选择 Ubuntu 22.04 版本。

https://img-blog.csdnimg.cn/img_convert/f6611351f576daf28d27eee3938aa3f5.png

最后点击 立即购买,并按照提示进行购买。购买后等待机器部署完毕,点击购买的服务器,进入管理面板,找到远程连接相关信息。

https://img-blog.csdnimg.cn/img_convert/5e84cffc9a748ee6080badd4f4a27091.png

https://img-blog.csdnimg.cn/img_convert/414570cd3da48d4cc4bf51489992000b.png

使用 PowerShell 进行远程连接。

https://img-blog.csdnimg.cn/img_convert/c8afbeb764459a37a8451dd2ed8eeff1.png

输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

https://img-blog.csdnimg.cn/img_convert/16bf1d681ae7fd3663ceb797b087d39e.png

到此为止,我们的云服务器就创建好了。

开始部署

1.更新并安装所需软件包

更新系统并安装 Mattermost 所需的软件包:

apt update
apt install postgresql postgresql-contrib nginx certbot gnupg curl -y

2.验证服务

检查已安装服务的状态,确保它们正常运行:

  • PostgreSQL
systemctl is-enabled postgresql
systemctl status postgresql
  • Nginx
systemctl is-enabled nginx
systemctl status nginx

3.设置 PostgreSQL 数据库和用户

登录到 PostgreSQL 服务器:

sudo -u postgres psql

为 Mattermost 创建新数据库和用户:

  • 创建数据库和用户:
CREATE DATABASE mattermost;
CREATE USER mmuser WITH PASSWORD 'password';
GRANT ALL ON DATABASE mattermost TO mmuser;
ALTER DATABASE mattermost OWNER TO mmuser;
GRANT USAGE, CREATE ON SCHEMA PUBLIC TO mmuser;

'password' 替换为一个安全的密码。

验证数据库和用户:

\\l
\\du

通过输入 \\q 退出 PostgreSQL 外壳。

使用新用户登录到 PostgreSQL 服务器:

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

使用以下查询检查您的连接:

\\conninfo

4.下载并创建 Mattermost 系统用户

为 Mattermost 创建系统用户:

useradd --system --user-group 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

5.安装 Mattermost

下载 Mattermost 归档文件并提取它:

mv mattermost /opt/
mkdir -p /opt/mattermost/data
chmod -R 755 /opt/mattermost

6.配置 Mattermost

使用 nano 编辑器打开 Mattermost 配置文件:

nano /opt/mattermost/config/config.json

SiteURL 更改为您的域名:

"ServiceSettings": {
 "SiteURL": "https://your_domain.com",

SqlSettings 部分更新数据库凭据:

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

'password' 替换为您之前设置的密码。

保存并退出编辑器。 (按 CTRL + O 保存,然后按 CTRL + X 退出。)

7.设置权限

更改 Mattermost 目录的所有权为 mattermost 用户:

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

8.为 Mattermost 创建 Systemd 服务

为 Mattermost 创建一个新的 systemd 服务文件:

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

保存并退出编辑器。 (按 CTRL + O 保存,然后按 CTRL + X 退出。)

重新加载 systemd,启用并启动 Mattermost 服务:

systemctl daemon-reload
systemctl enable --now mattermost

9.使用 Certbot 设置 SSL

停止 Nginx 以释放端口 80 供 Certbot 使用:

systemctl stop nginx

使用 Certbot 生成 SSL 证书:

certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http --email contact@your_domain -d your_domain

10.配置 Nginx 作为反向代理

打开默认的 Nginx 配置文件:

nano /etc/nginx/nginx.conf

include /etc/nginx/nginx.conf 行之前添加以下配置:

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

保存并退出文件。 (按 CTRL + O 保存,然后按 CTRL + X 退出。)

创建一个新的 Nginx 服务器块配置:

nano /etc/nginx/sites-available/mattermost

插入以下配置,根据需要替换域名和路径:

# 定义一个名为 backend 的上游服务器组
upstream backend {
    # 指定上游服务器的地址和端口
    server 127.0.0.1:8065;
    # 设置保持活动连接的数量
    keepalive 32;
}

# 定义一个监听80端口的服务器块,用于HTTP到HTTPS的重定向
server {
    listen 80;
    server_name your_domain; # 替换为你的域名
    return 301 https://$server_name$request_uri; # 强制重定向到HTTPS
}

# 定义一个监听443端口的服务器块,用于HTTPS
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name your_domain; # 替换为你的域名

    # 开启HTTP/2服务器推送
    http2_push_preload on;

    # 指定SSL证书和密钥文件的位置
    ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem; # 替换为你的证书路径
    ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem; # 替换为你的密钥路径
    # 设置SSL会话超时时间
    ssl_session_timeout 1d;

    # 启用支持的TLS版本(TLSv1.3是未来HTTP/3 QUIC所必需的)
    ssl_protocols TLSv1.2 TLSv1.3;

    # 启用TLSv1.3的0-RTT。在使用反向代理时使用$ssl_early_data变量来防止重放攻击。
    # 详见:https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
    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会话缓存
    ssl_session_cache shared:SSL:50m;
    # 设置HSTS(需要ngx_http_headers_module模块)(15768000秒=六个月)
    add_header Strict-Transport-Security max-age=15768000;
    # 开启OCSP stapling
    ssl_stapling on;
    ssl_stapling_verify on;

    # 添加X-Early-Data头部,用于调试TLS v1.3
    add_header X-Early-Data $tls1_3_early_data;

    # 配置WebSocket的代理设置
    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;
    }
}

# 用于调试TLS v1.3的配置块,可以移除
map $ssl_early_data $tls1_3_early_data {
    "~." $ssl_early_data;
    default "";
}

创建一个符号链接以启用 Mattermost 服务器块:

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

验证 Nginx 语法并重新启动服务:

nginx -t
systemctl restart nginx

11.访问 Mattermost Web 界面

打开您的网络浏览器,访问 https://your_domain。如果您的安装成功,系统将提示您为 Mattermost 创建一个新的管理员账户。

image.png

输入新的管理员用户名、电子邮件和密码,然后点击“创建账户”。

image.png

输入您的组织名称,然后点击“继续”。

image.png

对于与 GitHub、Gitlab、Jira 或/和 Zoom 的集成,根据需要选择。然后再次点击“继续”。

image.png

完成后,您将看到如下所示的 Mattermost 仪表板:

image.png

到这一步,就已成功在 Ubuntu 上安装 Mattermost,配置 PostgreSQL 作为数据库,设置 Nginx 作为反向代理,并使用 SSL 保护您的安装。

相关链接

雨云 - 新一代云服务提供商: https://www.rainyun.com/NTEzMTM1_?s=blog

面试鸭:https://mianshiya.com/?shareCode=sq29yv

我的博客:https://blog.ivwv.site

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2242845.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2. Django中的URL调度器 (自定义路径转换器)

在 Django 中&#xff0c;URL 路由通常使用路径转换器&#xff08;path converters&#xff09;来匹配和捕获 URL 中的特定模式&#xff0c;例如整数、字符串或 slug 等。默认情况下&#xff0c;Django 提供了一些内置的路径转换器&#xff0c;如 <int>、<str>、&l…

【STM32】USB 简要驱动软件架构图

STM32 USB 软件架构比较复杂&#xff0c;建议去看 UM 1734 或者 st wiki STM32 USB call graph STM32 USB Device Library files organization Reference [1]: https://wiki.stmicroelectronics.cn/stm32mcu/wiki/Introduction_to_USB_with_STM32 [2]: UM1734

MATLAB 使用教程 —— 命令窗口输入命令,工作区显示变量

命令在命令窗口输入变量在工作区显示 MATLAB 桌面包含的面板如下&#xff1a; 当前文件夹 - 此面板允许访问项目文件夹和文件。命令窗口 - 这是主要区域&#xff0c;用户在命令行中输入命令&#xff0c;命令提示符(>>).工作区 - 工作区显示所有变量&#xff0c;无论是创…

华为USG5500防火墙配置NAT

实验要求&#xff1a; 1.按照拓扑图部署网络环境&#xff0c;使用USG5500防火墙&#xff0c;将防火墙接口加入相应的区域&#xff0c;添加区域访问规则使内网trust区域可以访问DMZ区域的web服务器和untrust区域的web服务器。 2.在防火墙上配置easy-ip&#xff0c;使trust区域…

时钟之CSS+JS版

写在前面 此版本绘制的时钟基于CSSJS模式。 优点操作简单&#xff0c;缺点当然是不够灵活。下一篇会基于HTML5的canvas标签&#xff0c;使用JS绘制。会更灵活&#xff0c;元素更加丰富。 HTML代码 <div class"box"><article class"clock"><…

blender 骨骼的动画基础 笔记总结

一、世界纹理 1.首先打开Node Wrangler&#xff08;世界纹理&#xff09;插件 在编辑的偏好设置这里&#xff0c; 演示一下这个插件&#xff1a; 然后通过shift a添加环境纹理 对其连接颜色后&#xff0c;选中世界纹理&#xff0c;通过按键ctrl t 二、动画 点击动画 1.…

java ssm 健康医馆管理系统 中医馆管理 健康平台 药店 源码jsp

一、项目简介 本项目是一套基于SSM的健康医馆管理系统&#xff0c;主要针对计算机相关专业的和需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本、软件工具等。 项目都经过严格调试&#xff0c;确保可以运行&#xff01; 二、技术实现 ​后端技术&#x…

前端无感刷新token

摘要&#xff1a; Axios 无感知刷新令牌是一种在前端应用中实现自动刷新访问令牌&#xff08;access token&#xff09;的技术&#xff0c;确保用户在进行 API 请求时不会因为令牌过期而中断操作 目录概览 XMLHttpRequestAxiosFetch APIJQuni.request注意事项&#xff1a; 访问…

【AI图像生成网站Golang】雪花算法

AI图像生成网站 目录 一、项目介绍 二、雪花算法 三、JWT认证与令牌桶算法 四、项目架构 五、图床上传与图像生成API搭建 六、项目测试与调试(等待更新) 雪花算法 雪花算法 (Snowflake) 是一种高效、可扩展的分布式唯一ID生成算法&#xff0c;最早由 Twitter 开发&…

[369]基于springboot的高校教师教研信息填报系统

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统高校教师教研信息填报系统信息管理难度大&#xff0c;容错…

《素书》:为上计,事当缓;为下计,事当急

《素书》是中国古代一部重要的典籍&#xff0c;相传为秦末黄石公作&#xff0c;内容主要讲述为人处世的道理。其中&#xff0c;“为上计&#xff0c;事当缓&#xff1b;为下计&#xff0c;事当急”这句话&#xff0c;给人以深刻的启示。 首先&#xff0c;对于上策之事&#xf…

树莓派4B Qt+FFMPEG 多线程录制USB相机mjpeg数据流“h264_omx“硬件编码的MP4文件

文章目录 1 前言2 一些问题说明2.0 树莓派4b系统版本2.1 Qt2.2 FFMPEG2.3 图像格式 3 核心代码3.0 代码逻辑3.1 pro文件3.2 avframequeue.cpp3.3 decodethread.cpp 4 资源下载 1 前言 本项目为在树莓派4B开发板上&#xff0c;通过QtFFMPEG以多线程分别解码、编码USB摄像头视频数…

排序算法(基础)大全

一、排序算法的作用&#xff1a; 排序算法的主要作用是将一组数据按照特定的顺序进行排列&#xff0c;使得数据更加有序和有组织。 1. 查找效率&#xff1a;通过将数据进行排序&#xff0c;可以提高查找算法的效率。在有序的数据中&#xff0c;可以使用更加高效的查找算法&…

计算机网络:运输层 —— TCP 的拥塞控制

文章目录 TCP的拥塞控制拥塞控制的基本方法流量控制与拥塞控制的区别拥塞控制分类闭环拥塞控制算法 TCP的四种拥塞控制方法&#xff08;算法&#xff09;窗口慢开始门限慢开始算法拥塞避免算法快重传算法快恢复算法 TCP拥塞控制的流程TCP拥塞控制与网际层拥塞控制的关系 TCP的拥…

如何在Mysql中生成0-23完整的小时数据

目录 1. 创建表2. 插入0-23小时的数据3. 查询并合并数据 在数据分析中&#xff0c;我们经常需要对特定时间段内的数据进行统计和分析。 例如&#xff0c;在名片进线的场景中&#xff0c;我们可能需要了解一天内每小时的名片进线数量。 然而&#xff0c;由于某些时间点可能没有数…

【GeekBand】C++设计模式笔记12_Singleton_单件模式

1. “对象性能” 模式 面向对象很好地解决了 “抽象” 的问题&#xff0c; 但是必不可免地要付出一定的代价。对于通常情况来讲&#xff0c;面向对象的成本大都可以忽略不计。但是某些情况&#xff0c;面向对象所带来的成本必须谨慎处理。典型模式 SingletonFlyweight 2. Si…

架构篇(理解架构的模式2)

目录 一、管理和监控 大使模式&#xff1a;创建代表消费者服务或应用程序发送网络请求的帮助服务 反腐模式&#xff1a;在现代应用程序和遗留系统之间实现装饰或适配器层 外部配置存储&#xff1a;将应用程序部署包中的配置信息移动到中心化的位置 网关聚合模式&#xff1…

20241116解决在WIN11和ubuntu20.04通过samba共享时出现局域网千兆带宽拉满的情况

20241116解决在WIN11和ubuntu20.04通过samba共享时出现局域网千兆带宽拉满的情况 2024/11/16 13:42 缘起&#xff1a;最近需要通过iperf3打流&#xff0c;因此在ubuntu20.04服务器上常开sudo nethogs监控流量。 但是发现一个异常&#xff0c;ubuntu20.04服务器上发送的流量过大…

DevOps工程技术价值流:打造卓越项目协作的优化宝典

一、引言 解锁项目协作的无限潜力&#xff0c;覆盖全链路实现流畅高效。 在当今瞬息万变的商业环境中&#xff0c;项目协作的效率和效果直接关系到企业的竞争力和市场响应速度。DevOps工程技术价值流中的项目协作优化&#xff0c;不仅是技术层面的革新&#xff0c;更是团队协…

WSL--无需安装虚拟机和docker可以直接在Windows操作系统上使用Linux操作系统

安装WSL命令 管理员打开PowerShell或Windows命令提示符&#xff0c;输入wsl --install&#xff0c;然后回车 注意&#xff1a;此命令将启用运行 WSL 和安装 Linux 的 Ubuntu 发行版所需的功能。 注意&#xff1a;默认安装最新的Ubuntu发行版。 注意&#xff1a;默认安装路径是…