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

简介

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_datassl_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 staplingssl_stapling on;ssl_stapling_verify on;# 添加X-Early-Data头部,用于调试TLS v1.3add_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.xdnf.cn/news/18195.html

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

相关文章

初识Linux—— 基本指令(上)

前言 Linux简述 ​ Linux是一种开源、自由、类UNIX的操作系统&#xff0c;由著名的芬兰程序员林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;于1991年首次发布。Linux的内核在GNU通用公共许可证&#xff08;GPL&#xff09;下发布&#xff0c;这意味着任何人都可以自由…

VBA技术资料MF223:从文件添加新模块

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

利用RAGflow和LM Studio建立食品法规问答系统

前言 食品企业在管理标准、法规&#xff0c;特别是食品原料、特殊食品法规时&#xff0c;难以通过速查法规得到准确的结果。随着AI技术的发展&#xff0c;互联网上出现很多AI知识库的解决方案。 经过一轮测试&#xff0c;找到问题抓手、打通业务底层逻辑、对齐行业颗粒度、沉…

路径规划——RRT*算法

路径规划——RRT*算法 算法原理 RRT Star 算法是一种渐近最优的路径规划算法&#xff0c;它是 RRT 算法的优化版本。RRT Star 算法通过不断地迭代和优化&#xff0c;最终可以得到一条从起点到目标点的最优路径。 在学习RRT Star 算法之前最好先学习一下RRT原始算法&#xff1…

Java——并发工具类库线程安全问题

摘要 本文探讨了Java并发工具类库中的线程安全问题&#xff0c;特别是ThreadLocal导致的用户信息错乱异常场景。文章通过一个Spring Boot Web应用程序示例&#xff0c;展示了在Tomcat线程池环境下&#xff0c;ThreadLocal如何因线程重用而导致异常&#xff0c;并讨论了其他并发…

网络编程套接字

前言&#xff1a; 认识了网络&#xff0c;我们就应该考虑一下如何编程实现不同主机上的应用进程之间如何进行双向互通的端点。 套接字&#xff08;Socket&#xff09;是网络编程的一种基本概念&#xff0c;套接字是应用程序通过网络协议进行通信的接口&#xff0c;是操作系统提…

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

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

vue学习第8章(vue的购物车案例)

&#x1f389;&#x1f389;&#x1f389;欢迎来到我的博客,我是一名自学了2年半前端的大一学生,熟悉的技术是JavaScript与Vue.目前正在往全栈方向前进, 如果我的博客给您带来了帮助欢迎您关注我,我将会持续不断的更新文章!!!&#x1f64f;&#x1f64f;&#x1f64f; 文章目录…

【SpringBoot】什么是Maven,以及如何配置国内源实现自动获取jar包

前言 &#x1f31f;&#x1f31f;本期讲解关于Maven的了解和如何进行国内源的配置~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f3…

【Linux】:进程信号(详谈信号捕捉 OS 运行)

✨ 来去都是自由风&#xff0c;该相逢的人总会相逢 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;Linux—登神长阶 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞…

七、利用CSS和多媒体美化页面的习题

题目一&#xff1a; 利用CSS技术&#xff0c;结合表格和列表&#xff0c;制作并美化 “ 翡翠阁 ”页面。运行效果如下 运行效果&#xff1a; 代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>翡翠阁</title>&…

动态规划 —— 子数组系列-等差数列划分

1. 等差数列划分 题目链接&#xff1a; 413. 等差数列划分 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/arithmetic-slices/description/ 2. 算法原理 状态表示&#xff1a;以某一个位置为结尾或者以某一个位置为起点 dp[i]表示&#xff1a;以i位置为…

vue使用List.reduce实现统计

需要对集合的某些元素的值进行计算时&#xff0c;可以在计算属性中使用forEach方法 1.语法&#xff1a;集合.reduce ( ( 定义阶段性累加后的结果 , 定义遍历的每一项 ) > 定义每一项求和逻辑执行后的返回结果 , 定义起始值 ) 2、简单使用场景&#xff1a;例如下面…

TensorFlow 2.0 windows11 GPU 训练环境配置

前言 在一切开始之前&#xff0c;请确保你的cmd命令行和powershell命令行可以正常打开。如果不能&#xff0c;建议重装系统。我不确定这是否会影响你最终的结果&#xff0c;毕竟windows的坑太多了。 安装顺序&#xff1a;visual studio -> cuda -> cudnn -> python…

MyISAM和InnoDB介绍及切换存储引擎方法

MyISAM 和 InnoDB 都是 MySQL 数据库管理系统中常用的存储引擎&#xff08;Storage Engine&#xff09;。存储引擎决定了数据库如何存储、读取、更新数据以及如何管理事务、锁定等操作。 1. MyISAM 存储引擎 MyISAM 是 MySQL 的默认存储引擎之一&#xff0c;尤其是在早期版本…

什么是嵌入式?

目录 一、什么是嵌入式 二、嵌入式系统的特点 &#xff08;一&#xff09;专用性与隐蔽性 &#xff08;二&#xff09;高可靠性与实时性 &#xff08;三&#xff09;资源固定与小型化 三、嵌入式系统的发展历史 &#xff08;一&#xff09;20 世纪 60 年代早期雏形 &am…

在几分钟内将数据从 Oracle 迁移到 ClickHouse

ClickHouse 是一个开源的面向列的数据库管理系统。它在实时数据处理方面的出色性能显着增强了数据分析和业务洞察力。将数据从 Oracle 迁移到 ClickHouse 可以释放数据在决策中的力量&#xff0c;这是单独使用 Oracle 无法实现的。 本教程介绍如何使用 BladePipe 将数据从 Orac…

Linux网络:HTTPS协议

Linux网络&#xff1a;HTTPS协议 加密方式对称加密非对称加密混合加密中间人攻击 证书数据签名CA认证 HTTPSSSL/TSLHTTPS 在HTTP协议中&#xff0c;所有的数据都采用明文的形式传输&#xff0c;这就会导致数据非常容易泄露&#xff0c;只要拿到HTTP报文&#xff0c;就可以窃取各…

(计算机毕设)基于springboot免税商品购物商城的设计与实现

博主可接毕设设计&#xff01;&#xff01;&#xff01; 各种毕业设计源码只要是你有的题目我这里都有源码 基于springboot免税商品购物商城的设计与实现 摘 要 Abstract 第一章 绪论 1.1 课题开发的背景 1.2 课题研究的意义 1.3 研究内容 第二章 系统开发关键技术…

计算机能力挑战赛c语言2024

先看看答题页面长啥样&#xff1a;选择题15道&#xff0c;编程题4道 选择题&#xff08;楼主个人答案&#xff09; 编程题