Linux에 Mattermost 배포

Mattermost v11.11번역일: 2026-09-02원본 보기

Mattermost 서버는 Linux에서 크게 두 가지 방식으로 배포할 수 있습니다. 직접 관리하는 호스트에 패키지 기반으로 설치하거나, 자신의 클라우드 계정에 프로덕션 준비가 된 스택을 프로비저닝하는 관리형 클라우드 마켓플레이스 배포를 사용하는 방식입니다.

패키지 기반 설치(Manual Install, Ubuntu, RHEL/CentOS)의 경우, 프로덕션 환경에서 Mattermost 서버와 데이터베이스를 같은 시스템에 배포하는 것은 권장하지 않습니다. 이 옵션들은 개발과 테스트에 가장 적합합니다. 클라우드 마켓플레이스 옵션은 확장을 염두에 두고 설계된 분리형 프로덕션 스택을 프로비저닝합니다.

구체적인 배포 방법은 아래에서 원하는 옵션을 선택해 확인하세요.

Manual Install

최소 시스템 요구 사항:

  • 하드웨어: 2GB RAM의 vCPU/코어 1개(사용자 1,000명까지 지원)
  • 데이터베이스: PostgreSQL v14+
  • 네트워크:
    • 애플리케이션 80/443, TLS, TCP 인바운드
    • 관리자 콘솔 8065, TLS, TCP 인바운드
    • SMTP 포트 10025, TCP/UDP 아웃바운드

tarball을 사용하면 64비트 Linux 시스템 어디에나 Mattermost 서버를 설치할 수 있습니다. 가장 유연한 설치 방법이지만 손이 가장 많이 가며, 주로 숙련된 시스템 관리자가 선호합니다.

이 Mattermost 배포는 다음 단계로 이루어집니다. PostgreSQL 데이터베이스 설치, 데이터베이스 준비, Mattermost 서버 다운로드, 서버 설치, 서버 설정.

1단계: PostgreSQL 데이터베이스 설치 또는 데이터베이스 연결 자격 증명 확보

  • PostgreSQL 설치 문서에 따라 같은 서버에 PostgreSQL을 로컬로 설치합니다.
  • 외부 PostgreSQL 데이터베이스 서버를 사용합니다. 호스트 이름, 포트, 데이터베이스 이름, 사용자 이름, 비밀번호를 포함한 연결 자격 증명을 확보해 두세요.
  • 관리형 데이터베이스 서비스를 사용합니다.

2단계: 데이터베이스 준비

데이터베이스 준비 문서에 따라 Mattermost용 PostgreSQL 데이터베이스를 설정합니다.

3단계: 다운로드

터미널 창에서 Mattermost 서버를 호스팅할 시스템에 ssh로 접속합니다. wget을 사용해 설치하려는 Mattermost 서버 릴리스를 다음 명령 중 하나로 내려받습니다. 필요하다면 링크의 amd64를 적절한 아키텍처(예: ARM 기반 시스템의 경우 arm64)로 교체하세요.

Latest release

wget https://releases.mattermost.com/11.10.1/mattermost-11.10.1-linux-amd64.tar.gz

Current ESR

wget https://releases.mattermost.com/11.7.9/mattermost-11.7.9-linux-amd64.tar.gz

Older releases

더 오래된 릴리스를 찾고 있다면 Enterprise 및 Team Edition 릴리스를 버전 아카이브 문서에서 확인할 수 있습니다.

4단계: Mattermost 서버 설치

tarball 압축을 풀고, 사용자와 그룹을 만들고, 파일·폴더 권한을 설정해 Mattermost 서버를 설치합니다.

  1. 먼저 tarball 압축을 풉니다.

    tar -xvzf mattermost*.gz
  2. 폴더 전체를 /opt 디렉터리(또는 원하는 경로)로 옮깁니다.

    sudo mv mattermost /opt
  3. 기본 저장소 폴더를 만듭니다. Mattermost 서버는 기본적으로 /opt/mattermost/data를 파일 폴더로 사용합니다. 이 경로는 설정 과정에서 시스템 콘솔을 통해 변경할 수 있습니다(S3 같은 대체 스토리지 사용도 가능합니다).

    sudo mkdir /opt/mattermost/data
참고

맞춤 경로를 선택했다면 이후의 모든 단계에서 그 경로를 사용해야 합니다.

  1. mattermost라는 사용자와 그룹을 만듭니다.

    sudo useradd --system --user-group mattermost
참고

