Cách cài đặt Mattermost Team Messaging System trên Debian 10

theanh

Administrator
Nhân viên
Mattermost là má»™t hệ thống nhắn tin mã nguồn mở được viết bằng ngôn ngữ láºp trình Golang và React. Đây là má»™t giải pháp thay thế cho Slack, chúng ta có thể sá» dụng nó để xây dá»±ng dịch vụ nhắn tin cá»§a riêng mình như Slack hoặc Hipchat.

Mattermost đưa hoạt động giao tiếp cá»§a nhóm bạn đến má»™t nÆ¡i duy nhất và có thể truy cáºp ở bất kỳ đâu. Bạn có thể truy cáºp từ máy tÃnh để bÃn, thiết bị Android và iPhone.

Trong hướng dẫn nÃy, chúng tôi sẽ chỉ cho bạn cách cÃi đặt Mattermost trên Debian Buster 10. Chúng tôi sẽ cÃi đặt Mattermost vá»›i máy chá»§ cÆ¡ sở dữ liệu MySQL, máy chá»§ web Nginx và chạy Mattermost dưới dạng dịch vụ Systemd trên phiên bản Debian má»›i nhất Buster 10.

Điều kiện tiên quyết

Đối vá»›i hướng dẫn nÃy, chúng tôi sẽ kiểm tra cÃi đặt Mattermost trên Debian 10 vá»›i 2GB Ram, 25 dung lượng đĩa trống và 2CPU.

Chúng ta sẽ lÃm gì?
  • CÃi đặt Máy chá»§ MySQL
  • Tạo CÆ¡ sở dữ liệu MySQL cho Mattermost
  • Thêm Người dùng Hệ thống và Tải xuống Mattermost
  • Cấu hình Mattermost
  • Thiết láºp Mattermost dưới dạng Dịch vụ Systemd
  • Tạo SSL Letsencrypt
  • CÃi đặt và Cấu hình Nginx dưới dạng Kiểm tra Reverse-Proxy

Bước 1 - CÃi đặt cÆ¡ sở dữ liệu MySQL​

Đầu tiên, chúng ta sẽ cÃi đặt MySQL Server 8.0 từ kho lưu trữ chÃnh thức vÃo máy chá»§ Debian cá»§a mình. Sp, chúng ta sẽ thêm kho lưu trữ MySQL chÃnh thức và cÃi đặt các gói MySQL.

CÃi đặt công cụ 'gnupg2' vÃo máy chá»§ Debian bằng lệnh apt bên dưới.
Mã:
sudo apt install curl wget gnupg2
Tải xuống và thêm kho lưu trữ MySQL cho hệ thống Debian bằng lệnh sau.
Mã:
wget https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb
dpkg -i mysql-apt-config_0.8.13-1_all.deb
Bây giờ hãy cáºp nháºt tất cả các kho lưu trữ Debian và cÃi đặt các gói MySQL Server.
Mã:
sudo apt update
sudo apt install mysql-server -y
Trong quá trình cÃi đặt MySQL Server, bạn sẽ được yêu cầu cấu hình máºt khẩu gốc cho máy chá»§ MySQL cá»§a mình.

Nháºp máºt khẩu gốc cá»§a bạn cho MySQL và lặp lại.



Sau khi cÃi đặt hoÃn tất, hãy khởi động dịch vụ MySQL và thêm nó vÃo
Mã:
systemctl start mysql
systemctl enable mysql
Kết quả lÃ, MySQL Server hiện đã được cÃi đặt trên Debian Buster 10. Và máºt khẩu gốc cho MySQL Server đã được cấu hình.


Bước 2 - Tạo cÆ¡ sở dữ liệu MySQL cho Mattermost​

Theo mặc định, Mattermost há»— trợ hai trình Ä‘iều khiển cÆ¡ sở dữ liệu, CÆ¡ sở dữ liệu PostgreSQL và MySQL. Và đối vá»›i hướng dẫn nÃy, chúng ta sẽ sá» dụng MySQL lÃm cÆ¡ sở dữ liệu mặc định cho Mattermost.

