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ới nhiều tính năng như chia sẻ tệp, tìm kiếm, tự động hóa và 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.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt Mattermost trên máy chủ Ubuntu 24.04. Bạn sẽ cài đặt Mattermost với PostgreSQL làm cơ sở dữ liệu và Nginx làm proxy ngược. Bạn cũng sẽ bảo mật Mattermost bằng HTTPS, sau đó tạo không gian làm việc đầu tiên của mình bằng Mattermost.
Đầu tiên, hãy chạy lệnh 'apt' bên dưới để cập nhật chỉ mục gói Ubuntu của bạn và cài đặt các gói phụ thuộc như PostgreSQL, máy chủ web Nginx và Certbot. Máy chủ PostgreSQL sẽ được sử dụng làm cơ sở dữ liệu mặc định cho Mattermost và Nginx sẽ được sử dụng làm proxy ngược.
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=%22280%22%3E%3C/svg%3E
Sau khi cài đặt, hãy kiểm tra trạng thái dịch vụ PostgreSQL để đảm bảo rằng đang chạy.
Bạn có thể thấy bên dưới máy chủ PostgreSQL đã được bật và đang chạy.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22183%22%3E%3C/svg%3E
Bây giờ hãy kiểm tra trạng thái máy chủ web Nginx bằng lệnh bên dưới. Bạn sẽ thấy Nginx cũng đang chạy và được bật trên hệ thống Ubuntu của bạn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22279%22%3E%3C/svg%3E
Đăng nhập vào shell 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 mới 'mattermostdb' và người dùng mới 'mmuser' với mật khẩu 'mật khẩu'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22705%22%20height=%22293%22%3E%3C/svg%3E
Sau khi bạn đã tạo cơ sở dữ liệu và người dùng, hãy chạy truy vấn bên dưới để liệt kê các cơ sở dữ liệu và người dùng khả dụng trong PostgreSQL của bạn máy chủ.
Trong đầu ra sau, bạn có thể thấy cơ sở dữ liệu 'mattermostdb' và người dùng 'mmuser' có sẵn trên máy chủ PostgreSQL.
Bây giờ hãy nhập 'quit' để thoát khỏi PostgreSQL.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22524%22%3E%3C/svg%3E
Tiếp theo, chạy lệnh 'psql' bên dưới để đăng nhập vào cơ sở dữ liệu 'mattermostdb' với tư cách là người dùng 'mmuser'. Nhập mật khẩu khi được nhắc.
Cuối cùng, hãy xác minh kết nối của bạn bằng cách chạy truy vấn '\conninfo' bên dưới. Đảm bảo bạn đã đăng nhập với tư cách là người dùng 'mmuser' vào cơ sở dữ liệu 'mattermostdb'.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22201%22%3E%3C/svg%3E
Trước tiên, hãy chạy lệnh 'useradd' bên dưới để tạo người dùng 'mattermost' mới trên hệ thống của bạn.
Tải xuống tệp nhị phân Mattermost bằng lệnh 'wget' bên dưới. Sau đó, giải nén Mattermost bằng lệnh 'tar'.
Bây giờ, hãy di chuyển thư mục đã giải nén đến '/opt/mattermost' bằng lệnh bên dưới.
Tiếp theo, tạo một thư mục dữ liệu mới '/var/mattermost/data' để lưu trữ dữ liệu người dùng.
Sau đó, chỉnh sửa cấu hình mặc định '/opt/mattermost/config/config.json' bằng trình chỉnh sửa 'nano'.
Trong Phần 'ServiceSettings', nhập tên miền của bạn vào dòng 'SiteURL'.
Trong phần 'SqlSettings', hãy thay đổi cơ sở dữ liệu chi tiết bằng thông tin chi tiết cơ sở dữ liệu PostgreSQL của bạn.
Lưu tệp và thoát khi hoàn tất.
Cuối cùng, thực hiện các lệnh sau để thay đổi quyền sở hữu thư mục '/opt/mattermost' thành người dùng 'mattermost' và cho phép quyền ghi vào thư mục đó.
Ngoài ra, để kiểm tra, bạn có thể khởi động Mattermost theo cách thủ công bằng lệnh bên dưới.
Tạo một tệp dịch vụ systemd mới '/etc/systemd/system/mattermost.service' bằng trình chỉnh sửa 'nano'.
Chèn cấu hình sau vào tập tin.
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.
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, hãy khởi động và kích hoạt dịch vụ 'mattermost' bằng lệnh sau, sau đó kiểm tra để đảm bảo rằng dịch vụ đang chạy.
Nếu Mattermost đang chạy, bạn sẽ thấy đầu ra sau trên màn hình của mình.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22305%22%3E%3C/svg%3E
Trước khi thiết lập Nginx, hãy chạy lệnh 'certbot' bên dưới để tạo chứng chỉ SSL/TLS cho cài đặt Mattermost của bạn. Hãy đảm bảo thay đổi địa chỉ email và tên miền bằng thông tin chi tiết của bạn.
Bây giờ hãy mở tệp cấu hình Nginx mặc định '/etc/nginx/nginx.conf' bằng cách sử dụng 'nano'.
Chèn dòng sau trước 'include /etc/nginx/conf.d/*.conf;' dòng.
Lưu và thoát khỏi tệp khi hoàn tất.
Tiếp theo, 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' sau.
Chèn cấu hình sau và đảm bảo thay đổi tên miền bằng thông tin.
Lưu tệp và thoát khỏi trình chỉnh sửa.
Bây giờ hãy chạy lệnh bên dưới để kích hoạt khối máy chủ 'mattermost' và xác minh cú pháp Nginx của bạn. Nếu bạn có cú pháp Nginx đúng, bạn sẽ thấy một thông báo như 'cú pháp ổn - 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 máy chủ web Nginx. Với thao tác này, cài đặt Mattermost sẽ sẵn sàng khi HTTPS cũng được bật.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22221%22%3E%3C/svg%3E
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22321%22%3E%3C/svg%3E
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22365%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.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt Mattermost trên máy chủ Ubuntu 24.04. Bạn sẽ cài đặt Mattermost với PostgreSQL làm cơ sở dữ liệu và Nginx làm proxy ngược. Bạn cũng sẽ bảo mật Mattermost bằng HTTPS, sau đó tạo không gian làm việc đầu tiên của mình bằng Mattermost.
Đ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ủ Ubuntu 24.04
- Người dùng không phải root có quyền quản trị viên
- Tên miền được trỏ đến địa chỉ IP của máy chủ
Cài đặt các phần phụ thuộc
Để cài đặt Mattermost, bạn phải cài đặt các phần phụ thuộc trên máy chủ của mình, bao gồm máy chủ cơ sở dữ liệu PostgreSQL, máy chủ web Nginx và Certbot.Đầu tiên, hãy chạy lệnh 'apt' bên dưới để cập nhật chỉ mục gói Ubuntu của bạn và cài đặt các gói phụ thuộc như PostgreSQL, máy chủ web Nginx và Certbot. Máy chủ PostgreSQL sẽ được sử dụng làm cơ sở dữ liệu mặc định cho Mattermost và Nginx sẽ được sử dụng làm proxy ngược.
Mã:
sudo apt update && sudo apt install postgresql postgresql-contrib nginx certbot
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22280%22%3E%3C/svg%3E
Sau khi cài đặt, hãy kiểm tra trạng thái dịch vụ PostgreSQL để đảm bảo rằng đang chạy.
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=%22183%22%3E%3C/svg%3E
Bây giờ hãy kiểm tra trạng thái máy chủ web Nginx bằng lệnh bên dưới. Bạn sẽ thấy Nginx cũng đang chạy và được bật trên hệ thống Ubuntu 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=%22279%22%3E%3C/svg%3E
Thiết lập cơ sở dữ liệu PostgreSQL và người dùng
Sau khi cài đặt các phụ thuộc, bạn sẽ tạo một Cơ sở dữ liệu PostgreSQL và người dùng cho Mattermost sử dụng shell 'psql' hoặc PostgreSQL. Cuối cùng, bạn cũng sẽ kiểm tra xác thực với PostgreSQL với người dùng mới của mình.Đăng nhập vào shell PostgreSQL bằng lệnh 'psql' bên dưới.
Mã:
sudo -u postgres psql
Mã:
CREATE DATABASE mattermostdb;
CREATE USER mmuser WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE mattermostdb to mmuser;
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22705%22%20height=%22293%22%3E%3C/svg%3E
Sau khi bạn đã tạo cơ sở dữ liệu và người dùng, hãy chạy truy vấn bên dưới để liệt kê các cơ sở dữ liệu và người dùng khả dụng trong PostgreSQL của bạn máy chủ.
Mã:
\du
\l
Bây giờ hãy nhập 'quit' để thoát khỏi PostgreSQL.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22524%22%3E%3C/svg%3E
Tiếp theo, chạy lệnh 'psql' bên dưới để đăng nhập vào cơ sở dữ liệu 'mattermostdb' với tư cách là người dùng 'mmuser'. Nhập mật khẩu khi được nhắc.
Mã:
sudo -u postgres psql --host=localhost --dbname=mattermostdb --username=mmuser --password
Mã:
\conninfo
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22201%22%3E%3C/svg%3E
Đang tải xuống Mattermost
Khi cơ sở dữ liệu đã sẵn sàng, bây giờ bạn sẽ tải Mattermost xuống, tạo thư mục dữ liệu, thiết lập tên miền Mattermost và PostgreSQL làm cơ sở dữ liệu, sau đó bạn sẽ thiết lập quyền và quyền sở hữu phù hợp cho Mattermost.Trước tiên, hãy chạy lệnh 'useradd' bên dưới để tạo người dùng 'mattermost' mới trên hệ thống của bạn.
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": "mattermost.howtoforge.local",
Mã:
"SqlSettings": {
"DriverName": "postgres",
"DataSource": "postgres://mmuser:password@localhost/mattermostdb?sslmode=disable\u0026connect_timeout=10\u0026binary_parameters=yes",
Cuối cùng, thực hiện các lệnh sau để thay đổi quyền sở hữu thư mục '/opt/mattermost' thành người dùng 'mattermost' và cho phép quyền ghi vào thư mục đó.
Mã:
sudo chown -R mattermost:mattermost /opt/mattermost
sudo chmod -R g+w /opt/mattermost
Mã:
cd /opt/mattermost
sudo -u mattermost ./bin/mattermost
Chạy Mattermost như một dịch vụ systemd
Trong phần này, bạn sẽ tạo một tệp dịch vụ systemd mới cho Mattermost. Với tệp này, Mattermost sẽ chạy ở chế độ nền và bạn có thể dễ dàng quản lý tệp này thông qua lệnh 'systemctl'.Tạo một tệp dịch vụ systemd mới '/etc/systemd/system/mattermost.service' bằng trình chỉnh sửa '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=%22305%22%3E%3C/svg%3E
Thiết lập Nginx làm proxy ngược
Tại thời điểm này, Mattermost đang hoạt động và bây giờ bạn sẽ tạo chứng chỉ SSL/TLS cho Mattermost thông qua Certbot, sau đó thiết lập Nginx làm proxy ngược. Vì vậy, hãy đảm bảo rằng tên miền của bạn được trỏ đến địa chỉ IP của máy chủ.Trước khi thiết lập Nginx, hãy chạy lệnh 'certbot' bên dưới để tạo chứng chỉ SSL/TLS cho cài đặt Mattermost của bạn. Hãy đảm bảo thay đổi địa chỉ email và tên miền bằng thông tin chi tiết 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
Mã:
sudo nano /etc/nginx/nginx.conf
Mã:
server_names_hash_bucket_size 64;
include /etc/nginx/conf.d/*.conf;
Tiếp theo, 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' sau.
Mã:
sudo nano /etc/nginx/sites-available/mattermost
Mã:
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; # 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 chạy lệnh bên dưới để kích hoạt khối máy chủ 'mattermost' và xác minh cú pháp Nginx của bạn. Nếu bạn có cú pháp Nginx đúng, bạn sẽ thấy một thông báo như 'cú pháp ổn - 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 start nginx
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22221%22%3E%3C/svg%3E
Truy cập Mattermost
Mở trình duyệt web và truy cập tên miền của bạn https://mattermost.howtoforge.local/. Từ đây, bạn có thể tạo không gian làm việc đầu tiên của mình trong Mattermost.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22321%22%3E%3C/svg%3E
- Nhấp vào 'Xem trong trình duyệt' để thiết lập Mattermost.
- Nhập thông tin chi tiết về tài khoản của bạn và nhấp vào 'Tạo tài khoản'.
- Nhập tên tổ chức của bạn và nhấp vào 'Tiếp tục'.
- 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=%22365%22%3E%3C/svg%3E