웹사이트 검색

Debian 10에 Mattermost 팀 메시징 시스템을 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • 데비안 11(불스아이)
  • 데비안 10(버스터)

이 페이지에서

  1. 1단계 - MySQL 데이터베이스 설치
  2. 2단계 - Mattermost용 MySQL 데이터베이스 만들기
  3. 3단계 - 사용자 추가 및 Mattermost 다운로드
  4. 4단계 - Mattermost 구성
  5. 5단계 - Mattermost를 서비스로 설정
  6. 6단계 - Certbot Letsencrypt 설치
  7. 7단계 - Nginx를 역방향 프록시로 설치 및 구성\n
  8. 8단계 - 테스트

Mattermost는 Golang 및 React 프로그래밍 언어로 작성된 오픈 소스 메시징 시스템입니다. 슬랙 대안으로 슬랙이나 힙챗과 같은 자체 메시징 서비스를 구축하는 데 사용할 수 있습니다.

Mattermost는 팀 커뮤니케이션을 한 곳으로 가져오고 어디서나 액세스할 수 있도록 합니다. 데스크톱, Android 기기 및 iPhone에서 액세스할 수 있습니다.

이 튜토리얼에서는 Debian Buster 10에 Mattermost를 설치하는 방법을 보여줍니다. MySQL 데이터베이스 서버, Nginx 웹 서버와 함께 Mattermost를 설치하고 최신 Debian 버전 Buster 10에서 Systemd 서비스로 Mattermost를 실행합니다.

전제 조건

이 튜토리얼에서는 2GB의 RAM, 25개의 여유 디스크 공간 및 2CPU로 Debian 10에서 Mattermost 설치를 테스트합니다.

우리는 무엇을 할 것입니까?

  • MySQL 서버 설치
  • Mattermost용 MySQL 데이터베이스 만들기
  • 시스템 사용자 추가 및 Mattermost 다운로드
  • Mattermost 구성
  • Mattermost를 시스템 서비스로 설정
  • SSL Letsencrypt 생성
  • Nginx를 리버스 프록시로 설치 및 구성\n
  • 테스트

1단계 - MySQL 데이터베이스 설치

먼저 공식 저장소에서 Debian 서버로 MySQL Server 8.0을 설치합니다. Sp, 공식 MySQL 저장소를 추가하고 MySQL 패키지를 설치합니다.

아래의 apt 명령을 사용하여 gnupg2 도구를 Debian 서버에 설치합니다.

sudo apt install curl wget gnupg2

다음 명령을 사용하여 Debian 시스템용 MySQL 리포지토리를 다운로드하고 추가합니다.

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

이제 모든 Debian 리포지토리를 업데이트하고 MySQL Server 패키지를 설치합니다.

sudo apt update
sudo apt install mysql-server -y

MySQL 서버 설치 중에 MySQL 서버의 루트 암호를 구성하라는 메시지가 표시됩니다.

MySQL의 루트 암호를 입력하고 반복합니다.

설치가 완료되면 MySQL 서비스를 시작하고

systemctl start mysql
systemctl enable mysql

그 결과 이제 Debian Buster 10에 MySQL 서버가 설치되었습니다. 그리고 MySQL 서버의 루트 비밀번호가 구성되었습니다.

2단계 - Mattermost용 MySQL 데이터베이스 생성

기본적으로 Mattermost는 PostgreSQL 및 MySQL 데이터베이스라는 두 가지 데이터베이스 드라이버를 지원합니다. 그리고 이 튜토리얼에서는 MySQL을 Mattermost의 기본 데이터베이스로 사용합니다.

이 단계에서는 Mattermost 설치를 위한 새 데이터베이스와 사용자를 생성합니다.

아래와 같이 루트 사용자와 암호를 사용하여 MySQL 셸에 로그인합니다.

mysql -u root -p

이제 Mattermost에 대한 새 데이터베이스와 사용자를 생성합니다. 사용자 mmuser와 암호 mmuser-password를 사용하여 가장 중요한 새 데이터베이스를 생성합니다.

create database mattermost;
create user ;
flush privileges;

이제 exit를 입력하여 MySQL 셸에서 로그아웃합니다.

그 결과 Mattermost 설치를 위한 MySQL 데이터베이스와 사용자가 생성되었습니다.

3단계 - 사용자 추가 및 Mattermost 다운로드

이 단계에서는 새 시스템 사용자를 생성하고 Mattermost 소스 코드를 다운로드합니다. Mattermost 소프트웨어는 mattermost라는 사용자로 실행되며 /opt/mattermost 디렉토리에 설치됩니다.

아래 명령을 사용하여 mattermost라는 새 시스템 사용자를 만듭니다.

useradd --system --user-group mattermost

이제 /opt 디렉토리로 이동하여 아래 curl 명령을 사용하여 Mattermost 소스 코드를 다운로드합니다.

cd /opt/
curl -o mattermost.tar.gz https://releases.mattermost.com/5.21.0/mattermost-5.21.0-linux-amd64.tar.gz

Mattermost 소스 코드를 추출하고 새 데이터 디렉터리를 만듭니다.

tar -xf mattermost.tar.gz
mkdir -p /opt/mattermost/data

그런 다음 /opt/mattermost 디렉토리의 소유권을 mattermost 사용자로 변경하고 쓰기 가능하게 만드십시오.

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

그 결과 Mattermost 사용자가 생성되었고 /opt/mattermost 디렉터리에 Mattermost 소스 코드가 다운로드되었습니다.

4단계 - Mattermost 구성

이 단계에서는 Mattermost 수신 주소 및 데이터베이스를 설정합니다. Mattermost 서비스는 기본 포트 8065의 로컬 IP 주소에서 실행되고 MySQL을 데이터베이스 시스템으로 사용합니다.