Trong bước nÃy, chúng ta sẽ tạo má»™t cÆ¡ sở dữ liệu và người dùng má»›i cho quá trình cÃi đặt Mattermost.

Đăng nháºp vÃo shell MySQL bằng người dùng root và máºt khẩu như bên dưới.
Mã:
mysql -u root -p
Bây giờ hãy tạo má»™t cÆ¡ sở dữ liệu và người dùng má»›i cho Mattermost. Chúng ta sẽ tạo má»™t cÆ¡ sở dữ liệu má»›i 'mattermost' vá»›i người dùng 'mmuser' và máºt khẩu 'mmuser-password'.
Mã:
create database mattermost;
create user mmuser@localhost defined by 'mmuser-password';
grant all privileges on mattermost.* to mmuser@localhost;
flush privileges;
Bây giờ hãy nháºp 'exit' để đăng xuất khỏi shell MySQL.



Và kết quả là cÆ¡ sở dữ liệu MySQL và người dùng cho cÃi đặt Mattermost đã được tạo.

Bước 3 - Thêm người dùng và tải xuống Mattermost​

Ở bước nÃy, chúng ta sẽ tạo má»™t người dùng hệ thống má»›i và tải xuống mã nguồn Mattermost. Phần mềm Mattermost sẽ chạy dưới tên người dùng có tên 'mattermost', nó sẽ được cÃi đặt trong thư mục '/opt/mattermost'.

Tạo một người dùng hệ thống mới có tên 'mattermost' bằng lệnh bên dưới.
Mã:
useradd --system --user-group mattermost
Bây giờ hãy đến thư mục '/opt' và tải xuống mã nguồn Mattermost bằng lệnh curl bên dưới.
Mã:
cd /opt/
curl -o mattermost.tar.gz https://releases.mattermost.com/5.21.0/mattermost-5.21.0-linux-amd64.tar.gz
TrÃch xuất mã nguồn Mattermost và tạo má»™t thư mục 'data' má»›i.
Mã:
tar -xf mattermost.tar.gz
mkdir -p /opt/mattermost/data
Sau đó, thay đổi quyền sở hữu cá»§a thư mục '/opt/mattermost' tá»›i người dùng 'mattermost' và lÃm cho nó có thể ghi được.
Mã:
chown -R mattermost:mattermost /opt/mattermost
chmod -R g+w /opt/mattermost
Kết quả lÃ, người dùng 'mattermost' đã được tạo và mã nguồn Mattermost đã được tải xuống thư mục '/opt/mattermost'.


Bước 4 - Cấu hình Mattermost​

Trong bước nÃy, chúng ta sẽ thiết láºp địa chỉ lắng nghe và cÆ¡ sở dữ liệu Mattermost. Dịch vụ Mattermost sẽ chạy trên địa chỉ IP cục bá»™ trên cổng mặc định 8065 và sá» dụng MySQL lÃm hệ thống cÆ¡ sở dữ liệu.

