환경 구성 설정
Entry, Professional, Enterprise, Enterprise Advanced 플랜에서 사용할 수 있습니다.
시스템 콘솔(System Console)에서 Product 메뉴를 선택하고 System Console, Environment를 차례로 선택해 다음 환경 구성 옵션을 확인하고 관리하세요.
- 웹 서버(Web server)
- 데이터베이스(Database)
- Enterprise 검색(Enterprise search)
- 파일 저장소(File storage)
- 이미지 프록시(Image proxy)
- SMTP
- 푸시 알림 서버(Push notification server)
- 고가용성(High availability)
- 속도 제한(Rate limiting)
- 로깅(Logging)
- 세션 길이(Session lengths)
- 성능 모니터링(Performance monitoring)
- 개발자(Developer)
- 모바일 보안(Mobile security)
- config.json 전용 설정(config.json-only settings)
자체 호스팅 Mattermost 배포를 관리하는 시스템 관리자는 아래 표에 설명된 대로 config.json 파일을 편집할 수 있습니다. 아래의 각 구성 값에는 JSON을 다룰 수 있는 도구로 config.json 파일에서 해당 값에 프로그래밍 방식으로 접근할 수 있는 JSON 경로가 함께 표시됩니다. 예를 들어 SiteURL 값은 ServiceSettings 아래에 있습니다.
- jq 같은 도구를 사용한다면 다음과 같이 입력합니다:
cat config/config.json | jq '.ServiceSettings.SiteURL' config.json파일을 직접 편집할 때는ServiceSettings같은 객체를 찾은 뒤 그 객체 안에서SiteURL키를 찾습니다.
웹 서버 (Web server)
자체 호스팅 배포에서는 System Console > Environment > Web Server로 이동하거나 아래 표에 설명된 대로 config.json 파일을 편집해 Mattermost가 배포된 네트워크 환경을 구성할 수 있습니다. 이 섹션의 구성 설정을 변경하면 서버를 재시작해야 적용됩니다.
사이트 URL (Site URL)
사용자가 Mattermost에 접속할 때 사용하는 URL입니다. 80이나 443 같은 표준 포트가 아니라면 포트 번호가 필요합니다. 이 항목은 필수입니다. 시스템 콘솔에서 Test Live URL 버튼을 선택하면 사이트 URL을 검증할 수 있습니다. |
|
- URL에는
https://example.com/company/mattermost처럼 하위 경로가 포함될 수 있습니다. - 사이트 URL 값을 변경했다면 데스크톱 앱에서 로그아웃한 뒤 새 도메인으로 다시 로그인하세요.
사이트 URL이 설정되지 않으면 다음과 같은 문제가 발생합니다.
- 이메일 알림에 깨진 링크가 포함되고 이메일 일괄 발송이 동작하지 않습니다.
- GitLab, Google, Entra ID를 포함한 OAuth 2.0 인증이 실패합니다.
- 플러그인이 예상대로 동작하지 않을 수 있습니다.
최대 URL 길이 (Maximum URL length)
Mattermost 서버가 허용하는 URL의 최대 길이(쿼리 매개변수 포함, 문자 수)입니다. 이보다 긴 URL은 거부되며 API 호출은 오류와 함께 실패합니다. 숫자 값입니다. 기본값은 2048자입니다. |
|
웹 서버 리슨 주소 (Web server listen address)
바인딩하고 수신 대기할 주소와 포트입니다. 하위 대역 포트(0-1023 범위의 “시스템 포트” 또는 “잘 알려진 포트”)를 선택하는 경우 해당 포트에 바인딩할 권한이 있어야 합니다. |
|
웹 서버는 address:port 형식(예: ":8065")을 사용하지만, 메트릭은 포트 번호만 사용합니다(예: 8067).
포트 80을 443으로 전달 (Forward port 80 to 443)
포트 80의 비보안 트래픽을 포트 443으로 전달합니다.
|
|
웹 서버 연결 보안 (Web server connection security)
Mattermost 클라이언트와 서버 사이의 연결 보안 방식입니다.
|
|
자세한 내용은 Mattermost TLS 설정 문서를 참고하세요.
TLS 인증서 파일 (TLS certificate file)
TLS 연결 보안에 사용할 인증서 파일의 경로입니다. 문자열을 입력합니다. |
|
TLS 키 파일 (TLS key file)
TLS 연결 보안에 사용할 TLS 키 파일의 경로입니다. 문자열을 입력합니다. |
|
Let's Encrypt 사용 (Use Let's Encrypt)
Let’s Encrypt에서 인증서를 자동으로 가져오는 기능을 활성화합니다.
|
|
Let's Encrypt 설정에 대한 자세한 내용은 Mattermost TLS 설정 문서를 참고하세요.
Let's Encrypt 인증서 캐시 파일 (Let's Encrypt certificate cache file)
Let’s Encrypt 서비스의 인증서와 관련 데이터를 저장할 파일의 경로입니다. 파일 경로를 입력합니다. |
|
읽기 타임아웃 (Read timeout)
연결이 수락된 시점부터 요청 본문을 모두 읽을 때까지 허용되는 최대 시간입니다. 초 단위 숫자를 입력합니다. 기본값은 300초입니다. |
|
쓰기 타임아웃 (Write timeout)
초 단위 숫자를 입력합니다. 기본값은 300초입니다. |
|
유휴 타임아웃 (Idle timeout)
HTTP 서버의 유휴 타임아웃을 명시적으로 설정합니다. 유휴 연결이 끊기기 전까지 허용되는 최대 시간입니다. 초 단위 숫자를 입력합니다. 기본값은 300초입니다. |
|
웹 서버 모드 (Webserver mode)
gzip 파일을 제대로 배포하지 못하는 웹 프록시처럼 환경상 특별한 제약이 없다면 성능 향상을 위해 gzip을 권장합니다.
|
|
비보안 아웃바운드 연결 허용 (Enable insecure outgoing connections)
Mattermost가 비보안 아웃바운드 연결을 허용하도록 구성합니다.
|
|
이 기능을 활성화하면 해당 연결이 중간자 공격에 취약해집니다.
관리 리소스 경로 (Managed resource paths)
Mattermost 도메인 안에서 Mattermost가 아닌 서드파티 서비스가 관리하는 경로를 쉼표로 구분해 나열합니다. 이 경로로 향하는 링크는 Mattermost 앱에서 새 탭이나 새 창으로 열립니다. 예를 들어 Mattermost가 |
|
Mattermost 데스크톱 앱을 사용할 때 링크를 브라우저가 아닌 데스크톱 앱 안에서 열려면 추가 구성이 필요합니다. 자세한 내용은 데스크톱 관리 리소스 문서를 참고하세요.
디스크에서 구성 다시 불러오기 (Reload configuration from disk)
Enterprise, Enterprise Advanced 플랜에서 사용할 수 있습니다.
서버를 중단하지 않고 장애 조치를 하려면 데이터베이스 구성을 변경한 뒤 시스템 콘솔에서 Reload configuration from disk 버튼을 선택하세요. 그런 다음 Environment > Database로 이동해 Recycle Database Connections를 선택하면 다시 불러오기가 완료됩니다. |
|
모든 캐시 비우기 (Purge all caches)
세션, 계정, 채널에 대한 인메모리 캐시를 모두 비웁니다. 모든 캐시를 비우려면 시스템 콘솔에서 Purge All Caches 버튼을 선택하세요. |
|
캐시를 비우면 성능에 부정적인 영향을 줄 수 있습니다. 고가용성 클러스터 기반 배포에서는 클러스터 내 모든 서버의 캐시를 비우려고 시도합니다.
웹소켓 URL (Websocket URL)
클라이언트가 웹소켓을 어디로 연결해야 하는지 서버가 알려 주도록 구성할 수 있습니다. 문자열을 입력합니다. |
|
사이트 URL 구성 설정과 일치하는 단일 웹소켓 URL을 구성할 것을 강력히 권장합니다.
라이선스 파일 위치 (License file location)
디스크에 있는 라이선스 파일의 경로와 파일명입니다. 시작 시 Mattermost가 이전에 업로드된 유효한 라이선스를 데이터베이스에서 찾지 못하면 이 경로에서 라이선스 파일을 찾습니다. 문자열을 입력합니다. 절대 경로 또는 |
|
TLS 최소 버전 (TLS minimum version)
Mattermost 서버가 사용하는 최소 TLS 버전입니다. 문자열을 입력합니다. 기본값은 1.2입니다. |
|
이 설정은 NGINX 같은 리버스 프록시 계층을 거치지 않고 내장 서버 바이너리를 직접 사용할 때만 적용됩니다.
신뢰할 수 있는 프록시 IP 헤더 (Trusted proxy IP header)
IP 주소를 확인할 때 순서대로 검사할 헤더를 지정합니다(순서가 중요합니다). 지정하지 않은 헤더는 모두 무시됩니다.
|
|
- 기본값
[]는 어떤 헤더도 신뢰하지 않는다는 뜻입니다. - Mattermost를 프록시 없이 운영하는 경우에는 기본값을 유지할 것을 권장합니다. 그렇지 않으면 클라이언트가 헤더를 보내 속도 제한이나 감사 로그를 우회할 수 있습니다.
- 리버스 프록시를 사용하는 환경에서는 헤더를 리버스 프록시가 설정하는 한 이런 문제가 발생하지 않습니다. 이런 환경에서는 리버스 프록시가 설정하는 헤더만 명시적으로 허용하고 다른 값은 추가하지 마세요.
Strict Transport Security(HSTS) 활성화 (Enable Strict Transport Security (HSTS))
|
|
자세한 내용은 Strict-Transport-Security 문서를 참고하세요.
보안 TLS 전송 만료 (Secure TLS transport expiry)
브라우저가 해당 사이트를 HTTPS로만 접속해야 한다고 기억하는 시간(초)입니다. 이 기간이 지나면 숫자를 입력합니다. 기본값은 63072000(2년)입니다. |
|
자세한 내용은 Strict-Transport-Security 문서를 참고하세요.
TLS 암호 스위트 재정의 (TLS cipher overwrites)
최신 암호 스위트를 지원하지 않는 레거시 클라이언트의 요구 사항을 충족하거나 허용할 암호 스위트 종류를 제한하기 위해 TLS 암호 스위트 재정의를 설정합니다. 아무것도 지정하지 않으면 Mattermost 서버는 현재 안전하다고 간주되는 암호 스위트 집합을 사용하며, 예외적인 경우에만 재정의를 허용합니다. 문자열 배열을 입력합니다. |
|
- 이 설정은 NGINX 같은 리버스 프록시 계층을 거치지 않고 내장 서버 바이너리를 직접 사용할 때만 적용됩니다.
- 안전하다고 간주되는 암호 스위트 목록은 /model/config.go의
ServerTLSSupportedCiphers변수를 참고하세요.
고루틴 상태 임계값 (Goroutine health threshold)
Mattermost 시스템이 정상 상태로 간주되는 고루틴 개수의 임계값을 설정합니다. 고루틴이 이 한도를 넘으면 서버 로그에 경고가 기록됩니다. 숫자를 입력합니다. 기본값은 -1이며, 이 경우 임계값 검사를 하지 않습니다. |
|
하위 도메인 쿠키 허용 (Allow cookies for subdomains)
|
|
클러스터 로그 타임아웃 (Cluster log timeout)
Enterprise, Enterprise Advanced 플랜에서 사용할 수 있습니다.
성능 모니터링을 위한 클러스터 요청 시간 로깅 주기를 밀리초 단위로 지정합니다. 숫자를 입력합니다. 기본값은 2000밀리초(2초)입니다. |
|
자세한 내용은 성능 모니터링 문서를 참고하세요.
최대 페이로드 크기 (Maximum payload size)
파일을 입력으로 받는 API를 제외한 모든 API의 최대 페이로드 크기(바이트)입니다. 예를 들어 첨부 파일 업로드 API나 커스텀 이모지 업로드 API가 여기에 해당합니다. 숫자 값입니다. 기본값은 300000(300 kB)입니다. |
|
데이터베이스 (Database)
자체 호스팅 배포에서는 System Console > Environment > Database로 이동하거나 아래 표에 설명된 대로 config.json 파일을 편집해 Mattermost가 배포된 데이터베이스 환경을 구성할 수 있습니다. 이 섹션의 구성 설정을 변경하면 서버를 재시작해야 적용됩니다.
드라이버 이름 (Driver name)
데이터베이스 종류입니다. 다음 중 하나를 사용할 수 있습니다.
|
|
데이터 소스 (Data source)
마스터 데이터베이스에 대한 연결 문자열입니다. 문자열을 입력합니다. |
|
PostgreSQL 데이터베이스 (PostgreSQL databases)
Driver Name이 postgres로 설정된 경우 다음 형식의 연결 문자열을 사용합니다: postgres://mmuser:password@hostname_or_IP:5432/mattermost_test?sslmode=disable&connect_timeout=10
PostgreSQL 데이터베이스에서 TLS를 사용하려면
PostgreSQL 서버와의 연결을 암호화하는 매개변수는 sslmode입니다. PostgreSQL 서버와 통신하는 데 사용하는 라이브러리는 pq입니다. 현재 표준 PostgreSQL 클라이언트의 psql "sslmode=value"에 전달할 수 있는 모든 값을 사용할 수는 없습니다. 자세한 내용은 SSL Mode Descriptions 문서를 참고하세요.
데이터베이스 관리자는 아래에 설명된 지원 값에 맞춰 기능을 구성해야 합니다.
sslmode 매개변수 요약 설명 | 값 | 데이터 소스 이름 예시 |
|---|---|---|
PostgreSQL 서버와의 통신에 TLS/SSL 암호화를 사용하지 않습니다.
|
|
|
데이터가 암호화되며 네트워크를 신뢰합니다. 생략하면 |
|
|
신뢰할 수 있는 서버에 연결할 때 데이터가 암호화됩니다. |
|
|
신뢰할 수 있는 서버에 연결할 때 데이터가 암호화됩니다. |
|
|
MySQL 데이터베이스 (MySQL Databases)
Driver Name이 mysql로 설정된 경우 charset보다 collation을 사용할 것을 권장합니다.
collation을 지정하려면 다음과 같이 입력합니다.
"SqlSettings": {
"DataSource": "<mmuser:password>@tcp(hostname or IP:3306)/mattermost?charset=utf8mb4,utf8&collation=utf8mb4_general_ci",
[...]
}
collation을 생략하면 기본 collation인 utf8mb4_general_ci가 사용됩니다.
"SqlSettings": {
"DataSource": "<mmuser:password>@tcp(hostname or IP:3306)/mattermost?charset=utf8mb4,utf8",
[...]
}
MySQL 8.0 이상을 사용한다면 기본 collation이 utf8mb4_0900_ai_ci로 변경되었습니다. MySQL 8.0 지원에 대한 자세한 내용은 데이터베이스 소프트웨어 요구 사항 문서를 참고하세요.
MySQL 데이터베이스에서 TLS를 사용하려면
MySQL 서버와의 연결을 암호화하는 매개변수는 tls입니다.
MySQL과 통신하는 데 사용하는 라이브러리는 Go-MySQL-Driver입니다.
현재로서는 표준 MySQL 클라이언트의 mysql --ssl-mode=value에 전달할 수 있는 모든 값을 사용할 수는 없습니다. 8.0 버전 예시는 Connection-Encryption Option Summary 문서를 참고하세요.
데이터베이스 관리자는 아래에 설명된 지원 값에 맞춰 기능을 구성해야 합니다.
tls 매개변수 요약 설명 | 값 | 데이터 소스 이름 예시 |
|---|---|---|
MySQL 서버와의 통신에 TLS/SSL 암호화를 사용하지 않습니다. |
|
|
MySQL 서버와의 통신에 TLS/SSL 암호화를 사용합니다. |
|
|
MySQL 서버와의 통신에 자체 서명 인증서로 TLS/SSL 암호화를 사용합니다. |
|
|
서버가 폴백 가능성을 알리면 TLS/SSL 암호화를 사용하고, 알리지 않으면 암호화하지 않습니다. |
|
|
AWS 고가용성 RDS 클러스터 배포 (AWS High Availablity RDS cluster deployments)
AWS 고가용성 RDS 클러스터 배포에서는 AWS의 장애 조치 처리를 활용할 수 있도록 이 구성 설정을 클러스터 수준의 쓰기/읽기 엔드포인트로 지정하세요. 어떤 데이터베이스 노드를 라이터 노드로 승격할지는 AWS가 처리하므로 Mattermost가 관리할 필요가 없습니다. 자세한 내용은 고가용성 데이터베이스 구성 문서를 참고하세요.
최대 연결 수 (Maximum open connections)
데이터베이스에 대한 최대 연결 수입니다. 숫자를 입력합니다. 기본값은 100입니다. |
|
이 한도는 클러스터 전체 합계가 아니라 데이터 소스별, Mattermost 서버 노드별로 적용됩니다. 각 서버 노드는 마스터 데이터베이스(DataSource)에 대해, 그리고 읽기 복제본과 검색 복제본 아래에 구성된 각 항목에 대해 이 값 크기의 연결 풀을 따로 엽니다.
데이터베이스(또는 그 앞단의 연결 풀링 프록시)의 max_connections를 산정하려면 먼저 노드당 데이터 소스 개수를 세십시오. 마스터 데이터베이스가 1개이고 여기에 읽기 복제본 수와 검색 복제본 수를 더합니다. 이 개수에 MaxOpenConns를 곱한 뒤, 고가용성 클러스터로 배포한 경우 앱 서버 노드 수를 다시 곱합니다.
MaxOpenConns x (노드당 데이터 소스 수) x (앱 노드 수)
예를 들어 각 노드에 읽기 복제본 1개와 검색 복제본 1개를 구성한 3노드 HA 클러스터에서 MaxOpenConns가 기본값 100이라면 각 노드의 데이터 소스는 3개이므로 클러스터 전체에서 3 x 3 x 100 = 900개의 연결이 발생할 수 있습니다.
최대 유휴 연결 수 (Maximum idle connections)
데이터베이스에 대해 열어 두는 최대 유휴 연결 수입니다. 숫자를 입력합니다. 기본값은 50입니다. MaxOpenConns와 2:1 비율을 유지할 것을 권장합니다. |
|
쿼리 타임아웃 (Query timeout)
연결을 연 뒤 쿼리를 보내고 데이터베이스의 응답을 기다리는 시간(초)입니다. 초 단위 숫자를 입력합니다. 기본값은 30초입니다. |
|
분석 쿼리 타임아웃 (Analytics query timeout)
연결을 연 뒤 일부 분석 쿼리를 보내고 데이터베이스의 응답을 기다리는 시간(초)입니다. 이 설정은 팀·사이트 통계 페이지의 일부 정보를 채우기 위해 백그라운드에서 실행되는 긴 쿼리에만 적용됩니다. 초 단위 숫자를 입력합니다. 기본값은 300초입니다. |
|
최대 연결 수명 (Maximum connection lifetime)
데이터베이스 연결의 최대 수명(밀리초)입니다. 데이터베이스 연결을 재사용할 수 있는 최대 시간을 이 설정으로 구성합니다. 밀리초 단위 숫자를 입력합니다. 기본값은 3600000밀리초(1시간)입니다. |
|
최대 연결 유휴 타임아웃 (Maximum connection idle timeout)
데이터베이스 연결이 유휴 상태로 유지될 수 있는 최대 시간(밀리초)입니다. 밀리초 단위 숫자를 입력합니다. 기본값은 300000(5분)입니다. |
|
최소 해시태그 길이 (Minimum hashtag length)
해시태그의 최소 글자 수입니다. 이 값은 2 이상이어야 합니다. |
|
MySQL 데이터베이스는 세 글자보다 짧은 문자열 검색을 지원하도록 구성되어 있어야 합니다. 자세한 내용은 MySQL 문서를 참고하세요.
SQL 구문 로깅 (SQL statement logging)
개발 목적으로 실행된 SQL 구문을 로그에 기록할 수 있습니다.
|
|
데이터베이스 연결 재생성 (Recycle database connections)
Enterprise, Enterprise Advanced 플랜에서 사용할 수 있습니다.
Recycle Database Connections 버튼을 선택하면 현재 열려 있는 데이터베이스 연결을 20초 이내에 닫고 새 연결 집합을 만들어 연결 풀을 수동으로 재생성합니다. 서버를 중지하지 않고 장애 조치를 하려면 |
|
데이터베이스 검색 비활성화 (Disable database search)
엔터프라이즈급 검색을 사용할 때 데이터베이스 검색이 검색을 수행하지 않도록 비활성화할 수 있습니다.
|
|
Mattermost의 검색 동작은 어떤 검색 엔진이 활성화되어 있는지에 따라 달라집니다.
- Elasticsearch 또는 AWS OpenSearch가 활성화되어 있으면 Mattermost는 이를 먼저 사용하려고 시도합니다.
- Elasticsearch가 실패하거나 비활성화되어 있으면 Mattermost는 Bleve 검색이 활성화된 경우 이를 사용하려고 시도합니다. Bleve 검색은 Mattermost v11.0에서 사용 중단되었습니다. 엔터프라이즈 검색 기능에는 Elasticsearch 또는 OpenSearch 사용을 권장합니다.
- 이 방법들도 실패하거나 비활성화되어 있으면 Mattermost는 데이터베이스 검색이 활성화된 경우 데이터베이스를 직접 검색하려고 시도합니다.
- 위 방법이 모두 실패하거나 비활성화되어 있으면 검색 결과가 비어 있게 됩니다.
대규모 배포에서 이 구성 설정을 비활성화하면 다음 영역에서 서버 성능이 향상될 수 있습니다.
- 데이터베이스 부하 감소: 데이터베이스 검색이 활성화되어 있으면 사용자가 실행하는 모든 검색 쿼리가 데이터베이스와 통신해야 하므로 데이터베이스 서버에 추가 부하가 발생합니다. 데이터베이스 검색을 비활성화하면 이런 쿼리를 피할 수 있어 데이터베이스 부하가 줄어듭니다.
- 응답 시간 개선: 데이터베이스 검색은 특히 데이터가 많을 때 시간이 오래 걸릴 수 있습니다. 데이터베이스 검색을 비활성화하면 데이터베이스에서 검색 결과를 가져와 처리하는 시간이 사라져 응답 시간이 빨라집니다.
- 검색을 인덱싱 서비스로 이전: 데이터베이스 검색을 비활성화한다는 것은 대개 검색을 Elasticsearch처럼 검색에 최적화된 전용 인덱싱 서비스로 넘긴다는 뜻입니다. 이런 서비스는 기존 데이터베이스 검색보다 빠르고 효율적인 검색 기능을 제공합니다.
- 리소스 사용량 감소: 데이터베이스에 직접 검색 쿼리를 실행하면 CPU와 메모리를 많이 사용할 수 있습니다. 데이터베이스 검색을 비활성화하면 이런 리소스를 다른 핵심 기능에 배분해 전체 시스템 성능을 높일 수 있습니다.
- 확장성 향상: 사용자 수와 데이터 양이 늘어나면 데이터베이스 검색의 효율이 떨어질 수 있습니다. 전용 검색 서비스는 더 효과적으로 확장되도록 설계되어 있어 전체 시스템의 확장성과 성능을 높여 줍니다.
다만 Mattermost에서 데이터베이스 검색을 수행하는 기능은 특히 다른 검색 엔진이 활성화되어 있지 않을 때 많은 사용자에게 핵심 기능입니다. 이 기능을 비활성화하면 사용자가 Mattermost 검색창을 사용할 때 오류를 보게 됩니다. 성능 개선과 조직·사용자의 필요 사이에서 균형을 맞추는 것이 중요합니다.
적용된 스키마 마이그레이션 (Applied schema migrations)
db_migrations 테이블의 버전 정보를 기준으로 데이터 저장소에 적용된 모든 마이그레이션 목록입니다. Product 메뉴에서 About Mattermost를 선택하면 현재 배포에 적용된 데이터베이스 스키마 버전을 확인할 수 있습니다.
활성 검색 백엔드 (Active search backend)
현재 검색에 사용 중인 백엔드를 읽기 전용으로 표시합니다. 값으로는 none, database, elasticsearch, bleve가 있습니다.
읽기 복제본 (Read replicas)
읽기 복제본 데이터베이스의 연결 문자열을 지정합니다. |
|
- 배열에 넣는 각 데이터베이스 연결 문자열은 데이터 소스 설정과 같은 형식이어야 합니다.
- 배열에서 여러 읽기 복제본을 공백으로 구분하면 Mattermost가 여러 데이터베이스 인스턴스에 읽기 쿼리를 분산합니다. 예:
MM_SQLSETTINGS_DATASOURCEREPLICAS=dc-1 dc-2 - 여기에 추가한 각 항목은 모든 Mattermost 서버 노드에서 MaxOpenConns 크기의 연결 풀을 별도로 엽니다. 다른 항목과 풀을 공유하지 않습니다. 복제본을 추가하기 전에 해당 설정의 참고 항목에서 클러스터 전체 산정 방법을 확인하세요.
AWS 고가용성 RDS 클러스터 배포 (AWS High Availability RDS cluster deployments)
AWS 고가용성 RDS 클러스터 배포에서는 AWS/RDS가 처리하는 장애 조치와 부하 분산(쓰기 트래픽 제외)을 우회하도록, 이 구성 설정을 RDS 클러스터 내부의 읽기 전용 노드 엔드포인트로 직접 지정하세요. Mattermost는 읽기 전용 연결을 자체적으로 분산하며, 해당 노드에 장애가 발생하면 데이터 소스(쓰기+읽기 연결)로 쿼리를 분산할 수도 있습니다. 자세한 내용은 고가용성 데이터베이스 구성 문서를 참고하세요.
검색 복제본 (Search replicas)
검색 복제본 데이터베이스의 연결 문자열을 지정합니다. 검색 복제본은 읽기 복제본과 비슷하지만 검색 쿼리만 처리하는 데 사용됩니다. |
|
- 배열에 넣는 각 데이터베이스 연결 문자열은 데이터 소스 설정과 같은 형식이어야 합니다.
- 여기에 추가한 각 항목은 모든 Mattermost 서버 노드에서 MaxOpenConns 크기의 연결 풀을 별도로 엽니다. 다른 항목과 풀을 공유하지 않습니다. 검색 복제본을 추가하기 전에 해당 설정의 참고 항목에서 클러스터 전체 산정 방법을 확인하세요.
AWS 고가용성 RDS 클러스터 배포 (AWS High Availability RDS cluster deployments)
AWS 고가용성 RDS 클러스터 배포에서는 AWS/RDS가 처리하는 장애 조치와 부하 분산(쓰기 트래픽 제외)을 우회하도록, 이 구성 설정을 RDS 클러스터 내부의 읽기 전용 노드 엔드포인트로 직접 지정하세요. Mattermost는 읽기 전용 연결을 자체적으로 분산하며, 해당 노드에 장애가 발생하면 데이터 소스(쓰기+읽기 연결)로 쿼리를 분산할 수도 있습니다. 자세한 내용은 고가용성 데이터베이스 구성 문서를 참고하세요.
복제본 지연 설정 (Replica lag settings)
Enterprise, Enterprise Advanced 플랜에서 사용할 수 있습니다.
단일 복제본 인스턴스의 복제 지연을 측정하기 위한 연결 문자열과 사용자 정의 SQL 쿼리를 문자열 배열로 입력합니다. 이 설정은 binlog 거리 또는 트랜잭션 큐 길이를 기준으로 한 절대 지연과, 복제본이 따라잡는 데 걸리는 시간을 모니터링합니다. 문자열 배열은 다음으로 구성됩니다.
|
|
QueryAbsoluteLag와QueryTimeLag쿼리는 단일 행을 반환해야 합니다.- 이를 제대로 모니터링하려면 Mattermost에 성능 모니터링을 설정해야 합니다.
데이터베이스 종류에 맞춰 복제본 지연 메트릭을 구성합니다. 데이터베이스별 구성 방법은 아래 항목을 참고하세요.
AWS Aurora
아래에 강조 표시된 구성을
SqlSettings.ReplicaLagSettings배열에 추가하세요. AWS Aurora 노드의 복제 통계는 클러스터에 속한 모든 서버 인스턴스에서 조회할 수 있으므로 한 번만 추가하면 됩니다.DataSource는 그룹 내 단일 노드를 가리키도록 반드시 변경하세요.Aurora 복제 통계에 대한 자세한 내용은 AWS Aurora 문서를 참고하세요.
예시
{ "SqlSettings": { "ReplicaLagSettings": [ { "DataSource": "replica-1", "QueryAbsoluteLag": "select server_id, highest_lsn_rcvd-durable_lsn as bindiff from aurora_global_db_instance_status() where server_id=<>", "QueryTimeLag": "select server_id, visibility_lag_in_msec from aurora_global_db_instance_status() where server_id=<>" } ] } }MySQL Group Replication
아래에 강조 표시된 구성을
SqlSettings.ReplicaLagSettings배열에 추가하세요. 모든 노드의 복제 통계는 MySQL 복제 그룹에 속한 모든 서버 인스턴스에서 공유되므로 한 번만 추가하면 됩니다.DataSource는 그룹 내 단일 노드를 가리키도록 반드시 변경하세요.그룹 복제 통계에 대한 자세한 내용은 MySQL 문서를 참고하세요.
예시
{ "SqlSettings": { "ReplicaLagSettings": [ { "DataSource": "replica-1", "QueryAbsoluteLag": "select member_id, count_transactions_remote_in_applier_queue FROM performance_schema.replication_group_member_stats where member_id=<>", "QueryTimeLag": "" } ] } }PostgreSQL replication slots
- 아래에 강조 표시된 구성을
SqlSettings.ReplicaLagSettings배열에 추가하세요. 이 쿼리는 클러스터의 주 노드에서 실행되어야 하므로,DataSource를 구성해 둔 SqlSettings.DataSource 설정과 일치하도록 변경하세요.
pg_stat_replication에 대한 자세한 내용은 PostgreSQL 문서를 참고하세요.
예시:
{ "SqlSettings": { "ReplicaLagSettings": [ { "DataSource": "postgres://mmuser:password@localhost:5432/mattermost_test?sslmode=disable&connect_timeout=10.", "QueryAbsoluteLag": "select usename, pg_wal_lsn_diff(pg_current_wal_lsn(),replay_lsn) as metric from pg_stat_replication;", "QueryTimeLag": "" } ] } }데이터베이스 사용자에게
pg_monitor권한을 부여합니다. 이 사용자는 위DataSource문자열에 구성한 사용자와 동일해야 합니다.역할에 대한 자세한 내용은 PostgreSQL 문서를 참고하세요.
sudo -u postgres psql postgres=# GRANT pg_monitor TO mmuser;
- 아래에 강조 표시된 구성을
- 구성을 저장하고 모든 Mattermost 노드를 재시작합니다.
- Mattermost를 모니터링하는 Grafana 인스턴스로 이동해 Mattermost Performance Monitoring v2 대시보드를 엽니다.
QueryTimeLag차트는 기존Replica Lag차트를 활용해 이미 설정되어 있습니다.QueryAbsoluteLag메트릭을 사용한다면Replica Lag차트를 복제한 뒤 쿼리를 아래의 절대 지연 메트릭으로 수정하고 제목을Replica Lag Absolute로 변경하세요.mattermost_db_replica_lag_abs{instance=~"$server"}