/opt/mattermost 디렉터리로 이동하고 config 디렉터리에서 구성 파일 config.json을 편집합니다.

cd /opt/mattermost/
vim config/config.json

ListenAddress 옵션에서 IP 주소를 127.0.0.1로 변경합니다.

    "ListenAddress": "127.0.0.1:8065",

하나의 SqlSettings에서 DriverName을 mysql로 변경하고 DataSource를 우리가 생성한 MySQL 데이터베이스 및 사용자로 변경합니다.

  "SqlSettings": {
    "DriverName": "mysql",
    "DataSource": "dbuser:(localhost:3306)/dbname?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s",    

저장하고 닫습니다.

다음으로 다음 명령을 사용하여 Mattermost 설치를 초기화합니다.

sudo -u mattermost ./bin/mattermost

아래는 당신이 얻을 결과입니다.

결과적으로 Mattermost는 포트 8065를 사용하여 로컬 IP 주소 127.0.0.1에서 실행 중입니다. 이제 Ctrl+c 버튼을 눌러 종료합니다.

5단계 - Mattermost를 서비스로 설정

이 단계에서는 Mattermost를 시스템 서비스로 설정하고 MySQL 데이터베이스 서비스가 실행된 후 시스템 부팅 시 자동으로 실행됩니다.

이제 /lib/systemd/system 디렉토리로 이동하여 새 서비스 파일 mattermost.service를 만듭니다.

cd /lib/systemd/system/
vim mattermost.service

이제 다음 구성을 붙여넣습니다.

[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

저장하고 닫습니다.

다음으로 Debian 시스템에서 systemd 관리자를 다시 로드합니다.

systemctl daemon-reload

그런 다음 Mattermost 서비스를 시작하고 시스템 부팅에 추가하십시오.

systemctl start mattermost
systemctl enable mattermost

Mattermost 서비스가 실행 중입니다. 다음 명령을 사용하여 확인하십시오.

systemctl status mattermost

아래는 당신이 얻을 결과입니다.

결과적으로 Mattermost 서비스가 Debian 시스템에서 실행되고 있으며 시스템 부팅 시 자동으로 실행됩니다.

6단계 - Certbot Letsencrypt 설치

이 단계에서는 certbot 도구를 설치하고 SSL Letsencrypt를 생성합니다. Letsencrypt의 SSL을 사용하여 Mattermost 설치를 보호합니다.

아래의 apt 명령을 사용하여 certbot 도구를 설치합니다.

sudo apt install certbot

설치가 완료되면 아래 certbot 명령을 사용하여 SSL letsencrypt를 생성합니다.

certbot certonly --standalone --agree-tos -m  -d mattermost.hakase-labs.io

결과적으로 SSL 인증서는 /etc/letsencrypt/live/mattermost-hakase-labs.io 디렉토리에 생성됩니다.

7단계 - Nginx를 역방향 프록시로 설치 및 구성

이 단계에서는 Nginx 웹 서버를 설치하고 이를 Mattermost 서비스의 리버스 프록시로 설정합니다.

아래의 apt 명령을 사용하여 Nginx를 설치합니다.

sudo apt install nginx -y

설치가 완료되면 Nginx 서비스를 시작하고 시스템 부팅에 추가합니다.

systemctl start nginx 
systemctl enable nginx

Nginx 웹 서버가 실행 중입니다.

다음으로 /etc/nginx 구성 디렉토리로 이동하여 가장 중요한 새 가상 호스트 구성을 만듭니다.

cd /etc/nginx/
vim sites-available/mattermost

도메인 이름과 SSL 인증서의 경로를 자신의 것으로 변경한 다음 구성을 붙여넣습니다.

upstream backend {
   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 1d;
    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 on;
    ssl_session_cache shared:SSL:50m;
    # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 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;

   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 $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 90s;
       proxy_pass http://backend;
   }

   location / {
       client_max_body_size 50M;
       proxy_set_header Connection "";
       proxy_set_header Host $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 600s;
       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;
   }
}

저장하고 닫습니다.

다음으로 Nginx 캐시 디렉터리를 만들고 해당 디렉터리의 소유권을 기본 www-data 사용자로 변경합니다.

mkdir -p /var/cache/nginx
chown -R www-data:www-data /var/cache/nginx

그런 다음 Mattermost 가상 호스트를 활성화한 다음 nginx 구성을 테스트하고 오류가 없는지 확인합니다.

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

이제 아래의 systemctl 명령을 사용하여 Nginx 서비스를 다시 시작하십시오.

systemctl restart nginx

그 결과 Mattermost에 대한 리버스 프록시로 Nginx 설치 및 구성이 완료되었습니다. 그리고 Mattermost 설치를 테스트할 준비가 되었습니다.

8단계 - 테스트

웹 브라우저를 열고 주소 표시줄에 Mattermost 설치 URL의 도메인 이름을 입력합니다. 내 것은:

https://mattermost.hakase-labs.io/

이제 Mattermost의 새로운 첫 번째 계정을 만들어야 합니다. 이것이 Mattermost 관리자가 됩니다.

사용자 이름, 이메일 및 비밀번호 세부 정보를 입력하고 "계정 만들기" 버튼을 클릭합니다.

Mattermost에서 새로운 첫 번째 팀을 만듭니다.

첫 번째 팀의 이름을 입력하고 다음을 클릭합니다.

그리고 팀 URL은 팀 이름이 됩니다. 계속하려면 완료를 클릭하십시오.

그리고 자동으로 기본 채널인 "Off-Topic" 및 "Town Square"에 가입하게 됩니다.

그 결과 MySQL 데이터베이스와 Nginx 웹 서버가 있는 Debian Buster 10에 Mattermost 설치가 성공적으로 완료되었습니다.