Đi đến thư mục '/opt/mattermost' và chỉnh sá»a tệp cấu hình 'config.json' trong thư mục 'config'.
Mã:
cd /opt/mattermost/
vim config/config.json
Trên tùy chọn 'ListenAddress', hãy thay đổi địa chỉ IP thÃnh '127.0.0.1'.
Mã:
"ListenAddress": "127.0.0.1:8065",
Má»™t 'SqlSettings', hãy thay đổi DriverName thÃnh 'mysql' và thay đổi 'DataSource' bằng cÆ¡ sở dữ liệu MySQL và người dùng mà chúng ta đã tạo.
Mã:
"SqlSettings": {
 "DriverName": "mysql", 
 "DataSource": "dbuser:dbpassword@tcp(localhost:3306)/dbname?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s",
Lưu và đóng.

Tiếp theo, khởi tạo cÃi đặt Mattermost bằng lệnh sau.
Mã:
sudo -u mattermost ./bin/mattermost
Dưới đây là kết quả bạn sẽ nháºn được.



Kết quả là Mattermost đã hoạt động trên địa chỉ IP cục bộ '127.0.0.1' với cổng '8065', bây giờ hãy nhấn nút 'Ctrl+c' để thoát.

Bước 5 - Thiết láºp Mattermost dưới dạng Dịch vụ​

Trong bước nÃy, chúng tôi sẽ thiết láºp Mattermost dưới dạng dịch vụ systemd và nó sẽ tá»± động chạy trên hệ thống khởi động sau khi dịch vụ cÆ¡ sở dữ liệu MySQL Ä‘ang chạy.

Bây giờ hãy vÃo thư mục '/lib/systemd/system' và tạo má»™t tệp dịch vụ má»›i 'mattermost.service'.
Mã:
cd /lib/systemd/system/
vim mattermost.service
Bây giờ hãy dán cấu hình sau vÃo nó.
Mã:
[Unit]
Description=Mattermost
After=network.target
After=mysql.service
Requires=mysql.service

[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target
Lưu và đóng.

Tiếp theo, tải lại trình quản lý systemd trên hệ thống Debian.
Mã:
systemctl daemon-reload
Sau đó, khởi động dịch vụ Mattermost và thêm nó vÃo hệ thống boot.
Mã:
systemctl start mattermost
systemctl enable mattermost


Dịch vụ Mattermost đã hoạt động, hãy kiểm tra bằng lệnh sau.
Mã:
systemctl status mattermost
Dưới đây là kết quả bạn sẽ nháºn được.



Kết quả là dịch vụ Mattermost đã hoạt động trên Hệ thống Debian và sẽ tự động chạy khi khởi động hệ thống.

Bước 6 - CÃi đặt Certbot Letsencrypt​

Trong bước nÃy, chúng ta sẽ cÃi đặt công cụ certbot và tạo SSL Letsencrypt. Chúng tôi sẽ bảo máºt cÃi đặt Mattermost bằng SSL từ Letsencrypt.

CÃi đặt công cụ certbot bằng lệnh apt bên dưới.
Mã:
sudo apt install certbot
Sau khi cÃi đặt hoÃn tất, hãy tạo SSL letsencrypt bằng lệnh certbot bên dưới.
Mã:
certbot certonly --standalone --agree-tos -m [emailprotected] -d mattermost.hakase-labs.io
Do đó, chứng chỉ SSL của bạn sẽ được tạo tại thư mục '/etc/letsencrypt/live/mattermost-hakase-labs.io'.

Bước 7 - CÃi đặt và cấu hình Nginx lÃm Proxy ngược​

Trong bước nÃy, chúng tôi sẽ cÃi đặt máy chá»§ web Nginx và thiết láºp nó lÃm proxy ngược cho Mattermost dịch vụ.

CÃi đặt Nginx bằng lệnh apt bên dưới.
Mã:
sudo apt install nginx -y
Sau khi cÃi đặt hoÃn tất, hãy khởi động dịch vụ Nginx và thêm nó vÃo hệ thống khởi động.
Mã:
systemctl start nginx 
systemctl enable nginx
Máy chủ web Nginx đã hoạt động.

Tiếp theo, hãy đến thư mục cấu hình '/etc/nginx' và tạo cấu hình máy chủ ảo mới cho mattermost.
Mã:
cd /etc/nginx/
vim sites-available/mattermost
Thay đổi tên miền và đường dẫn cá»§a chứng chỉ SSL bằng tên miền cá»§a riêng bạn, sau đó dán cấu hình vÃo đó.
Mã:
backend ngược dòng {
 server 127.0.0.1:8065;
 keepalive 32;
}

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off;

server {
 listen 80;
 server_name edu.initrc.fun;
 return 301 https://$server_name$request_uri;
}

server {
 listen 443 ssl http2;
 server_name edu.initrc.fun

 ssl on;
 ssl_certificate /etc/letsencrypt/live/edu.initrc.fun/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/edu.initrc.fun/privkey.pem;
 ssl_session_timeout 1ngÃy;
 ssl_protocols TLSv1.2;
 ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
 ssl_prefer_server_ciphers báºt;
 ssl_session_cache shared:SSL:50m;
 # HSTS (ngx_http_headers_module là bắt buộc) (15768000 giây = 6 tháng)
 add_header Strict-Transport-Security max-age=15768000;
 # OCSP Stapling ---
 # lấy các bản ghi OCSP từ URL trong ssl_certificate và lưu chúng vÃo bá»™ nhá»› đệm
 ssl_stapling on;
 ssl_stapling_verify on;

 location ~ /api/v[0-9]+/(users/)?websocket$ {
 proxy_set_header Nâng cấp $http_upgrade;
 proxy_set_header Kết nối "nâng cấp";
 client_max_body_size 50M;
 proxy_set_header Máy chủ $http_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 60;
 send_timeout 300;
 lingering_timeout 5;
 proxy_connect_timeout 90;
 proxy_send_timeout 300;
 proxy_read_timeout 90 giây;
 proxy_pass http://backend;
 }

 vị trà / {
 client_max_body_size 50M;
 proxy_set_header Kết nối "";
 proxy_set_header Máy chủ $http_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 600 giây;
 proxy_cache mattermost_cache;
 proxy_cache_revalidate on;
 proxy_cache_min_uses 2;
 proxy_cache_use_stale timeout;
 proxy_cache_lock on;
 proxy_http_version 1.1;
 proxy_pass http://backend;
 }
}
Lưu và đóng.

Tiếp theo, tạo thư mục bá»™ đệm Nginx và thay đổi quyền sở hữu cá»§a thư mục đó thÃnh người dùng 'www-data' mặc định.
Mã:
mkdir -p /var/cache/nginx
chown -R www-data:www-data /var/cache/nginx
Sau đó, kÃch hoạt máy chá»§ ảo Mattermost, sau đó kiểm tra cấu hình nginx và đảm bảo không có lá»—i.
Mã:
ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/
nginx -t
Bây giờ hãy khởi động lại dịch vụ Nginx bằng lệnh systemctl bên dưới.
Mã:
systemctl restart nginx
Kết quả là quá trình cÃi đặt và cấu hình Nginx lÃm proxy ngược cho Mattermost đã hoÃn tất. Và chúng tôi đã sẵn sÃng để kiểm tra cÃi đặt Mattermost.


Bước 8 - Kiểm tra​

Mở trình duyệt web cá»§a bạn và nháºp tên miền cá»§a URL cÃi đặt Mattermost vÃo thanh địa chỉ. Cá»§a tôi lÃ:


Bây giờ bạn cần tạo má»™t tÃi khoản đầu tiên má»›i cá»§a Mattermost, đây sẽ là quản trị viên Mattermost.



Nháºp thông tin chi tiết về tên người dùng, email và máºt khẩu cá»§a bạn và nhấp vÃo nút "Tạo tÃi khoản".

Tạo một đội đầu tiên mới trên Mattermost.



Nháºp tên đội đầu tiên cá»§a bạn và nhấp vÃo 'Tiếp theo'.



Và URL cá»§a đội sẽ là tên đội, nhấp vÃo 'HoÃn tất' để tiếp tục.



Và bạn sẽ tá»± động tham gia vÃo kênh mặc định "Off-Topic" và "Town Square".



Kết quả lÃ, quá trình cÃi đặt Mattermost trên Debian Buster 10 vá»›i cÆ¡ sở dữ liệu MySQL và máy chá»§ web Nginx đã hoÃn tất thÃnh công.
 
Back
Bên trên