Mattermost là một giải pháp thay thế mã nguồn mở cho Slack và Microsoft Teams. Nó cho phép bạn tự lưu trữ trò chuyện trực tuyến và cung cấp nhiều tính năng như chia sẻ tệp, tìm kiếm, tự động hóa và nhiều tích hợp của bên thứ ba.
Mattermost là một nền tảng cộng tác được thiết kế như một cuộc trò chuyện nội bộ cho các tổ chức và công ty. Nó kết hợp các hệ thống nhắn tin, tự động hóa, tích hợp và bảo mật cho các quy trình công việc quan trọng.
Hướng dẫn này sẽ chỉ cho bạn cách cài đặt Mattermost trên máy chủ Debian 12. Bạn sẽ cài đặt Mattermost với PostgreSQL và Nginx, và bạn cũng sẽ bảo mật Mattermost bằng chứng chỉ SSL.
Trước tiên, hãy chạy lệnh sau để cập nhật chỉ mục gói Debian của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22155%22%3E%3C/svg%3E
Bây giờ hãy cài đặt các phần phụ thuộc như PostgreSQL, Nginx, Certbot, Gnupg và curl bằng lệnh 'apt' bên dưới. Nhập 'Y' để xác nhận cài đặt.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22383%22%3E%3C/svg%3E
Sau khi cài đặt hoàn tất, hãy kiểm tra trạng thái dịch vụ PostgreSQL bằng lệnh 'systemctl'. Bạn sẽ thấy PostgreSQL đang chạy trên hệ thống của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22159%22%3E%3C/svg%3E
Cuối cùng, hãy kiểm tra trạng thái dịch vụ Nginx bằng lệnh bên dưới. Dịch vụ Nginx sẽ được thiết lập và chạy trên hệ thống Debian của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22259%22%3E%3C/svg%3E
Đăng nhập vào PostgreSQL bằng lệnh 'psql' bên dưới.
Bây giờ hãy chạy các truy vấn sau để tạo cơ sở dữ liệu và người dùng mới 'mattermost' với mật khẩu 'mật khẩu'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22692%22%20height=%22190%22%3E%3C/svg%3E
Tiếp theo, hãy kiểm tra danh sách cơ sở dữ liệu và người dùng trong máy chủ PostgreSQL của bạn bằng sau:
Sau đây, bạn có thể thấy cơ sở dữ liệu và người dùng 'mattermost' đã được tạo.
Nhập 'quit' để thoát khỏi shell 'psql'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22393%22%3E%3C/svg%3E
Với Sau khi tạo người dùng và cơ sở dữ liệu PostgreSQL mới, bạn sẽ xác minh người dùng PostgreSQL của mình để đảm bảo người dùng này có thể đăng nhập vào máy chủ PostgreSQL.
Bây giờ hãy chạy lệnh 'psql' bên dưới để đăng nhập vào máy chủ PostgreSQL với người dùng 'mattermost'. Nhập mật khẩu khi được nhắc.
Sau khi đăng nhập, hãy kiểm tra kết nối của bạn bằng truy vấn sau:
Bạn sẽ thấy trạng thái kết nối với PostgreSQL như sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22161%22%3E%3C/svg%3E
Trước khi tải xuống Mattermost, hãy thêm người dùng hệ thống mới 'mattermost' bằng lệnh sau:
Bây giờ, hãy chạy lệnh 'wget' sau để tải xuống Mattermost và giải nén bằng lệnh 'tar' bên dưới. Máy chủ Mattermost sẽ có sẵn trong thư mục 'mattermost'.
Tiếp theo, di chuyển thư mục 'mattermost' đến '/opt' bằng lệnh sau. Vì vậy, thư mục cài đặt Mattermost sẽ có tại '/opt/mattermost'.
Sau đó, tạo một thư mục dữ liệu mới '/opt/mattermost/data'. Điều này sẽ được sử dụng để lưu trữ dữ liệu người dùng.
Tiếp theo, mở cấu hình Mattermost mặc định '/opt/mattermost/config/config.json' bằng trình chỉnh sửa 'nano'.
Thay đổi 'SiteURL' bằng tên miền của bạn như '
'.
Trong phần 'SqlSettings' và 'DataSource', hãy thay đổi thông tin xác thực cơ sở dữ liệu bằng thông tin chi tiết của bạn như sau:
Lưu tệp và thoát khỏi trình chỉnh sửa.
Cuối cùng, hãy chạy lệnh bên dưới để thay đổi quyền sở hữu thư mục '/opt/mattermost' thành người dùng 'mattermost'. Ngoài ra, hãy đảm bảo rằng nhóm 'mattermost' có thể ghi vào thư mục '/opt/mattermost'.
Tạo tệp dịch vụ systemd mới '/etc/systemd/system/mattermost.service' bằng trình soạn thảo 'nano'.
Chèn cấu hình sau vào tập tin.
Lưu tập tin và thoát khỏi trình soạn thảo.
Bây giờ hãy chạy lệnh 'systemctl' bên dưới để tải lại trình quản lý systemd.
Cuối cùng, bây giờ bạn có thể bắt đầu, kích hoạt và xác minh dịch vụ 'mattermost' bằng lệnh sau lệnh.
Như đã thấy trong phần sau, dịch vụ 'mattermost' đang chạy và được bật.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22259%22%3E%3C/svg%3E
Trước khi cấu hình Nginx, hãy chạy lệnh bên dưới để dừng dịch vụ Nginx và tạo chứng chỉ SSL cho Mattermost. Đảm bảo thay đổi tên miền và địa chỉ email bằng thông tin của bạn.
Sau khi quá trình hoàn tất, chứng chỉ SSL/của bạn sẽ có trong thư mục '/etc/letsencrypt/live/mattermost.howtoforge.local'.
Tiếp theo, mở cấu hình Nginx mặc định '/etc/nginx/nginx.conf' bằng trình soạn thảo 'nano'.
Thêm cấu hình sau vào trước dòng '/etc/nginx/nginx.conf'.
Lưu và thoát file.
Bây giờ hãy tạo cấu hình khối máy chủ Nginx mới '/etc/nginx/sites-available/mattermost' bằng trình soạn thảo 'nano'.
Chèn cấu hình bên dưới và đảm bảo thay đổi tùy chọn 'server_name' bằng tên miền của bạn. Ngoài ra, hãy đảm bảo điều chỉnh đường dẫn của chứng chỉ SSL.
Khi hoàn tất, hãy lưu tệp và thoát khỏi trình chỉnh sửa.
Bây giờ hãy kích hoạt khối máy chủ Nginx cho mattermost và xác minh cú pháp Nginx của bạn. Nếu cú pháp của bạn đúng, bạn sẽ thấy đầu ra 'cú pháp là ok - thử nghiệm thành công'.
Cuối cùng, hãy chạy lệnh `systemctl` bên dưới để khởi động lại dịch vụ Nginx và áp dụng các thay đổi của bạn. Với điều này, Mattermost sẽ chạy dưới proxy ngược Nginx.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22201%22%3E%3C/svg%3E
Nhập tên người dùng, email và mật khẩu quản trị viên mới, sau đó nhấp vào 'Tạo tài khoản'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22462%22%3E%3C/svg%3E
Nhập tên tổ chức của bạn và nhấp vào 'Tiếp tục'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22330%22%3E%3C/svg%3E
Để tích hợp với GitHub, Gitlab, Jira hoặc/và Zoom, hãy chọn tùy theo nhu cầu. Sau đó nhấp vào 'Tiếp tục' một lần nữa.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22368%22%3E%3C/svg%3E
Nhấp vào 'Hoàn tất thiết lập' để hoàn tất cấu hình.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22489%22%3E%3C/svg%3E
Sau khi quá trình này hoàn tất hoàn tất, bạn sẽ thấy bảng điều khiển Mattermost như sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22368%22%3E%3C/svg%3E
Mattermost là một nền tảng cộng tác được thiết kế như một cuộc trò chuyện nội bộ cho các tổ chức và công ty. Nó kết hợp các hệ thống nhắn tin, tự động hóa, tích hợp và bảo mật cho các quy trình công việc quan trọng.
Hướng dẫn này sẽ chỉ cho bạn cách cài đặt Mattermost trên máy chủ Debian 12. Bạn sẽ cài đặt Mattermost với PostgreSQL và Nginx, và bạn cũng sẽ bảo mật Mattermost bằng chứng chỉ SSL.
Điều kiện tiên quyết
Để bắt đầu với hướng dẫn này, hãy đảm bảo bạn có những điều sau:- Máy chủ Debian 12
- Người dùng không phải root có quyền quản trị viên
- Tên miền đã sẵn sàng và được trỏ đến địa chỉ IP của máy chủ
Cài đặt các phần phụ thuộc
Trước khi cài đặt Mattermost, bạn cần cài đặt các phần phụ thuộc cho nó. Điều này bao gồm máy chủ cơ sở dữ liệu PostgreSQL, máy chủ web Nginx và Certbot.Trước tiên, hãy chạy lệnh sau để cập nhật chỉ mục gói Debian của bạn.
Mã:
sudo apt update
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22155%22%3E%3C/svg%3E
Bây giờ hãy cài đặt các phần phụ thuộc như PostgreSQL, Nginx, Certbot, Gnupg và curl bằng lệnh 'apt' bên dưới. Nhập 'Y' để xác nhận cài đặt.
Mã:
sudo apt install postgresql postgresql-contrib nginx certbot gnupg curl
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22383%22%3E%3C/svg%3E
Sau khi cài đặt hoàn tất, hãy kiểm tra trạng thái dịch vụ PostgreSQL bằng lệnh 'systemctl'. Bạn sẽ thấy PostgreSQL đang chạy trên hệ thống của bạn.
Mã:
sudo systemctl is-enabled postgresql
sudo systemctl status PostgreSQL
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22159%22%3E%3C/svg%3E
Cuối cùng, hãy kiểm tra trạng thái dịch vụ Nginx bằng lệnh bên dưới. Dịch vụ Nginx sẽ được thiết lập và chạy trên hệ thống Debian của bạn.
Mã:
sudo systemctl is-enabled nginx
sudo systemctl status nginx
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22259%22%3E%3C/svg%3E
Thiết lập người dùng và cơ sở dữ liệu PostgreSQL
Sau khi cài đặt các phụ thuộc, bạn sẽ tạo cơ sở dữ liệu và người dùng mới cho Mattermost. Đối với điều này, bạn sẽ sử dụng shell PostgreSQL 'psql', được cài đặt theo mặc định khi cài đặt máy chủ PostgreSQL.Đăng nhập vào PostgreSQL bằng lệnh 'psql' bên dưới.
Mã:
sudo -u postgres psql
Mã:
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;
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22692%22%20height=%22190%22%3E%3C/svg%3E
Tiếp theo, hãy kiểm tra danh sách cơ sở dữ liệu và người dùng trong máy chủ PostgreSQL của bạn bằng sau:
Mã:
\l
\du
Nhập 'quit' để thoát khỏi shell 'psql'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22393%22%3E%3C/svg%3E
Với Sau khi tạo người dùng và cơ sở dữ liệu PostgreSQL mới, bạn sẽ xác minh người dùng PostgreSQL của mình để đảm bảo người dùng này có thể đăng nhập vào máy chủ PostgreSQL.
Bây giờ hãy chạy lệnh 'psql' bên dưới để đăng nhập vào máy chủ PostgreSQL với người dùng 'mattermost'. Nhập mật khẩu khi được nhắc.
Mã:
sudo -u postgres psql --host=localhost --dbname=mattermost --username=mmuser --password
Mã:
\conninfo
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22161%22%3E%3C/svg%3E
Cài đặt Mattermost
Lúc này, máy chủ của bạn đã sẵn sàng để cài đặt Mattermost. Bây giờ, bạn sẽ tải xuống mã nguồn Mattermost, thiết lập thư mục cài đặt, cấu hình Mattermost với PostgreSQL, thiết lập tên miền Mattermost, sau đó thiết lập quyền và quyền sở hữu thích hợp cho thư mục cài đặt Mattermost.Trước khi tải xuống Mattermost, hãy thêm người dùng hệ thống mới 'mattermost' bằng lệnh sau:
Mã:
sudo useradd --system --user-group mattermost
Mã:
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
Mã:
mv mattermost /opt/
Mã:
sudo mkdir -p /opt/mattermost/data
Mã:
sudo nano /opt/mattermost/config/config.json
Mã:
"ServiceSettings": {
"SiteURL": "https://mattermost.howtoforge.local",
Mã:
"SqlSettings": {
"DriverName": "postgres",
"DataSource": "postgres://mattermost:password@localhost/mattermost?sslmode=disable\u0026connect_timeout=10\u0026binary_parameters=yes",
Cuối cùng, hãy chạy lệnh bên dưới để thay đổi quyền sở hữu thư mục '/opt/mattermost' thành người dùng 'mattermost'. Ngoài ra, hãy đảm bảo rằng nhóm 'mattermost' có thể ghi vào thư mục '/opt/mattermost'.
Mã:
sudo chown -R mattermost:mattermost /opt/mattermost
sudo chmod -R g+w /opt/mattermost
Tạo dịch vụ systemd cho Mattermost
Trong phần này, bạn sẽ tạo tệp dịch vụ systemd mới cho Mattermost. Với điều này, Mattermost sẽ chạy ở chế độ nền và bạn có thể dễ dàng quản lý quy trình Mattermost bằng tiện ích 'systemctl'.Tạo tệp dịch vụ systemd mới '/etc/systemd/system/mattermost.service' bằng trình soạn thảo 'nano'.
Mã:
sudo nano /etc/systemd/system/mattermost.service
Mã:
[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
Bây giờ hãy chạy lệnh 'systemctl' bên dưới để tải lại trình quản lý systemd.
Mã:
sudo systemctl daemon-reload
Mã:
sudo systemctl enable --now mattermost
sudo systemctl status mattermost
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22259%22%3E%3C/svg%3E
Cấu hình Nginx làm reverse proxy
Lúc này, Mattermost đang chạy trên máy chủ Debian 12 của bạn. Đối với phần này, bạn sẽ tạo chứng chỉ SSL từ Letsencrypt, sau đó tạo một khối máy chủ Nginx mới sẽ được sử dụng làm proxy ngược cho Mattermost.Trước khi cấu hình Nginx, hãy chạy lệnh bên dưới để dừng dịch vụ Nginx và tạo chứng chỉ SSL cho Mattermost. Đảm bảo thay đổi tên miền và địa chỉ email bằng thông tin của bạn.
Mã:
sudo systemctl stop nginx
sudo certbot --certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d mattermost.howtoforge.local
Tiếp theo, mở cấu hình Nginx mặc định '/etc/nginx/nginx.conf' bằng trình soạn thảo 'nano'.
Mã:
sudo nano /etc/nginx/nginx.conf
Mã:
server_names_hash_bucket_size 64;
include /etc/nginx/conf.d/*.conf;
Bây giờ hãy tạo cấu hình khối máy chủ Nginx mới '/etc/nginx/sites-available/mattermost' bằng trình soạn thảo 'nano'.
Mã:
sudo nano /etc/nginx/sites-available/mattermost
Mã:
upstream backend {
server 127.0.0.1:8065;
keepalive 32;
}
server {
listen 80;
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; # Enable HTTP/2 Server Push
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;
# Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
ssl_protocols TLSv1.2 TLSv1.3;
# Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
# prevent replay attacks.
#
# @see: 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_session_cache shared:SSL:50m;
# HSTS (ngx_http_headers_module is required) (15768000 seconds = six months)
add_header Strict-Transport-Security max-age=15768000;
# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
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;
}
}
# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the '$ssl_early_data' variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data {
"~." $ssl_early_data;
default "";
}
Bây giờ hãy kích hoạt khối máy chủ Nginx cho mattermost và xác minh cú pháp Nginx của bạn. Nếu cú pháp của bạn đúng, bạn sẽ thấy đầu ra 'cú pháp là ok - thử nghiệm thành công'.
Mã:
sudo ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/
sudo nginx -t
Mã:
sudo systemctl restart nginx
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22201%22%3E%3C/svg%3E
Tạo không gian làm việc đầu tiên trong Mattermost
Mở trình duyệt web của bạn và truy cập https://mattermost.howtoforge.local. Nếu cài đặt thành công, bạn sẽ được yêu cầu tạo quản trị viên mới cho Mattermost.Nhập tên người dùng, email và mật khẩu quản trị viên mới, sau đó nhấp vào 'Tạo tài khoản'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22462%22%3E%3C/svg%3E
Nhập tên tổ chức của bạn và nhấp vào 'Tiếp tục'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22330%22%3E%3C/svg%3E
Để tích hợp với GitHub, Gitlab, Jira hoặc/và Zoom, hãy chọn tùy theo nhu cầu. Sau đó nhấp vào 'Tiếp tục' một lần nữa.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22368%22%3E%3C/svg%3E
Nhấp vào 'Hoàn tất thiết lập' để hoàn tất cấu hình.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22489%22%3E%3C/svg%3E
Sau khi quá trình này hoàn tất hoàn tất, bạn sẽ thấy bảng điều khiển Mattermost như sau:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22368%22%3E%3C/svg%3E