맞춤 사용자 및 그룹 이름을 선택했다면 이후의 모든 단계에서 그 이름을 사용해야 합니다.

  1. 설치 경로의 파일 및 폴더 권한을 설정합니다.

    sudo chown -R mattermost:mattermost /opt/mattermost
  2. mattermost 그룹에 애플리케이션 폴더 쓰기 권한을 부여합니다.

    sudo chmod -R g+w /opt/mattermost

    이제 시스템에 최신 버전의 Mattermost 서버가 설치되었습니다. Mattermost 서버의 시작과 중지는 systemd로 수행합니다.

  3. systemd 유닛 파일을 만듭니다.

    sudo touch /etc/systemd/system/mattermost.service
    참고

    이전 버전의 이 가이드에서는 유닛 파일을 /lib/systemd/system/ 아래에 만들도록 안내했지만, 이 경로는 패키지 관리자가 설치하고 소유하는 유닛 파일을 위한 자리입니다.

  4. root 권한으로 /etc/systemd/system/mattermost.service의 systemd 유닛 파일을 편집해 다음 내용을 추가합니다.

    [Unit]
    Description=Mattermost
    After=network.target
    
    [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
    참고

    데이터베이스와 같은 시스템에 Mattermost 서버를 설치한다면 systemd 유닛 파일의 [Unit] 섹션에 After=postgresql.service와 BindsTo=postgresql.service를 함께 추가하는 것을 고려하세요.

  5. 파일을 저장하고 sudo systemctl daemon-reload로 systemd를 다시 로드합니다. 이제 Mattermost 서버가 설치되어 설정할 준비가 되었습니다.

5단계: 서버 설정

Mattermost 서버를 시작하기 전에 구성 파일을 편집해야 합니다. 기본 구성 파일은 /opt/mattermost/config/config.json에 있습니다. 변경하기 전에 이 기본 구성의 백업을 만들어 두는 것을 권장합니다.

sudo cp /opt/mattermost/config/config.json /opt/mattermost/config/config.defaults.json

이 파일에서 다음 속성을 구성합니다.

  • SqlSettings 아래에서 DriverName을 "postgres"로 설정합니다. 모든 Mattermost 설치의 기본이자 권장 데이터베이스입니다.
  • SqlSettings 아래에서 DataSource를 "postgres://mmuser:<mmuser-password>@<host-name-or-IP>:5432/mattermost?sslmode=disable&connect_timeout=10"으로 설정하되, mmuser, <mmuser-password>, <host-name-or-IP>, mattermost를 실제 데이터베이스 정보로 교체합니다.
  • ServiceSettings 아래에서 "SiteURL"을 설정합니다. Mattermost 애플리케이션의 도메인 이름입니다(예: https://mattermost.example.com).

SupportSettings 아래에서 "SupportEmail"로 Support Email을 구성하는 것을 권장합니다. 사용자가 도움이 필요할 때 연락하는 이메일 주소입니다.

config.json 구성 파일을 수정한 뒤에는 Mattermost 서버를 시작할 수 있습니다.

sudo systemctl start mattermost

Mattermost가 실행 중인지 확인합니다: curl http://localhost:8065. Mattermost 서버가 반환하는 HTML이 보여야 합니다.

마지막으로, 필요에 따라 sudo systemctl enable mattermost.service를 실행해 시스템 부팅 시 Mattermost가 시작되도록 합니다.

6단계: 서버 업데이트

tarball로 설치한 Mattermost 서버를 업데이트하려면 여러 수동 단계가 필요합니다. 자세한 내용은 Mattermost 서버 업그레이드 문서를 참고하세요.

Mattermost 제거

어떤 이유로든 Mattermost 서버를 제거하려면, Mattermost 서버를 중지하고 중요한 파일을 모두 백업한 뒤 다음 명령을 실행합니다.

sudo rm -rf /opt/mattermost
참고

구성에 따라 /opt/mattermost에는 백업해야 할 중요한 폴더가 여럿 있습니다. config, logs, plugins, client/plugins, data가 이에 해당합니다. rm 명령을 실행하기 전에 이 위치들을 반드시 백업할 것을 강력히 권장합니다.

Mattermost systemd 유닛 파일과 애플리케이션 실행을 위해 만든 사용자·그룹도 함께 제거할 수 있습니다.

Ubuntu

최소 시스템 요구 사항:

  • 운영 체제: 20.04 LTS, 22.04 LTS, 24.04 LTS
  • 하드웨어: 2GB RAM의 vCPU/코어 1개(사용자 1,000명까지 지원)
  • 데이터베이스: PostgreSQL v14+
  • 네트워크:
    • 애플리케이션 80/443, TLS, TCP 인바운드
    • 관리자 콘솔 8065, TLS, TCP 인바운드
    • SMTP 포트 10025, TCP/UDP 아웃바운드

Mattermost PPA(Personal Package Archive)의 서명된 .deb 패키지를 사용해 Mattermost 서버를 배포할 수 있습니다. 자동 업데이트를 제공하는 가장 빠른 Mattermost 서버 설치 방법입니다. 이 설치 방식은 단일 설치와 클러스터 설치 모두에 사용되며, 클러스터 배포에는 Packer 같은 도구를 활용할 수 있습니다.

이 Mattermost 배포는 다음 단계로 이루어집니다. PostgreSQL 데이터베이스 설치, 데이터베이스 준비, PPA 저장소 추가, Mattermost 서버 설치, 서버 구성, 서버 업데이트.

1단계: PostgreSQL 데이터베이스 설치 또는 데이터베이스 연결 자격 증명 확보

Mattermost에는 PostgreSQL 데이터베이스가 필요합니다. 다음 중 하나를 선택할 수 있습니다.

  • PostgreSQL 설치 문서에 따라 같은 서버에 PostgreSQL을 로컬로 설치합니다.
  • 외부 PostgreSQL 데이터베이스 서버를 사용합니다. 호스트 이름, 포트, 데이터베이스 이름, 사용자 이름, 비밀번호를 포함한 연결 자격 증명을 확보해 두세요.
  • 관리형 데이터베이스 서비스를 사용합니다.

2단계: 데이터베이스 준비

데이터베이스 준비 문서에 따라 Mattermost용 PostgreSQL 데이터베이스를 설정합니다.

3단계: Mattermost 서버 PPA 저장소 추가

중요

GPG 공개 키가 변경되었습니다. 새 공개 키를 가져오거나 아래에 제공된 자동 Mattermost PPA 저장소 설정 스크립트를 실행하세요. 구성에 따라, 특히 저장소 설정 스크립트를 사용하지 않은 설치에서는 추가 작업이 필요할 수 있습니다. apt 저장소를 추가하기 전에 /etc/apt/trusted.gpg.d에서 이전 키를 삭제하는 것을 권장합니다.

  • Ubuntu Jammy - 22.04 LTS 및 Ubuntu Noble - 24.04 LTS의 경우:

    sudo rm /usr/share/keyrings/mattermost-archive-keyring.gpg

    curl -sL -o- https://deb.packages.mattermost.com/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/mattermost-archive-keyring.gpg > /dev/null

터미널 창에서 다음 저장소 설정 명령을 실행해 Mattermost 서버 저장소를 추가합니다.

curl -o- https://deb.packages.mattermost.com/repo-setup.sh | sudo bash -s mattermost

이 명령은 PostgreSQL 데이터베이스에 필요한 저장소를 구성하고, NGINX 웹 서버를 프록시로 동작하도록 구성하며, SSL 인증서를 발급·갱신하도록 certbot을 구성하고, 설치 명령을 실행할 수 있도록 Mattermost 저장소를 구성합니다.

4단계: Mattermost 서버 설치

Mattermost 서버를 설치하기 전에 모든 저장소를 갱신하고, 필요하다면 다음 명령으로 기존 패키지를 업데이트하는 것이 좋습니다.

sudo apt update

업데이트와 시스템 재부팅이 모두 끝나면 다음 명령으로 Mattermost 서버를 설치할 수 있습니다.

sudo apt install mattermost -y

이제 시스템에 최신 버전의 Mattermost 서버가 설치되었습니다.

설치 경로는 /opt/mattermost입니다. 패키지가 mattermost라는 사용자와 그룹을 추가했습니다. 필요한 systemd 유닛 파일도 만들어졌지만 활성 상태로 설정되지는 않습니다.

참고

Mattermost 저장소의 서명된 패키지는 여러 설치 유형에 공통으로 사용되므로 systemd 유닛 파일에 어떤 의존성도 추가하지 않습니다. 데이터베이스와 같은 시스템에 Mattermost 서버를 설치한다면 systemd 유닛 파일의 [Unit] 섹션에 After=postgresql.service와 BindsTo=postgresql.service를 함께 추가하는 것을 고려하세요.

5단계: 서버 구성

Mattermost 서버를 시작하기 전에 구성 파일을 편집해야 합니다. 샘플 구성 파일은 /opt/mattermost/config/config.defaults.json에 있습니다.

올바른 권한으로 이 구성 파일의 이름을 변경합니다.

sudo install -C -m 600 -o mattermost -g mattermost /opt/mattermost/config/config.defaults.json /opt/mattermost/config/config.json

이 파일에서 다음 속성을 구성합니다.

  • SqlSettings 아래에서 DriverName을 "postgres"로 설정합니다. 모든 Mattermost 설치의 기본이자 권장 데이터베이스입니다.
  • SqlSettings 아래에서 DataSource를 "postgres://mmuser:<mmuser-password>@<host-name-or-IP>:5432/mattermost?sslmode=disable&connect_timeout=10"으로 설정하되, mmuser, <mmuser-password>, <host-name-or-IP>, mattermost를 실제 데이터베이스 정보로 교체합니다.
  • ServiceSettings 아래에서 "SiteURL"을 설정합니다. Mattermost 애플리케이션의 도메인 이름입니다(예: https://mattermost.example.com).

SupportSettings 아래에서 "SupportEmail"로 Support Email을 구성하는 것을 권장합니다. 사용자가 도움이 필요할 때 연락하는 이메일 주소입니다.

config.json 구성 파일을 수정한 뒤에는 Mattermost 서버를 시작할 수 있습니다.

sudo systemctl start mattermost

Mattermost가 실행 중인지 확인합니다: curl http://localhost:8065. Mattermost 서버가 반환하는 HTML이 보여야 합니다.

마지막으로, 필요에 따라 sudo systemctl enable mattermost.service를 실행해 시스템 부팅 시 Mattermost가 시작되도록 합니다.

참고

DataSource 구성의 sslmode 속성 값은 전적으로 사용 중인 환경에 따라 달라집니다. 값에 대한 안내는 해당 환경의 설정 문서를 참고하세요. sslmode에 사용할 수 있는 옵션은 disable 또는 require입니다. 예를 들어 데이터 소스로 Amazon Lightsail을 사용한다면 데이터베이스에 정상적으로 연결하기 위해 sslmode를 require로 설정해야 합니다.

6단계: 서버 업데이트

새 Mattermost 버전이 릴리스되면 sudo apt update && sudo apt upgrade를 실행해 Mattermost 인스턴스를 내려받아 업데이트합니다.

참고

sudo apt upgrade 명령을 실행하면 mattermost-server가 다른 패키지들과 함께 업데이트됩니다. apt 명령을 실행하기 전에 sudo systemctl stop mattermost로 Mattermost 서버를 중지할 것을 강력히 권장합니다.

Mattermost 제거

다음 명령을 실행해 Mattermost 서버를 제거합니다.

sudo apt remove --purge mattermost

RHEL/CentOS

최소 시스템 요구 사항:

  • 운영 체제: Enterprise Linux 7+, Oracle Linux 6+, Oracle Linux 7+
  • 하드웨어: 2GB RAM의 vCPU/코어 1개(사용자 1,000명까지 지원)
  • 데이터베이스: PostgreSQL v14+
  • 네트워크:
    • 애플리케이션 80/443, TLS, TCP 인바운드
    • 관리자 콘솔 8065, TLS, TCP 인바운드
    • SMTP 포트 10025, TCP/UDP 아웃바운드

이 Mattermost 배포는 다음 단계로 이루어집니다. PostgreSQL 데이터베이스 설치, 데이터베이스 준비, Mattermost 서버 다운로드, 서버 설치, 서버 설정, 서버 업데이트.

1단계: PostgreSQL 데이터베이스 설치 또는 데이터베이스 연결 자격 증명 확보

  • PostgreSQL 설치 문서에 따라 같은 서버에 PostgreSQL을 로컬로 설치합니다.
  • 외부 PostgreSQL 데이터베이스 서버를 사용합니다. 호스트 이름, 포트, 데이터베이스 이름, 사용자 이름, 비밀번호를 포함한 연결 자격 증명을 확보해 두세요.
  • 관리형 데이터베이스 서비스를 사용합니다.

2단계: 데이터베이스 준비

데이터베이스 준비 문서에 따라 Mattermost용 PostgreSQL 데이터베이스를 설정합니다.

3단계: 최신 Mattermost 서버 tarball 다운로드

터미널 창에서 Mattermost 서버를 호스팅할 시스템에 ssh로 접속합니다. wget을 사용해 설치하려는 Mattermost 서버 릴리스를 다음 명령 중 하나로 내려받습니다. 필요하다면 링크의 amd64를 적절한 아키텍처(예: ARM 기반 시스템의 경우 arm64)로 교체하세요.

Latest release

wget https://releases.mattermost.com/11.10.1/mattermost-11.10.1-linux-amd64.tar.gz

Current ESR

wget https://releases.mattermost.com/11.7.9/mattermost-11.7.9-linux-amd64.tar.gz

Older releases

더 오래된 릴리스를 찾고 있다면 Enterprise 및 Team Edition 릴리스를 버전 아카이브 문서에서 확인할 수 있습니다.

4단계: Mattermost 서버 설치

  1. Mattermost 서버를 설치하기 전에 모든 저장소를 갱신하고, 필요하다면 다음 명령으로 기존 패키지를 업데이트할 것을 권장합니다.

    sudo dnf update
    sudo dnf upgrade
  2. 업데이트와 시스템 재부팅이 모두 끝나면, tarball 압축을 풀고 사용자와 그룹을 만들고 파일·폴더 권한을 설정해 Mattermost 서버를 설치합니다.

    1. 먼저 tarball 압축을 풉니다.

      tar -xvzf mattermost*.gz
    2. 이제 폴더 전체를 /opt 디렉터리(또는 원하는 경로)로 옮깁니다.

      sudo mv mattermost /opt
    3. 기본 저장소 폴더를 만듭니다. Mattermost 서버는 기본적으로 /opt/mattermost/data를 파일 폴더로 사용합니다. 이 경로는 설정 과정에서 시스템 콘솔을 통해 변경할 수 있습니다(S3 같은 대체 스토리지 사용도 가능합니다).

      sudo mkdir /opt/mattermost/data
참고

맞춤 경로를 선택했다면 이후의 모든 단계에서 그 경로를 사용해야 합니다.

  1. mattermost라는 사용자와 그룹을 만듭니다.

    sudo useradd --system --user-group mattermost
참고

맞춤 사용자 및 그룹 이름을 선택했다면 이후의 모든 단계에서 그 이름을 사용해야 합니다.

  1. 설치 경로의 파일 및 폴더 권한을 설정합니다.

    sudo chown -R mattermost:mattermost /opt/mattermost
  2. mattermost 그룹에 애플리케이션 폴더 쓰기 권한을 부여합니다.

    sudo chmod -R g+w /opt/mattermost

    이제 시스템에 최신 버전의 Mattermost 서버가 설치되었습니다. Mattermost 서버의 시작과 중지는 systemd로 수행합니다.

  3. systemd 유닛 파일을 만듭니다.

    sudo touch /etc/systemd/system/mattermost.service
    참고

    이전 버전의 이 가이드에서는 유닛 파일을 /lib/systemd/system/ 아래에 만들도록 안내했지만, 이 경로는 패키지 관리자가 설치하고 소유하는 유닛 파일을 위한 자리입니다.

  4. root 권한으로 /etc/systemd/system/mattermost.service의 systemd 유닛 파일을 편집해 다음 내용을 추가합니다.

    [Unit]
    Description=Mattermost
    After=network.target
    
    [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
  5. 파일을 저장하고 sudo systemctl daemon-reload로 systemd를 다시 로드합니다. 이제 Mattermost 서버가 설치되어 설정할 준비가 되었습니다.

5단계: 서버 설정

Mattermost 서버를 시작하기 전에 구성 파일을 편집해야 합니다. 기본 구성 파일은 /opt/mattermost/config/config.json에 있습니다. 변경하기 전에 이 기본 구성의 백업을 만들어 두는 것을 권장합니다.

sudo cp /opt/mattermost/config/config.json /opt/mattermost/config/config.defaults.json

이 파일에서 다음 속성을 구성합니다.

  • SqlSettings 아래에서 DriverName을 "postgres"로 설정합니다. 모든 Mattermost 설치의 기본이자 권장 데이터베이스입니다.
  • SqlSettings 아래에서 DataSource를 "postgres://mmuser:<mmuser-password>@<host-name-or-IP>:5432/mattermost?sslmode=disable&connect_timeout=10"으로 설정하되, mmuser, <mmuser-password>, <host-name-or-IP>, mattermost를 실제 데이터베이스 정보로 교체합니다.
  • ServiceSettings 아래에서 "SiteURL"을 설정합니다. Mattermost 애플리케이션의 도메인 이름입니다(예: https://mattermost.example.com).
참고

SupportSettings 아래에서 "SupportEmail"로 Support Email을 구성하는 것을 권장합니다. 사용자가 도움이 필요할 때 연락하는 이메일 주소입니다.

config.json 구성 파일을 수정한 뒤에는 Mattermost 서버를 시작할 수 있습니다.

sudo systemctl start mattermost

Mattermost가 실행 중인지 확인합니다: curl http://localhost:8065. Mattermost 서버가 반환하는 HTML이 보여야 합니다.

마지막으로, 필요에 따라 sudo systemctl enable mattermost.service를 실행해 시스템 부팅 시 Mattermost가 시작되도록 합니다. 이전 단계 이후 Mattermost를 시작할 때 오류가 없었다면 준비가 끝난 것입니다. 오류가 발생했다면 계속 진행하세요.

강화된 RHEL 환경

강화된 RHEL 시스템에 Mattermost를 배포할 때는 추가 보안 구성이 필요할 수 있습니다. 사용 중인 보안 도구에 맞는 아래 항목을 선택하세요.

SELinux

SELinux가 기본적으로 enforcing 모드로 실행되는 RHEL9부터 Mattermost를 배포할 때는 추가 구성이 필요합니다.

SELinux는 접근 제어 보안 정책을 제공하는 보안 모듈입니다. RHEL 및 CentOS 시스템에서 기본적으로 활성화되어 있습니다. SELinux는 파일, 디렉터리, 포트에 대한 접근을 차단할 수 있으며, 이로 인해 Mattermost 시작 시 문제가 발생할 수 있습니다. 이를 해결하려면 Mattermost 바이너리와 디렉터리에 적절한 SELinux 컨텍스트를 설정하고 Mattermost가 포트에 바인딩할 수 있도록 허용해야 합니다.

sestatus 명령을 실행해 SELinux가 활성화되어 있고 enforcing 모드인지 확인하세요. enforcing이라면 적절히 구성해야 합니다.

/opt/mattermost/bin의 bin 컨텍스트 설정

SELinux는 바이너리에 대해 보안 컨텍스트를 강제합니다. Mattermost 바이너리를 안전한 것으로 표시하려면 아래 SELinux 컨텍스트를 설정해야 합니다.

sudo semanage fcontext -a -t bin_t "/opt/mattermost/bin(/.*)?"
sudo restorecon -RF /opt/mattermost/bin

이제 다음 명령으로 Mattermost를 다시 시작해 보세요.

sudo systemctl start mattermost

오류가 발생하지 않는다면 Mattermost가 실행 중인지 확인합니다: curl http://localhost:8065. Mattermost 서버가 반환하는 HTML이 보여야 합니다. 모두 완료되었습니다.

Mattermost를 시작할 때 오류가 발생한다면, 다음 단계로 넘어가기 전에 /opt/mattermost/logs에 파일이 있는지 확인하세요. 해당 디렉터리에 mattermost.log가 있다면 config.json의 구성 문제일 가능성이 높습니다. 계속 진행하기 전에 이전 단계들을 다시 확인하세요.

/opt/mattermost에 다른 컨텍스트 적용해 보기

SELinux는 파일과 디렉터리에 대해 보안 컨텍스트를 강제합니다. Mattermost 디렉터리를 안전한 것으로 표시하려면 적절한 SELinux 컨텍스트를 설정해야 합니다.

  1. ls -Z /opt/mattermost를 실행해 현재 컨텍스트를 확인합니다. drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 mattermost 같은 결과가 나오면, default_t는 SELinux가 이 디렉터리의 용도를 모른다는 뜻입니다.
  2. sudo semanage fcontext -a -t httpd_sys_content_t "/opt/mattermost(/.*)?"를 실행해 웹 서비스나 애플리케이션과 호환되는 SELinux 타입을 지정하여 안전한 컨텍스트를 설정합니다. 파일 제공에 흔히 쓰이는 타입은 httpd_sys_content_t입니다. 디렉터리와 그 내용이 재귀적으로 일치하도록 하세요. 변경 사항을 적용하려면 sudo restorecon -R /opt/mattermost를 실행합니다.
Mattermost의 포트 바인딩 허용

Mattermost가 특정 포트(예: 8065)를 필요로 할 때, Mattermost가 해당 포트에 바인딩할 수 있도록 SELinux에서 허용해야 합니다. sudo semanage port -l | grep 8065 명령을 실행하고, 포트가 목록에 없다면 sudo semanage port -a -t http_port_t -p tcp 8065를 실행해 추가하세요. 8065는 필요한 포트로 바꿉니다.

맞춤 정책 처리

Mattermost가 SELinux에 의해 차단되는 동작을 필요로 한다면 맞춤 정책을 생성해야 합니다.

  1. 먼저 sudo ausearch -m avc -ts recent를 실행하거나 감사 로그를 확인해(sudo cat /var/log/audit/audit.log | grep denied) 로그에서 SELinux 거부 기록을 찾습니다.

  2. 필요하다면 audit2allow를 설치해 정책을 자동으로 생성하는 방식으로 정책 모듈을 만듭니다.

    sudo yum install -y policycoreutils-python-utils
    sudo grep mattermost /var/log/audit/audit.log | audit2allow -M mattermost_policy
    sudo semodule -i mattermost_policy.pp
구성 테스트

sudo systemctl restart mattermost를 실행해 Mattermost를 재시작하고 구성이 예상대로 동작하는지 확인합니다. 실패하는 경우 로그를 다시 확인해 다른 SELinux 관련 문제를 파악하세요.

테스트 목적으로 Mattermost를 빠르게 동작시켜야 하나요?
  • sudo setenforce 0 명령을 실행하면 SELinux를 정책이 강제되지 않고 기록만 되는 permissive 모드로 변경할 수 있습니다.
  • 이 명령은 SELinux 모드를 "permissive"로 바꿉니다. permissive 모드에서는 정책이 강제되지 않고 위반 사항이 차단되는 대신 로그로 남습니다. SELinux 정책 관련 문제를 디버깅하고 해결하는 데 도움이 됩니다.
  • 컨텍스트가 필요한 대로 동작하게 되면 sudo setenforce 1 명령으로 enforcing 모드를 다시 활성화하세요.
추가 자료

firewalld

firewalld가 활성화된 RHEL 시스템에 Mattermost를 배포할 때는 Mattermost 서버에 접근할 수 있도록 방화벽 규칙을 구성해야 합니다.

Firewalld는 RHEL 시스템의 기본 방화벽 관리 도구로, 네트워크 존을 지원하는 동적 관리형 방화벽을 제공합니다. 기본적으로 Mattermost의 포트(8065)로 들어오는 연결을 차단할 수 있습니다.

firewalld 실행 여부 확인
sudo systemctl status firewalld

firewalld가 활성 상태라면 Mattermost 트래픽을 허용하도록 구성하세요.

Mattermost 서버용 firewalld 구성
  1. Mattermost 서버용으로 8065 포트를 엽니다.

    sudo firewall-cmd --permanent --add-port=8065/tcp
  2. 같은 서버에서 리버스 프록시(예: nginx 또는 Apache)를 사용한다면 HTTP 및 HTTPS 포트도 엽니다.

    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
  3. 변경 사항을 적용하기 위해 firewalld를 다시 로드합니다.

    sudo firewall-cmd --reload
  4. 구성을 확인합니다.

    sudo firewall-cmd --list-all

    출력에 8065/tcp 포트(및 선택적으로 http/https 서비스)가 보여야 합니다.

참고

Mattermost에 맞춤 포트를 사용한다면 8065를 구성한 포트 번호로 교체하세요. --permanent 플래그는 시스템 재부팅 후에도 규칙이 유지되도록 합니다.

Mattermost Calls용 firewalld 구성(선택)

Mattermost Calls 플러그인이나 독립 실행형 rtcd 서비스를 배포한다면 추가 포트를 열어야 합니다. Calls 아키텍처와 배포 모드에 대한 자세한 내용은 Calls 배포 가이드 문서를 참고하세요.

통합형 Calls 플러그인(Mattermost와 함께 실행)의 경우:

sudo firewall-cmd --permanent --add-port=8443/udp
sudo firewall-cmd --permanent --add-port=8443/tcp
sudo firewall-cmd --reload

독립 실행형 rtcd 서비스(추가 API 포트 필요)의 경우:

sudo firewall-cmd --permanent --add-port=8443/udp
sudo firewall-cmd --permanent --add-port=8443/tcp
sudo firewall-cmd --permanent --add-port=8045/tcp
sudo firewall-cmd --reload
참고
  • 8443 포트(UDP/TCP)는 RTC 미디어 트래픽(오디오/비디오/화면 공유)에 사용됩니다.
  • 8045 포트(TCP)는 Mattermost와 rtcd 서비스 간 API 통신에 사용됩니다.
  • RTC의 TCP 지원에는 Calls v0.17 이상과 rtcd v0.11 이상이 필요합니다.
  • 맞춤 포트를 사용한다면 기본 포트 번호를 구성한 값으로 교체하세요.

fapolicyd

fapolicyd가 활성화된 RHEL 시스템에 Mattermost를 배포하면 Mattermost 로그에서 "operation not permitted" 오류가 나타날 수 있습니다.

Fapolicyd(File Access Policy Daemon)는 신뢰를 기준으로 파일 접근 권한을 결정하는 사용자 공간 데몬입니다. 승인되지 않은 바이너리 실행을 막기 위해 보안 환경에서 흔히 활성화됩니다. 기본적으로 fapolicyd는 Mattermost 바이너리와 플러그인의 실행을 차단할 수 있습니다.

fapolicyd 문제 해결
  1. Mattermost 로그에 "operation not permitted" 오류가 보인다면, 먼저 fapolicyd를 일시적으로 중지해 원인인지 확인합니다.

    sudo systemctl stop fapolicyd
  2. Mattermost 배포를 테스트합니다. 이제 정상 동작한다면 fapolicyd가 Mattermost 실행을 차단하고 있는 것이므로 적절히 구성해야 합니다.

  3. 무엇이 거부되고 있는지 확인하기 위해 fapolicyd를 디버그 모드로 실행합니다.

    sudo fapolicyd --debug
  4. 출력에서 거부 메시지를 찾습니다. 다음과 비슷한 형태입니다.

    rule=15 dec=deny_audit perm=execute auid=-1 pid=19735
      exe=/opt/mattermost/bin/mattermost : path=/opt/mattermost/plugins/focalboard/server/dist/plugin-linux-amd64
      ftype=application/x-executable trust=0

    실행을 거부하는 규칙 번호에 주목하세요. 작성할 규칙 파일은 이 규칙보다 앞선 번호를 가져야 합니다.

Mattermost를 허용하도록 fapolicyd 구성
  1. Mattermost용 규칙 파일을 만듭니다. 이름 규칙이 매우 중요합니다. Mattermost를 거부하는 규칙보다 앞서야 합니다. 기본 fapolicyd 구성을 사용한다면 80이면 충분합니다.

    sudo touch /etc/fapolicyd/rules.d/80-mattermost.rules
  2. 파일에 허용 규칙을 추가합니다.

    sudo vi /etc/fapolicyd/rules.d/80-mattermost.rules

    Mattermost 실행을 허용하도록 다음 규칙을 추가합니다.

    allow perm=execute exe=/usr/bin/sudo trust=1 : dir=/opt/mattermost/ all trust=0
    allow perm=execute exe=/opt/mattermost/bin/mattermost : dir=/opt/mattermost all trust=0
    allow perm=execute exe=/usr/lib/systemd/systemd trust=1 : dir=/opt/mattermost/ all trust=0
  3. 규칙이 유효하며 적용될지 확인합니다.

    sudo fagenrules --check

    출력에 "Rules have changed and should be updated"가 보여야 합니다.

  4. 새 규칙을 로드합니다.

    sudo fagenrules --load
  5. fapolicyd 서비스를 재시작합니다.

    sudo systemctl restart fapolicyd
  6. Mattermost를 재시작해 정상 동작하는지 확인합니다.

    sudo systemctl restart mattermost
  7. Mattermost가 오류 없이 실행 중인지 확인합니다.

    curl http://localhost:8065
    sudo systemctl status mattermost
참고
  • 규칙 파일의 번호가 매우 중요합니다. 규칙은 순서대로 처리되므로 허용 규칙이 거부 규칙보다 앞에 와야 합니다. 위 단계를 따랐는데도 계속 거부가 발생한다면, (디버그 출력에서 확인한) 거부 규칙 번호를 확인하고 규칙 파일 번호가 더 작은지 확인하세요.
  • Playbooks나 Calls 플러그인처럼 바이너리를 실행하는 플러그인이 있다면, 위의 fapolicyd 규칙은 /opt/mattermost 디렉터리 내 모든 바이너리의 실행을 허용합니다. 더 제한적인 규칙이 필요하다면 각 플러그인 바이너리에 대해 개별 규칙을 만들 수 있습니다.
rtcd 서비스용 fapolicyd 구성(선택)

Mattermost Calls를 위해 독립 실행형 rtcd 서비스를 배포한다면 rtcd 바이너리에 대한 별도의 fapolicyd 규칙이 필요합니다. rtcd 서비스는 Mattermost와 별개로 배포되며 자체 바이너리를 실행합니다. rtcd를 언제, 왜 사용해야 하는지에 대한 자세한 내용은 Calls 배포 가이드 문서를 참고하세요.

  1. rtcd용 규칙 파일을 만듭니다. 이름 규칙이 매우 중요하며 거부 규칙보다 앞서야 합니다(일반적으로 80이면 충분합니다).

    sudo touch /etc/fapolicyd/rules.d/80-rtcd.rules
  2. rtcd용 허용 규칙을 추가합니다.

    sudo vi /etc/fapolicyd/rules.d/80-rtcd.rules

    다음 규칙을 추가합니다(rtcd 설치 디렉터리에 맞게 경로를 조정하세요).

    allow perm=execute exe=/usr/bin/sudo trust=1 : dir=/opt/rtcd/ all trust=0
    allow perm=execute exe=/opt/rtcd/bin/rtcd : dir=/opt/rtcd all trust=0
    allow perm=execute exe=/usr/lib/systemd/systemd trust=1 : dir=/opt/rtcd/ all trust=0
  3. 규칙이 유효하며 적용될지 확인합니다.

    sudo fagenrules --check

    출력에 "Rules have changed and should be updated"가 보여야 합니다.

  4. 새 규칙을 로드합니다.

    sudo fagenrules --load
  5. fapolicyd와 rtcd 서비스를 재시작합니다.

    sudo systemctl restart fapolicyd
    sudo systemctl restart rtcd
  6. rtcd가 오류 없이 실행 중인지 확인합니다.

    sudo systemctl status rtcd
참고
  • 위에 표시된 경로는 rtcd가 /opt/rtcd/에 설치되어 있다고 가정합니다. 실제 rtcd 설치 디렉터리에 맞게 경로를 조정하세요.
  • 위 단계를 따랐는데도 계속 거부가 발생한다면 sudo fapolicyd --debug를 실행해 거부되는 구체적인 경로를 확인하고 규칙을 그에 맞게 조정하세요.
  • 설치 및 구성에 대한 자세한 내용은 RTCD 설정 및 구성 문서를 참고하세요.
추가 자료

6단계: 서버 업데이트

tarball로 설치한 Mattermost 서버를 업데이트하려면 여러 수동 단계가 필요합니다. 자세한 내용은 Mattermost 서버 업그레이드 문서를 참고하세요.

Mattermost 제거

Mattermost 서버를 제거하려면, Mattermost 서버를 중지하고 중요한 파일을 모두 백업한 뒤 다음 명령을 실행합니다.

sudo rm /opt/mattermost
참고

구성에 따라 /opt/mattermost에는 백업해야 할 중요한 폴더가 여럿 있습니다. config, logs, plugins, client/plugins, data가 이에 해당합니다. rm 명령을 실행하기 전에 이 위치들을 반드시 백업할 것을 강력히 권장합니다.

Mattermost systemd 유닛 파일과 애플리케이션 실행을 위해 만든 사용자·그룹도 함께 제거할 수 있습니다.

Azure

Mattermost는 Azure Marketplace 솔루션으로 게시되어 있으며, 컴퓨트·데이터베이스·공유 파일 스토리지·로드 밸런싱에 Azure 관리형 서비스를 사용해 사용자의 구독 안에 프로덕션 준비가 된 Mattermost 스택을 프로비저닝합니다. 이 옵션은 기존 Azure 테넌트 안에서 확장하고 운영할 수 있는 복원력 있는 Mattermost 배포를 원하는 조직을 위한 것입니다.

사전 요구 사항

  • 구독에 대해 소유자(Owner) 또는 기여자(Contributor) 역할을 가진 활성 Azure 구독(Azure Marketplace 솔루션을 구매하고 배포하는 데 필요), 리소스 그룹 생성 권한, 해당 오퍼의 Azure Marketplace 청구 조건에 동의할 수 있는 권한.
  • Azure 포털(리소스 그룹, 네트워킹, 가상 머신, Application Gateway)에 대한 이해.
  • 다중 노드 배포(애플리케이션 인스턴스가 둘 이상)의 경우 유효한 Mattermost Enterprise 라이선스 파일. 단일 노드 배포에서는 라이선스가 선택 사항입니다.
  • 배포 시점에 HTTPS를 활성화할 계획이라면:

    • PFX(PKCS#12) 인증서 번들과 그 비밀번호.
    • 배포 후 Application Gateway를 가리키도록 설정할 맞춤 도메인(FQDN).

무엇이 배포되나요

템플릿은 선택한 리소스 그룹에 자체 완결형의 프로덕션 준비 스택을 프로비저닝하며, 다음이 포함됩니다.

  1. 가상 머신 확장 집합(Linux): Mattermost가 게시한 Ubuntu Pro 24.04 LTS 이미지에서 Mattermost를 실행합니다. 인스턴스 수와 VM 크기는 선택한 확장 등급에 따라 결정됩니다.
  2. 공인 IP를 갖춘 Application Gateway: Mattermost 트래픽의 진입점 역할을 하며, HTTPS를 활성화하면 (PFX 인증서를 사용하는) HTTPS 리스너와 HTTP→HTTPS 리디렉션을 선택적으로 제공합니다.
  3. Azure Database for PostgreSQL Flexible Server: Mattermost 데이터를 저장하는 관리형 PostgreSQL 서비스로, 선택적으로 동일 존 또는 존 이중화 고가용성, 백업 보존, 지리적 이중화를 지원합니다.
  4. 프라이빗 엔드포인트를 갖춘 Azure Files(NFS): Mattermost 데이터(업로드, 플러그인, 기타 공유 파일)를 위한 공유 스토리지로, 가상 네트워크 내부에서만 접근할 수 있습니다.
  5. 가상 네트워크와 서브넷: 배포 전용 VNet과 Application Gateway, Mattermost 애플리케이션 인스턴스, 데이터베이스, 스토리지 프라이빗 엔드포인트를 위한 개별 서브넷.
  6. NAT 게이트웨이: 애플리케이션 인스턴스가 제어된 방식으로 인터넷에 아웃바운드 접근을 할 수 있게 합니다(예: 패키지와 Mattermost 구성 스크립트를 가져올 때).
  7. 프라이빗 DNS 영역: VNet 내부에서 PostgreSQL Flexible Server와 Azure Files 프라이빗 엔드포인트를 해석하는 데 사용됩니다.

1단계: 플랜 선택 및 생성 시작

Azure Marketplace에서 Mattermost - Azure-Native (VM-based) 오퍼를 열고 Get it now를 클릭한 뒤 플랜을 선택하고 Create를 클릭해 배포 마법사를 엽니다.

2단계: Basics

Basics 탭에서 다음을 구성합니다.

  1. Subscription: 배포를 둘 Azure 구독을 선택합니다.
  2. Resource group: 기존 리소스 그룹을 선택하거나 새로 만듭니다. 새 리소스 그룹을 사용하면 프로덕션 스택을 관리하고 정리하기가 쉽습니다.
  3. Region: 배포 리전을 선택합니다. 사용할 PostgreSQL Flexible Server SKU를 지원하고, PostgreSQL 고가용성을 활성화할 계획이라면 필요한 가용성 영역을 갖춘 리전을 선택하세요.
  4. Resource name prefix: 템플릿이 만드는 Azure 리소스의 이름에 사용되는 짧은 접두사입니다(소문자, 숫자, 하이픈 2~12자, 예: mm-prod).

    Azure Native Basics 설정 화면 예시.

3단계: Application

Application 탭에서는 Mattermost 애플리케이션의 규모와 관리자가 VM에 접근하는 방식을 구성합니다.

  1. Scaling tier: 계획 중인 사용자 규모를 선택합니다. 마법사는 이 값을 사용해 VMSS 인스턴스 수, VM 크기, PostgreSQL SKU의 적절한 기본값을 제안하고, 데이터베이스에 읽기 복제본을 만들지 결정합니다. 드롭다운에는 각 등급의 권장 노드 수와 VM SKU가 표시됩니다. 규모 산정 근거는 사용 가능한 참조 아키텍처를 참고하세요.
  2. VMSS instance count: Mattermost 애플리케이션 노드 수입니다(1~5). 확장 등급에 대해 제안된 값이 기본으로 설정되며 필요에 따라 조정할 수 있습니다.
  3. Enterprise license file: 인스턴스 수가 1보다 클 때(다중 노드 고가용성 클러스터링) 필요합니다. Mattermost Enterprise 라이선스 파일을 업로드하세요. 단일 노드 배포에서는 라이선스가 선택 사항입니다.
  4. VM SKU: 각 VMSS 인스턴스의 크기입니다. 마법사가 권장 Linux 크기를 먼저 보여 주며, 해당 리전에서 사용할 수 있는 지원 Linux 크기라면 무엇이든 선택할 수 있습니다.
  5. Admin username: VM 인스턴스에 로그인할 때 사용하는 Linux 관리자 계정입니다.
  6. Authentication type: Linux 로그인 방식으로 Password 또는 SSH public key를 선택합니다. 프로덕션 배포에는 SSH public key를 권장합니다.
  7. Mattermost version: 설치할 Mattermost 버전입니다(예: 11.6.2). 지원되는 버전은 릴리스 정책을 참고하세요.

Azure Native Application 설정 화면 예시.

4단계: Database

Database 탭에서는 관리형 PostgreSQL 서비스와 공유 NFS 파일 공유를 구성합니다.

  1. PostgreSQL compute SKU: 메모리 최적화 Flexible Server SKU입니다. 확장 등급에 권장되는 SKU가 기본으로 설정되며, 해당 리전에서 지원되는 SKU를 선택하세요. 선택 가능한 값은 Standard_E2ds_v5, Standard_E4ds_v5, Standard_E8ds_v5입니다.
  2. PostgreSQL high availability: PostgreSQL의 복원력 구성 방식을 선택합니다.

    • Disabled: 단일 기본 인스턴스입니다. 소규모 배포에 적합합니다.
    • Same zone: 기본과 대기 인스턴스를 같은 가용성 영역에 둡니다.
    • Zone redundant: 기본과 대기 인스턴스를 서로 다른 가용성 영역에 둡니다.

    Flexible Server SKU와 HA 모드의 리전별 지원 여부는 Azure regions for PostgreSQL Flexible Server를 참고하세요.

  3. Primary availability zone과 standby availability zone: HA를 활성화하면 표시됩니다. 존 이중화 HA에서는 기본 영역과 대기 영역이 서로 달라야 합니다. 선택한 PostgreSQL SKU를 리전에서 지원하는 영역을 고르세요.
  4. PostgreSQL admin username and password: Flexible Server의 관리자 자격 증명입니다. azure_superuser 같은 예약된 이름은 피하세요. 비밀번호는 Azure Flexible Server 비밀번호 복잡도 요구 사항을 충족해야 합니다.
  5. Mattermost database user password: Mattermost database connection 섹션에서 애플리케이션 노드가 PostgreSQL에 연결할 때 사용하는 전용 Mattermost 데이터베이스 사용자의 비밀번호를 설정합니다. PostgreSQL 관리자 자격 증명과는 별개입니다. 비밀번호는 관리자 비밀번호와 동일한 복잡도 규칙을 충족해야 합니다.
  6. Geo-redundant backup: PostgreSQL 백업을 Azure의 짝 리전에 복제해 리전 간 재해 복구를 지원합니다. 이 설정은 배포 후에 변경할 수 없습니다.
  7. NFS share size (GiB): Mattermost가 공유 애플리케이션 데이터에 사용하는 Azure Files(NFS) 공유의 크기입니다. 최소 100 GiB입니다.
참고

PostgreSQL의 백업 보존 기간은 배포 시점에 35일로 설정됩니다. 배포가 완료된 뒤 Azure 포털에서 보존 기간을 변경할 수 있습니다.

Azure Native Database 설정 화면 예시.

5단계: Networking

Networking 탭에서는 가상 네트워크와 Mattermost를 사용자에게 노출하는 방식을 구성합니다.

  1. VNet address space (CIDR): 템플릿이 만드는 가상 네트워크의 주소 공간입니다. 기본값은 10.0.0.0/22입니다. 피어링할 계획인 다른 VNet과 겹치지 않는 범위를 선택하세요.
  2. Public IP DNS label: Azure 퍼블릭 클라우드 전체에서 전역적으로 고유한 DNS 접두사(레이블)를 설정해야 합니다. 이 값은 URL의 일부가 되며 워크스페이스에 공개적으로 접근할 수 있게 합니다. 레이블이 이미 사용 중이면 배포가 실패합니다.
  3. Enable HTTPS on Application Gateway: 활성화하면 Application Gateway가 PFX 인증서로 TLS를 종료하고 HTTP 트래픽이 HTTPS로 리디렉션됩니다. 비활성화하면 Mattermost가 Azure가 할당한 호스트 이름에서 HTTP로 제공됩니다(테스트에는 적합하지만 프로덕션에는 권장하지 않습니다).
  4. PFX certificate와 PFX password: HTTPS를 활성화하면 표시됩니다. PKCS#12 번들을 업로드하고 이를 보호하는 데 사용한 비밀번호를 입력하세요.
  5. Custom domain (FQDN): HTTPS를 활성화하면 표시됩니다. Mattermost가 사용할 공개 호스트 이름입니다(예: mattermost.example.com). 배포 후에는 이 호스트 이름이 Application Gateway 공인 IP의 Azure 할당 DNS 이름을 가리키도록 설정하세요(서브도메인은 보통 CNAME 레코드를 사용합니다).

Azure Native Networking 설정 화면 예시.

6단계: 검토 및 생성

설정을 검토하고, 표시되는 Marketplace 약관에 동의한 뒤 Create를 선택합니다. 프로비저닝에는 PostgreSQL 구성에 따라 보통 20~50분이 걸립니다. Azure가 배포를 Succeeded로 보고한 뒤에도 애플리케이션에 접속할 수 있게 되기까지 몇 분이 더 걸릴 수 있습니다.

배포가 완료된 뒤:

  • Azure 포털에서 사용한 리소스 그룹을 엽니다.
  • Application Gateway에 연결된 공인 IP 리소스(보통 <prefix>-ag-pip라는 이름)를 엽니다. Essentials에서 DNS 이름(Azure가 할당한 FQDN)을 확인합니다.
  • HTTPS 없이 배포했다면 사이트 URL은 다음과 같습니다.

    http://<dns-label>.<region>.cloudapp.azure.com

  • HTTPS로 배포했다면, 맞춤 도메인이 Application Gateway 공인 IP의 Azure 할당 DNS 이름을 가리키는 DNS 레코드를 만드세요(서브도메인은 보통 CNAME을 사용하고, 루트 도메인을 사용한다면 공급자의 apex 호환 레코드 유형을 사용하세요). DNS가 전파되면 사이트 URL은 다음과 같습니다.

    https://<your-custom-domain>

축하합니다. Azure에 프로덕션 준비가 된 Mattermost 스택을 성공적으로 배포했습니다.

다음 단계

런북

Mattermost 서버 업그레이드

VM 확장 집합은 3단계에서 선택한 버전에 해당하는 Mattermost Marketplace VM 이미지를 실행합니다. Mattermost는 지원되는 릴리스마다 새 이미지 버전을 게시합니다. 업그레이드하려면 배포 리전에서 VMSS가 더 최신 이미지 버전을 가리키도록 설정하세요. 애플리케이션 데이터는 PostgreSQL과 Azure Files 공유에 그대로 유지되며, 업그레이드는 갱신된 이미지로 만든 VM으로 애플리케이션 인스턴스를 순차 교체합니다.

업그레이드 전 확인 사항
업그레이드 단계
  1. VMSS를 새 이미지 버전으로 업데이트합니다.

    az vmss update \
      --resource-group <resource-group> \
      --name <resource-name-prefix>-vmss \
      --set virtualMachineProfile.storageProfile.imageReference.version=<new-version>

    VMSS는 롤링 업그레이드 정책과 /api/v4/system/ping에 대한 애플리케이션 상태 프로브를 사용하므로, Application Gateway가 정상 노드로 트래픽을 계속 전달하는 동안 인스턴스가 배치 단위로 교체됩니다.

  2. 롤아웃을 모니터링합니다. Azure 포털에서 VMSS → Instances(또는 Rolling upgrades)를 열고 모든 인스턴스가 정상 상태가 되어 새 모델로 실행될 때까지 기다립니다.

  3. Mattermost를 확인합니다. System Console → About에서 Mattermost가 새 버전을 사용하는지 확인하세요.

Mattermost 배포 보안 강화

TLS를 구성하고 NGINX 프록시를 설정하면 클라이언트와 Mattermost 서버 사이의 통신을 안전하게 보호할 수 있습니다. 이 구성을 사용하면 NGINX가 HTTPS 트래픽을 처리하고 요청을 Mattermost로 프록시하므로, Mattermost 자체에서 TLS를 활성화할 필요가 없습니다.

  1. 호스트 서버에 NGINX를 설치합니다. 자세한 내용은 (권장) NGINX 프록시 설정 문서를 참고하세요.
  2. 신뢰할 수 있는 인증 기관(CA)에서 TLS 인증서를 발급받거나, 테스트 목적이라면 자체 서명 인증서를 사용합니다.
  3. HTTPS 트래픽을 제공하도록 NGINX에 TLS 인증서를 구성합니다. NGINX는 프록시 역할을 하며, 로컬 또는 별도 서버에서 실행 중인 Mattermost 애플리케이션으로 요청을 전달합니다.
참고

일반적인 배포 문제의 해결 방법은 배포 문제 해결 문서를 참고하세요.