복제본 모니터 주기(초) (Replica monitor interval (seconds))
비정상 복제본의 생존 여부를 얼마나 자주 확인할지 지정합니다. Mattermost는 복제본이 살아 있으면 동적으로 해당 복제본을 선택합니다. 숫자를 입력합니다. 기본값은 5초입니다. |
|
이 구성 설정은 자체 호스팅 배포에만 적용됩니다.
Enterprise 검색 (Enterprise search)
Enterprise, Enterprise Advanced 플랜에서 사용할 수 있습니다.
기본 데이터베이스 검색은 관계형 데이터베이스에서 수행되며 게시물과 파일 항목이 약 200만~300만 건 미만인 배포를 대상으로 합니다. 그 이상 규모에서는 검색 성능을 최적으로 유지하기 위해 게시물 300만 건에 도달하기 전에 Elasticsearch 또는 AWS OpenSearch로 Enterprise 검색을 활성화할 것을 강력히 권장합니다.
게시물이 300만 건을 넘는 자체 호스팅 배포에서는 메시지 검색과 @멘션에서 타임아웃 같은 심각한 성능 문제가 발생하지 않도록 Elasticsearch 또는 AWS OpenSearch가 필요합니다.
System Console > Environment > Elasticsearch로 이동해 Mattermost Enterprise 검색을 구성할 수 있습니다. 다음 구성 설정은 Elasticsearch와 AWS OpenSearch 모두에 적용됩니다. 아래 표에 설명된 대로 config.json 파일을 직접 편집할 수도 있습니다. 이 섹션의 구성 설정을 변경하면 서버를 재시작해야 적용됩니다.
Elasticsearch 인덱싱 활성화 (Enable Elasticsearch indexing)
새 게시물을 자동으로 인덱싱하도록 Mattermost를 구성합니다.
|
|
인덱스를 만든 뒤 인덱싱을 비활성화했다가 다시 활성화했다면, 검색 결과가 온전하도록 인덱스를 비우고 다시 만드세요.
백엔드 유형 (Backend type)
Elasticsearch와 AWS OpenSearch 모두 엔터프라이즈 규모 배포에서 검색 성능을 최적화하고 성능 저하와 타임아웃을 방지합니다. Enterprise 검색에 대한 자세한 내용은 제품 문서를 참고하세요.
검색 백엔드의 유형입니다.
|
|
Enterprise 검색 버전 지원에 대해 자세히 알아보세요.
서버 연결 주소 (Server connection address)
Elasticsearch 또는 AWS OpenSearch 서버의 주소입니다. |
|
CA 경로 (CA path)
Elasticsearch 또는 AWS OpenSearch 서버용 커스텀 인증 기관(CA) 인증서의 경로입니다(선택 사항). |
|
- Mattermost v7.8부터 사용할 수 있습니다. 인증서 경로는
/opt/mattermost/data/elasticsearch/또는/opt/mattermost/data/opensearch여야 하며, 시스템 콘솔에는./elasticsearch/cert.pem또는./opensearch/cert.pem으로 구성합니다. - 기본 인증 자격 증명과 함께 사용하거나 그것을 대체할 수 있습니다. 운영 체제의 기본 인증 기관 인증서를 사용하려면 이 설정을 비워 두세요.
클라이언트 인증서 경로 (Client certificate path)
Mattermost v7.8부터 사용할 수 있습니다. 기본 인증 자격 증명과 함께 사용하거나 그것을 대체할 수 있습니다.
Elasticsearch 또는 AWS OpenSearch 서버 연결에 사용할 PEM 형식의 클라이언트 인증서입니다(선택 사항). |
|
클라이언트 인증서 키 경로 (Client certificate key path)
Mattermost v7.8부터 사용할 수 있습니다. 기본 인증 자격 증명과 함께 사용하거나 그것을 대체할 수 있습니다.
PEM 형식의 클라이언트 인증서 키입니다(선택 사항). |
|
TLS 검증 건너뛰기 (Skip TLS verification)
TLS 연결의 인증서 확인 단계를 건너뛸 수 있습니다.
|
|
서버 사용자 이름 (Server username)
(선택 사항) Elasticsearch 또는 AWS OpenSearch 서버 인증에 사용할 사용자 이름입니다. 문자열을 입력합니다. |
|
서버 비밀번호 (Server password)
(선택 사항) Elasticsearch 또는 AWS OpenSearch 서버 인증에 사용할 비밀번호입니다. 문자열을 입력합니다. |
|
클러스터 스니핑 활성화 (Enable cluster sniffing)
클러스터의 모든 데이터 노드를 자동으로 찾아 연결하도록 Mattermost를 구성합니다.
Amazon OpenSearch Service 같은 클라우드 호스팅 검색 공급자를 사용할 때는 클러스터 스니핑을 활성화하지 마세요. |
|
시스템 콘솔에서 Test Connection 버튼을 선택하면 Mattermost와 Elasticsearch 또는 AWS OpenSearch 서버 사이의 연결을 검증할 수 있습니다.
일괄 인덱싱 (Bulk indexing)
데이터베이스에 있는 모든 기존 게시물을 오래된 것부터 최신 순으로 일괄 인덱싱하도록 Mattermost를 구성합니다. |
|
- 일괄 인덱싱 전에는 항상 인덱스를 비우세요.
- 시스템 콘솔에서 Index Now 버튼을 선택하면 모든 게시물의 일괄 인덱싱이 시작되며, 진행 중인 모든 인덱싱 작업을 확인할 수 있습니다.
- 인덱싱 중에도 Elasticsearch 또는 AWS OpenSearch를 사용할 수 있지만, 인덱싱 작업이 끝날 때까지 검색 결과가 온전하지 않을 수 있습니다.
- 진행 중인 인덱싱 작업을 취소하면 인덱스와 검색 결과가 온전하지 않게 됩니다.
채널 인덱스 다시 만들기 (Rebuild channels index)
채널 인덱스를 비우고 데이터베이스의 모든 채널을 오래된 것부터 최신 순으로 다시 인덱싱합니다. |
|
시스템 콘솔에서 Rebuild Channels Index 버튼을 선택하면 채널 인덱스를 비웁니다. 이 작업을 시작하기 전에 Bulk Indexing 표에서 진행 중인 다른 인덱싱 작업이 없는지 확인하세요. 인덱싱 중에도 채널 자동 완성은 사용할 수 있지만, 인덱싱 작업이 끝날 때까지 검색 결과가 온전하지 않을 수 있습니다.
인덱스 비우기 (Purge indexes)
Elasticsearch 인덱스 전체를 비웁니다. |
|
시스템 콘솔에서 Purge Indexes 버튼을 선택하면 인덱스를 비웁니다. 인덱스를 비운 뒤에는 Index Now 버튼을 선택해 새 인덱스를 만드세요.
비울 때 건너뛸 인덱스 (Indexes to skip while purging)
인덱스를 비울 때 무시할 인덱스 이름을 지정합니다. 여러 개를 지정할 때는 쉼표로 구분합니다. 별표(*)를 사용하면 인덱스 이름의 임의 문자열과 일치시킬 수 있습니다. |
|
검색 쿼리에 Elasticsearch 사용 (Enable Elasticsearch for search queries)
최신 인덱스를 사용해 모든 검색 쿼리에 Elasticsearch 또는 AWS OpenSearch를 사용하도록 Mattermost를 구성합니다.
|
|
인덱스를 만든 뒤 인덱싱을 비활성화했다가 다시 활성화했다면, 검색 결과가 온전하도록 인덱스를 비우고 다시 만드세요.
자동 완성 쿼리에 Elasticsearch 사용 (Enable Elasticsearch for autocomplete queries)
최신 인덱스를 사용해 사용자와 채널에 대한 모든 자동 완성 쿼리에 Elasticsearch 또는 AWS OpenSearch를 사용하도록 Mattermost를 구성합니다.
|
|
기존 사용자와 채널 데이터베이스의 일괄 인덱싱이 끝날 때까지 자동 완성 결과가 온전하지 않을 수 있습니다.
가입하지 않은 공개 채널 검색 허용 (Allow searching public channels without membership)
사용자가 가입하지 않은 공개 채널의 메시지도 검색할 수 있도록 허용합니다. 이 설정을 처음 활성화하면 기존 게시물에 채널 유형 정보가 백그라운드에서 채워집니다. 이 백필 작업은 검색 성능에 영향을 주지 않도록 초당 약 10,000건으로 조절됩니다.
|
|
컴플라이언스 모드가 활성화되어 있으면 이 설정은 적용되지 않습니다. 컴플라이언스 모드가 활성화된 상태에서는 검색 결과가 항상 사용자가 멤버인 채널로 제한됩니다.
게시물 인덱스 복제본 수 (Post index replicas)
각 게시물 인덱스에 사용할 복제본 수입니다. 숫자를 입력합니다. 기본값은 1입니다. |
|
- 이 설정을 변경하면 변경된 구성은 새로 만들어지는 인덱스에만 적용됩니다. 기존 인덱스에 적용하려면 설정을 변경한 뒤 인덱스를 비우고 다시 만드세요.
- 데이터 노드가
n개라면 각 인덱스의 샤드당 복제본 수는n-1이어야 합니다. - Elasticsearch 또는 AWS OpenSearch 클러스터의 노드 수가 바뀌면 이 구성 설정은 물론 채널 인덱스 복제본 수와 사용자 인덱스 복제본 수도 함께 변경해야 합니다.
게시물 인덱스 샤드 수 (Post index shards)
각 게시물 인덱스에 사용할 샤드 수입니다. 숫자를 입력합니다. 기본값은 1입니다. |
|
이 구성 설정을 변경하면 변경된 구성은 새로 만들어지는 인덱스에만 적용됩니다. 기존 인덱스에 적용하려면 설정을 변경한 뒤 인덱스를 비우고 다시 만드세요.
채널 인덱스 복제본 수 (Channel index replicas)
각 채널 인덱스에 사용할 복제본 수입니다. 숫자를 입력합니다. 기본값은 1입니다. |
|
데이터 노드가 n개라면 각 인덱스의 샤드당 복제본 수는 n-1이어야 합니다. Elasticsearch 또는 AWS OpenSearch 클러스터의 노드 수가 바뀌면 이 구성 설정은 물론 게시물 인덱스 복제본 수와 사용자 인덱스 복제본 수도 함께 변경해야 합니다.
채널 인덱스 샤드 수 (Channel index shards)
각 채널 인덱스에 사용할 샤드 수입니다. 숫자를 입력합니다. 기본값은 1입니다. |
|
사용자 인덱스 복제본 수 (User index replicas)
각 사용자 인덱스에 사용할 복제본 수입니다. 숫자를 입력합니다. 기본값은 1입니다. |
|
데이터 노드가 n개라면 각 인덱스의 샤드당 복제본 수는 n-1이어야 합니다. Elasticsearch 또는 AWS OpenSearch 클러스터의 노드 수가 바뀌면 이 구성 설정은 물론 게시물 인덱스 복제본 수와 사용자 인덱스 복제본 수도 함께 변경해야 합니다.
사용자 인덱스 샤드 수 (User index shards)
각 사용자 인덱스에 사용할 샤드 수입니다. 숫자를 입력합니다. 기본값은 1입니다. |
|
검색 인덱스 통합 (Aggregate search indexes)
이 설정에 지정한 기간(일)보다 오래된 Elasticsearch 또는 AWS OpenSearch 인덱스는 매일 예약된 작업에서 통합됩니다. 숫자를 입력합니다. 기본값은 365일입니다. |
|
데이터 보존과 Enterprise 검색을 함께 사용한다면 이 값을 데이터 보존 정책 기간보다 크게 설정하세요.
게시물 통합 작업 시작 시각 (Post aggregator start time)
매일 예약 실행되는 통합 작업의 시작 시각입니다. 서버의 로컬 시간을 기준으로 기본값은 03:00(오전 3시)입니다. |
|
인덱스 접두사 (Index prefix)
Elasticsearch 또는 AWS OpenSearch 인덱스 이름에 붙는 접두사입니다. |
|
이 설정을 사용하면 Mattermost가 만드는 모든 Elasticsearch 또는 AWS OpenSearch 인덱스에 이 접두사가 붙습니다. 접두사를 다르게 지정하면 여러 Mattermost 배포가 인덱스 이름 충돌 없이 하나의 Elasticsearch 또는 AWS OpenSearch 클러스터를 공유할 수 있습니다.
전역 검색 접두사 (Global search prefix)
동일한 인덱스 접두사를 가진 여러 Elasticsearch 인덱스를 아우르는 전역 검색을 활성화합니다. Elasticsearch 인스턴스가 교차 클러스터 복제로 데이터를 공유하는 다중 데이터 센터 구성에서 유용합니다. 분산된 인덱스를 더 쉽고 일관되게 검색할 수 있습니다. 값은 |
|
실시간 인덱싱 배치 크기 (Live indexing batch size)
게시물이 Elasticsearch 또는 AWS OpenSearch 인덱스에 추가되기까지 필요한 새 게시물 수입니다. 인덱스에 추가되면 해당 게시물을 검색할 수 있게 됩니다. 초당 게시물이 1건을 넘는 서버라면 이 값을 20초 동안의 평균 게시물 수로 설정할 것을 권장합니다. 숫자를 입력합니다. 기본값은 1입니다. 모든 게시물이 생성되는 즉시 동기적으로 인덱싱됩니다. |
|
초당 게시물이 1건을 넘는 환경에서는 Elasticsearch 또는 AWS OpenSearch 클러스터의 속도 제한이나 리소스 한도에 걸리지 않도록 이 값을 높여야 할 수 있습니다.
이 값을 높이면 정확히 어떤 일이 일어나나요?
가장 큰 영향은 게시물이 지정한 임계치에 도달한 뒤에야 Elasticsearch 또는 AWS OpenSearch에 인덱싱되고, 그 시점부터 Mattermost에서 검색된다는 점입니다. 따라서 대규모 서버 권장값에 맞춰 설정했다면 게시물을 작성한 뒤 평균 10~20초 정도는 검색으로 찾을 수 없습니다. 실제로 그렇게 빠르게 게시물을 검색하는 사용자는 많지 않으므로 사용자가 이 영향을 체감하는 경우는 거의 없습니다. Elasticsearch 또는 AWS OpenSearch 서버 사양에 따라 이 값을 평균보다 낮게 또는 높게 설정할 수 있습니다.
트래픽이 많은 시간대에는 게시물이 더 빨리 쌓여 인덱싱 기준에 더 빨리 도달하므로 이 지연이 짧아지고, 한산한 시간대에는 반대가 됩니다.
서버에 맞는 값을 찾는 방법
먼저 서버에서 분당 게시물이 몇 건 생성되는지 파악해야 합니다. 아래 쿼리를 실행해 서버의 분당 평균 게시물 수를 계산하세요.
이 쿼리는 부하가 클 수 있으므로 사용량이 많지 않은 시간대에 실행할 것을 권장합니다. 또한
WHERE절을 조정하면 다른 기간의 분당 게시물 수를 확인할 수 있습니다. 현재31536000000은 1년을 밀리초로 환산한 값입니다.SELECT AVG(postsPerMinute) as averagePostsPerMinute FROM ( SELECT count(*) as postsPerMinute, date_trunc('minute', to_timestamp(createat/1000)) FROM posts WHERE createAt > ( (extract(epoch from now()) * 1000 ) - 31536000000) GROUP BY date_trunc('minute', to_timestamp(createat/1000)) ) as ppm;- 환경에 맞는 허용 가능한 인덱싱 주기를 정한 뒤 분당 평균 게시물 수를 그 값으로 나누세요. 10~20초를 권장합니다. 분당 평균 게시물이
600건이고 20초마다 인덱싱하고 싶다면(60 seconds / 20 seconds = 3`)600 / 3을 계산해200이라는 값을 얻습니다. 게시물 200건이 쌓이면 Mattermost가 해당 게시물을 Elasticsearch 또는 AWS OpenSearch에 인덱싱합니다. 즉 평균적으로 검색 가능해지기까지 20초의 지연이 생깁니다. config.json을 편집하거나 mmctl을 실행해LiveIndexingBatchSize설정을 변경합니다.config.json에서 설정{ "ElasticsearchSettings": { "LiveIndexingBatchSize": 200 } }mmctl로 설정
mmctl config set ElasticsearchSettings.LiveIndexingBatchSize 200환경 변수로 설정
MM_ELASTICSEARCHSETTINGS_LIVEINDEXINGBATCHSIZE = 200- Mattermost 서버를 재시작합니다.
배치 크기 (Batch size)
일괄 인덱싱 작업에서 한 배치에 처리할 게시물 수입니다. 숫자를 입력합니다. 기본값은 10000입니다. |
|
요청 타임아웃 (Request timeout)
Elasticsearch 또는 AWS OpenSearch 호출의 타임아웃(초)입니다. 초 단위 숫자를 입력합니다. 기본값은 30초입니다. |
|
트레이스 (Trace)
Elasticsearch 또는 AWS OpenSearch 트레이스 오류 출력 옵션입니다.
|
|
CJK 분석기 활성화 (Enable CJK analyzers)
이 설정을 활성화하면 Mattermost가 언어별 분석기 플러그인을 사용해 한국어, 일본어, 중국어 콘텐츠의 검색 결과를 개선합니다. 이 설정을 활성화하기 전에 필요한 분석기 플러그인이 Elasticsearch 또는 AWS OpenSearch 서버에 설치되어 있어야 합니다. 지원되는 플러그인은 다음과 같습니다.
|
|
Mattermost v11.6부터 사용할 수 있습니다. 온전한 분석 지원을 받으려면 이 설정을 활성화하기 전에 필요한 분석기 플러그인을 Elasticsearch 또는 AWS OpenSearch 서버에 설치해야 합니다. 플러그인이 감지되지 않으면 경고가 기록됩니다. 플러그인 설치 방법은 Elasticsearch 설정과 AWS OpenSearch 설정 문서를 참고하세요.
이미 Elasticsearch 또는 AWS OpenSearch를 사용 중이던 서버에서 이 설정을 활성화하는 경우, 기존 콘텐츠가 새 분석기로 제대로 검색되려면 검색 인덱스를 비우고 다시 만들어야 합니다. 인덱스를 비우고 다시 만드는 방법은 Elasticsearch 설정 문서를 참고하세요.
파일 저장소 (File storage)
자체 호스팅 배포에서는 System Console > Environment > File Storage로 이동하거나 아래 표에 설명된 대로 config.json 파일을 편집해 파일 저장소 설정을 구성할 수 있습니다.
Mattermost는 로컬 파일 시스템, Amazon S3 및 S3 호환 컨테이너, Azure Blob Storage에 파일을 저장할 수 있습니다. Mattermost는 Digital Ocean Spaces에서 테스트되었지만 시중의 모든 S3 호환 컨테이너를 검증하지는 않았습니다. 다른 S3 호환 컨테이너를 사용하려면 직접 테스트해 볼 것을 권장합니다. 로컬 저장소나 NFS 네트워크 드라이브를 사용할 수도 있습니다.
Azure 리소스 프로비저닝, 시스템 콘솔 구성, 검증까지 단계별로 안내하는 내용은 Azure Blob Storage를 Mattermost 파일 저장소로 구성 문서를 참고하세요.
파일 저장소 시스템 (File storage system)
사용할 파일 저장소 시스템의 유형입니다. Local File System, Amazon S3, Azure Blob Storage 중 하나를 사용할 수 있습니다.
|
|
새 파일 저장소 시스템을 저장한 뒤에는 변경 사항이 적용되도록 배포에 속한 모든 Mattermost 서버를 재시작하세요. 파일 저장소 백엔드는 시작 시 초기화되며, 런타임에 FileSettings가 바뀌어도 자동으로 다시 구성되지 않습니다.
로컬 저장소 디렉터리 (Local storage directory)
File storage system이 local로 설정되었을 때 파일을 기록할 로컬 디렉터리입니다. Mattermost 실행 사용자가 쓸 수 있는 디렉터리라면 어떤 것이든 지정할 수 있으며, Mattermost 설치 디렉터리 기준 상대 경로입니다. 기본값은 ./data/입니다. |
|
File storage system이 amazons3로 설정된 경우 이 설정은 적용되지 않습니다.
최대 파일 크기 (Maximum file size)
메시지 첨부 파일과 플러그인 업로드의 최대 파일 크기입니다. 시스템 콘솔에서는 메비바이트 단위로, 기본값은 |
|
- 설정한 값을 서버 메모리가 감당할 수 있는지 확인하세요. 파일 크기가 크면 네트워크 장애로 인한 서버 중단과 업로드 실패 위험이 커집니다.
- 플러그인 파일을 업로드할 때 나타나는
Received invalid response from the server오류는 보통MaxFileSize가 플러그인 파일 업로드를 감당할 만큼 크지 않거나 프록시 설정이 충분하지 않다는 뜻입니다. Mattermost 앞단에 프록시나 로드 밸런서를 사용한다면 다음 프록시 설정도 함께 조정해야 합니다.
- NGINX에서는
client_max_body_size를 사용합니다. - Apache에서는
LimitRequestBody를 사용합니다.
- NGINX에서는
문서 내용 검색 활성화 (Enable document search by content)
사용자가 메시지에 첨부된 문서의 내용을 검색할 수 있도록 합니다.
|
|
파일에서 내용을 추출하려면 문서 내용 검색을 활성화해야 합니다. 필요한 의존성이 갖춰져 활성화된 경우 Mattermost 파일 검색과 Mattermost Agents 모두 파일과 그 내용에 접근할 수 있습니다. Mattermost 서버 v5.35로 업그레이드하기 전에 공유된 파일의 문서 내용 검색 결과는 mmctl로 추출 명령을 실행하기 전까지 온전하지 않을 수 있습니다. 이 명령을 실행하지 않으면 사용자는 오래된 파일을 파일 이름으로만 검색할 수 있습니다.
다음 의존성을 선택적으로 설치하면 PDF, DOCX, ODT 외에 DOC, RTF, XML, HTML 같은 파일 형식까지 Mattermost의 내용 검색 지원 범위를 넓힐 수 있습니다.
- tidy: HTML 문서의 내용을 검색하는 데 사용됩니다.
- wv: DOC 문서의 내용을 검색하는 데 사용됩니다.
- poppler-utils: PDF 문서의 내용을 추출할 때 서버 성능을 크게 개선하는 데 사용됩니다.
- unrtf: RTF 문서의 내용을 검색하는 데 사용됩니다.
- JusText: HTML 문서를 검색하는 데 사용됩니다. 배포 정보는 JusText Python 패키지를 참고하세요.
이 의존성을 설치하지 않으면 추출하지 못한 문서에 대한 로그 항목이 남습니다. 추출할 수 없는 문서는 건너뛰고 로그에 기록되므로 내용 추출은 계속 진행됩니다.
ZIP 파일 내부 문서 내용 검색 활성화 (Enable searching content of documents within ZIP files)
사용자가 메시지에 첨부된 압축 ZIP 파일의 내용을 검색할 수 있도록 합니다.
|
|
- 웹 브라우저나 데스크톱 앱에서 Mattermost를 사용할 때 ZIP 파일 안의 문서 내용을 검색할 수 있습니다.
- 문서 내용 검색은 서버 부하를 늘립니다.
- 이 설정은 표준 ZIP 파일에만 적용됩니다. 7zip(
.7z) 파일은 보안상 차단되어 검색할 수 없습니다. - 대규모 배포이거나 크고 텍스트가 많은 문서를 자주 공유하는 팀이라면 하드웨어 요구 사항을 검토하고, 운영 환경에 적용하기 전에 스테이징 환경에서 이 기능을 테스트해 볼 것을 권장합니다.
Amazon S3 버킷 (Amazon S3 bucket)
S3 호환 객체 스토리지 인스턴스의 버킷 이름입니다. S3 호환 버킷 이름을 문자열로 입력합니다. |
|
Amazon S3 경로 접두사 (Amazon S3 path prefix)
AWS에서 Amazon S3 bucket에 대해 선택한 접두사입니다. 경로 접두사를 문자열로 입력합니다. |
|
Amazon S3 리전 (Amazon S3 region)
AWS에서 Amazon S3 bucket을 만들 때 선택한 AWS 리전입니다. 버킷이 있는 AWS 리전을 문자열로 입력합니다. 리전을 설정하지 않으면 Mattermost가 AWS에서 적절한 리전을 가져오려고 시도하며, 찾지 못하면 us-east-1로 설정합니다. |
|
Digital Ocean Spaces나 다른 S3 호환 서비스를 사용한다면 이 설정을 비워 두세요.
Amazon S3 액세스 키 ID (Amazon S3 access key ID)
S3 호환 스토리지 인스턴스의 액세스 키를 문자열로 입력합니다. 액세스 키 ID는 EC2 관리자에게 문의하세요. |
|
Amazon S3와 함께 Amazon S3 IAM 역할을 사용하는 경우가 아니라면 접근에 필요합니다.
Amazon S3 엔드포인트 (Amazon S3 endpoint)
S3 호환 인스턴스의 호스트명입니다. S3 호환 스토리지 인스턴스의 호스트명을 문자열로 입력합니다. 기본값은 s3.amazonaws.com입니다. |
|
Digital Ocean Spaces에서는 호스트명을 <region>.digitaloceanspaces.com으로 설정해야 합니다. <region>은 Space를 설정할 때 선택한 리전의 약어이며 nyc3, ams3, sgp1 중 하나일 수 있습니다.
Amazon S3 시크릿 액세스 키 (Amazon S3 secret access key)
Amazon S3 액세스 키 ID에 연결된 시크릿 액세스 키입니다. S3 호환 스토리지 인스턴스의 시크릿 액세스 키를 문자열로 입력합니다. |
|
보안 Amazon S3 연결 활성화 (Enable secure Amazon S3 connections)
Amazon S3 보안 연결을 활성화하거나 비활성화합니다.
|
|
Amazon S3 서명 v2 (Amazon S3 signature v2)
Mattermost는 기본적으로 AWS API 호출 서명에 Signature v4를 사용하지만, 상황에 따라 v2가 필요할 수 있습니다.
|
|
Signature v2 서명 방식을 사용해야 하는 경우에 대한 자세한 내용은 AWS 문서를 참고하세요.
Amazon S3 서버 측 암호화 활성화 (Enable server-side encryption for Amazon S3)
Enterprise, Enterprise Advanced 플랜에서 사용할 수 있습니다.
Amazon S3의 서버 측 암호화를 활성화합니다.
|
|
이 구성 설정은 자체 호스팅 배포에만 제공됩니다.
Amazon S3 디버깅 활성화 (Enable Amazon S3 debugging)
시스템 로그에 추가 디버깅 정보를 남기도록 Amazon S3 디버깅을 활성화하거나 비활성화합니다.
|
|
시스템 콘솔에서 Test Connection 버튼을 선택하면 설정을 검증하고 사용자가 서버에 접근할 수 있는지 확인할 수 있습니다.
Amazon S3 스토리지 클래스 (Amazon S3 storage class)
일부 Amazon S3 호환 스토리지 솔루션은 업로드 요청에 스토리지 클래스 매개변수가 포함되어야 하며, 그렇지 않으면 요청을 거부합니다. 사용 중인 S3 호환 솔루션이 요구하는 스토리지 클래스로 이 값을 구성하세요.
S3 호환 스토리지 솔루션에 업로드할 때 사용할 스토리지 클래스입니다. 문자열을 입력합니다. 기본값은 빈 문자열 |
|
대부분의 Amazon S3 호환 스토리지 솔루션은 스토리지 클래스를 지정하지 않으면 기본값으로 STANDARD를 지정합니다. 지원되는 스토리지 클래스에 대한 자세한 내용은 Amazon S3 스토리지 클래스 문서를 참고하세요.
내보내기용 Amazon S3 스토리지 클래스 (Export Amazon S3 storage class)
S3 호환 스토리지 솔루션으로 내보낼 때 사용할 스토리지 클래스입니다. 문자열을 입력합니다. 기본값은 빈 문자열 |
|
대부분의 Amazon S3 호환 스토리지 솔루션은 스토리지 클래스를 지정하지 않으면 기본값으로 STANDARD를 지정합니다. 지원되는 스토리지 클래스에 대한 자세한 내용은 Amazon S3 스토리지 클래스 문서를 참고하세요.
Amazon S3 요청 타임아웃 (Amazon S3 request timeout)
Amazon S3 스토리지에 대한 요청이 타임아웃되기까지의 시간(밀리초)입니다. 기본값은 30000(30초)입니다. |
|
Amazon S3 업로드 파트 크기 (Amazon S3 upload part size)
Amazon S3로 멀티파트 업로드할 때 각 파트의 크기(바이트)입니다. 숫자 값입니다. 기본값은 5242880(5MB)입니다. |
|
파트 크기를 작게 하면 요청 수가 늘어 지연이 증가할 수 있고, 크게 하면 메모리 할당량이 늘어날 수 있습니다.
Amazon S3 내보내기 업로드 파트 크기 (Amazon S3 exported upload part size)
Amazon S3로 내보내는 멀티파트 업로드에서 각 파트의 크기(바이트)입니다. 숫자 값입니다. 기본값은 104857600(100MB)입니다. |
|
파트 크기를 작게 하면 요청 수가 늘어 지연이 증가할 수 있고, 크게 하면 메모리 할당량이 늘어날 수 있습니다.
Amazon S3 요청 타임아웃 (Amazon S3 request timeout)
Amazon S3 스토리지에 대한 요청이 타임아웃되기까지의 시간(밀리초)입니다. 기본값은 30000(30초)입니다. |
|
Azure 스토리지 계정 (Azure Storage account)
Azure 스토리지 계정의 이름입니다. Azure 포털에 표시되는 스토리지 계정 이름을 문자열로 입력합니다. 소문자와 숫자로 3~24자여야 합니다. |
|
Azure 컨테이너 (Azure container)
Mattermost가 업로드한 파일을 저장할 Azure 스토리지 계정 내 컨테이너의 이름입니다. 컨테이너 이름을 문자열로 입력합니다. |
|
Azure 경로 접두사 (Azure path prefix)
Azure 컨테이너의 blob에 사용할 경로 접두사입니다(선택 사항). 경로 접두사를 문자열로 입력합니다. 컨테이너 루트에 기록하려면 비워 두세요. |
|
Azure 인증 (Azure authentication)
Mattermost가 Azure 스토리지 계정에 인증하는 방식을 선택합니다.
|
|
Azure 스토리지 계정 키 (Azure Storage account key)
Azure 스토리지 계정의 공유 키입니다. |
|
공유 키는 비밀 정보로 취급하세요. Azure는 무중단 교체를 지원하기 위해 키를 두 개 제공합니다. Mattermost를 한 키로 갱신하고 다른 키를 재생성한 뒤, 다음 교체 주기에 서로 바꾸면 됩니다.
Azure 클라우드 (Azure cloud)
Mattermost가 연결할 Azure 클라우드를 선택합니다. 이 선택에 따라 Azure SDK가 어떤 호스트에 대해 요청에 서명할지 결정됩니다.
|
|
Azure 엔드포인트 (Azure endpoint)
스킴과 스토리지 계정을 포함한 Blob 서비스의 전체 URL입니다. Mattermost는 이 URL을 그대로 Azure SDK에 전달하므로, 스토리지 계정이 호스트명에 포함(vhost 방식, 예: |
|
보안 Azure Blob Storage 연결 활성화 (Enable secure Azure Blob Storage connections)
Azure Blob Storage에 대한 보안 연결을 활성화하거나 비활성화합니다.
|
|
Azure 요청 타임아웃 (Azure request timeout)
Azure Blob Storage에 대한 요청이 타임아웃되기까지의 시간(밀리초)입니다. 기본값은 30000(30초)입니다. 큰 객체를 다루느라 네트워크에 더 많은 시간이 필요한 경우에만 값을 늘리세요. |
|
이니셜 글꼴 (Initial font)
색 배경에 사용자 이름 이니셜을 표시하는 자동 생성 프로필 사진에 사용하는 글꼴입니다. 글꼴 파일 이름을 문자열로 입력합니다. 기본값은 nunito-bold.ttf입니다. |
|
이미지 프록시 (Image proxy)
자체 호스팅 배포에서는 Mattermost 앱이 원격 자체 호스팅 서버에 직접 연결하지 않도록 이미지 프록시를 사용할 수 있습니다. System Console > Environment > Image Proxy로 이동하거나 아래 표에 설명된 대로 config.json 파일을 편집해 이미지 프록시를 구성하세요.
이미지 프록시 활성화 (Enable image proxy)
이미지 프록시는 Mattermost 앱의 연결을 익명화하고 앱이 안전하지 않은 콘텐츠에 접근하지 못하도록 막습니다.
|
|
자세한 내용은 이미지 프록시 문서를 참고하세요.
이미지 프록시 유형 (Image proxy type)
Mattermost가 사용하는 이미지 프록시의 유형입니다.
|
|
자세한 내용은 이미지 프록시 문서를 참고하세요.
원격 이미지 프록시 URL (Remote image proxy URL)
atmos/camo 프록시의 URL입니다. local 이미지 프록시를 사용할 때는 이 설정이 필요하지 않습니다. |
|
원격 이미지 프록시 옵션 (Remote image proxy options)
atmos/camo 이미지 프록시에 전달하는 URL 서명 키입니다. local 이미지 프록시 유형을 사용할 때는 이 설정이 필요하지 않습니다. |
|
자세한 내용은 이미지 프록시 문서를 참고하세요.
SMTP
자체 호스팅 배포에서는 System Console > Environment > SMTP로 이동하거나 아래 표에 설명된 대로 config.json 파일을 편집해 SMTP 이메일 서버 설정을 구성할 수 있습니다.
SMTP 서버 (SMTP server)
이메일 알림에 사용할 SMTP 이메일 서버의 위치입니다. |
|
SMTP 서버 포트 (SMTP server port)
SMTP 이메일 서버의 포트입니다. 문자열을 입력합니다. |
|
SMTP 인증 활성화 (Enable SMTP authentication)
SMTP 인증을 활성화하거나 비활성화합니다.
|
|
SMTP 서버 사용자 이름 (SMTP server username)
SMTP 서버 인증에 사용할 사용자 이름입니다. 문자열을 입력합니다. |
|
SMTP 서버 비밀번호 (SMTP server password)
SMTP 사용자 이름에 연결된 비밀번호입니다. 문자열을 입력합니다. |
|
SMTP 연결 보안 (SMTP connection security)
SMTP로 보내는 이메일의 연결 보안 방식을 지정합니다.
|
|
서버 인증서 검증 건너뛰기 (Skip server certificate verification)
이메일 서버 인증서 검증을 건너뛰도록 Mattermost를 구성합니다.
|
|
보안 알림 활성화 (Enable security alerts)
보안 알림을 활성화하거나 비활성화합니다.
|
|
자세한 내용은 텔레메트리 문서를 참고하세요.
SMTP 서버 타임아웃 (SMTP server timeout)
Mattermost와 SMTP 서버 사이의 TCP 연결을 수립하는 데 허용되는 최대 시간(초)입니다. 초 단위 숫자 값입니다. |
|
푸시 알림 서버 (Push notification server)
자체 호스팅 배포에서는 System Console > Environment > Push Notification Server로 이동하거나 아래 표에 설명된 대로 config.json 파일을 편집해 Mattermost 모바일 푸시 알림을 구성할 수 있습니다. 이 섹션의 구성 설정을 변경하면 서버를 재시작해야 적용됩니다.
푸시 알림 활성화 (Enable push notifications)
Mattermost 푸시 알림을 활성화하거나 비활성화합니다.
|
|
호스팅 푸시 알림 서비스(HPNS) (Hosted Push Notifications Service (HPNS))
Mattermost Enterprise, Professional, Cloud 고객은 Mattermost의 호스팅 푸시 알림 서비스(HPNS)를 사용할 수 있습니다. HPNS는 다음을 제공합니다.
- GitHub에 공개된 공용 호스팅 Mattermost 푸시 알림 서비스(MPNS)에 대한 접근
- 암호화되지 않은 메시지 내용에 대한 명시적인 개인정보 처리방침
다음 구간의 암호화된 TLS 연결
- HPNS와 Apple Push Notification Services 사이
- HPNS와 Google Firebase Cloud Messaging Service 사이
- HPNS와 Mattermost 서버 사이
- 운영 수준의 가동률 기대치
- 새 서버는 기본 구성만으로 HPNS가 동작하므로 신규 배포에서는 별도의 조치가 필요하지 않습니다. 기존 배포에서도 HPNS를 활성화할 수 있습니다.
- HPNS는 Mattermost가 Apple App Store와 Google Play Store를 통해 배포하는 사전 빌드 앱에서만 동작합니다. 자체 모바일 앱을 만든다면 Mattermost 푸시 프록시 서버도 직접 호스팅해야 합니다.
- 푸시 프록시에 올바른 포트로 접근할 수 있는지 확인해야 합니다. HPNS의 경우 Mattermost 서버에서 443 포트를 사용합니다.
- Mattermost는 알림 데이터를 저장하지 않습니다. HPNS는 알림을 어느 기기로 보내야 하는지 알아야 하므로
device_id처럼 서버 수준의 데이터만 저장됩니다.
테스트 푸시 알림 서비스(TPNS) (Test Push Notifications Service (TPNS))
비상업용 자체 호스팅 고객은 Mattermost의 무료 기본 테스트 푸시 알림 서비스(TPNS)를 사용할 수 있습니다.
- TPNS는 운영 환경에서 사용하는 것을 권장하지 않으며, 운영 수준의 업데이트 서비스 수준 계약(SLA)을 제공하지 않습니다.
- TPNS는 Mattermost Cloud 배포에서는 사용할 수 없습니다.
- TPNS는 Mattermost가 Apple App Store와 Google Play Store를 통해 배포하는 사전 빌드 모바일 앱에서만 동작합니다. 자체 모바일 앱을 만들었다면 Mattermost 푸시 프록시 서비스도 직접 호스팅해야 합니다.
- 푸시 프록시에 올바른 포트로 접근할 수 있는지 확인해야 합니다. TPNS의 경우 Mattermost 서버에서 80 포트를 사용합니다.
Mattermost가 모바일 푸시 알림을 보낼 필요가 없거나 원하지 않는다면, 대규모 배포에서 이 구성 설정을 비활성화해 다음 영역의 서버 성능을 개선할 수 있습니다.
- 처리 부하 감소: 푸시 알림을 생성하고 전송하려면 처리 능력과 리소스가 필요합니다. 이를 비활성화하면 서버가 해당 리소스를 다른 작업에 배분할 수 있습니다.
- 네트워크 트래픽 감소: 푸시 알림에는 네트워크 통신이 수반됩니다. 이를 비활성화하면 전송되는 데이터 양이 줄어 전체 네트워크 성능이 개선될 수 있습니다.
- 데이터베이스 부하 감소: 푸시 알림마다 데이터베이스 읽기와 쓰기가 발생할 수 있습니다. 이런 작업을 줄이면 데이터베이스 부하가 낮아져 다른 쿼리의 응답 시간이 개선됩니다.
- 응답 시간 단축: 알림 관련 작업이 줄어들면 시스템이 사용자의 다른 요청에 더 빠르게 응답할 수 있어 사용자 경험이 좋아집니다.
- 오류 처리 단순화: 푸시 알림 서비스는 때때로 실패하거나 지연 문제가 생겨 추가적인 오류 처리가 필요합니다. 이런 알림을 비활성화하면 시스템 동작이 단순해집니다.
- 다만 푸시 알림을 비활성화하면 사용자 경험, 커뮤니케이션 효율, 전반적인 생산성에 부정적인 영향을 줄 수 있습니다. 성능 개선과 조직·사용자의 필요 사이에서 균형을 맞추는 것이 중요합니다.
ID 전용 푸시 알림 (ID-only push notifications)
Entry, Enterprise, Enterprise Advanced 플랜에서 사용할 수 있습니다. (Professional에서는 사용할 수 없습니다.)
관리자는 Mattermost 구성 설정으로 Apple과 Google에 전송되는 데이터를 제한해 모바일 알림을 완전히 비공개로 만들 수 있으며, 이를 통해 iOS·Android 알림 인프라의 침해로부터 Mattermost 고객을 보호할 수 있습니다.
iOS와 Android 애플리케이션에 알림을 보내는 표준 방식은 Apple 또는 Google이 사용자의 휴대폰으로 전달해 화면에 표시할 수 있도록 평문 메시지를 전송하는 것입니다. Apple과 Google은 해당 데이터를 수집하거나 저장하지 않는다고 밝히고 있지만, 이들 조직이 침해를 당하거나 강제 제출 요구를 받는다면 해당 플랫폼의 모든 표준 모바일 알림이 노출될 수 있습니다.
이 위험을 피하기 위해 Mattermost는 모바일 알림 텍스트를 Apple이나 Google에 아무 정보도 전달하지 않는 메시지 ID 번호로 대체하도록 구성할 수 있습니다. 사용자의 휴대폰에 있는 Mattermost 모바일 애플리케이션이 이 메시지 ID를 받으면, 이를 사용해 자신의 Mattermost 서버와 비공개로 통신하고 암호화된 채널을 통해 모바일 알림 메시지를 가져옵니다. 따라서 메시지 텍스트가 Apple이나 Google의 메시지 중계 시스템에 노출되는 일은 없습니다. 메시지 내용은 Mattermost에도 전달되지 않습니다.
ID 전용 푸시 알림을 사용하는 Mattermost의 비공개 모빌리티 기능에서는 알림 메시지를 가져오는 추가 단계가 필요하므로, Apple과 Google 플랫폼을 통해 평문을 보내는 경우에 비해 최종 사용자가 모바일 알림이 완전히 표시되기까지 약간의 지연을 겪을 수 있습니다.
ID 전용 푸시 알림 구성 설정에 대한 자세한 내용은 구성 설정 문서를 참고하세요. 데이터 프라이버시를 위해 ID 전용 푸시 알림을 사용하는 방법은 모바일 앱 FAQ 문서를 참고하세요.
푸시 알림 서버 위치 (Push notification server location)
Mattermost 호스팅 푸시 알림 서비스(HPNS) 서버의 리전입니다. 리전을 선택하면 Push Notification Server 항목이 해당 URL로 자동 채워집니다.
|
|
https://us.push.mattermost.com은 기존 https://push.mattermost.com URL을, https://eu.push.mattermost.com은 기존 https://hpns-de.mattermost.com URL을 대체합니다. 기존 URL도 여전히 동작하지만 사용 중단되었으며, 현재는 위 대체 URL과 동일한 새 인프라를 가리킵니다.
채널당 최대 알림 수 (Maximum notifications per channel)
성능을 최대한 유지하기 위해 @all, @here, @channel이 데스크톱·이메일·모바일 푸시 알림을 더 이상 보내지 않게 되는 채널 내 최대 사용자 수입니다. 숫자를 입력합니다. 기본값은 1000입니다. |
|
- 이 값은 조금씩 늘리면서 성능 모니터링 메트릭으로 시스템 상태를 확인할 것을 권장합니다. 또한 읽기 전용 채널처럼 큰 채널에 게시 권한 제한이 적용되어 있는 경우에만 값을 늘리세요.
대규모 배포에서 이 구성 설정 값을 10으로 낮추면 다음 영역에서 서버 성능이 개선될 수 있습니다.
- 알림 시스템 부하 감소: 알림마다 일정한 연산·네트워크 부하가 발생합니다. 채널당 알림 수를 제한하면 시스템이 처리하는 알림이 줄어 서버 부하가 감소합니다.
- 데이터베이스 효율 향상: 알림은 보통 데이터베이스에 저장됩니다. 알림이 줄면 데이터베이스 쓰기와 읽기 빈도가 낮아져 데이터베이스 작업이 빨라지고 지연이 줄어듭니다.
- 클라이언트 처리 최소화: 사용자의 클라이언트(데스크톱·모바일 앱 등)는 알림을 가져와 처리해야 합니다. 알림이 줄면 클라이언트가 더 효율적으로 동작해 사용자 기기의 메모리와 CPU 사용량이 줄어듭니다.
- 사용자 경험 개선: 알림이 과도하면 성능 저하가 발생하고 화면이 어수선해집니다. 수를 제한하면 사용자가 가장 중요한 알림만 받게 되어 사용성과 응답 시간이 개선됩니다.
- 네트워크 대역폭: 알림 수가 많으면, 특히 많은 사용자에게 전송될 때 대역폭을 크게 소모합니다. 알림이 줄면 전체 네트워크 사용량이 낮아지고 중요한 메시지가 더 빠르게 전달될 수 있습니다.
- 서버 부하 분산: 알림 수를 줄이면 작업 부하가 서버 전반에 더 고르게 분산되어 부하 분산이 개선되고 특정 서버가 병목이 되는 것을 막을 수 있습니다.
고가용성 (High availability)
Enterprise, Enterprise Advanced 플랜에서 사용할 수 있습니다.
자체 호스팅 배포에서는 System Console > Environment > High Availability로 이동하거나 아래 표에 설명된 대로 config.json 파일을 편집해 Mattermost를 고가용성 클러스터 기반 배포로 구성할 수 있습니다. 이 섹션의 구성 설정을 변경하면 서버를 재시작해야 적용됩니다.
Mattermost 고가용성 클러스터 기반 배포가 구성에 config.json을 사용하는 경우 시스템 콘솔은 기본적으로 읽기 전용이 되며, 설정은 config.json 파일을 직접 편집해야만 변경할 수 있습니다. 다만 고가용성 클러스터 기반 환경을 테스트하려면 config.json 파일에서 ClusterSettings.ReadOnlyConfig를 false로 설정해 비활성화할 수 있습니다. 그러면 시스템 콘솔에서 적용한 변경 사항이 구성 파일에 다시 저장됩니다. 구성을 데이터베이스에 저장하는 경우에는 ClusterSettings.ReadOnlyConfig가 무시되며 시스템 콘솔을 그대로 편집할 수 있습니다. 자세한 내용은 데이터베이스에 구성 저장 문서를 참고하세요.
고가용성 모드 활성화 (Enable high availability mode)
고가용성 모드를 활성화할 수 있습니다.
|
|
클러스터 이름 (Cluster name)
고가용성 클러스터 기반 배포에서 참여할 클러스터의 이름입니다. 이름이 같은 노드끼리만 함께 클러스터를 구성합니다. 블루-그린 배포나 같은 데이터베이스를 바라보는 스테이징 환경을 지원하기 위한 것입니다. |
|
호스트명 재정의 (Override hostname)
이 서버의 호스트명을 재정의할 수 있습니다.
|
|
자세한 내용은 고가용성 클러스터 기반 배포 문서를 참고하세요.
IP 주소 사용 (Use IP address)
고가용성 클러스터 기반 배포가 IP 주소 대신 호스트명으로 통신하도록 구성할 수 있습니다.
|
|
가십 암호화 활성화 (Enable gossip encryption)
가십 암호화는 기본적으로 AES-256을 사용하며, 이 값은 설계상 변경할 수 없습니다.
|
|
- 가십 프로토콜은 코넬 대학교 연구진이 개발한 SWIM 프로토콜에서 제시된 원리를 기반으로 합니다. 가십 프로토콜은 분산 시스템에서 노드들이 무작위로 정보를 교환해 네트워크 전반의 데이터 일관성을 보장하는 통신 방식입니다. 탈중앙적이고 확장성이 뛰어나며 장애에 강해 노드가 많은 시스템에 적합합니다. 정보는 사람들 사이의 소문처럼 퍼지며, 노드들이 주기적으로 무작위 피어에게 업데이트를 "전파"하다가 네트워크가 일관된 상태로 수렴합니다. 분산 데이터베이스, 블록체인 네트워크, 피어 투 피어 시스템에서 널리 쓰이며 구현이 간단하고 노드 장애에 강합니다. 다만 대규모 네트워크에서는 중복 전송과 전파 지연이 발생할 수 있습니다.
- 또는 Systems 테이블의
ClusterEncryptionKey행 값을 직접 설정할 수도 있습니다. 키는 base64로 변환한 바이트 배열입니다. 이 값을 16, 24, 32바이트로 설정하면 각각 AES-128, AES-192, AES-256이 선택됩니다. - Mattermost v10.11부터 모든 신규 배포에서 가십 암호화가 기본으로 활성화됩니다. 기존 배포에서는 직접 암호화를 활성화하지 않는 한 가십 프로토콜을 사용하는 모든 통신이 암호화되지 않은 상태로 유지됩니다. v10.11 이전에는 Cloud 배포에서 기본 활성화, 자체 호스팅 배포에서 기본 비활성화였습니다.
가십 압축 활성화 (Enable gossip compression)
성능을 위해 이 구성 설정을 비활성화할 것을 권장합니다.
|
|
가십 포트 (Gossip port)
가십 프로토콜에 사용하는 포트입니다. 이 포트에서 UDP와 TCP를 모두 허용해야 합니다. 숫자를 입력합니다. 기본값은 8074입니다. |
|
읽기 전용 구성 (Read only config)
|
|
네트워크 인터페이스 (Network interface)
고가용성 클러스터 기반 배포에서 자동 IP 탐지를 수행하는 장치를 식별하는 데 사용하는 IP 주소입니다. 문자열을 입력합니다. |
|
바인드 주소 (Bind address)
클러스터 트래픽을 특정 네트워크 장치에 바인딩하는 데 사용하는 IP 주소입니다. 이 설정은 주로 네트워크 장치가 여러 개인 서버나, NAT(Network Address Translation)를 사용하는 배포처럼 바인드 주소와 광고 주소가 다른 경우에 사용합니다. 문자열을 입력합니다. |
|
광고 주소 (Advertise address)
다른 노드에서 이 서버에 접근할 때 사용하는 IP 주소입니다. 이 설정은 주로 클러스터 노드가 같은 네트워크에 있지 않고 NAT(Network Address Translation)를 사용하는 경우에 씁니다. 문자열을 입력합니다. |
|
속도 제한 (Rate limiting)
자체 호스팅 배포에서 속도 제한은 Mattermost 서버가 과도한 요청으로 과부하되는 것을 막고, 서드파티 애플리케이션이나 악의적 공격이 서버에 미치는 위험과 영향을 줄여 줍니다.
System Console > Environment > Rate Limiting으로 이동하거나 아래 표에 설명된 대로 config.json 파일을 편집해 속도 제한 설정을 구성하세요. 이 섹션의 구성 설정을 변경하면 서버를 재시작해야 적용됩니다.
Mattermost 속도 제한 구성 설정은 사용자가 수백 명 규모인 소규모 Mattermost 배포를 대상으로 하며, 더 큰 엔터프라이즈 규모 배포를 위한 것이 아닙니다.
속도 제한 활성화 (Enable rate limiting)
API를 초당 지정한 요청 수로 제한하도록 속도 제한을 활성화하거나 비활성화합니다.
|
|
초당 최대 쿼리 수 (Maximum queries per second)
속도 제한이 활성화된 경우 API를 초당 이 요청 수로 제한합니다. 숫자를 입력합니다. 기본값은 10입니다. 값을 늘리면 초당 더 많은 요청을 받고, 값을 줄이면 더 적은 요청만 허용합니다. |
|
최대 버스트 크기 (Maximum burst size)
속도 제한이 활성화된 경우 초당 쿼리 한도를 넘어 추가로 허용되는 최대 요청 수입니다. 숫자를 입력합니다. 기본값은 100입니다. 값을 늘리면 동시에 처리할 수 있는 요청이 많아지고, 값을 줄이면 그 용량이 제한됩니다. |
|
메모리 저장소 크기 (Memory store size)
속도 제한이 활성화된 경우 속도 제한 구분 설정에 따라 시스템에 연결되는 최대 사용자 세션 수입니다. 숫자를 입력합니다. 기본값은 10000입니다. 보통 시스템의 사용자 수로 설정합니다. 이 값은 예상 사용자 수로 설정할 것을 권장합니다. 값이 너무 크면 리소스가 낭비될 수 있고, 너무 작으면 사용자 세션이나 토큰이 지나치게 자주 만료될 수 있습니다. |
|
원격 주소별 속도 제한 (Vary rate limit by remote address)
속도 제한이 활성화된 경우 IP 주소별로 API 접근을 제한하도록 Mattermost를 구성합니다.
|
|
사용자별 속도 제한 (Vary rate limit by user)
속도 제한이 활성화된 경우 인증 토큰별로 API 접근을 제한할지 여부를 구성합니다.
|
|
HTTP 헤더별 속도 제한 (Vary rate limit by HTTP header)
지정한 HTTP 헤더 필드에 따라 API 접근 속도 제한을 구분하도록 Mattermost를 구성합니다. 프록시를 사용할 때 권장합니다.
|
|
로깅 (Logging)
Mattermost는 자체 호스팅 배포를 위해 서로 독립적인 3개의 로깅 시스템을 제공합니다. 각 시스템은 로그 파일과 순환 정책을 따로 구성할 수 있어 서로 다른 운영·컴플라이언스 요구를 충족할 수 있습니다.
기본적으로 모든 Mattermost 에디션은 콘솔과 mattermost.log 파일 양쪽에 기계가 읽을 수 있는 JSON 형식으로 로그를 기록합니다. Mattermost Enterprise와 Professional 고객은 syslog와 TCP 소켓 대상으로도 직접 로그를 보낼 수 있습니다.
로그 설정 (Log settings)
System Console > Environment > Logging으로 이동하거나 아래 표에 설명된 대로 config.json 파일을 편집해 일반 로깅을 구성하세요. 이 섹션의 구성 설정을 변경하면 서버를 재시작해야 적용됩니다.
콘솔에 로그 출력 (Output logs to console)
일반 로그를 콘솔에 출력하도록 Mattermost를 구성합니다.
|
|
Mattermost v11.0부터 알림 로그가 기본 콘솔 로그에 자동으로 포함됩니다.
콘솔 로그 수준 (Console log level)
Mattermost가 콘솔에 로그 메시지를 출력할 때 기록되는 일반 로그 이벤트의 상세 수준입니다.
|
|
콘솔 로그를 JSON으로 출력 (Output console logs as JSON)
일반 콘솔 로그를 JSON으로 출력하도록 Mattermost를 구성합니다.
|
|
운영 환경에서는 보통 true로 설정합니다.
일반 텍스트 콘솔 로그 색상 표시 (Colorize plain text console logs)
시스템 관리자가 일반 텍스트 로그 수준 정보를 색으로 구분해 볼 수 있도록 합니다.
|
|
파일에 로그 출력 (Output logs to file)
일반 콘솔 로그를 파일로 출력하도록 Mattermost를 구성합니다.
|
|
- Mattermost v11.0부터 알림 로그가 기본 파일 로그에 자동으로 포함됩니다.
- 이 설정은 운영 환경에서 보통 true로 지정합니다. 활성화하면 System Console > Reporting > Server Logs로 이동해 Download Logs를 선택하여
mattermost.log파일을 로컬로 내려받을 수 있습니다.
파일 로그 디렉터리 (File log directory)
일반 로그 파일의 위치입니다. 문자열을 입력합니다. 비워 두면 로그 파일이 |
|
- 지정한 경로가 실제로 존재해야 하며, Mattermost가 해당 디렉터리에 대한 쓰기 권한을 가지고 있어야 합니다.
Mattermost v11.4부터
MM_LOG_PATH환경 변수를 사용해 로그 파일 위치를 지정한 루트 디렉터리로 제한할 수 있습니다. 이 보안 강화 기능은LogSettings.FileLocation이나LogSettings.AdvancedLoggingJSON으로 구성한 모든 로그 파일이 허용된 로깅 디렉터리 안에 있도록 보장합니다.
파일 로그 수준 (File log level)
Mattermost가 파일에 로그 메시지를 출력할 때 기록되는 일반 로그 이벤트의 상세 수준입니다.
|
|
파일 로그를 JSON으로 출력 (Output file logs as JSON)
일반 파일 로그를 JSON으로 출력하도록 Mattermost를 구성합니다.
|
|
운영 환경에서는 보통 true로 설정합니다.
웹훅 디버깅 활성화 (Enable webhook debugging)
디버깅을 위해 일반 인커밍 웹훅의 내용을 콘솔 또는 파일 로그에 기록하도록 Mattermost를 구성합니다.
|
|
인커밍 웹훅의 요청 본문을 로그에 포함하려면 파일 로그 수준을 DEBUG로 변경해 디버그 로그를 활성화하세요.
여러 대상으로 로그 출력 (Output logs to multiple targets)
콘솔, 로컬 파일, syslog, TCP 소켓 대상을 자유롭게 조합해 일반 로그 레코드를 여러 대상으로 보내도록 Mattermost를 구성합니다. 다른 구성 파일의 파일 경로, 데이터베이스 DSN, 또는 JSON을 문자열로 입력할 수 있습니다. |
|
- 자세한 내용은 Mattermost 로깅 문서를 참고하세요. 이 대상들은 추가 소프트웨어를 설치하지 않고도 대다수의 로그 수집기와 로그 분석 도구를 지원할 수 있도록 선정되었습니다.
- 호출자의 지연을 줄이기 위해 로그는 비동기로 기록됩니다.
- 고급 로깅은 로거 구성의 핫 리로드를 지원합니다.
- Mattermost v11.4부터
AdvancedLoggingJSON구성에 지정하는 파일 경로는MM_LOG_PATH환경 변수로 지정한 디렉터리 안에 있어야 합니다. 자세한 내용은 로그 경로 제한을 참고하세요.
최대 필드 크기 (Maximum field size)
시스템 관리자가 로깅 시 일반 로그 필드의 크기를 제한할 수 있도록 합니다. 숫자 값입니다. 기본값은 2048입니다. |
|
진단 및 오류 보고 활성화 (Enable diagnostics and error reporting)
서버 오류와 크래시를 Sentry를 통해 Mattermost에 보고할지 여부를 제어합니다.
|
|
Mattermost가 수집하는 정보에 대한 자세한 내용은 텔레메트리 문서를 참고하세요.
Sentry 보고 활성화 (Enable Sentry reporting)
일반 오류 보고서를 Sentry로 전송할지 여부입니다.
|
|
알림 로깅 (Notification logging)
Mattermost v11부터 알림 로그 설정이 표준 콘솔 로그와 mattermost.log 파일로 통합되었습니다. 이제 기본 로그 수준 설정이 서버 로그와 알림 로그를 함께 제어하므로, 고급 로깅 설정을 사용하지 않고는 알림 로깅을 비활성화할 수 없습니다.
AdvancedLoggingJSON 구성에서 NotificationError, NotificationWarn, NotificationInfo, NotificationDebug, NotificationTrace라는 개별 알림 로그 수준을 사용하면 알림 로그를 별도 파일로 분리해 문제 해결 시 잡음을 줄일 수 있습니다. 자세한 내용은 고급 로깅을 참고하세요.
다음 구성 설정은 Mattermost 서버 v11.0 이전 버전에만 적용됩니다.
아래 표에 설명된 대로 config.json 파일을 편집해 Mattermost 알림 전용 로깅을 구성할 수 있습니다. 이 설정은 기본 LogSettings와 독립적으로 동작하며, 알림 서브시스템에만 적용되는 로깅 동작을 맞춤 설정할 수 있게 해 줍니다. 이 구성 설정을 변경하면 서버를 재시작해야 적용됩니다.
콘솔에 로그 출력 (Output logs to console)
알림 로그를 콘솔에 출력하도록 Mattermost를 구성합니다.
|
|
콘솔 로그 수준 (Console log level)
Mattermost가 콘솔에 로그 메시지를 출력할 때 기록되는 알림 로그 이벤트의 상세 수준입니다.
|
|
콘솔 로그를 JSON으로 출력 (Output console logs as JSON)
알림 콘솔 로그를 JSON으로 출력하도록 Mattermost를 구성합니다.
|
|
운영 환경에서는 보통 true로 설정합니다.
일반 텍스트 콘솔 로그 색상 표시 (Colorize plain text console logs)
시스템 관리자가 일반 텍스트 알림 로그 수준 정보를 색으로 구분해 볼 수 있도록 합니다.
|
|
파일에 로그 출력 (Output logs to file)
알림 콘솔 로그를 파일로 출력하도록 Mattermost를 구성합니다.
|
|
파일 로그 디렉터리 (File log directory)
알림 로그 파일의 위치입니다. 문자열을 입력합니다. 비워 두면 로그 파일이 |
|
지정한 경로가 실제로 존재해야 하며, Mattermost가 해당 디렉터리에 대한 쓰기 권한을 가지고 있어야 합니다.
파일 로그 수준 (File log level)
Mattermost가 파일에 로그 메시지를 출력할 때 기록되는 알림 로그 이벤트의 상세 수준입니다.
|
|
파일 로그를 JSON으로 출력 (Output file logs as JSON)
알림 파일 로그를 JSON으로 출력하도록 Mattermost를 구성합니다.
|
|
여러 대상으로 로그 출력 (Output logs to multiple targets)
콘솔, 로컬 파일, syslog, TCP 소켓 대상을 자유롭게 조합해 알림 로그 레코드를 여러 대상으로 보내도록 Mattermost를 구성합니다. 다른 구성 파일의 파일 경로, 데이터베이스 DSN, 또는 JSON을 문자열로 입력할 수 있습니다. |
|
감사 로깅 (Audit logging)
Enterprise, Enterprise Advanced 플랜에서 사용할 수 있습니다.
System Console > Compliance > Audit Logging으로 이동하거나 아래 표에 설명된 대로 config.json 파일을 편집해 감사 로깅을 구성하세요. 이 설정은 기본 LogSettings와 독립적으로 동작하며, 감사 서브시스템에만 적용되는 로깅 동작을 맞춤 설정할 수 있게 해 줍니다. 이 구성 설정을 변경하면 서버를 재시작해야 적용됩니다.
감사 로그를 파일로 출력 (Output audit logs to file)
감사 로그 파일을 디스크에 기록할지 여부입니다.
|
|
FileEnabled를 true로 설정한 경우 감사 파일 이름을 반드시 지정해야 합니다.
감사 파일 이름 (Audit file name)
감사 로그 파일의 이름입니다. 감사 파일에 지정한 경로가 실제로 존재해야 하며, Mattermost가 해당 경로에 대한 쓰기 권한을 가지고 있어야 합니다. 예시: |
|
감사 로그를 파일로 출력이 활성화된 경우 파일 이름을 반드시 지정해야 합니다. 파일 순환과 고급 감사 로그 출력을 구성하려면 AdvancedLoggingJSON 설정을 사용하세요.
감사 로그 인증서 (Audit log certificate)
감사 로깅용 인증서 구성입니다. 문자열을 입력합니다. 기본값은 비어 있습니다. |
|
감사 로그를 여러 대상으로 출력 (Output audit logs to multiple targets)
감사 로그 레코드를 여러 대상으로 출력하도록 Mattermost를 구성합니다. |
|
- 고급 로깅 구성에 대한 자세한 내용은 Mattermost 로깅 문서를 참고하세요. 이 대상들은 추가 소프트웨어를 설치하지 않고도 대다수의 로그 수집기와 로그 분석 도구를 지원할 수 있도록 선정되었습니다.
- 호출자의 지연을 줄이기 위해 감사 로그는 비동기로 기록됩니다.
- 고급 감사 로깅은 로거 구성의 핫 리로드를 지원합니다.
세션 길이 (Session lengths)
자체 호스팅 배포에서는 사용자가 로그인을 시도할 때 사용자 세션이 정리되며, 세션 데이터베이스 테이블에서도 24시간마다 세션이 정리됩니다. System Console > Environment > Session Lengths로 이동하거나 아래 표에 설명된 대로 config.json 파일을 편집해 세션 길이를 구성하세요. 이 섹션의 구성 설정을 변경하면 서버를 재시작해야 적용됩니다.
활동에 따라 세션 길이 연장 (Extend session length with activity)
사용자가 Mattermost 앱에서 활동 중이면 세션을 연장해 로그인 상태를 유지함으로써 사용자 경험을 개선합니다.
|
|
비밀번호 변경 시 세션 종료 (Terminate sessions on password change)
사용자의 비밀번호가 변경될 때 세션을 철회할지 여부를 활성화하거나 비활성화합니다.
|
|
AD/LDAP 및 이메일 세션 길이 (Session length for AD/LDAP and email)
이메일 및 AD/LDAP 인증에서 사용자가 웹 앱이나 데스크톱 앱에 자격 증명을 마지막으로 입력한 시점부터 세션이 만료될 때까지의 시간(시간 단위)을 설정합니다. 시간 단위 숫자를 입력합니다. 기본값은 720시간입니다. |
|
이 설정을 변경하면 사용자가 다음번에 자격 증명을 입력한 뒤부터 새 세션 길이가 적용됩니다.
모바일 세션 길이 (Session length for mobile)
사용자가 모바일 앱에 자격 증명을 마지막으로 입력한 시점부터 세션이 만료될 때까지의 시간(시간 단위)을 설정합니다. 시간 단위 숫자를 입력합니다. 기본값은 720시간입니다. |
|
이 설정을 변경하면 사용자가 다음번에 자격 증명을 입력한 뒤부터 새 세션 길이가 적용됩니다.
SSO 세션 길이 (Session length for SSO)
사용자가 SSO 자격 증명을 마지막으로 입력한 시점부터 세션이 만료될 때까지의 시간(시간 단위)을 설정합니다. 이 설정은 SAML, GitLab, OAuth 2.0 같은 SSO 인증의 세션 길이를 정의합니다. 시간 단위 숫자를 입력합니다. 기본값은 720시간입니다. 이 구성 설정에는 소수도 사용할 수 있습니다. |
|
- 이 설정을 변경하면 사용자가 다음번에 자격 증명을 입력한 뒤부터 새 세션 길이가 적용됩니다.
- 인증 방식이 SAML, GitLab, OAuth 2.0인 경우 사용자가 이미 SAML, GitLab 또는 OAuth 2.0에 로그인되어 있으면 Mattermost에 자동으로 다시 로그인될 수 있습니다.
세션 캐시 (Session cache)
세션을 메모리에 캐시할 시간(분)을 설정합니다. 분 단위 숫자를 입력합니다. 기본값은 10분입니다. |
|
세션 유휴 타임아웃 (Session idle timeout)
사용자가 시스템에서 마지막으로 활동한 시점부터 세션이 만료될 때까지의 시간(분)입니다. 만료되면 사용자는 계속 사용하기 위해 다시 로그인해야 합니다. 분 단위 숫자를 입력합니다. 기본값은 43200(30일)입니다. 최솟값은 5분이며, 0으로 설정하면 무제한이 됩니다. |
|
- 활동에 따라 세션 길이 연장이 true로 설정되어 있으면 이 설정은 적용되지 않습니다.
- 이 설정은 웹앱과 데스크톱 앱에 적용됩니다. 모바일 앱에서는 EMM 공급자를 사용해 앱을 사용하지 않을 때 잠그세요.
- 고가용성 모드에서는 타임아웃을 정확히 측정할 수 있도록 IP 해시 부하 분산을 활성화하세요.
성능 모니터링 (Performance monitoring)
Entry, Enterprise, Enterprise Advanced 플랜에서 사용할 수 있습니다. (Professional에서는 사용할 수 없습니다.)
자체 호스팅 배포에서는 System Console > Environment > Performance Monitoring으로 이동하거나 아래 표에 설명된 대로 config.json 파일을 편집해 성능 모니터링을 구성할 수 있습니다.
{
"MetricsSettings": {
"Enable": false,
"BlockProfileRate": 0,
"ListenAddress": :8067,
"EnableClientMetrics": false,
"EnableNotificationMetrics": true,
"ClientSideUserIds": ""
}
}
이 섹션의 구성 설정을 변경하면 서버를 재시작해야 적용됩니다.
Prometheus와 Grafana로 성능 모니터링을 설정하는 방법은 성능 모니터링 문서를 참고하세요. Mattermost Metrics 플러그인 사용에 대한 자세한 내용은 성능 메트릭 수집 문서를 참고하세요.
성능 모니터링 활성화 (Enable performance monitoring)
성능 모니터링을 활성화하거나 비활성화합니다.
|
|
자세한 내용은 성능 모니터링 문서를 참고하세요.
클라이언트 성능 모니터링 활성화 (Enable client performance monitoring)
클라이언트 성능 모니터링을 활성화하거나 비활성화합니다.
|
|
클라이언트 측 사용자 ID (Client side user ids)
클라이언트 측 웹앱 메트릭을 추적할 사용자 ID를 쉼표로 구분해 나열합니다. 사용자 ID는 최대 5개까지 지정할 수 있습니다. 기본값은 비어 있습니다. |
|
- 이 설정은
EnableClientMetrics가true로 설정된 경우에만 적용됩니다. - 각 사용자 ID는 Mattermost 시스템에 실제로 존재하는 사용자여야 합니다. 예:
MM_METRICSSETTINGS_CLIENTSIDEUSERIDS="user1,user2,user3". - 성능을 위해 사용자 ID는 최대 5개로 제한됩니다. ID를 더 추가하면 레이블 카디널리티가 높아져 Prometheus에 과부하가 걸릴 수 있습니다. 성능 문제를 피하려면 이 목록을 자주 변경하지 않는 것이 좋습니다.
리슨 주소 (Listen address)
성능 메트릭을 노출할 때 Mattermost 서버가 수신 대기할 포트입니다. 숫자를 입력합니다. 기본값은 8067입니다. |
|
ListenAddress는 포트만 받습니다. IP나 호스트는 받지 않습니다. 인터페이스를 제한해야 한다면 운영 체제 방화벽이나 리버스 프록시로 제한하세요.- 주소는
host:port형식을 사용합니다.:8067을 사용하면 8067 포트의 모든 인터페이스에서 수신 대기하고,localhost:8067을 사용하면 localhost로만 제한합니다.
블록 프로파일 비율 (Block profile rate)
Mattermost 내부의 블로킹 작업(예: 프로그램의 한 부분이 다른 부분을 기다려야 하는 경우)으로 발생하는 지연 데이터를 얼마나 자주 수집할지 제어합니다. 기본값은 0(프로파일링 비활성화)입니다. 프로파일러는 블로킹 상태로 보낸 rate 나노초당 평균 한 건의 블로킹 이벤트를 샘플링하는 것을 목표로 합니다. 기본값은 0입니다. |
|
- 이 설정은 시스템 콘솔에 없으며
config.json에서만 설정할 수 있습니다. 성능 문제를 진단 중이고 프로파일링 데이터를 분석할 줄 아는 경우에만 이 값을 조정하세요. 이 값은 Mattermost가 성능 프로파일에 블로킹 이벤트를 기록하는 빈도를 나타냅니다.
- 0으로 설정하면 블로킹 이벤트를 기록하지 않습니다(프로파일링 비활성화).
- 1로 설정하면 모든 블로킹 이벤트를 기록합니다(프로파일링 전면 활성화).
- 더 큰 값으로 설정하면 이벤트의 일부만 기록합니다(전체 프로파일링 대신 샘플링할 때 유용합니다).
알림 모니터링 활성화 (Enable notification monitoring)
알림 메트릭 데이터 수집을 활성화하거나 비활성화합니다.
|
|
MetricsSettings.Enable이true로 설정되어 있어야 합니다.NotificationMonitoring기능 플래그가true로 설정되어 있어야 합니다.
Mattermost 알림 상태 메트릭에 대한 자세한 내용은 성능 모니터링 문서를 참고하세요.
개발자 (Developer)
자체 호스팅 배포에서는 System Console > Environment > Developer로 이동하거나 아래 표에 설명된 대로 config.json 파일을 편집해 개발자 모드를 구성할 수 있습니다. 이 섹션의 구성 설정을 변경하면 서버를 재시작해야 적용됩니다.
테스트 명령 활성화 (Enable testing commands)
|
|
개발자 모드 활성화 (Enable developer mode)
개발자 모드를 활성화하거나 비활성화합니다.
|
|
클라이언트 디버깅 활성화 (Enable client debugging)
개별 사용자의 Settings > Advanced > Debugging에 있는 클라이언트 측 디버깅 설정을 활성화하거나 비활성화합니다.
|
|
자세한 내용은 클라이언트 디버깅 문서를 참고하세요.
신뢰할 수 없는 내부 연결 허용 (Allow untrusted internal connections)
이 설정은 로컬 네트워크 외부의 사용자가 Mattermost 서버를 이용해 네트워크 내부의 기밀 데이터를 요청하는 것을 막기 위한 것입니다. 로컬 네트워크에 의도치 않은 접근이 발생하지 않도록 신중하게 구성하세요.
Mattermost 서버가 로컬 네트워크 안에서 신뢰할 수 없는 요청을 보내는 것을 제한합니다. 클라이언트를 대신해 이루어지는 요청은 "신뢰할 수 없는" 요청으로 간주됩니다. |
|
이 설정은 Mattermost 서버가 요청할 수 있는 로컬 네트워크 주소의 허용 목록입니다. 접근을 허용할 호스트명, IP 주소, CIDR 범위를 공백으로 구분해 나열합니다.
시스템 관리자만 구성할 수 있는 요청은 신뢰할 수 있는 요청으로 간주되며 이 설정의 영향을 받지 않습니다. OAuth 로그인이나 푸시 알림 전송에 사용되는 URL이 여기에 해당합니다.
다음 기능은 신뢰할 수 없는 요청을 보내므로 이 설정의 영향을 받습니다.
- 웹훅, 슬래시 명령, 메시지 액션을 사용하는 연동. 이 설정은 이들이 로컬 네트워크 내부 엔드포인트를 요청하지 못하게 막습니다.
- 링크 미리보기. 채팅 메시지에 로컬 네트워크 주소 링크가 게시되었을 때 링크 미리보기가 표시되지 않도록 막습니다.
- 로컬 이미지 프록시. 로컬 이미지 프록시가 활성화되어 있으면 로컬 네트워크에 있는 이미지를 연동에서 사용하거나 채팅 메시지에 게시할 수 없습니다.
이 설정을 변경해야 할 수 있는 예는 다음과 같습니다.
- Matterpoll처럼 자체 이미지를 포함하는 플러그인을 설치할 때는 Mattermost 서버의 도메인 이름을 이 목록에 추가해야 합니다.
- 로컬 네트워크에서 봇이나 웹훅 기반 연동을 실행할 때는 해당 봇·연동의 호스트명을 이 목록에 추가해야 합니다.
- 공개적으로 접근 가능한 웹 페이지나 이미지를 Mattermost 서버가 내부 IP 주소로 접근하도록 네트워크가 구성되어 있다면, 해당 서버의 호스트명을 이 목록에 추가해야 합니다.
- Mattermost 애플리케이션 서버 자체의 공인 IP도 예약 IP로 간주됩니다.
- 호스트명, IP 주소, CIDR 범위는 쉼표가 아니라 공백으로 구분해 나열하세요. 예:
webhooks.internal.example.com,127.0.0.1,10.0.16.0/28. - IP 주소와 도메인 이름 규칙은 호스트 이름 확인 전에 적용됩니다.
- CIDR 규칙은 호스트 이름 확인 후에 적용되며, DNS 확인이 필요한 것은 CIDR 규칙뿐입니다.
- Mattermost는 먼저 이름 확인 없이 IP 주소와 호스트명 일치를 시도합니다. 실패하면 로컬 리졸버(먼저
/etc/hosts파일을 읽는 방식)로 이름을 확인한 뒤 일치하는 CIDR 규칙을 찾습니다. 예를 들어 도메인 “webhooks.internal.example.com”이 IP 주소10.0.16.20으로 확인된다면, URL이https://webhooks.internal.example.com/webhook인 웹훅은webhooks.internal.example.com또는10.0.16.16/28로 허용할 수 있지만10.0.16.20으로는 허용할 수 없습니다.
모바일 보안 (Mobile security)
Enterprise Advanced 플랜에서 사용할 수 있습니다.
Mattermost v10.7과 모바일 앱 v2.27부터는 EMM 공급자에 의존하지 않고도 생체 인증을 구성하고, 탈옥·루팅된 기기에서의 Mattermost 사용을 막고, 화면 캡처를 차단할 수 있습니다. System Console > Environment > Mobile Security로 이동하거나 아래 표에 설명된 대로 config.json 파일을 편집해 이 옵션들을 구성하세요. 이 섹션의 구성 설정을 변경하면 서버를 재시작해야 하며, 사용자가 모바일 앱을 재시작하거나 로그아웃 후 다시 로그인해야 적용됩니다.
생체 인증 활성화 (Enable biometric authentication)
앱에 접근하기 전에 생체 인증(실패 시 PIN·패스코드로 대체)을 강제합니다. 세션 활동과 서버 전환 규칙에 따라 사용자에게 인증이 요구됩니다.
|
|
- 이 구성 설정의 변경 사항은 모바일 사용자가 Mattermost 모바일 앱을 재시작하거나 로그아웃 후 다시 로그인할 때 적용됩니다.
다음 상황에서 사용자는 인증해야 합니다.
- 새 서버 추가: 모바일 앱에 새 서버를 추가하고 생체 인증이 활성화된 경우
- 모바일 앱 실행: 앱을 실행할 때 활성 서버가 인증을 요구하는 경우
- 백그라운드 사용 후 복귀: 앱이 5분 이상 백그라운드에 있었고 활성 서버가 인증을 요구하는 경우
- 여러 서버 사용: 어떤 서버에 처음 접근할 때, 해당 서버에서 5분 이상 활동이 없었을 때, 마지막 인증 시도가 실패했을 때
탈옥/루팅 방지 활성화 (Enable jailbreak/root protection)
탈옥 또는 루팅으로 판단되는 기기에서 앱 접근을 차단합니다. 기기가 보안 검사를 통과하지 못하면 사용자는 접근이 거부되거나 정책을 준수하는 서버로 전환하라는 안내를 받습니다.
|
|
- 이 구성 설정의 변경 사항은 모바일 사용자가 Mattermost 모바일 앱을 재시작하거나 로그아웃 후 다시 로그인할 때 적용됩니다.
- 이 기능의 검사 방식에 대한 자세한 내용은 Expo SDK 문서를 참고하세요.
화면 캡처 차단 (Prevent screen capture)
모바일 앱 사용 중 스크린샷과 화면 녹화를 차단합니다. 스크린샷은 빈 화면으로 저장되고, 화면 녹화는 흐리게 표시(iOS)되거나 검은 화면으로 표시(Android)됩니다. 앱을 전환할 때도 적용됩니다.
|
|
이 구성 설정의 변경 사항은 모바일 사용자가 Mattermost 모바일 앱을 재시작하거나 로그아웃 후 다시 로그인할 때 적용됩니다.
모바일 임시 모드 (Mobile ephemeral mode)
Enterprise Advanced 플랜에서 사용할 수 있습니다.
타이머와 동작이 어떻게 맞물리는지에 대한 전체 설명은 모바일 보안 기능의 모바일 임시 모드를 참고하세요.
이 설정은 모든 모바일 사용자에게 전역으로 적용됩니다. 변경 사항은 연결된 기기에 실시간으로 전달되며, 오프라인 기기는 다시 연결될 때까지 마지막으로 알고 있던 구성으로 동작합니다. 타이머 상태는 앱과 기기를 재시작해도 유지됩니다.
타이머가 만료되면 게시물과 파일 미리보기처럼 활성 캐시된 콘텐츠가 삭제되고, 앱은 정책 적용으로 데이터가 삭제되었음을 사용자에게 알립니다. 삭제 후 사용자는 다시 연결될 때 서버에서 데이터를 재동기화합니다. 서버 URL은 키체인 항목에서 복구할 수 있으므로 서버 접근이 사라지지는 않습니다.
모바일 임시 모드 활성화 (Enable Mobile Ephemeral Mode)
모바일 클라이언트가 서버에 구성된 임시 데이터 정책을 적용할지 여부를 제어합니다.
|
|
연결 끊김 타임아웃 (Disconnection timeout)
WebSocket이 끊긴 뒤 기기를 오프라인으로 간주하기까지의 유예 시간(초)입니다. 이 시간이 지나면 오프라인 유지 타이머가 카운트다운을 시작합니다. 초 단위 숫자를 입력합니다. 기본값은 60입니다. 5 미만의 값은 권장하지 않습니다. |
|
오프라인 유지 타이머 (Offline persistence timer)
기기가 오프라인으로 간주된 뒤 캐시된 콘텐츠를 유지하는 시간(시간 단위)입니다. 시간 단위 숫자를 입력합니다. 기본값은 2입니다. 0으로 설정하면 연결이 끊기는 즉시 삭제합니다. |
|
자동 캐시 정리 (Auto cache cleanup)
연결 상태와 관계없이 기기에 캐시된 콘텐츠를 보관하는 최대 기간(일)입니다. 일 단위 숫자를 입력합니다. 기본값은 7입니다. 0으로 설정하면 무보존 모드가 됩니다. |
|
모바일 보안 파일 미리보기 활성화 (Enable secure file preview on mobile)
이 설정은 필수적인 파일 열람 기능은 유지하면서 파일 접근을 제한해 조직의 모바일 보안 태세를 강화합니다.
|
|
이 구성 설정의 변경 사항은 모바일 사용자가 Mattermost 모바일 앱을 재시작하거나 로그아웃 후 다시 로그인할 때 적용됩니다.
모바일에서 PDF 링크 이동 허용 (Allow PDF link navigation on mobile)
|
|
- 이 구성 설정의 변경 사항은 모바일 사용자가 Mattermost 모바일 앱을 재시작하거나 로그아웃 후 다시 로그인할 때 적용됩니다.
- 모바일 보안 파일 미리보기 구성 설정이 비활성화되어 있으면 이 설정은 적용되지 않습니다.
config.json 전용 설정 (config.json-only settings)
다음 자체 호스팅 배포 설정은 config.json 파일에서만 구성할 수 있으며 시스템 콘솔에서는 제공되지 않습니다.
Customer Portal 요청 비활성화 (Disable Customer Portal requests)
고객 포털 요청을 활성화하거나 비활성화합니다.
|
|
Cloud 관리자는 이 구성 설정을 변경할 수 없습니다.
API 팀 삭제 활성화 (Enable API team deletion)
API를 통한 영구 팀 삭제를 허용합니다.
|
|
이 설정은 시스템 콘솔에 없으며 config.json에서만 설정할 수 있습니다.
API 사용자 삭제 활성화 (Enable API user deletion)
API를 통한 영구 사용자 삭제를 허용합니다.
|
|
이 설정은 시스템 콘솔에 없으며 config.json에서만 설정할 수 있습니다.
API 채널 삭제 활성화 (Enable API channel deletion)
API를 통한 영구 채널 삭제를 허용합니다.
|
|
이 설정은 시스템 콘솔에 없으며 config.json에서만 설정할 수 있습니다.
데스크톱 앱 개발자 모드 활성화 (Enable desktop app developer mode)
데스크톱 앱 v5.10부터 이 설정은 Mattermost 데스크톱 앱의 View > Developer Tools 메뉴에서 사용할 수 있는 개발자 디버깅 옵션을 활성화합니다.
이 설정은 시스템 콘솔에 없으며, 환경 변수 MM_DESKTOP_DEVELOPER_MODE를 true로 설정해 config.json에서만 활성화할 수 있습니다. 이 설정은 기본적으로 비활성화되어 있습니다.
True: 문제 해결과 디버깅을 위해 데스크톱 앱에서 다음 옵션을 사용할 수 있게 합니다. Mattermost 개발자의 안내가 있을 때만 이 설정을 활성화하세요.
- Browser Mode Only: 프리로드 스크립트를 완전히 비활성화하고 웹 앱 구성 요소가 자신이 데스크톱 앱 안에 있다는 것을 알 수 없게 합니다. 웹 앱 구성 요소가 성능이나 메모리 유지 문제의 원인인지 확인하는 데 가장 좋은 지표입니다. 이 옵션을 사용하면 알림, 탭 간 이동, 읽지 않음·멘션 배지, 통화 위젯이 비활성화되고 macOS에서는 크기 조절이 동작하지 않습니다.
- Disable Notification Storage: 읽지 않은 알림이 선택되어 읽힐 때까지 그 참조를 보관하는 맵을 비활성화합니다. Mattermost가 사용하지 않는 알림 참조를 지나치게 많이 붙들고 있는 경우를 디버깅할 때 유용합니다.
- Disable User Activity Monitor: 사용자의 자리 비움 여부를 확인하는 주기적 검사를 비활성화합니다. 사용자의 상태 값이 데스크톱 앱의 예기치 않은 동작을 유발하는지 디버깅할 때 유용합니다.
- Disable Context Menu: BrowserView에 연결된 컨텍스트 메뉴를 비활성화합니다. 라이브러리 동작을 점검하는 용도로 유용합니다.
- Force Legacy Messaging API: 앱이 최신 contextBridge API 대신 예전 메시징 API를 사용하도록 강제합니다. 새 API가 메모리를 붙들고 있는 원인인지 확인하는 점검 용도로 유용합니다.
- Force New Messaging API: 앱이 contextBridge API를 사용하도록 강제하고 예전 API를 완전히 비활성화합니다. 이 옵션은 예전 API의 리스너를 강제로 끕니다.
- False: (기본값) 개발자 디버깅 옵션이 잠겨 데스크톱 앱에서 사용할 수 없습니다.
Redis 캐시 백엔드 (Redis cache backend)
Enterprise Advanced 플랜에서 사용할 수 있습니다.
Mattermost v10.4부터 자체 호스팅 배포를 사용하는 Mattermost Enterprise 고객은 대체 캐시 백엔드로 Redis(Remote Dictionary Server)를 구성할 수 있습니다. Redis는 오픈 소스 인메모리 데이터 구조 저장소로 데이터베이스, 캐시, 메시지 브로커로 사용할 수 있습니다. 다양한 데이터 구조를 지원하며, 데이터를 메모리에 저장해 매우 빠르게 접근할 수 있어 성능 면에서 우선적으로 선택됩니다.
Redis를 캐싱 솔루션으로 사용하면 동시 접속이 많고 사용자 규모가 큰 엔터프라이즈급 배포에서도 Mattermost가 부하가 심한 상황에서 성능과 효율을 유지하는 데 도움이 됩니다.
아래 표에 설명된 대로 config.json 파일을 편집해 Redis 캐시를 구성하세요. 이 섹션의 구성 설정을 변경하면 서버를 재시작해야 적용됩니다.
캐시 유형 (Cache type)
캐시 유형을 지정합니다.
|
|
Redis 주소 (Redis address)
Redis 호스트의 호스트명입니다. 문자열을 입력합니다. |
|
Redis 비밀번호 (Redis password)
Redis 호스트의 비밀번호입니다. 문자열을 입력합니다. 비밀번호가 없다면 비워 두세요. |
|
Redis 데이터베이스 (Redis database)
Redis 호스트의 데이터베이스입니다. 0부터 시작해 최대 15까지의 숫자입니다. 보통 |
|
클라이언트 캐시 비활성화 (Disable client cache)
Redis의 클라이언트 측 캐시를 비활성화합니다.
|
|
Redis 캐시 접두사 (Redis cache prefix)
모든 Redis 캐시 키에 접두사를 추가합니다. |
|
모든 Redis 캐시 키에 접두사를 붙이면 키 충돌이 줄고 디버깅이 쉬워지며 데이터가 격리되고, Redis 기반 시스템을 관리·확장하는 데 명확한 구조가 생깁니다. 여러 시스템이나 테넌트가 같은 Redis 인스턴스를 사용하는 환경에서는 데이터 무결성과 운영 효율을 유지하는 데 접두사가 필수적입니다.
웹허브 채널 순회 활성화 (Enable webhub channel iteration)
채널에서의 웹소켓 브로드캐스트 성능을 제어합니다. 활성화하면 웹소켓 브로드캐스트 성능이 개선되지만, 사용자가 채널에 참여하거나 나갈 때는 성능이 떨어질 수 있습니다. 동시 접속 사용자가 20만 명 이상으로 Mattermost를 활발히 사용하는 경우가 아니라면 권장하지 않습니다. 기본적으로 비활성화되어 있습니다. |
|
전용 내보내기 파일 저장소 대상 활성화 (Enable dedicated export filestore target)
Mattermost 일괄 내보내기와 컴플라이언스 내보내기에 대해 별도의 파일 저장소 대상을 지정할 수 있게 합니다.
|
|
- 별도의 파일 저장소 대상을 구성한 경우 Mattermost Cloud 관리자는
/exportlink [job-id|zip file|latest]슬래시 명령으로 내보내기에 대한 사전 서명 다운로드 URL을 생성할 수 있습니다. Amazon S3에서는 S3 사전 서명 URL이고, Azure Blob Storage에서는 공유 액세스 서명(SAS) URL입니다. 이 URL의 유효 기간은 각각ExportAmazonS3PresignExpiresSeconds와ExportAzurePresignExpiresSeconds로 제어합니다. 자세한 내용은 Mattermost 데이터 마이그레이션 문서를 참고하세요. 또는 Cloud와 자체 호스팅 관리자 모두 mmctl export generate-presigned-url 명령으로 mmctl에서 직접 사전 서명 URL을 생성할 수 있습니다. - 사전 서명 URL을 생성하려면 기능 플래그
EnableExportDirectDownload가true로 설정되어야 하고, 스토리지가 사전 서명 링크를 지원해야 하며(Amazon S3 또는 Azure Blob Storage), 이 실험적 구성 설정이true로 설정되어야 합니다. 공유 스토리지를 사용하는 시스템에서는 내보내기용 사전 서명 URL이 지원되지 않습니다.