InfoGrab DocsInfoGrab Docs

환경 구성 설정

요약

제품 메뉴를 선택하고 System Console을 선택한 후 Environment를 선택하여 System Console에서 다음 환경 구성 옵션을 검토하고 관리하세요. 셀프 호스팅 Mattermost 배포를 관리하는 시스템 관리자는 다음 표에서 설명한 대로 config.json 파일을 편집할 수 있습니다.

사용 가능 플랜: Entry, Professional, Enterprise, Enterprise Advanced

제품 제품 메뉴 아이콘을 사용하여 Channels, 협업 플레이북, 보드 간에 이동합니다. 메뉴를 선택하고 System Console을 선택한 후 Environment를 선택하여 System Console에서 다음 환경 구성 옵션을 검토하고 관리하세요.

Tip

셀프 호스팅 Mattermost 배포를 관리하는 시스템 관리자는 다음 표에서 설명한 대로 config.json 파일을 편집할 수 있습니다. 아래 각 구성 값에는 JSON 인식 도구를 사용하여 config.json 파일에서 프로그래밍 방식으로 값에 접근하기 위한 JSON 경로가 포함되어 있습니다. 예를 들어, SiteURL 값은 ServiceSettings 아래에 있습니다.

  • jq 같은 도구를 사용하는 경우 다음과 같이 입력합니다: cat config/config.json | jq '.ServiceSettings.SiteURL'
  • config.json 파일을 수동으로 작업하는 경우, ServiceSettings 같은 객체를 찾은 다음 해당 객체 내에서 SiteURL 키를 찾으세요.

웹 서버#

셀프 호스팅 배포에서는 System Console > Environment > Web Server로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 업데이트하여 Mattermost가 배포된 네트워크 환경을 구성할 수 있습니다. 이 섹션의 구성 설정 변경 사항은 적용되기 전에 서버를 다시 시작해야 합니다.

사이트 URL#

사용자가 Mattermost에 접속하는 데 사용하는 URL입니다. 80이나 443 같은 표준 포트가 아닌 경우 포트 번호가 필요합니다. 이 필드는 필수입니다.

System Console에서 Test Live URL 버튼을 선택하여 사이트 URL을 검증합니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > SiteURL
  • 환경 변수: MM_SERVICESETTINGS_SITEURL
Note
  • URL에는 https://example.com/company/mattermost와 같이 하위 경로가 포함될 수 있습니다.
  • 사이트 URL 값을 변경하면 데스크톱 앱에서 로그아웃한 후 새 도메인으로 다시 로그인하세요.
  • 사이트 URL이 설정되지 않은 경우:
    • 이메일 알림에 깨진 링크가 포함되고, 이메일 일괄 처리가 작동하지 않습니다.
    • GitLab, Google, Entra ID를 포함한 OAuth 2.0을 통한 인증이 실패합니다.
    • 플러그인이 예상대로 작동하지 않을 수 있습니다.

최대 URL 길이#

쿼리 매개변수를 포함하여 Mattermost 서버가 허용하는 가장 긴 URL의 길이(문자 수)입니다. 이보다 긴 URL은 거부되며 API 호출이 오류와 함께 실패합니다.

숫자 값입니다. 기본값은 2048자입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > MaximumURLLength > 2048
  • 환경 변수: MM_SERVICESETTINGS_MAXIMUMURLLENGTH

웹 서버 수신 주소#

바인딩하고 수신할 주소와 포트입니다. :8065를 지정하면 모든 네트워크 인터페이스에 바인딩됩니다. 127.0.0.1:8065를 지정하면 해당 IP 주소를 가진 네트워크 인터페이스에만 바인딩됩니다.

하위 번호 포트(“시스템 포트” 또는 “잘 알려진 포트”라고 하며 범위는 0-1023)를 선택하는 경우 해당 포트에 바인딩할 권한이 있어야 합니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > ListenAddress
  • 환경 변수: MM_SERVICESETTINGS_LISTENADDRESS
Note

웹 서버는 address:port(예: ":8065")를 사용하는 반면, Metrics는 포트 번호만 사용합니다(예: 8067).

포트 80을 443으로 전달#

보안되지 않은 트래픽을 포트 80에서 포트 443으로 전달합니다.

  • true: 보안되지 않은 모든 트래픽을 포트 80에서 보안 포트 443으로 전달합니다.
  • false: (기본값) Mattermost 앞단에서 NGINX 같은 프록시를 사용하는 경우 이 설정은 필요하지 않으며 false로 설정해야 합니다.
  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > Forward80To443 > false
  • 환경 변수: MM_SERVICESETTINGS_FORWARD80TO443

웹 서버 연결 보안#

Mattermost 클라이언트와 서버 간의 연결 보안입니다.

  • Not specified: Mattermost가 보안되지 않은 연결로 접속합니다.
  • TLS: Mattermost 클라이언트와 서버 간의 통신을 암호화합니다.
  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > ConnectionSecurity
  • 환경 변수: MM_SERVICESETTINGS_CONNECTIONSECURITY

자세한 내용은 Mattermost용 TLS 설정을 참조하세요.

TLS 인증서 파일#

TLS 연결 보안에 사용할 인증서 파일의 경로입니다.

문자열 입력입니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > TLSCertFile
  • 환경 변수: MM_SERVICESETTINGS_TLSCERTFILE

TLS 키 파일#

TLS 연결 보안에 사용할 TLS 키 파일의 경로입니다.

문자열 입력입니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > TLSKeyFile
  • 환경 변수: MM_SERVICESETTINGS_TLSKEYFILE

Let's Encrypt 사용#

Let’s Encrypt에서 인증서를 자동으로 가져오도록 활성화합니다.

  • true: 클라이언트가 새 도메인에서 연결을 시도할 때 인증서를 가져옵니다. 여러 도메인에서 작동합니다.
  • false: (기본값) 위에서 지정한 TLS 인증서 파일과 TLS 키 파일을 기반으로 인증서를 수동으로 지정합니다.
  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > UseLetsEncrypt > false
  • 환경 변수: MM_SERVICESETTINGS_USELETSENCRYPT

Let's Encrypt 설정에 대한 자세한 내용은 Mattermost용 TLS 설정을 참조하세요.

Let's Encrypt 인증서 캐시 파일#

Let’s Encrypt 서비스에 대한 인증서와 기타 데이터가 저장되는 파일의 경로입니다.

파일 경로 입력입니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > LetsEncryptCertificateCacheFile
  • 환경 변수: MM_SERVICESETTINGS_LETSENCRYPTCERTIFICATECACHEFILE

읽기 타임아웃#

연결이 수락된 시점부터 요청 본문을 모두 읽을 때까지 허용되는 최대 시간입니다.

초 단위 숫자 입력입니다. 기본값은 300초입니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > ReadTimeout > 300
  • 환경 변수: MM_SERVICESETTINGS_READTIMEOUT

쓰기 타임아웃#

  • HTTP(보안되지 않음)를 사용하는 경우, 요청 헤더 읽기가 끝난 시점부터 응답이 작성될 때까지 허용되는 최대 시간입니다.
  • HTTPS를 사용하는 경우, 연결이 수락된 시점부터 응답이 작성될 때까지의 총 시간입니다.

초 단위 숫자 입력입니다. 기본값은 300초입니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > WriteTimeout > 300
  • 환경 변수: MM_SERVICESETTINGS_WRITETIMEOUT

유휴 타임아웃#

HTTP 서버에 명시적인 유휴 타임아웃을 설정합니다. 유휴 연결이 끊어지기 전까지 허용되는 최대 시간입니다.

초 단위 숫자 입력입니다. 기본값은 300초입니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > IdleTimeout > 300
  • 환경 변수: MM_SERVICESETTINGS_IDLETIMEOUT

웹 서버 모드#

웹 프록시가 gzip 파일을 제대로 배포하지 못하는 경우처럼 환경에 특별한 제약이 있지 않은 한, 성능을 향상시키기 위해 gzip을 권장합니다.

  • gzip: (기본값) Mattermost 서버가 성능 향상을 위해 gzip으로 압축된 정적 파일을 제공합니다. gzip 압축은 Mattermost 웹 클라이언트를 구성하는 HTML, CSS, Javascript 및 기타 정적 콘텐츠 파일에 적용됩니다.
  • Uncompressed: Mattermost 서버가 압축되지 않은 정적 파일을 제공합니다.
  • Disabled: Mattermost 서버가 정적 파일을 제공하지 않습니다.
  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > WebserverMode > "gzip"
  • 환경 변수: MM_SERVICESETTINGS_WEBSERVERMODE

채널 조회 WebSocket 메시지 활성화#

channel_viewed WebSocket 이벤트를 전송할지 여부를 결정합니다. 이 이벤트는 사용자의 클라이언트와 디바이스 간에 읽지 않은 알림을 동기화합니다.

  • true: (기본값) channel_viewed WebSocket 이벤트를 전송합니다.
  • false: channel_viewed WebSocket 이벤트를 전송하지 않습니다.
  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > EnableChannelViewedMessages > true
  • 환경 변수: MM_SERVICESETTINGS_ENABLECHANNELVIEWEDMESSAGES
Note

대규모 배포에서 이 구성 설정을 비활성화하면 다음 영역에서 서버 성능이 향상될 수 있습니다.

  • 데이터베이스 부하 감소: channel_viewed 이벤트를 비활성화하면 서버가 이 이벤트를 데이터베이스에 기록할 필요가 없습니다. 이로 인해 쓰기 및 업데이트 작업 수가 줄어들며, 많은 사용자가 자주 채널을 전환하는 사용량이 많은 서버에서는 그 효과가 상당할 수 있습니다.
  • 네트워크 트래픽 감소: 이 이벤트를 비활성화하면 서버와 클라이언트 간에 전송되는 메시지가 줄어듭니다. 네트워크 트래픽이 감소하면 지연 시간이 줄어들고 서버의 전반적인 응답성이 향상될 수 있으며, 특히 연결 속도가 느린 사용자에게 효과적입니다.
  • 서버 CPU 사용량 감소: channel_viewed 이벤트를 처리하려면 데이터베이스 트랜잭션과 네트워크 통신을 처리하는 CPU 리소스가 필요합니다. 이 이벤트가 없으면 서버의 CPU를 다른 작업에 더 효율적으로 사용할 수 있어 전반적인 성능이 향상됩니다.
  • 사용자 경험 개선: 서버 부하와 네트워크 트래픽이 줄어들면 사용자는 더 빠른 로딩 시간과 더 매끄러운 애플리케이션 상호작용을 경험할 수 있습니다.

다만 이 구성 설정을 비활성화하면 채널의 읽은 메시지와 읽지 않은 메시지를 정확하게 추적하는 기능 등 일부 기능에 영향을 줍니다. 성능 향상과 조직 및 사용자의 요구 사항 사이에서 균형을 맞추는 것이 중요합니다.

안전하지 않은 발신 연결 활성화#

Mattermost가 안전하지 않은 발신 연결을 허용하도록 구성합니다.

  • true: S3 클라이언트를 포함한 발신 HTTPS 요청이 검증되지 않은 자체 서명 인증서를 수락할 수 있습니다. 예를 들어 자체 서명된 TLS 인증서를 사용하는 서버로 보내는 발신 웹훅은 어떤 도메인이든 허용되며 TLS 검증을 건너뜁니다.
  • false: (기본값) 보안된 HTTPS 요청만 허용됩니다.
  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > EnableInsecureOutgoingConnections > false
  • 환경 변수: MM_SERVICESETTINGS_ENABLEINSECUREOUTGOINGCONNECTIONS
Warning

이 기능을 활성화하면 해당 연결이 중간자 공격(man-in-the-middle attacks)에 취약해집니다.

강화 모드 활성화#

보안을 위해 사용자 경험의 일부를 희생하는 강화 모드로 Mattermost를 실행하도록 구성합니다.

  • true: 강화 모드가 활성화됩니다.
  • false: (기본값) 강화 모드가 비활성화됩니다.
  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > EnableHardenedMode > false
  • 환경 변수: MM_SERVICESETTINGS_ENABLEHARDENEDMODE
Note

이 설정은 Mattermost v11.11까지 ServiceSettings.ExperimentalEnableHardenedMode라고 불렸습니다. 업그레이드 후 처음 시작할 때 서버가 이전 키를 ServiceSettings.EnableHardenedMode로 자동 마이그레이션하고 config.json에서 이전 키를 제거합니다.

강화 모드가 활성화되었을 때 적용되는 변경 사항은 다음과 같습니다.

  • 로그인에 실패하면 사용자 이름과 비밀번호에 대한 구체적인 메시지 대신 일반적인 오류 메시지를 반환합니다.
  • 다중 인증(MFA)이 활성화된 경우, 사용자가 MFA를 활성화했는지 확인하는 경로가 항상 true를 반환합니다. 이로 인해 사용자가 MFA를 활성화하지 않았더라도 MFA 입력 화면이 표시됩니다. 사용자는 아무 값이나 입력하여 이 화면을 통과할 수 있습니다. MFA가 강제로 적용되는 경우에는 강화 모드가 사용자 경험에 영향을 주지 않습니다.
  • 비밀번호 재설정 시 사용자가 Mattermost를 통해 SSO 계정을 재설정할 수 없다는 점을 알리지 않고, 대신 비밀번호 재설정 이메일을 보냈다고 안내합니다.
  • Mattermost는 클라이언트에 반환하기 전에 모든 500 오류를 정제합니다. 제공되는 request_id를 사용하여 사용자에게 표시된 오류와 서버 로그를 대조하세요.

게시물 신원 및 표시 재정의 속성(from_webhook, from_bot, override_username, override_icon_url 및 관련 키)은 통합 기능 작성자가 아닌 경우 호출자가 제공한 생성/업데이트 페이로드에서 항상 제거되며, 검증된 통합 권한이 있는 경우에만 다시 적용됩니다. 업데이트 시 제거는 호출자가 보낸 값을 삭제하며, 게시물에 이미 저장된 기존 신원 속성은 보존되므로 일반적인 편집으로 봇 또는 웹훅 신원을 지우거나 바꿀 수 없습니다. 이 동작은 강화 모드와 무관합니다.

관리되는 리소스 경로#

Mattermost 자체가 아니라 서드파티 서비스에서 관리하는 Mattermost 도메인 내 경로의 쉼표로 구분된 목록입니다.

이러한 경로로 연결되는 링크는 Mattermost 앱에서 새 탭/창으로 열립니다.

예를 들어 Mattermost가 https://mymattermost.com에서 실행 중일 때 이 값을 conference로 설정하면 https://mymattermost.com/conference 같은 링크가 새 창에서 열립니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > ManagedResourcePaths
  • 환경 변수: MM_SERVICESETTINGS_MANAGEDRESOURCEPATHS
Note

Mattermost 데스크톱 앱을 사용하는 경우 브라우저 대신 데스크톱 앱 내에서 링크를 열기 위한 추가 구성이 필요합니다. 자세한 내용은 desktop managed resources 문서를 참조하세요.

디스크에서 구성 다시 로드#

사용 가능 플랜: Enterprise, Enterprise Advanced

서버를 중단하지 않고 장애 조치(fail over)하려면 config.json 파일의 데이터베이스 줄을 변경한 다음 구성을 다시 로드해야 합니다.

데이터베이스 구성을 변경한 후 System Console에서 디스크에서 구성 다시 로드 버튼을 선택하세요. 그런 다음 Environment > Database로 이동하여 데이터베이스 연결 재활용을 선택하면 다시 로드가 완료됩니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: 해당 없음
  • 환경 변수: 해당 없음

모든 캐시 제거#

세션, 계정, 채널에 대한 모든 인메모리 캐시를 제거합니다.

모든 캐시를 제거하려면 System Console에서 모든 캐시 제거 버튼을 선택하세요.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: 해당 없음
  • 환경 변수: 해당 없음
Note

캐시를 제거하면 성능에 악영향을 미칠 수 있습니다. 고가용성 클러스터 기반 배포에서는 클러스터 내 모든 서버의 캐시를 제거하려고 시도합니다.

웹소켓 URL#

클라이언트가 웹소켓을 연결해야 하는 위치를 서버가 안내하도록 구성할 수 있습니다.

문자열 입력.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > WebsocketURL > ""
  • 환경 변수: MM_SERVICESETTINGS_WEBSOCKETURL
Note

사이트 URL 구성 설정과 일치하는 단일 웹소켓 URL을 구성하는 것을 강력히 권장합니다.

라이선스 파일 위치#

디스크에 있는 라이선스 파일의 경로와 파일 이름입니다. 시작할 때 이전에 업로드한 유효한 라이선스를 데이터베이스에서 찾을 수 없으면 Mattermost는 이 경로에서 라이선스 파일을 찾습니다.

문자열 입력. 절대 경로 또는 mattermost 디렉터리 기준 상대 경로를 사용할 수 있습니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > LicenseFileLocation > ""
  • 환경 변수: MM_SERVICESETTINGS_LICENSEFILELOCATION

TLS 최소 버전#

Mattermost 서버에서 사용하는 최소 TLS 버전입니다.

문자열 입력. 기본값은 1.2입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > TLSMinVer > 1.2
  • 환경 변수: MM_SERVICESETTINGS_TLSMINVER
Note

이 설정은 NGINX와 같은 역방향 프록시 레이어를 사용하지 않고 내장 서버 바이너리를 직접 사용하는 경우에만 적용됩니다.

신뢰할 수 있는 프록시 IP 헤더#

IP 주소를 확인할 헤더를 지정합니다. 지정한 헤더를 하나씩 순서대로 확인하며(순서가 중요합니다), 그 외 모든 헤더는 무시됩니다.

헤더 이름으로 구성된 문자열 배열 입력. 예: ["X-Forwarded-For", "X-Real-Ip"].

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > TrustedProxyIPHeader > []
  • 환경 변수: MM_SERVICESETTINGS_TRUSTEDPROXYIPHEADER
Note
  • 기본값 [] 은 어떤 헤더도 신뢰하지 않음을 의미합니다.
  • 클라이언트가 헤더를 전송하여 속도 제한 및/또는 감사 로그를 우회하는 것을 방지하기 위해, 프록시 없이 Mattermost가 실행되는 경우 기본 설정을 유지하는 것을 권장합니다.
  • 역방향 프록시를 사용하는 환경의 경우, 역방향 프록시가 헤더를 설정하는 한 이 문제가 발생하지 않습니다. 해당 환경에서는 역방향 프록시가 설정한 헤더만 명시적으로 허용하고 추가 값은 허용하지 마세요.

엄격한 전송 보안(HSTS) 활성화#

  • true: 모든 응답에 Strict Transport Security(HSTS) 헤더를 추가하여 브라우저가 모든 리소스를 HTTPS로 요청하도록 강제합니다.
  • false: (기본값) TLS 전송에 제한이 없습니다. 응답에 Strict Transport Security(HSTS) 헤더를 추가하지 않습니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > TLSStrictTransport > false
  • 환경 변수: MM_SERVICESETTINGS_TLSSTRICTTRANSPORT

자세한 내용은 Strict-Transport-Security 문서를 참조하세요.

보안 TLS 전송 만료#

브라우저가 해당 사이트를 HTTPS로만 접속해야 한다고 기억하는 시간(초)입니다. 이 기간이 지나면 TLSStrictTransport를 true로 설정하지 않는 한 사이트에 HTTP로 접속할 수 없습니다.

숫자 입력. 기본값은 63072000(2년)입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > TLSStrictTransportMaxAge > 63072000
  • 환경 변수: MM_SERVICESETTINGS_TLSSTRICTTRANSPORTMAXAGE

자세한 내용은 Strict-Transport-Security 문서를 참조하세요.

TLS 암호 덮어쓰기#

최신 암호를 지원하지 않는 레거시 클라이언트의 요구 사항을 충족하거나 허용하는 암호의 종류를 제한하기 위해 TLS 암호 덮어쓰기를 설정합니다.

지정하지 않으면 Mattermost 서버는 현재 안전한 것으로 간주되는 암호 집합을 사용하며, 예외적인 경우에 덮어쓰기를 허용합니다.

문자열 배열 입력.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > TLSOverwriteCiphers > []
  • 환경 변수: MM_SERVICESETTINGS_TLSOVERWRITECIPHERS
Note
  • 이 설정은 NGINX와 같은 역방향 프록시 레이어를 사용하지 않고 내장 서버 바이너리를 직접 사용하는 경우에만 적용됩니다.
  • 안전한 것으로 간주되는 암호 목록은 /model/config.go 의 ServerTLSSupportedCiphers 변수를 참조하세요.

고루틴 상태 임계값#

Mattermost 시스템이 정상 상태로 간주되는 고루틴(goroutine) 수의 임계값을 설정합니다.

고루틴 수가 이 한도를 초과하면 서버 로그에 경고가 기록됩니다.

숫자 입력. 기본값은 -1이며 임계값 확인을 끕니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > GoroutineHealthThreshold > -1
  • 환경 변수: MM_SERVICESETTINGS_GOROUTINEHEALTHTHRESHOLD

서브도메인 쿠키 허용#

  • true: (기본값) Mattermost 쿠키에 도메인 매개변수를 설정하여 서브도메인에서 쿠키를 허용합니다.
  • false: 서브도메인에서 쿠키를 허용하지 않습니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > AllowCookiesForSubdomains > true
  • 환경 변수: MM_SERVICESETTINGS_ALLOWCOOKIESFORSUBDOMAINS

클러스터 로그 타임아웃#

사용 가능 플랜: Enterprise, Enterprise Advanced

성능 모니터링을 위한 클러스터 요청 시간 로깅의 빈도를 밀리초 단위로 정의합니다.

숫자 입력. 기본값은 2000밀리초(2초)입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > ClusterLogTimeoutMilliseconds > 2000
  • 환경 변수: MM_SERVICESETTINGS_CLUSTERLOGTIMEOUTMILLISECONDS

자세한 내용은 성능 모니터링 문서를 참조하세요.

최대 페이로드 크기#

파일을 입력으로 받는 API를 제외한 모든 API의 최대 페이로드 크기(바이트)입니다.

예를 들어 첨부 파일 업로드 API 또는 커스텀 이모지 업로드 API가 파일을 입력으로 받는 API입니다.

숫자 값. 기본값은 300000(300 kB)입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > MaximumPayloadSizeBytes > 300000
  • 환경 변수: MM_SERVICESETTINGS_MAXIMUMPAYLOADSIZEBYTES

데이터베이스#

셀프 호스팅 배포에서는 System Console > Environment > Database로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 편집하여 Mattermost가 배포된 데이터베이스 환경을 구성할 수 있습니다. 이 섹션의 구성 설정 변경 사항은 적용되기 전에 서버를 다시 시작해야 합니다.

드라이버 이름#

데이터베이스 유형입니다. 다음 중 하나를 사용할 수 있습니다.

  • mysql: (기본값) MySQL 데이터베이스용 드라이버를 활성화합니다.
  • postgres: PostgreSQL 데이터베이스용 드라이버를 활성화합니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: SqlSettings > DriverName
  • 환경 변수: MM_SQLSETTINGS_DRIVERNAME

데이터 소스#

마스터 데이터베이스에 대한 연결 문자열입니다.

문자열 입력.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: SqlSettings > DataSource
  • 환경 변수: MM_SQLSETTINGS_DATASOURCE

PostgreSQL 데이터베이스#

드라이버 이름을 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 암호화를 사용하지 않습니다.

config.json 파일의 기본값입니다.

disable postgres://mmuser:password@hostname_or_IP:5432/mattermost_test ?sslmode=disable&connect_timeout=10

데이터가 암호화되며 네트워크를 신뢰할 수 있습니다.

생략하면 sslmode의 기본값입니다.

require postgres://mmuser:password@hostname_or_IP:5432/mattermost_test ?sslmode=require&connect_timeout=10
신뢰할 수 있는 서버에 연결할 때 데이터가 암호화됩니다. verify-ca postgres://mmuser:password@hostname_or_IP:5432/mattermost_test ?sslmode=verify-ca&connect_timeout=10
신뢰할 수 있는 서버에 연결할 때 데이터가 암호화됩니다. verify-full postgres://mmuser:password@hostname_or_IP:5432/mattermost_test ?sslmode=verify-full&connect_timeout=10

MySQL 데이터베이스#

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",
  [...]
}
Note

MySQL 8.0 이상을 사용하는 경우 기본 collation이 utf8mb4_0900_ai_ci로 변경되었습니다. MySQL 8.0 지원에 대한 자세한 내용은 Database Software Requirements 문서를 참조하세요.

MySQL 데이터베이스에서 TLS 사용

MySQL 서버에 대한 연결을 암호화하는 매개변수는 tls입니다.

MySQL과 상호 작용하는 데 사용되는 라이브러리는 Go-MySQL-Driver입니다.

현재 표준 MySQL 클라이언트 mysql --ssl-mode=value에 전달할 수 있는 모든 값을 사용하는 것은 불가능합니다. 8.0 버전 예시는 Connection-Encryption Option Summary 문서를 참조하세요.

데이터베이스 관리자는 아래에 설명된 지원되는 값에 따라 기능을 구성해야 합니다.

tls 매개변수에 대한 간단한 설명 값 데이터 소스 이름 예시
MySQL 서버에 TLS / SSL 암호화를 사용하지 않습니다. false "<mmuser:password>@tcp(hostname or IP:3306)/mattermost_test ?charset=utf8mb4,utf8&writeTimeout=30s&tls=false"
MySQL 서버에 TLS / SSL 암호화를 사용합니다. true "<mmuser:password>@tcp(hostname or IP:3306)/mattermost_test ?charset=utf8mb4,utf8&writeTimeout=30s&tls=true"
MySQL 서버에 자체 서명 인증서와 함께 TLS / SSL 암호화를 사용합니다. skip-verify "<mmuser:password>@tcp(hostname or IP:3306)/mattermost_test ?charset=utf8mb4,utf8&writeTimeout=30s&tls=skip-verify"
서버가 대체 연결 가능 여부를 알리면 TLS / SSL 암호화를 사용하고, 알리지 않으면 암호화하지 않습니다. preferred "<mmuser:password>@tcp(hostname or IP:3306)/mattermost_test ?charset=utf8mb4,utf8&writeTimeout=30s&tls=preferred"
#### AWS 고가용성 RDS 클러스터 배포

AWS 고가용성 RDS 클러스터 배포의 경우, AWS 장애 조치 처리의 이점을 얻으려면 이 구성 설정을 클러스터 수준의 쓰기/읽기 엔드포인트로 지정하세요. AWS는 다른 데이터베이스 노드를 작성자 노드로 승격시키는 것을 처리합니다. Mattermost는 이를 관리할 필요가 없습니다. 자세한 내용은 고가용성 데이터베이스 구성 문서를 참조하세요.

최대 열린 연결 수#

데이터베이스에 대해 열 수 있는 최대 연결 수입니다.

숫자 입력. 기본값은 100입니다.

  • 시스템 구성 경로: Environment > Database
  • config.json 설정: SqlSettings > MaxOpenConns > 100
  • 환경 변수: MM_SQLSETTINGS_MAXOPENCONNS
Note

이 한도는 클러스터 전체 합계가 아니라 데이터 소스별, Mattermost 서버 노드별로 적용됩니다. 각 서버 노드는 이 값 크기의 자체 연결 풀을 마스터 데이터베이스(DataSource)에 대해 열고, 읽기 복제본과 검색 복제본 아래에 구성된 각 항목에 대해서도 별도로 엽니다.

데이터베이스(또는 그 앞단의 연결 풀링 프록시)의 max_connections 크기를 산정하려면 먼저 노드당 데이터 소스 수를 계산하세요. 마스터 데이터베이스가 1개이며, 여기에 읽기 복제본 수와 검색 복제본 수를 더합니다. 이 수에 MaxOpenConns를 곱한 다음, (고가용성 클러스터로 배포한 경우) 앱 서버 노드 수를 다시 곱합니다.

MaxOpenConns x (노드당 데이터 소스 수) x (앱 노드 수)

예를 들어 각 노드에 읽기 복제본 1개와 검색 복제본 1개가 구성된 3노드 HA 클러스터에서 MaxOpenConns가 기본값 100이면, 각 노드에는 데이터 소스가 3개이므로 클러스터 전체에서 가능한 연결 수는 3 x 3 x 100 = 900입니다.

최대 유휴 연결 수#

데이터베이스에 열어 둔 채로 유지하는 최대 유휴 연결 수입니다.

숫자 입력. 기본값은 50입니다. MaxOpenConns와 2:1 비율을 권장합니다.

  • 시스템 구성 경로: Environment > Database
  • config.json 설정: SqlSettings > MaxIdleConns > 50
  • 환경 변수: MM_SQLSETTINGS_MAXIDLECONNS

쿼리 타임아웃#

연결을 열고 쿼리를 보낸 후 데이터베이스의 응답을 기다리는 시간(초)입니다.

초 단위 숫자 입력. 기본값은 30초입니다.

  • 시스템 구성 경로: Environment > Database
  • config.json 설정: SqlSettings > QueryTimeout > 30
  • 환경 변수: MM_SQLSETTINGS_QUERYTIMEOUT

최대 연결 수명#

데이터베이스 연결의 최대 수명(밀리초)입니다. 이 설정을 사용하여 데이터베이스 연결을 재사용할 수 있는 최대 시간을 구성하세요

밀리초 단위 숫자 입력. 기본값은 3600000밀리초(1시간)입니다.

  • 시스템 구성 경로: Environment > Database
  • config.json 설정: SqlSettings > ConnMaxLifetimeMilliseconds > 3600000
  • 환경 변수: MM_SQLSETTINGS_CONNMAXLIFETIMEMILLISECONDS

최대 연결 유휴 타임아웃#

데이터베이스 연결이 유휴 상태로 유지될 수 있는 최대 시간(밀리초)입니다.

밀리초 단위 숫자 입력. 기본값은 300000(5분)입니다.

  • 시스템 구성 경로: Environment > Database
  • config.json 설정: SqlSettings > ConnMaxIdleTimeMilliseconds > 300000
  • 환경 변수: MM_SQLSETTINGS_CONNMAXIDLETIMEMILLISECONDS

최소 해시태그 길이#

해시태그의 최소 문자 수입니다. 이 값은 2 이상이어야 합니다.
  • 시스템 구성 경로: Environment > Database
  • config.json 설정: SqlSettings > MinimumHashtagLength > 3
  • 환경 변수: MM_SQLSETTINGS_MINIMUMHASHTAGLENGTH
Note

MySQL 데이터베이스는 세 글자보다 짧은 문자열 검색을 지원하도록 구성해야 합니다. 자세한 내용은 MySQL 문서를 참조하세요.

SQL 문 로깅#

개발용으로 실행된 SQL 문을 로그에 기록할 수 있습니다.

  • true: 실행 중인 SQL 문을 로그에 기록합니다.
  • false: (기본값) SQL 문을 로그에 기록하지 않습니다.
  • 시스템 구성 경로: Environment > Database
  • config.json 설정: SqlSettings > Trace > false
  • 환경 변수: MM_SQLSETTINGS_TRACE

데이터베이스 연결 재활용#

사용 가능 플랜: Enterprise, Enterprise Advanced

데이터베이스 연결 재활용 버튼을 선택하면 20초 이내에 현재 열려 있는 데이터베이스 연결 집합을 닫고 새 연결 집합을 만들어 연결 풀을 수동으로 재활용합니다.

서버를 중지하지 않고 장애 조치하려면 config.json 파일의 데이터베이스 줄을 변경하고, Environment > Web Server에서 디스크에서 구성 다시 로드를 선택한 다음 데이터베이스 연결 재활용을 선택하세요.

  • 시스템 구성 경로: Environment > Database
  • config.json 설정: 해당 없음
  • 환경 변수: 해당 없음

데이터베이스 검색 비활성화#

엔터프라이즈 규모 검색을 사용하는 경우, | - System Config 경로: Environment > Database 데이터베이스 검색이 검색을 수행하지 않도록 비활성화할 수 있습니다. | - config.json 설정: SqlSettings > DisableDatabaseSearch > false | | - 환경 변수: MM_SQLSETTINGS_DISABLEDATABASESEARCH | - true: 데이터베이스를 사용하여 | | 검색을 수행하는 것을 비활성화합니다. 다른 검색 엔진이 구성되어 있지 않은 경우, | | 이 값을 true로 설정하면 검색 | | 결과가 비어 있게 됩니다. | - false: (기본값) 데이터베이스 검색이 비활성화되지 않습니다. | |

Mattermost의 검색 동작은 활성화된 검색 엔진에 따라 달라집니다.

  • Elasticsearch 또는 AWS OpenSearch가 활성화되어 있으면 Mattermost는 이를 가장 먼저 사용하려고 시도합니다.
  • Elasticsearch가 실패하거나 비활성화된 경우, Mattermost는 Bleve 검색이 활성화되어 있으면 이를 사용하려고 시도합니다. Bleve 검색은 Mattermost v11.0에서 더 이상 사용되지 않습니다. 엔터프라이즈 검색 기능에는 Elasticsearch 또는 OpenSearch를 사용하는 것을 권장합니다.
  • 이들이 실패하거나 비활성화된 경우, Mattermost는 데이터베이스 직접 검색이 활성화되어 있으면 데이터베이스를 직접 검색합니다.
  • 위의 모든 방법이 실패하거나 비활성화된 경우 검색 결과는 비어 있게 됩니다.
Note

규모가 큰 배포에서 이 구성 설정을 비활성화하면 다음 영역에서 서버 성능이 향상될 수 있습니다.

  • 데이터베이스 부하 감소: 데이터베이스 검색이 활성화되어 있으면 사용자가 실행하는 모든 검색 쿼리가 데이터베이스와 상호 작용해야 하므로 데이터베이스 서버에 추가 부하가 발생합니다. 데이터베이스 검색을 비활성화하면 이러한 쿼리를 피할 수 있어 데이터베이스 부하가 줄어듭니다.
  • 응답 시간 개선: 데이터베이스 검색은 특히 대용량 데이터 세트에서 시간이 오래 걸릴 수 있습니다. 데이터베이스 검색을 비활성화하면 시스템이 더 이상 데이터베이스에서 검색 결과를 가져와 처리하는 데 시간을 쓰지 않으므로 응답 시간이 빨라질 수 있습니다.
  • 인덱싱 서비스로 검색 오프로드: 데이터베이스 검색을 비활성화하면 검색 작업에 최적화된 Elasticsearch와 같은 전문 인덱싱 서비스로 검색이 오프로드되는 경우가 많습니다. 이러한 서비스는 기존 데이터베이스 검색보다 더 빠르고 효율적인 검색 기능을 제공할 수 있습니다.
  • 리소스 소비 감소: 데이터베이스에 대해 직접 검색 쿼리를 실행하면 리소스(CPU 및 메모리)를 많이 사용할 수 있습니다. 데이터베이스 검색을 비활성화하면 이 리소스를 다른 핵심 기능에 할당할 수 있어 전체 시스템 성능이 향상됩니다.
  • 확장성 향상: 사용자 수와 데이터 볼륨이 증가하면 데이터베이스 검색의 효율이 떨어질 수 있습니다. 전문 검색 서비스는 더 효과적으로 확장되도록 설계되어 전체 시스템 확장성과 성능을 높입니다.

그러나 Mattermost에서 데이터베이스 검색을 수행하는 기능은 특히 다른 검색 엔진이 활성화되어 있지 않은 경우 많은 사용자에게 핵심 기능입니다. 이 기능을 비활성화하면 사용자가 Mattermost 검색 상자를 사용하려고 할 때 오류가 표시됩니다. 성능 개선과 조직 및 사용자의 요구 사이에 균형을 맞추는 것이 중요합니다.

적용된 스키마 마이그레이션#

db_migrations 테이블에서 확인할 수 있는 버전 정보를 기준으로 데이터 저장소에 적용된 모든 마이그레이션의 목록입니다. 배포에 적용된 현재 데이터베이스 스키마 버전을 확인하려면 제품 제품 메뉴 아이콘을 사용하여 Channels, 협업 플레이북, 보드 간에 이동합니다. 메뉴에서 Mattermost 정보를 선택하세요.

활성 검색 백엔드#

현재 검색에 사용 중인 활성 백엔드를 읽기 전용으로 표시합니다. 값은 none, database, elasticsearch, bleve 중 하나일 수 있습니다.

읽기 복제본#

읽기 복제본 데이터베이스의 연결 문자열을 지정합니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: SqlSettings > DataSourceReplicas > []
  • 환경 변수: MM_SQLSETTINGS_DATASOURCEREPLICAS
Note
  • 배열의 각 데이터베이스 연결 문자열은 데이터 소스 설정에 사용하는 것과 같은 형식이어야 합니다.
  • Mattermost가 여러 데이터베이스 인스턴스에 읽기 쿼리를 로드 밸런싱할 수 있도록 배열에서 여러 읽기 복제본을 공백으로 구분하세요. 예: MM_SQLSETTINGS_DATASOURCEREPLICAS=dc-1 dc-2
  • 여기에 추가한 각 항목은 모든 Mattermost 서버 노드에서 MaxOpenConns 크기의 자체 연결 풀을 열며, 다른 항목과 풀을 공유하지 않습니다. 복제본을 추가하기 전에 해당 설정의 참고 사항에서 클러스터 전체 크기 산정 계산을 확인하세요.

AWS 고가용성 RDS 클러스터 배포#

AWS 고가용성 RDS 클러스터 배포의 경우, AWS/RDS가 처리하는 장애 조치/로드 밸런싱(쓰기 트래픽 제외)을 우회하려면 이 구성 설정을 RDS 클러스터 내의 기본 읽기 전용 노드 엔드포인트로 직접 지정하세요. Mattermost에는 읽기 전용 연결을 분산하는 자체 방법이 있으며, 해당 노드가 실패하면 이러한 쿼리를 데이터 소스/쓰기+읽기 연결로 분산할 수도 있습니다. 자세한 내용은 고가용성 데이터베이스 구성 문서를 참조하세요.

검색 복제본#

검색 복제본 데이터베이스의 연결 문자열을 지정합니다. 검색 복제본은 읽기 복제본과 비슷하지만 검색 쿼리를 처리하는 데에만 사용됩니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: SqlSettings > DataSourceSearchReplicas > []
  • 환경 변수: MM_SQLSETTINGS_DATASOURCESEARCHREPLICAS
Note
  • 배열의 각 데이터베이스 연결 문자열은 데이터 소스 설정에 사용하는 것과 같은 형식이어야 합니다.
  • 여기에 추가한 각 항목은 모든 Mattermost 서버 노드에서 MaxOpenConns 크기의 자체 연결 풀을 열며, 다른 항목과 풀을 공유하지 않습니다. 검색 복제본을 추가하기 전에 해당 설정의 참고 사항에서 클러스터 전체 크기 산정 계산을 확인하세요.

AWS 고가용성 RDS 클러스터 배포#

AWS 고가용성 RDS 클러스터 배포의 경우, AWS/RDS가 처리하는 장애 조치/로드 밸런싱(쓰기 트래픽 제외)을 우회하려면 이 구성 설정을 RDS 클러스터 내의 기본 읽기 전용 노드 엔드포인트로 직접 지정하세요. Mattermost에는 읽기 전용 연결을 분산하는 자체 방법이 있으며, 해당 노드가 실패하면 이러한 쿼리를 데이터 소스/쓰기+읽기 연결로 분산할 수도 있습니다. 자세한 내용은 고가용성 데이터베이스 구성 문서를 참조하세요.

복제본 지연 설정#

사용 가능 플랜: Enterprise, Enterprise Advanced

문자열 배열 입력으로 단일 복제본 인스턴스의 복제본 지연을 측정하기 위한 연결 문자열과 데이터베이스에 대한 사용자 정의 SQL 쿼리를 지정합니다.

이 설정은 바이너리 로그 거리/트랜잭션 큐 길이를 기반으로 한 절대 지연과 복제본이 따라잡는 데 걸리는 시간을 모니터링합니다.

문자열 배열 입력은 다음으로 구성됩니다.

  • DataSource: 데이터베이스 인스턴스에 연결하기 위한 데이터베이스 자격 증명입니다.
  • QueryAbsoluteLag: 단일 행을 반환해야 하는 일반 SQL 쿼리입니다. 첫 번째 칼럼은 Prometheus 메트릭의 노드 값이어야 하고, 두 번째 칼럼은 절대 지연을 측정하는 데 사용하는 지연 값이어야 합니다.
  • QueryTimeLag: 단일 행을 반환해야 하는 일반 SQL 쿼리입니다. 첫 번째 칼럼은 Prometheus 메트릭의 노드 값이어야 하고, 두 번째 칼럼은 시간 지연을 측정하는 데 사용하는 지연 값이어야 합니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: SqlSettings > ReplicaLagSettings > []
  • 환경 변수: MM_SQLSETTINGS_REPLICALAGSETTINGS
Note
  • QueryAbsoluteLag 및 QueryTimeLag 쿼리는 단일 행을 반환해야 합니다.
  • 이를 제대로 모니터링하려면 Mattermost용 성능 모니터링을 설정해야 합니다.
  1. 데이터베이스 유형에 따라 복제본 지연 메트릭을 구성하세요. 각 데이터베이스 유형별 구성 방법은 다음 탭을 참조하세요.

아래에 강조 표시된 구성을 SqlSettings.ReplicaLagSettings 배열에 추가하세요. AWS Aurora 노드의 복제 통계는 클러스터 구성원인 모든 서버 인스턴스에서 볼 수 있으므로 한 번만 추가하면 됩니다. DataSource는 그룹 내 단일 노드를 가리키도록 변경해야 합니다.

Aurora 복제 통계에 대한 자세한 내용은 AWS Aurora documentaion을 참조하세요.

예시

&#123;
  "SqlSettings": &#123;
      "ReplicaLagSettings": [
        &#123;
            "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=<>"
        &#125;
      ]
  &#125;
&#125;

아래에 강조 표시된 구성을 SqlSettings.ReplicaLagSettings 배열에 추가하세요. 모든 노드의 복제 통계는 MySQL 복제 그룹의 구성원인 모든 서버 인스턴스에서 공유되므로 한 번만 추가하면 됩니다. DataSource는 그룹 내 단일 노드를 가리키도록 변경해야 합니다.

그룹 복제 통계에 대한 자세한 내용은 MySQL 문서를 참조하세요.

예시

&#123;
  "SqlSettings": &#123;
      "ReplicaLagSettings": [
        &#123;
            "DataSource": "replica-1",
            "QueryAbsoluteLag": "select member_id, count_transactions_remote_in_applier_queue FROM performance_schema.replication_group_member_stats where member_id=<>",
            "QueryTimeLag": ""
        &#125;
      ]
  &#125;
&#125;
  1. 아래에 강조 표시된 구성을 SqlSettings.ReplicaLagSettings 배열에 추가하세요. 이 쿼리는 클러스터의 기본 노드에서 실행해야 하므로, DataSource를 구성한 SqlSettings.DataSource 설정과 일치하도록 변경하세요.

pg_stat_replication에 대한 자세한 내용은 PostgreSQL 문서를 참조하세요.

예시:

&#123;
  "SqlSettings": &#123;
      "ReplicaLagSettings": [
        &#123;
            "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": ""
        &#125;
      ]
  &#125;
&#125;
  1. 데이터베이스 사용자에게 pg_monitor 권한을 부여하세요. 이 사용자는 위의 DataSource 문자열에 구성한 사용자와 같아야 합니다.

역할에 대한 자세한 내용은 PostgreSQL 문서를 참조하세요.

sudo -u postgres psql
postgres=# GRANT pg_monitor TO mmuser;
  1. 구성을 저장하고 모든 Mattermost 노드를 다시 시작하세요.
  2. Mattermost를 모니터링하는 Grafana 인스턴스로 이동하여 Mattermost Performance Monitoring v2 대시보드를 여세요.
  3. QueryTimeLag 차트는 기존 Replica Lag 차트를 활용하여 이미 설정되어 있습니다. QueryAbsoluteLag 메트릭을 사용하는 경우 Replica Lag 차트를 복제하고 쿼리를 아래의 절대 지연 메트릭을 사용하도록 편집한 다음 제목을 Replica Lag Absolute로 수정하세요.
mattermost_db_replica_lag_abs&#123;instance=~"$server"&#125;

Grafana에서 차트를 복제하는 방법을 보여 주는 스크린샷

복제한 Grafana 차트에서 수행할 구체적인 편집 내용을 보여 주는 스크린샷.

복제본 모니터 간격(초)#

비정상 복제본의 활성 상태 확인을 얼마나 자주 모니터링할지 지정합니다. Mattermost는 복제본이 활성 상태이면 동적으로 해당 복제본을 선택합니다.

숫자 입력. 기본값은 5초입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: SqlSettings > ReplicaMonitorIntervalSeconds > 5
  • 환경 변수: MM_SQLSETTINGS_REPLICAMONITORINTERVALSECONDS
Note

이 구성 설정은 셀프 호스팅 배포에만 적용됩니다.


엔터프라이즈 검색#

사용 가능 플랜: Enterprise, Enterprise Advanced

핵심 데이터베이스 검색은 관계형 데이터베이스에서 이루어지며 게시물과 파일 항목이 약 200만~300만 건 미만인 배포를 대상으로 합니다. 이 규모를 넘어서면 게시물이 300만 건에 도달하기 전에 최적의 검색 성능을 위해 Elasticsearch 또는 AWS OpenSearch로 엔터프라이즈 검색을 활성화하는 것을 강력히 권장합니다.

게시물이 300만 건을 넘는 셀프 호스팅 배포에서는 메시지 검색 및 @멘션에서 타임아웃과 같은 심각한 성능 문제를 피하기 위해 Elasticsearch 또는 AWS OpenSearch가 필요합니다.

System Console > Environment > Elasticsearch로 이동하여 Mattermost 엔터프라이즈 검색을 구성할 수 있습니다. 다음 구성 설정은 Elasticsearch와 AWS OpenSearch 모두에 적용됩니다. 다음 표에서 설명한 대로 config.json 파일을 편집할 수도 있습니다. 이 섹션의 구성 설정 변경 사항은 적용되기 전에 서버를 다시 시작해야 합니다.

Elasticsearch 인덱싱 활성화#

새 게시물을 자동으로 인덱싱하도록 Mattermost를 구성합니다.

  • true: 새 메시지의 인덱싱이 자동으로 이루어집니다.
  • false: (기본값) 새 메시지의 인덱싱이 비활성화되어 새 메시지가 인덱싱되지 않습니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > EnableIndexing > false
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_ENABLEINDEXING
Note

인덱싱을 비활성화한 뒤 인덱스를 생성한 후에 다시 활성화한 경우, 검색 결과가 완전하도록 인덱스를 제거하고 다시 빌드하세요.

백엔드 유형#

Elasticsearch와 AWS OpenSearch 모두 엔터프라이즈 규모 배포에 최적화된 검색 성능을 제공하며 성능 저하와 타임아웃을 방지합니다. 제품 문서에서 엔터프라이즈 검색에 대해 자세히 알아보세요.

검색 백엔드의 유형입니다.

  • elasticsearch - (기본값)
  • opensearch - AWS OpenSearch에 필요합니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > Backend > "elasticsearch"
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_BACKEND

엔터프라이즈 검색 버전 지원에 대해 자세히 알아보세요.

서버 연결 주소#

Elasticsearch 또는 AWS OpenSearch 서버의 주소입니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > ConnectionUrl
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_CONNECTIONURL

CA 경로#

Elasticsearch 또는 AWS OpenSearch 서버의 커스텀 인증 기관(Certificate Authority) 인증서에 대한 선택적 경로입니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > CA
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_CA
Note
  • Mattermost v7.8부터 사용할 수 있습니다. 인증서 경로는 /opt/mattermost/data/elasticsearch/ 또는 /opt/mattermost/data/opensearch여야 하며 System Console에서 ./elasticsearch/cert.pem 또는 ./opensearch/cert.pem으로 구성합니다.
  • 기본 인증 자격 증명과 함께 사용하거나 이를 대체할 수 있습니다. 운영 체제의 기본 인증 기관 인증서를 사용하려면 이 설정을 비워 두세요.

클라이언트 인증서 경로#

Mattermost v7.8부터 사용할 수 있습니다. 기본 인증 자격 증명과 함께 사용하거나 이를 대체할 수 있습니다.

Elasticsearch 또는 AWS OpenSearch 서버에 연결하기 위한 PEM 형식의 선택적 클라이언트 인증서입니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > ClientCert
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_CLIENTCERT

클라이언트 인증서 키 경로#

Mattermost v7.8부터 사용할 수 있습니다. 기본 인증 자격 증명과 함께 사용하거나 이를 대체할 수 있습니다.

PEM 형식의 클라이언트 인증서용 선택적 키입니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > ClientKey
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_CLIENTKEY

TLS 검증 건너뛰기#

TLS 연결의 인증서 단계를 건너뛸 수 있습니다.

  • true: TLS 연결의 인증서 검증 단계를 건너뜁니다.
  • false: (기본값) Mattermost가 인증서 검증을 요구합니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > SkipTLSVerification > false
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_SKIPTLSVERIFICATION

서버 사용자 이름#

(선택 사항) Elasticsearch 또는 AWS OpenSearch 서버에 인증하기 위한 사용자 이름입니다.

문자열 입력.

  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > UserName
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_USERNAME

서버 비밀번호#

(선택 사항) Elasticsearch 또는 AWS OpenSearch 서버에 인증하기 위한 비밀번호입니다.

문자열 입력.

  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > Password
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_PASSWORD

클러스터 스니핑 활성화#

클러스터의 모든 데이터 노드를 자동으로 찾아 연결하도록 Mattermost를 구성합니다.

  • true: 스니핑이 클러스터의 모든 데이터 노드를 자동으로 찾아 연결합니다.
  • false: (기본값) 클러스터 스니핑이 비활성화됩니다.

Amazon OpenSearch Service와 같은 클라우드 호스팅 검색 제공업체를 사용할 때는 클러스터 스니핑을 활성화하지 마세요.

  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > Sniff > false
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_SNIFF

Mattermost와 Elasticsearch 또는 AWS OpenSearch 서버 간의 연결을 검증하려면 System Console에서 연결 테스트 버튼을 선택하세요.

대량 인덱싱#

데이터베이스에 있는 모든 기존 게시물을 오래된 것부터 최신 순으로 대량 인덱싱을 시작하도록 Mattermost를 구성합니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: 해당 없음
  • 환경 변수: 해당 없음
Note
  • 대량 인덱싱 전에는 항상 인덱스를 제거하세요.
  • System Console에서 지금 인덱싱 버튼을 선택하면 모든 게시물의 대량 인덱싱이 시작되며, 진행 중인 모든 인덱스 작업을 확인할 수 있습니다.
  • 인덱싱 중에도 Elasticsearch 또는 AWS OpenSearch를 사용할 수 있지만, 인덱싱 작업이 완료될 때까지 검색 결과가 불완전할 수 있습니다.
  • 진행 중인 인덱싱 작업을 취소하면 인덱스와 검색 결과가 불완전해집니다.

채널 인덱스 다시 빌드#

채널 인덱스를 제거하고 데이터베이스에 있는 모든 채널을 오래된 것부터 최신 순으로 다시 인덱싱합니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: 해당 없음
  • 환경 변수: 해당 없음

채널 인덱스를 제거하려면 System Console에서 채널 인덱스 다시 빌드 버튼을 선택하세요. 이 과정을 시작하기 전에 대량 인덱싱 표에서 진행 중인 다른 인덱싱 작업이 없는지 확인하세요. 인덱싱 중에도 채널 자동 완성을 사용할 수 있지만, 인덱싱 작업이 완료될 때까지 검색 결과가 불완전할 수 있습니다.

인덱스 제거#

전체 Elasticsearch 인덱스를 제거합니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: 해당 없음
  • 환경 변수: 해당 없음

인덱스를 제거하려면 System Console에서 인덱스 제거 버튼을 선택하세요. 인덱스를 제거한 후 지금 인덱싱 버튼을 선택하여 새 인덱스를 만드세요.

제거 시 건너뛸 인덱스#

인덱스를 제거할 때 무시할 인덱스 이름을 지정합니다. 여러 인덱스 이름은 쉼표로 구분하세요.

별표(*)를 사용하면 인덱스 이름의 연속된 문자열과 일치시킬 수 있습니다.

  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > IgnoredPurgeIndexes
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_IGNOREDPURGEINDEXES

검색 쿼리에 Elasticsearch 활성화#

최신 인덱스를 사용하는 모든 검색 쿼리에 Elasticsearch 또는 AWS OpenSearch를 사용하도록 Mattermost를 구성합니다.

  • true: 최신 인덱스를 사용하는 모든 검색 쿼리에 Elasticsearch 또는 AWS OpenSearch를 사용합니다. 기존 메시지 데이터베이스의 대량 인덱싱이 완료될 때까지 검색 결과가 불완전할 수 있습니다.
  • false: (기본값) 검색 쿼리에 데이터베이스 검색을 사용합니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > EnableSearching > false
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_ENABLESEARCHING

인덱싱을 비활성화한 뒤 인덱스를 생성한 후에 다시 활성화한 경우, 검색 결과가 완전하도록 인덱스를 제거하고 다시 빌드하세요.

자동 완성 쿼리에 Elasticsearch 활성화#

최신 인덱스를 사용하는 사용자 및 채널에 대한 모든 자동 완성 쿼리에 Elasticsearch 또는 AWS OpenSearch를 사용하도록 Mattermost를 구성합니다.

  • true: 최신 인덱스를 사용하는 사용자 및 채널에 대한 모든 자동 완성 쿼리에 Elasticsearch 또는 AWS OpenSearch를 사용합니다.
  • false: (기본값) 데이터베이스 자동 완성을 사용합니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > EnableAutocomplete > false
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_ENABLEAUTOCOMPLETE

기존 사용자 및 채널 데이터베이스의 대량 인덱싱이 완료될 때까지 자동 완성 결과가 불완전할 수 있습니다.

멤버가 아닌 공개 채널 검색 허용#

사용자가 참여하지 않은 공개 채널의 메시지를 검색할 수 있도록 허용합니다.

처음 활성화하면 기존 게시물이 백그라운드에서 채널 유형 정보로 업데이트됩니다. 이 백필 프로세스는 검색 성능에 영향을 주지 않도록 초당 약 10,000개 게시물로 제한됩니다.

  • true: 사용자는 자신이 속한 팀 범위 내에서 참여하지 않은 공개 채널의 메시지를 찾을 수 있습니다.
  • false: (기본값) 사용자는 자신이 멤버인 채널의 메시지만 검색할 수 있습니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > EnableSearchPublicChannelsWithoutMembership > false
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_ENABLESEARCHPUBLICCHANNELSWITHOUTMEMBERSHIP
Note

컴플라이언스 모드가 활성화되어 있으면 이 설정은 아무 영향이 없습니다. 컴플라이언스 모드가 활성 상태이면 검색 결과는 항상 사용자가 멤버인 채널로 제한됩니다.

파일 인덱싱 활성화#

Mattermost가 Elasticsearch 또는 AWS OpenSearch에서 첨부 파일을 인덱싱할지 여부를 구성합니다.

  • true: (기본값) 새로 추가되거나 업데이트된 첨부 파일이 인덱싱되고, 대량 인덱싱 작업에 파일이 포함됩니다.
  • false: 새로 추가되거나 업데이트된 첨부 파일이 인덱싱되지 않으며, 대량 인덱싱 작업에서 파일을 건너뜁니다. 파일 검색은 이전에 인덱싱된 파일을 계속 반환하며, Mattermost에서 삭제된 파일은 여전히 인덱스에서 제거됩니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > EnableFileIndexing > true
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_ENABLEFILEINDEXING

이 설정이 false인 동안 업로드된 파일은 파일 검색 결과에 나타나지 않습니다. 설정을 다시 true로 변경한 후 System Console > Environment > Elasticsearch에서 대량 인덱싱을 실행하면 해당 파일을 검색할 수 있습니다.

게시물 인덱스 복제본#

각 게시물 인덱스에 사용할 복제본 수입니다.

숫자 입력. 기본값은 1입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > PostIndexReplicas > 1
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_POSTINDEXREPLICAS
Note
  • 이 설정이 변경되면 변경된 구성은 새로 생성된 인덱스에만 적용됩니다. 기존 인덱스에 변경 사항을 적용하려면 이 설정을 변경한 후 인덱스를 제거하고 재구성하세요.
  • n개의 데이터 노드가 있는 경우, 각 인덱스의 샤드당 복제본 수는 n-1이어야 합니다.
  • Elasticsearch 또는 AWS OpenSearch 클러스터의 노드 수가 변경되면, 이 구성 설정과 함께 채널 인덱스 복제본 및 사용자 인덱스 복제본도 적절히 업데이트해야 합니다.

게시물 인덱스 샤드#

각 게시물 인덱스에 사용할 샤드 수입니다.

숫자 입력. 기본값은 1입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > PostIndexShards > 1
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_POSTINDEXSHARDS
Note

이 구성 설정이 변경되면 변경된 구성은 새로 생성된 인덱스에만 적용됩니다. 기존 인덱스에 변경 사항을 적용하려면 이 설정을 변경한 후 인덱스를 제거하고 재구성하세요.

채널 인덱스 복제본#

각 채널 인덱스에 사용할 복제본 수입니다.

숫자 입력. 기본값은 1입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > ChannelIndexReplicas > 1
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_CHANNELINDEXREPLICAS
Note

n개의 데이터 노드가 있는 경우, 각 인덱스의 샤드당 복제본 수는 n-1이어야 합니다. Elasticsearch 또는 AWS OpenSearch 클러스터의 노드 수가 변경되면, 이 구성 설정과 함께 게시물 인덱스 복제본 및 사용자 인덱스 복제본도 적절히 업데이트해야 합니다.

채널 인덱스 샤드#

각 채널 인덱스에 사용할 샤드 수입니다.

숫자 입력. 기본값은 1입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > ChannelIndexShards > 1
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_CHANNELINDEXSHARDS

사용자 인덱스 복제본#

각 사용자 인덱스에 사용할 복제본 수입니다.

숫자 입력. 기본값은 1입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > UserIndexReplicas > 1
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_USERINDEXREPLICAS
Note

n개의 데이터 노드가 있는 경우, 각 인덱스의 샤드당 복제본 수는 n-1이어야 합니다. Elasticsearch 또는 AWS OpenSearch 클러스터의 노드 수가 변경되면, 이 구성 설정과 함께 게시물 인덱스 복제본 및 사용자 인덱스 복제본도 적절히 업데이트해야 합니다.

사용자 인덱스 샤드#

각 사용자 인덱스에 사용할 샤드 수입니다.

숫자 입력. 기본값은 1입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > UserIndexShards > 1
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_USERINDEXSHARDS

검색 인덱스 집계#

이 설정에서 지정한 기간(일)보다 오래된 Elasticsearch 또는 AWS OpenSearch 인덱스는 매일 예약된 작업 중에 집계됩니다.

숫자 입력. 기본값은 365일입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > AggregatePostsAfterDays > 365
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_AGGREGATEPOSTSAFTERDAYS
Note

데이터 보존과 엔터프라이즈 검색을 함께 사용하는 경우, 데이터 보존 정책보다 큰 값으로 설정하세요.

게시물 집계기 시작 시간#

매일 예약된 집계기 작업의 시작 시간입니다.

서버의 현지 시간을 기준으로 HH:MM 형식의 24시간제 타임스탬프여야 합니다.

기본값은 03:00(오전 3시)입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > PostsAggregatorJobStartTime > "03:00"
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_POSTSAGGREGATORJOBSTARTTIME

인덱스 접두사#

Elasticsearch 또는 AWS OpenSearch 인덱스 이름에 추가되는 접두사입니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > IndexPrefix
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_INDEXPREFIX
Note

이 설정이 사용되면 Mattermost에서 생성한 모든 Elasticsearch 또는 AWS OpenSearch 인덱스에 이 접두사가 붙습니다. 여러 Mattermost 배포가 인덱스 이름이 충돌하지 않도록 Elasticsearch 또는 AWS OpenSearch 클러스터를 공유할 수 있도록 다른 접두사를 설정할 수 있습니다.

글로벌 검색 접두사#

동일한 인덱스 접두사를 가진 여러 Elasticsearch 인덱스에 걸쳐 글로벌 검색을 활성화합니다.

여러 데이터 센터에서 Elasticsearch 인스턴스가 클러스터 간 복제를 사용하여 데이터를 공유하는 구성에 유용합니다. 분산된 인덱스 전반에서 더 쉽고 통합된 검색이 가능합니다.

값은 IndexPrefix의 접두사여야 합니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > GlobalSearchPrefix
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_GLOBALSEARCHPREFIX

실시간 인덱싱 배치 크기#

새 게시물이 Elasticsearch 또는 AWS OpenSearch 인덱스에 추가되기 전에 필요한 새 게시물 수입니다. 인덱스에 추가되면 해당 게시물을 검색할 수 있게 됩니다.

초당 1개 이상의 게시물이 있는 서버에서는 이 값을 20초 동안의 평균 게시물 수로 설정하는 것을 권장합니다.

숫자 입력. 기본값은 1입니다. 모든 게시물은 생성되는 즉시 동기적으로 인덱싱됩니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > LiveIndexingBatchSize > 1
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_LIVEINDEXINGBATCHSIZE
Note

초당 1개 이상의 게시물을 처리하는 설치의 경우, Elasticsearch 또는 AWS OpenSearch 클러스터의 속도 제한 또는 리소스 제한에 도달하지 않으려면 이 값을 늘려야 할 수 있습니다.

이 값을 증가시키면 정확히 어떤 일이 발생합니까?

주요 영향은 게시물의 임계값이 충족된 후 게시물이 Elasticsearch 또는 AWS OpenSearch에 인덱싱되어 Mattermost 내에서 게시물을 검색할 수 있게 된다는 것입니다. 따라서 더 큰 서버에 대한 권장 사항을 기반으로 이 값을 설정하고 게시물을 작성하면 평균적으로 약 10~20초 동안 검색을 통해 찾을 수 없습니다. 현실적으로 이렇게 빠르게 게시물을 활발하게 검색하는 사용자의 수가 제한되어 있으므로 어떤 사용자도 이 영향을 느끼지 않아야 합니다. Elasticsearch 또는 AWS OpenSearch 서버 사양에 따라 이 값을 더 낮거나 높게 설정할 수 있습니다.

사용량이 많은 기간에는 더 많은 트래픽이 발생하여 더 많은 게시물이 생성되고 인덱스 번호에 도달하는 시간이 빨라지므로 이 지연이 더 빨라집니다. 사용량이 적은 기간에는 그 반대를 예상하세요.

서버에 적합한 숫자를 찾는 방법

  1. 서버에서 매분 얼마나 많은 게시물이 작성되는지 이해해야 합니다. 아래 쿼리를 실행하여 서버의 분당 평균 게시물 수를 계산하세요.

    이 쿼리는 부하가 클 수 있으므로 비피크 시간에 실행하는 것을 권장합니다. 또한 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;
    
  2. 환경에 허용 가능한 인덱스 창을 결정하고, 분당 평균 게시물 수를 그것으로 나눕니다. 10-20초를 권장합니다. 평균적으로 분당 600개의 게시물이 있고 20초마다 인덱싱하려면 (60초 / 20초 = 3)을 적용하여 600 / 3을 계산하면 200`이라는 숫자가 나옵니다. 200개의 게시물 후에 Mattermost는 게시물을 Elasticsearch 또는 AWS OpenSearch에 인덱싱합니다. 따라서 평균적으로 검색 가능성에 20초의 지연이 있습니다.

  3. config.json을 편집하거나 mmctl을 실행하여 LiveIndexingBatchSize 설정을 수정합니다

    ``config.json``에서

    &#123;
      "ElasticsearchSettings": &#123;
        "LiveIndexingBatchSize": 200
      &#125;
    &#125;
    

    mmctl 사용

    mmctl config set ElasticsearchSettings.LiveIndexingBatchSize 200
    

    환경 변수 사용

    MM_ELASTICSEARCHSETTINGS_LIVEINDEXINGBATCHSIZE = 200
    
  4. Mattermost 서버를 재시작합니다.

배치 크기#

대량 인덱싱 작업에서 한 번의 배치에 포함되는 게시물 수입니다.

숫자 입력. 기본값은 10000입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > BatchSize > 10000
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_BATCHSIZE

요청 타임아웃#

Elasticsearch 또는 AWS OpenSearch 호출의 타임아웃(초)입니다.

초 단위 숫자 입력. 기본값은 30초입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > RequestTimeoutSeconds > 30
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_REQUESTTIMEOUTSECONDS

추적#

Elasticsearch 또는 AWS OpenSearch 추적 오류를 출력하는 옵션입니다.

  • error: Elasticsearch 또는 AWS OpenSearch 클라이언트를 초기화할 때 오류 추적을 생성하고, 오류를 반환하는 템플릿 생성 또는 검색 쿼리를 오류 메시지의 일부로 출력합니다.
  • all: 드라이버에 대해 세 가지 추적(error, trace, info)을 생성하며, 쿼리는 드라이버의 trace 로그 수준에 포함되므로 출력하지 않습니다.
  • not specified: (기본값) 오류 추적을 생성하지 않습니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > Trace
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_TRACE

CJK 분석기 활성화#

활성화하면 Mattermost가 언어별 분석기 플러그인을 사용하여 한국어, 일본어, 중국어 콘텐츠의 검색 결과를 개선합니다. 이 설정을 활성화하기 전에 필요한 분석기 플러그인이 Elasticsearch 또는 AWS OpenSearch 서버에 설치되어 있어야 합니다.

지원되는 플러그인:

  • analysis-nori (한국어)
  • analysis-kuromoji (일본어)
  • analysis-smartcn (중국어)
  • true: CJK 언어별 분석기가 활성화됩니다.
  • false: (기본값) 표준 분석기를 사용합니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > EnableCJKAnalyzers > false
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_ENABLECJKANALYZERS
Note

Mattermost v11.6부터 사용 가능합니다. 전체 분석 지원을 위해 이 설정을 활성화하기 전에 Elasticsearch 또는 AWS OpenSearch 서버에 필요한 분석기 플러그인이 설치되어 있어야 합니다. 플러그인이 감지되지 않으면 경고가 기록됩니다. 플러그인 설치 지침은 Elasticsearch 설정 및 AWS OpenSearch 설정 문서를 참조하세요.

이전에 Elasticsearch 또는 AWS OpenSearch를 실행하던 서버에서 이 설정을 활성화하는 경우, 기존 콘텐츠가 새 분석기로 올바르게 검색 가능하도록 검색 인덱스를 제거하고 재구성해야 합니다. 인덱스 제거 및 재구성 지침은 Elasticsearch 설정 문서를 참조하세요.


파일 스토리지#

셀프 호스팅 배포에서는 System Console > Environment > File Storage로 이동하거나 다음 테이블에서 설명한 대로 config.json 파일을 편집하여 파일 스토리지 설정을 구성할 수 있습니다.

Note

Mattermost는 로컬 파일 시스템, Amazon S3 또는 S3 호환 컨테이너, Azure Blob Storage에 파일을 저장하는 것을 지원합니다. Digital Ocean Spaces로 Mattermost를 테스트했지만 시장의 모든 S3 호환 컨테이너는 테스트하지 않았습니다. 다른 S3 호환 컨테이너를 사용하려는 경우 자체적으로 테스트를 완료하는 것을 권장합니다. NFS를 사용하여 로컬 스토리지 또는 네트워크 드라이브를 사용할 수도 있습니다.

Tip

Azure 리소스 프로비저닝, System Console 구성, 검증 절차를 다루는 단계별 안내는 Mattermost 파일 스토어로 Azure Blob Storage 구성하기 문서를 참조하세요.

파일 스토리지 시스템#

사용하는 파일 스토리지 시스템의 유형입니다. 로컬 파일 시스템, Amazon S3, Azure Blob Storage 중에서 선택할 수 있습니다.

  • local: (기본값) 파일과 이미지가 지정된 로컬 파일 디렉터리에 저장됩니다.
  • amazons3: 제공된 액세스 키, 버킷, 리전 필드를 기반으로 파일과 이미지가 Amazon S3에 저장됩니다. 이 드라이버는 Digital Ocean Spaces와 같은 다른 S3 호환 서비스와도 호환됩니다.
  • azureblob: 제공된 스토리지 계정 이름, 공유 키, 컨테이너 필드를 기반으로 파일과 이미지가 Azure Blob Storage에 저장됩니다.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > DriverName > "local"
  • 환경 변수: MM_FILESETTINGS_DRIVERNAME
Note

새 파일 스토리지 시스템을 저장한 후에는 변경 사항이 적용되도록 배포된 모든 Mattermost 서버를 재시작하세요. 파일 스토리지 백엔드는 시작 시 초기화되며, 런타임에 FileSettings가 변경되어도 자동으로 다시 빌드되지 않습니다.

로컬 스토리지 디렉터리#

파일 스토리지 시스템이 local로 설정된 경우 파일이 기록되는 로컬 디렉터리입니다. Mattermost를 실행하는 사용자가 쓰기 권한을 가진 모든 디렉터리를 지정할 수 있으며, Mattermost가 설치된 디렉터리를 기준으로 한 상대 경로입니다.

기본값은 ./data/입니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > Directory
  • 환경 변수: MM_FILESETTINGS_DIRECTORY

파일 스토리지 시스템이 amazons3로 설정된 경우 이 설정은 적용되지 않습니다.

최대 파일 크기#

메시지 첨부 파일과 플러그인 업로드의 최대 파일 크기입니다. 이 값은 System Console에서는 메비바이트 단위로, config.json 파일에서는 바이트 단위로 지정해야 합니다.

기본값은 104857600바이트(100메비바이트)입니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > MaxFileSize > 104857600
  • 환경 변수: MM_FILESETTINGS_MAXFILESIZE
Note
  • 서버 메모리가 설정을 지원할 수 있는지 확인하세요. 파일 크기가 크면 네트워크 중단으로 인한 서버 충돌 및 업로드 실패 위험이 높아집니다.
  • 플러그인 파일 업로드 시 Received invalid response from the server 오류는 일반적으로 MaxFileSize가 플러그인 파일 업로드를 지원하기에 충분히 크지 않거나 프록시 설정이 충분하지 않을 수 있음을 나타냅니다.
  • Mattermost 앞에 프록시 또는 로드 밸런서를 사용하는 경우 다음 프록시 설정을 적절히 조정해야 합니다.
    • NGINX의 경우 client_max_body_size를 사용합니다.
    • Apache의 경우 LimitRequestBody를 사용합니다.

내용으로 문서 검색 활성화#

사용자가 메시지에 첨부된 문서의 내용을 검색할 수 있도록 합니다.

  • true: (기본값) 문서를 내용으로 검색할 수 있습니다.
  • false: 문서를 내용으로 검색할 수 없습니다. 문서 내용 검색이 비활성화되면 사용자는 파일 이름으로만 파일을 검색할 수 있습니다.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > ExtractContent > true
  • 환경 변수: MM_FILESETTINGS_EXTRACTCONTENT
Note

파일에서 콘텐츠를 추출할 때 내용으로 문서 검색 활성화가 필요합니다. Mattermost 파일 검색과 Mattermost Agents 모두 필요한 의존성이 활성화된 경우 파일과 해당 콘텐츠에 접근할 수 있습니다. Mattermost Server v5.35로 업그레이드하기 전에 공유된 파일의 문서 콘텐츠 검색 결과는 mmctl을 사용하여 추출 명령을 실행할 때까지 불완전할 수 있습니다. 이 명령이 실행되지 않으면 사용자는 파일 이름으로만 이전 파일을 검색할 수 있습니다.

선택적으로 다음 의존성을 설치하여 Mattermost의 콘텐츠 검색 지원을 DOC, RTF, XML, HTML과 같이 PDF, DOCX, ODT 이외의 파일 형식으로 확장할 수 있습니다.

  • tidy: HTML 문서의 콘텐츠 검색에 사용됩니다.
  • wv: DOC 문서의 콘텐츠 검색에 사용됩니다.
  • poppler-utils: PDF 문서 콘텐츠 추출 시 서버 성능을 크게 향상시키는 데 사용됩니다.
  • unrtf: RTF 문서의 콘텐츠 검색에 사용됩니다.
  • JusText: HTML 문서 검색에 사용됩니다. 배포 정보는 JusText Python 패키지를 참조하세요.

이러한 의존성을 설치하지 않으면 추출할 수 없는 문서에 대한 로그 항목이 표시됩니다. 추출할 수 없는 문서는 건너뛰고 기록되어 콘텐츠 추출이 계속 진행될 수 있습니다.

ZIP 파일 내 문서 내용 검색 활성화#

사용자가 메시지에 첨부된 압축 ZIP 파일의 내용을 검색할 수 있도록 합니다.

  • true: ZIP 파일 내 문서의 내용이 검색 결과에 반환됩니다. 대용량 파일의 경우 서버 성능에 영향을 줄 수 있습니다. 지정된 로컬 파일 디렉터리.
  • false: (기본값) ZIP 파일 내 문서의 내용이 검색 결과에 반환되지 않습니다.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > ArchiveRecursion > false
  • 환경 변수: MM_FILESETTINGS_ARCHIVERECURSION
Note
  • 웹 브라우저 또는 데스크톱 앱에서 Mattermost를 사용할 때 ZIP 파일 내 문서 콘텐츠를 검색할 수 있습니다.
  • 문서 콘텐츠 검색은 서버에 부하를 추가합니다.
  • 이 설정은 표준 ZIP 파일에만 적용됩니다. 7zip(.7z) 파일은 보안상의 이유로 차단되며 검색할 수 없습니다.
  • 대규모 배포 또는 대용량의 텍스트 위주 문서를 많이 공유하는 팀의 경우, 하드웨어 요구 사항을 검토하고 프로덕션 환경에서 활성화하기 전에 스테이징 환경에서 이 기능을 테스트하는 것을 권장합니다.

Amazon S3 버킷#

S3 호환 오브젝트 스토리지 인스턴스의 버킷 이름입니다.

S3 호환 버킷 이름을 나타내는 문자열입니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AmazonS3Bucket
  • 환경 변수: MM_FILESETTINGS_AMAZONS3BUCKET

Amazon S3 경로 접두사#

AWS에서 Amazon S3 버킷에 대해 선택한 접두사입니다.

경로 접두사를 포함하는 문자열입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: FileSettings > AmazonS3PathPrefix
  • 환경 변수: MM_FILESETTINGS_AMAZONS3PATHPREFIX

Amazon S3 리전#

AWS에서 Amazon S3 버킷을 생성할 때 선택한 AWS 리전입니다.

버킷이 포함된 AWS 리전을 나타내는 문자열입니다. 리전이 설정되지 않은 경우 Mattermost는 AWS에서 적절한 리전을 가져오려고 시도하며, 찾지 못하면 us-east-1로 설정합니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: `".FileSettings.AmazonS3Region",
  • 환경 변수: MM_FILESETTINGS_AMAZONS3REGION

Digital Ocean Spaces 또는 기타 S3 호환 서비스의 경우 이 설정을 비워두세요.

Amazon S3 액세스 키 ID#

S3 호환 스토리지 인스턴스의 액세스 키를 나타내는 문자열입니다. EC2 관리자가 액세스 키 ID를 제공해 줄 수 있습니다.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AmazonS3AccessKeyId
  • 환경 변수: MM_FILESETTINGS_AMAZONS3ACCESSKEYID
Note

Amazon S3에 Amazon S3 IAM 역할을 사용하는 경우가 아니라면 접근에 필요합니다.

Amazon S3 엔드포인트#

S3 호환 인스턴스의 호스트명입니다.

S3 호환 스토리지 인스턴스의 호스트명을 나타내는 문자열입니다. 기본값은 s3.amazonaws.com입니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AmazonS3Endpoint > "s3.amazonaws.com"
  • 환경 변수: MM_FILESETTINGS_AMAZONS3ENDPOINT
Note

Digital Ocean Spaces의 경우 호스트명은 <region>.digitaloceanspaces.com으로 설정해야 합니다. 여기서 <region>은 Space 설정 시 선택한 리전의 약어입니다. nyc3, ams3, 또는 sgp1이 될 수 있습니다.

Amazon S3 시크릿 액세스 키#

Amazon S3 액세스 키 ID와 연결된 시크릿 액세스 키입니다.

S3 호환 스토리지 인스턴스의 시크릿 액세스 키를 나타내는 문자열입니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AmazonS3SecretAccessKey
  • 환경 변수: MM_FILESETTINGS_AMAZONS3SECRETACCESSKEY

보안 Amazon S3 연결 활성화#

보안 Amazon S3 연결을 활성화하거나 비활성화합니다.

  • true: (기본값) 보안 Amazon S3 연결만 허용합니다.
  • false: Amazon S3에 대한 비보안 연결을 허용합니다.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AmazonS3SSL > true
  • 환경 변수: MM_FILESETTINGS_AMAZONS3SSL

Amazon S3 서명 v2#

기본적으로 Mattermost는 AWS에 대한 API 호출에 서명 v4를 사용하지만, 일부 상황에서는 v2가 필요합니다.

  • true: 서명 v2 서명 프로세스를 사용합니다.
  • false: (기본값) 서명 v4 서명 프로세스를 사용합니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: FileSettings > AmazonS3SignV2 > false
  • 환경 변수: MM_FILESETTINGS_AMAZONS3SIGNV2

서명 v2 서명 프로세스를 사용해야 하는 경우는 AWS 문서를 참조하세요.

Amazon S3 서버 측 암호화 활성화#

사용 가능 플랜: Enterprise, Enterprise Advanced

Amazon S3의 서버 측 암호화를 활성화합니다.

  • true: Amazon S3 관리형 키를 사용하는 서버 측 암호화로 Amazon S3의 파일을 암호화합니다.
  • false: (기본값) Amazon S3의 파일을 암호화하지 않습니다.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AmazonS3SSE > false
  • 환경 변수: MM_FILESETTINGS_AMAZONS3SSE
Note

이 구성 설정은 셀프 호스팅 배포에서만 사용 가능합니다.

Amazon S3 디버깅 활성화#

Amazon S3 디버깅을 활성화하거나 비활성화하여 시스템 로그에 추가 디버깅 정보를 기록합니다.

  • true: 추가 디버깅 정보가 시스템 로그에 기록됩니다.
  • false: (기본값) Amazon S3 디버깅 정보가 시스템 로그에 포함되지 않습니다. 일반적으로 프로덕션에서는 false로 설정합니다.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AmazonS3Trace > false
  • 환경 변수: MM_FILESETTINGS_AMAZONS3TRACE

System Console에서 연결 테스트 버튼을 선택하여 설정을 확인하고 사용자가 서버에 접근할 수 있는지 확인합니다.

Amazon S3 스토리지 클래스#

일부 Amazon S3 호환 스토리지 솔루션은 업로드 요청에 스토리지 클래스 파라미터가 포함되어야 하며, 그렇지 않으면 요청이 거부됩니다. S3 호환 솔루션에서 요구하는 스토리지 클래스를 설정합니다.

S3 호환 스토리지 솔루션에 업로드할 때 사용할 스토리지 클래스입니다.

문자열 입력. 기본값은 빈 문자열 ""입니다. 연결 테스트를 선택하여 구성된 연결을 테스트합니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AmazonS3StorageClass > "",
  • 환경 변수: MM_FILESETTINGS_AMAZONS3STORAGECLASS
Note

대부분의 Amazon S3 호환 스토리지 솔루션은 스토리지 클래스가 제공되지 않으면 기본 스토리지 클래스 STANDARD를 할당합니다. 지원되는 스토리지 클래스에 대한 자세한 내용은 Amazon S3 스토리지 클래스 문서를 참조하세요.

Amazon S3 내보내기 스토리지 클래스#

S3 호환 스토리지 솔루션으로 내보낼 때 사용할 스토리지 클래스입니다.

문자열 입력. 기본값은 빈 문자열 ""입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: FileSettings > ExportAmazonS3StorageClass > ""
  • 환경 변수: MM_FILESETTINGS_EXPORTAMAZONS3STORAGECLASS
Note

대부분의 Amazon S3 호환 스토리지 솔루션은 스토리지 클래스가 제공되지 않으면 기본 스토리지 클래스 STANDARD를 할당합니다. 지원되는 스토리지 클래스에 대한 자세한 내용은 Amazon S3 스토리지 클래스 문서를 참조하세요.

Amazon S3 요청 타임아웃#

Amazon S3 스토리지에 대한 요청이 타임아웃되기까지의 시간(밀리초)입니다.

기본값은 30000(30초)입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: FileSettings > AmazonS3RequestTimeoutMilliseconds > 30000
  • 환경 변수: MM_FILESETTINGS_AMAZONS3REQUESTTIMEOUTMILLISECONDS

Amazon S3 업로드 파트 크기#

Amazon S3로의 멀티파트 업로드에서 각 파트의 크기(바이트)입니다.

숫자 값. 기본값은 5242880(5MB)입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: FileSettings > AmazonS3UploadPartSizeBytes > 5242880
  • 환경 변수: MM_FILESETTINGS_AMAZONS3UPLOADPARTSIZEBYTES
Note

파트 크기가 작을수록 더 많은 요청과 지연 시간 증가를 초래할 수 있으며, 파트 크기가 클수록 더 많은 메모리가 할당될 수 있습니다.

Amazon S3 내보내기 업로드 파트 크기#

Amazon S3로 내보내는 멀티파트에서 각 파트의 크기(바이트)입니다.

숫자 값. 기본값은 104857600(100MB)입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: FileSettings > ExportAmazonS3UploadPartSizeBytes > 104857600
  • 환경 변수: MM_FILESETTINGS_EXPORTAMAZONS3UPLOADPARTSIZEBYTES
Note

파트 크기가 작을수록 더 많은 요청과 지연 시간 증가를 초래할 수 있으며, 파트 크기가 클수록 더 많은 메모리가 할당될 수 있습니다.

Amazon S3 요청 타임아웃#

Amazon S3 스토리지에 대한 요청이 타임아웃되기까지의 시간(밀리초)입니다.

기본값은 30000(30초)입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: FileSettings > AmazonS3RequestTimeoutMilliseconds > 30000
  • 환경 변수: MM_FILESETTINGS_AMAZONS3REQUESTTIMEOUTMILLISECONDS

Azure Storage 계정#

Azure Storage 계정의 이름입니다.

Azure 포털에 표시되는 스토리지 계정 이름을 나타내는 문자열입니다. 3~24자의 영문 소문자와 숫자여야 합니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AzureStorageAccount
  • 환경 변수: MM_FILESETTINGS_AZURESTORAGEACCOUNT

Azure 컨테이너#

Mattermost가 업로드 파일을 저장하는 Azure Storage 계정 내 컨테이너의 이름입니다.

컨테이너 이름을 나타내는 문자열입니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AzureContainer
  • 환경 변수: MM_FILESETTINGS_AZURECONTAINER

Azure 경로 접두사#

Azure 컨테이너의 Blob에 사용할 선택적 경로 접두사입니다.

경로 접두사를 포함하는 문자열입니다. 컨테이너 루트에 기록하려면 비워 두세요.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AzurePathPrefix
  • 환경 변수: MM_FILESETTINGS_AZUREPATHPREFIX

Azure 인증#

Mattermost가 Azure Storage 계정에 인증하는 방식을 선택합니다.

  • shared_key: (기본값) Mattermost가 FileSettings.AzureAccessKey에 있는 스토리지 계정 액세스 키로 요청에 서명합니다. 모든 배포 환경(온프레미스, Azure 이외의 클라우드, 로컬 개발)에서 작동합니다.
  • default_credential: Mattermost가 Azure SDK의 DefaultAzureCredential 체인(관리 ID, 워크로드 ID, 서비스 주체 환경 변수, az login — 이 순서대로)을 통해 Entra ID 토큰을 가져와 요청에 서명합니다. FileSettings.AzureAccessKey는 무시됩니다. 호스트가 이미 관리 ID를 제공하는 Azure 배포 환경에 권장합니다.

    SDK가 선택하는 ID에는 스토리지 계정 또는 컨테이너에 대한 Storage Blob Data Contributor(또는 동등한 역할)가 부여되어 있어야 합니다.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AzureAuthMode
  • 환경 변수: MM_FILESETTINGS_AZUREAUTHMODE

Azure Storage 계정 키#

Azure Storage 계정의 공유 키입니다. FileSettings.AzureAuthMode가 shared_key인 경우에만 사용됩니다. 이 값은 Azure 포털에서 스토리지 계정의 Security + networking > Access keys 블레이드에서 확인할 수 있습니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AzureAccessKey
  • 환경 변수: MM_FILESETTINGS_AZUREACCESSKEY
Note

공유 키는 비밀 정보로 취급하세요. Azure는 다운타임 없이 교체를 지원하기 위해 두 개의 키를 제공합니다. Mattermost를 한 키로 업데이트한 후 다른 키를 재생성하고, 다음 교체 주기에 전환하세요.

Azure 클라우드#

Mattermost가 연결할 Azure 클라우드를 선택합니다. 이 선택에 따라 Azure SDK가 요청에 서명할 대상 호스트가 결정됩니다.

  • commercial: (기본값) {account}.blob.core.windows.net에 대한 Vhost 방식입니다. 스토리지 계정 이름만 필요합니다.
  • government: {account}.blob.core.usgovcloudapi.net(Azure Government)에 대한 Vhost 방식입니다. 스토리지 계정 이름만 필요합니다.
  • custom: Mattermost가 FileSettings.AzureEndpoint의 값을 전체 Blob 서비스 URL로 사용합니다. Azurite, 리버스 프록시, Azure China 또는 기본 제공 프리셋이 없는 다른 Azure 클라우드에 사용하세요.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AzureCloud
  • 환경 변수: MM_FILESETTINGS_AZURECLOUD

Azure 엔드포인트#

스킴과 스토리지 계정을 포함한 전체 Blob 서비스 URL입니다. FileSettings.AzureCloud가 custom인 경우에만 사용되며, commercial 및 government 클라우드에서는 무시됩니다(이 클라우드에서는 스토리지 계정 이름으로 URL을 도출합니다).

Mattermost는 이 URL을 변경하지 않고 Azure SDK에 전달하므로, 스토리지 계정이 호스트명(vhost 방식, 예: https://acmemattermost.blob.core.chinacloudapi.cn/) 또는 경로(path 방식, 예: Azurite의 http://localhost:10000/devstoreaccount1/)에 이미 포함되어 있어야 합니다. 공유 키 인증은 이 URL이 가리키는 호스트를 기준으로 서명하므로, 해당 호스트가 FileSettings.AzureStorageAccount에 구성된 스토리지 계정을 실제로 제공하는지 확인하세요.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AzureEndpoint
  • 환경 변수: MM_FILESETTINGS_AZUREENDPOINT

보안 Azure Blob Storage 연결 활성화#

Azure Blob Storage에 대한 보안 연결을 활성화하거나 비활성화합니다.

  • true: (기본값) 보안 Azure Blob Storage 연결만 허용합니다.
  • false: 비보안 연결을 허용합니다. TLS가 없는 로컬 에뮬레이터를 가리킬 때만 false로 설정하세요.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AzureSSL > true
  • 환경 변수: MM_FILESETTINGS_AZURESSL

Azure 요청 타임아웃#

Azure Blob Storage에 대한 요청이 타임아웃되기까지의 시간(밀리초)입니다.

기본값은 30000(30초)입니다. 대용량 오브젝트 처리에 네트워크 시간이 더 필요한 경우에만 늘리세요.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AzureRequestTimeoutMilliseconds > 30000
  • 환경 변수: MM_FILESETTINGS_AZUREREQUESTTIMEOUTMILLISECONDS

초기 글꼴#

색상 배경과 사용자 이름 이니셜로 자동 생성되는 프로필 사진에 사용되는 글꼴입니다.

글꼴 파일 이름을 나타내는 문자열입니다. 기본값은 nunito-bold.ttf입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: FileSettings > InitialFont > "nunito-bold.ttf"
  • 환경 변수: MM_FILESETTINGS_INITIALFONT

이미지 프록시#

자체 호스팅 배포에서는 이미지 프록시를 사용하여 Mattermost 앱이 원격 자체 호스팅 서버에 직접 연결되지 않도록 할 수 있습니다. System Console > Environment > Image Proxy로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 편집하여 이미지 프록시를 설정합니다.

이미지 프록시 활성화#

이미지 프록시는 Mattermost 앱 연결을 익명화하고 비보안 콘텐츠에 접근하지 못하도록 합니다.

  • true: 외부 이미지를 불러오기 위한 이미지 프록시를 활성화합니다.
  • false: (기본값) 이미지 프록시를 비활성화합니다.
  • 시스템 구성 경로: Environment > Image Proxy
  • config.json 설정: ImageProxySettings > Enable > true
  • 환경 변수: MM_IMAGEPROXYSETTINGS_ENABLE

자세한 내용은 이미지 프록시 문서를 참조하세요.

이미지 프록시 유형#

Mattermost에서 사용하는 이미지 프록시의 유형입니다.

  • local: (기본값) Mattermost 서버 자체가 이미지 프록시 역할을 합니다.

Mattermost v12.0부터 atmos/camo는 더 이상 지원되지 않습니다. 이 설정이 atmos/camo로 설정되어 있으면 서버가 시작할 때 자동으로 local로 변경하고 경고를 기록합니다.

  • 시스템 구성 경로: Environment > Image Proxy
  • config.json 설정: ImageProxySettings > ImageProxyType > "local"
  • 환경 변수: MM_IMAGEPROXYSETTINGS_IMAGEPROXYTYPE

자세한 내용은 이미지 프록시 문서를 참조하세요.


SMTP#

자체 호스팅 배포에서는 System Console > Environment > SMTP로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 편집하여 SMTP 이메일 서버 설정을 구성할 수 있습니다.

SMTP 서버#

이메일 알림에 사용되는 SMTP 이메일 서버의 위치입니다.
  • 시스템 구성 경로: Environment > SMTP
  • config.json 설정: EmailSettings > SMTPServer
  • 환경 변수: MM_EMAILSETTINGS_SMTPSERVER

SMTP 서버 포트#

SMTP 이메일 서버의 포트입니다.

문자열 입력.

  • 시스템 구성 경로: Environment > SMTP
  • config.json 설정: EmailSettings > "SMTPPort"
  • 환경 변수: MM_EMAILSETTINGS_SMTPPORT

SMTP 인증 활성화#

SMTP 인증을 활성화하거나 비활성화합니다.

  • true: SMTP 사용자명과 비밀번호를 SMTP 서버 인증에 사용합니다.
  • false: (기본값) Mattermost가 SMTP 서버에 인증을 시도하지 않습니다.
  • 시스템 구성 경로: Environment > SMTP
  • config.json 설정: EmailSettings > EnableSMTPAuth > false
  • 환경 변수: MM_EMAILSETTINGS_ENABLESMTPAUTH

SMTP 서버 사용자명#

SMTP 서버 인증에 사용하는 사용자명입니다.

문자열 입력.

  • 시스템 구성 경로: Environment > SMTP
  • config.json 설정: EmailSettings > SMTPUsername
  • 환경 변수: MM_EMAILSETTINGS_SMTPUSERNAME

SMTP 서버 비밀번호#

SMTP 사용자명과 연결된 비밀번호입니다.

문자열 입력.

  • 시스템 구성 경로: Environment > SMTP
  • config.json 설정: EmailSettings > SMTPPassword
  • 환경 변수: MM_EMAILSETTINGS_SMTPPASSWORD

SMTP 연결 보안#

SMTP를 사용하여 전송하는 이메일의 연결 보안을 지정합니다.

  • Not specified: (기본값) 비보안 연결로 이메일을 전송합니다.
  • TLS: Mattermost와 이메일 서버 간의 통신이 암호화됩니다.
  • STARTTLS: TLS를 사용하여 기존의 비보안 연결을 보안 연결로 업그레이드하려고 시도합니다.
  • 시스템 구성 경로: Environment > SMTP
  • config.json 설정: EmailSettings > ConnectionSecurity
  • 환경 변수: MM_EMAILSETTINGS_CONNECTIONSECURITY

서버 인증서 검증 건너뛰기#

Mattermost가 이메일 서버 인증서 검증을 건너뛰도록 구성합니다.

  • true: Mattermost가 이메일 서버 인증서를 검증하지 않습니다.
  • false: (기본값) Mattermost가 이메일 서버 인증서를 검증합니다.
  • 시스템 구성 경로: Environment > SMTP
  • config.json 설정: EmailSettings > SkipServerCertificateVerification > false
  • 환경 변수: MM_EMAILSETTINGS_SKIPSERVERCERTIFICATEVERIFICATION

보안 알림 활성화#

보안 알림을 활성화하거나 비활성화합니다.

  • true: (기본값) 관련 보안 수정 알림이 공지되면 시스템 관리자에게 이메일로 알립니다. 이메일이 활성화되어 있어야 합니다.
  • false: 보안 알림이 비활성화됩니다.
  • 시스템 구성 경로: Environment > SMTP
  • config.json 설정: ServiceSettings > EnableSecurityFixAlert > true
  • 환경 변수: MM_SERVICESETTINGS_ENABLESECURITYFIXALERT

자세한 내용은 원격 측정 문서를 참조하세요.

SMTP 서버 타임아웃#

Mattermost와 SMTP 서버 간 TCP 연결을 설정하는 데 허용되는 최대 시간(초)입니다.

초 단위 숫자 값입니다.

  • 시스템 구성 경로: Environment > SMTP
  • config.json 설정: EmailSettings > SMTPServerTimeout
  • 환경 변수: MM_EMAILSETTINGS_SMTPSERVERTIMEOUT

푸시 알림 서버#

자체 호스팅 배포에서는 System Console > Environment > Push Notification Server로 이동하거나 아래 표에 설명된 대로 config.json 파일을 편집하여 Mattermost 모바일 푸시 알림을 구성할 수 있습니다. 이 섹션의 구성 설정을 변경하려면 적용되기 전에 서버를 재시작해야 합니다.

Mattermost 푸시 알림을 활성화하거나 비활성화합니다.

  • Do not send push notifications: 모바일 푸시 알림이 비활성화됩니다.
  • Use HPNS connection with uptime SLA to send notifications to iOS and Android apps: (기본값) Mattermost의 호스팅 푸시 알림 서비스를 사용합니다.
  • Use TPNS connection to send notifications to iOS and Android apps: Mattermost의 테스트 푸시 알림 서비스를 사용합니다.
  • Manually enter Push Notification Service location: 커스텀 모바일 앱을 빌드할 때는 자체 모바일 푸시 프록시 서비스를 호스팅하고 해당 URL을 Push Notification Server 필드에 지정해야 합니다.
  • 시스템 구성 경로: Environment > Push Notification Server
  • config.json 설정: EmailSettings > SendPushNotifications
  • 환경 변수: MM_EMAILSETTINGS_SENDPUSHNOTIFICATIONS

호스팅 푸시 알림 서비스 (HPNS)#

Mattermost Enterprise, Professional, Cloud 고객은 Mattermost의 호스팅 푸시 알림 서비스(Hosted Push Notification Service, HPNS)를 사용할 수 있습니다. HPNS는 다음을 제공합니다:

  • GitHub에서 사용 가능한 공개 호스팅된 Mattermost 푸시 알림 서비스(Mattermost Push Notification Service, MPNS) 접근.
  • 암호화되지 않은 메시지 내용에 대한 명시적인 개인정보 보호 정책.
  • 암호화된 TLS 연결:
    • HPNS와 Apple 푸시 알림 서비스 사이
    • HPNS와 Google의 Firebase Cloud Messaging 서비스 사이
    • HPNS와 Mattermost 서버 사이
  • 프로덕션 수준의 가동 시간 기대치.
  • 새 서버에 대한 기본 제공 구성으로 새 배포에 HPNS를 활성화하는 데 별도 작업이 필요하지 않습니다. 기존 배포의 경우 HPNS를 활성화할 수 있습니다.
Note

- HPNS는 Mattermost가 Apple App Store 및 Google Play Store를 통해 배포하는 사전 빌드된 앱에서만 작동합니다. 자체 모바일 앱을 빌드하는 경우 자체 Mattermost 푸시 프록시 서버 호스팅도 필요합니다. - 올바른 포트에서 푸시 프록시에 연결 가능해야 합니다. HPNS의 경우 Mattermost 서버에서 포트 443을 사용합니다. - Mattermost는 알림 데이터를 저장하지 않습니다. HPNS가 알림을 보낼 기기를 알아야 하므로 device_id와 같은 데이터만 서버 수준에서 저장됩니다.

테스트 푸시 알림 서비스 (TPNS)#

비상업적 자체 호스팅 고객은 Mattermost의 무료 기본 테스트 푸시 알림 서비스(Test Push Notifications Service, TPNS)를 사용할 수 있습니다.

Note

- TPNS는 프로덕션 환경에서 사용하는 것을 권장하지 않으며, 프로덕션 수준의 업데이트 서비스 수준 계약(SLA)을 제공하지 않습니다. - TPNS는 Mattermost Cloud 배포에서 사용할 수 없습니다. - TPNS는 Mattermost가 Apple App Store 및 Google Play Store를 통해 배포하는 사전 빌드된 모바일 앱에서만 작동합니다. 자체 모바일 앱을 빌드한 경우 자체 Mattermost 푸시 프록시 서비스 호스팅도 필요합니다. - 올바른 포트에서 푸시 프록시에 연결 가능해야 합니다. TPNS의 경우 Mattermost 서버에서 포트 80을 사용합니다. - 모바일 푸시 알림이 필요하지 않거나 원하지 않는 경우 대규모 배포에서 이 구성 설정을 비활성화하면 다음 영역에서 서버 성능이 향상될 수 있습니다:

  • 처리 부하 감소: 푸시 알림 생성 및 전송에는 처리 능력과 리소스가 필요합니다. 비활성화하면 서버가 해당 리소스를 다른 작업에 할당할 수 있습니다.
  • 네트워크 트래픽 감소: 푸시 알림은 네트워크 통신을 포함합니다. 비활성화하면 전송되는 데이터 양이 줄어들어 전반적인 네트워크 성능이 향상될 수 있습니다.
  • 데이터베이스 부하 감소: 각 푸시 알림은 데이터베이스에서 읽고 쓰는 작업을 수반할 수 있습니다. 이러한 작업을 줄이면 데이터베이스 부하가 감소하여 다른 쿼리의 응답 시간이 향상됩니다.
  • 응답 시간 단축: 알림 관련 처리 작업이 줄어들면 시스템이 사용자의 다른 요청에 더 빠르게 응답하여 사용자 경험이 향상됩니다.
  • 간소화된 오류 처리: 푸시 알림 서비스는 때로 실패하거나 지연 문제가 발생할 수 있어 추가 오류 처리가 필요합니다. 알림을 비활성화하면 시스템 운영이 간소화됩니다.
  • 그러나 푸시 알림을 비활성화하면 사용자 경험, 커뮤니케이션 효율성 및 전반적인 생산성에 부정적인 영향을 줄 수 있습니다. 성능 향상과 조직 및 사용자의 요구 사이의 균형을 맞추는 것이 중요합니다.

ID 전용 푸시 알림#

사용 가능 플랜: Entry, Enterprise, Enterprise Advanced(Professional 제외)

관리자는 Mattermost 구성 설정을 통해 Apple 및 Google에 전송되는 데이터를 제한하여 iOS 및 Android 알림 인프라 침해에 대해 Mattermost 고객을 보호하기 위해 모바일 알림을 완전히 비공개로 설정할 수 있습니다.

iOS 및 Android 애플리케이션에 알림을 보내는 표준 방식은 Apple 또는 Google에 일반 텍스트 메시지를 전송하여 사용자의 전화기로 전달하고 iOS 또는 Android에 표시하는 것입니다. Apple이나 Google은 데이터를 수집하거나 저장하지 않는다고 보장하지만, 해당 조직이 침해되거나 강요를 받는 경우 플랫폼의 모든 표준 모바일 알림이 손상될 수 있습니다.

이러한 위험을 피하기 위해 Mattermost는 모바일 알림 텍스트를 Apple이나 Google에 어떤 정보도 전달하지 않는 메시지 ID 번호로 대체하도록 구성할 수 있습니다. 사용자 전화기의 Mattermost 모바일 애플리케이션이 메시지 ID를 수신하면, 해당 ID를 사용하여 Mattermost 서버와 비공개로 통신하고 암호화된 채널을 통해 모바일 알림 메시지를 가져옵니다. 즉, 메시지 텍스트는 Apple이나 Google의 메시지 릴레이 시스템에 표시되지 않습니다. 메시지 내용은 Mattermost에도 도달하지 않습니다.

Note

Mattermost의 ID 전용 푸시 알림을 통한 비공개 모바일 기능으로 알림 메시지를 검색하는 추가 단계로 인해 최종 사용자는 Apple 및 Google 플랫폼을 통해 일반 텍스트를 전송하는 경우와 비교하여 모바일 알림이 완전히 표시되기 전에 약간의 지연을 경험할 수 있습니다.

ID 전용 푸시 알림 구성 설정에 대한 자세한 내용은 구성 설정 문서를 참조하세요. 데이터 프라이버시를 위한 ID 전용 푸시 알림 사용에 대한 자세한 내용은 모바일 앱 FAQ 문서를 참조하세요.

Mattermost 호스팅 푸시 알림 서비스(HPNS) 서버의 지역입니다.

지역을 선택하면 Push Notification Server 필드가 해당 URL로 자동으로 채워집니다:

  • Global: https://global.push.mattermost.com (아래의 지역별 엔드포인트에 걸쳐 요청을 로드 밸런싱합니다)
  • US: https://us.push.mattermost.com
  • EU (Germany): https://eu.push.mattermost.com
  • AP (Japan): https://ap.push.mattermost.com
  • 시스템 구성 경로: Environment > Push Notification Server
  • config.json 설정: EmailSettings > PushNotificationServer
  • 환경 변수: MM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER
Note

https://us.push.mattermost.com은 이전 https://push.mattermost.com URL을 대체하며, https://eu.push.mattermost.com은 이전 https://hpns-de.mattermost.com URL을 대체합니다. 이전 URL은 여전히 작동하지만 더 이상 사용되지 않으며(deprecated), 현재는 위의 대체 URL과 동일한 새 인프라를 가리킵니다.

@all, @here, @channel이 성능 극대화를 위해 데스크톱, 이메일, 모바일 푸시 알림을 더 이상 전송하지 않게 되는 채널당 최대 총 사용자 수입니다.

숫자 입력. 기본값은 1000입니다.

  • 시스템 구성 경로: Environment > Push Notification Server
  • config.json 설정: TeamSettings > MaxNotificationsPerChannel > 1000
  • 환경 변수: MM_EMAILSETTINGS_MAXNOTIFICATIONSPERCHANNEL
Note
  • 이 값을 조금씩 늘리고, 성능 모니터링 메트릭을 추적하여 시스템 상태를 모니터링하며, 읽기 전용 채널과 같이 채널에 게시할 수 있는 사람을 제한하는 제한된 권한이 있는 대형 채널이 있는 경우에만 이 값을 늘리는 것을 권장합니다.
  • 대규모 배포에서 이 구성 설정 값을 10으로 줄이면 다음 영역에서 서버 성능이 향상될 수 있습니다:
    • 알림 시스템 부하 감소: 각 알림은 일정량의 계산 및 네트워크 부하를 생성합니다. 채널당 알림 수를 제한하면 시스템이 더 적은 알림을 처리하여 서버 부하가 줄어듭니다.
    • 데이터베이스 효율성: 알림은 일반적으로 데이터베이스에 저장됩니다. 알림이 적으면 데이터베이스 쓰기 및 읽기 빈도가 줄어들어 데이터베이스 작업이 빨라지고 지연이 감소합니다.
    • 클라이언트 처리 최소화: 사용자의 클라이언트(예: 데스크톱 및 모바일 앱)는 알림을 가져와 처리해야 합니다. 알림이 적으면 클라이언트가 더 효율적으로 작동하여 사용자 기기의 메모리 및 CPU 사용량이 줄어듭니다.
    • 사용자 경험 향상: 알림이 너무 많으면 사용자에게 성능 지연 및 혼란스러운 경험을 유발할 수 있습니다. 수를 제한하면 사용자가 가장 중요한 알림만 받게 되어 사용성과 응답 시간이 향상될 수 있습니다.
    • 네트워크 대역폭: 많은 수의 알림, 특히 많은 사용자에게 전송되는 경우 많은 대역폭을 소비할 수 있습니다. 알림이 적으면 전반적인 네트워크 사용량이 줄어들고 중요한 메시지의 전달이 빨라질 수 있습니다.
    • 서버 부하 분산: 알림 수를 줄이면 워크로드를 서버 전체에 더 균등하게 분산할 수 있어 더 나은 부하 분산이 이루어지고 단일 서버가 병목 현상이 되는 것을 방지합니다.

고가용성#

사용 가능 플랜: Enterprise, Enterprise Advanced

자체 호스팅 배포에서는 System Console > Environment > High Availability로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 편집하여 Mattermost를 고가용성 클러스터 기반 배포로 구성할 수 있습니다. 이 섹션의 구성 설정 변경 사항은 서버를 재시작해야 적용됩니다.

Mattermost 고가용성 클러스터 기반 배포에서 구성에 config.json을 사용하면 System Console이 기본적으로 읽기 전용으로 설정되며, 설정은 config.json 파일을 직접 편집해야만 변경할 수 있습니다. 단, 고가용성 클러스터 기반 환경을 테스트하려면 config.json 파일에서 ClusterSettings.ReadOnlyConfig를 false로 설정하여 비활성화할 수 있습니다. 이렇게 하면 System Console을 통해 적용된 변경 사항이 구성 파일에 다시 저장됩니다. 구성을 데이터베이스에 저장하는 경우에는 ClusterSettings.ReadOnlyConfig가 무시되며 System Console을 완전히 편집할 수 있습니다. 자세한 내용은 데이터베이스에 구성 저장을 참조하세요.

고가용성 모드 활성화#

고가용성 모드를 활성화할 수 있습니다.

  • true: Mattermost 서버가 클러스터 이름이 같은 클러스터 내 다른 서버와 노드 간 통신을 시도합니다. 서버 간 config.json 파일의 동기화를 유지하기 위해 System Console이 읽기 전용 모드로 설정됩니다.
  • false: (기본값) Mattermost 고가용성 모드가 비활성화됩니다.
  • 시스템 구성 경로: Environment > High Availability
  • config.json 설정: ClusterSettings > Enable > false
  • 환경 변수: MM_CLUSTERSETTINGS_ENABLE

클러스터 이름#

고가용성 클러스터 기반 배포에서 이름으로 참여할 클러스터입니다.

클러스터 이름이 같은 노드만 서로 결합합니다. 이는 블루-그린 배포 또는 같은 데이터베이스를 가리키는 스테이징 환경을 지원하기 위한 것입니다.

  • 시스템 구성 경로: Environment > High Availability
  • config.json 설정: ClusterSettings > ClusterName
  • 환경 변수: MM_CLUSTERSETTINGS_CLUSTERNAME

호스트명 재정의#

이 서버의 호스트명을 재정의할 수 있습니다.

  • 필요한 경우 이 속성을 특정 IP 주소로 설정할 수 있지만, 꼭 필요한 경우가 아니라면 호스트명을 재정의하지 않는 것을 권장합니다.
  • 비워 두면 Mattermost가 운영 체제에서 호스트명을 가져오거나 IP 주소를 사용합니다.
  • 시스템 구성 경로: Environment > High Availability
  • config.json 설정: ClusterSettings > OverrideHostname
  • 환경 변수: MM_CLUSTERSETTINGS_OVERRIDEHOSTNAME

자세한 내용은 고가용성 클러스터 기반 배포 문서를 참조하세요.

IP 주소 사용#

고가용성 클러스터 기반 배포가 IP 주소 대신 호스트명을 사용하여 통신하도록 구성할 수 있습니다.

  • true: (기본값) 클러스터가 지정된 IP 주소를 사용하여 통신을 시도합니다.
  • false: 클러스터가 호스트명을 사용하여 통신을 시도합니다.
  • 시스템 구성 경로: Environment > High Availability
  • config.json 설정: ClusterSettings > UseIPAddress > true
  • 환경 변수: MM_CLUSTERSETTINGS_USEIPADDRESS

가십 암호화 활성화#

가십 암호화는 기본적으로 AES-256을 사용하며, 이 값은 설계상 구성할 수 없습니다.

  • true: (기본값) 서버가 지정된 가십 포트를 통해 가십 프로토콜로 통신을 시도합니다.
  • false: 서버가 스트리밍 포트를 통해 통신을 시도합니다.
  • 시스템 구성 경로: Environment > High Availability
  • config.json 설정: ClusterSettings > EnableGossipEncryption > true
  • 환경 변수: MM_CLUSTERSETTINGS_ENABLEGOSSIPENCRYPTION
Note
  • Gossip 프로토콜은 코넬 대학교 연구진이 개발한 SWIM 프로토콜에 설명된 원칙을 기반으로 합니다. Gossip 프로토콜은 분산 시스템에서 노드가 무작위로 정보를 교환하여 네트워크 전체의 데이터 일관성을 보장하는 통신 메커니즘입니다. 탈중앙화, 확장성, 내결함성을 갖추고 있어 노드 수가 많은 시스템에 이상적입니다. 정보는 소셜 가십과 유사한 방식으로 확산되며, 네트워크가 일관된 상태로 수렴될 때까지 노드가 주기적으로 랜덤 피어에게 업데이트를 "가십"합니다. 분산 데이터베이스, 블록체인 네트워크, P2P 시스템에서 널리 사용되며, 구현이 간단하고 노드 장애에 강하지만 대규모 네트워크에서는 중복성과 전파 지연이 발생할 수 있습니다.
  • 또는 Systems 테이블에서 ClusterEncryptionKey 행 값을 수동으로 설정할 수 있습니다. 키는 base64로 변환된 바이트 배열입니다. AES-128, AES-192, AES-256을 선택하려면 이 값을 각각 16, 24, 32바이트로 설정합니다.
  • Mattermost v10.11부터 모든 새 배포에서 기본적으로 가십 암호화가 활성화됩니다. 기존 배포에서는 수동으로 암호화를 활성화하지 않으면 Gossip 프로토콜을 사용하는 모든 통신이 암호화되지 않은 상태로 유지됩니다. v10.11 이전에는 Cloud 배포에서 기본적으로 가십 암호화가 활성화되고 자체 호스팅 배포에서는 기본적으로 비활성화됩니다.

가십 압축 활성화#

더 나은 성능을 위해 이 구성 설정을 비활성화하는 것을 권장합니다.

  • true: (자체 호스팅 배포 기본값) 클러스터를 통한 모든 통신에 가십 압축을 사용합니다. 이 설정은 이전 버전 서버와의 호환성을 유지하기 위해 기본적으로 활성화되어 있습니다.
  • false: (Cloud 배포 기본값) 가십 프로토콜을 사용하는 모든 통신이 압축되지 않은 상태로 유지됩니다.
  • 시스템 구성 경로: Environment > High Availability
  • config.json 설정: ClusterSettings > EnableGossipCompression > true
  • 환경 변수: MM_CLUSTERSETTINGS_ENABLEGOSSIPCOMPRESSION

가십 포트#

가십 프로토콜에 사용하는 포트입니다. 이 포트에서 UDP와 TCP를 모두 허용해야 합니다.

숫자 입력입니다. 기본값은 8074입니다.

  • 시스템 구성 경로: Environment > High Availability
  • config.json 설정: ClusterSettings > GossipPort > 8074
  • 환경 변수: MM_CLUSTERSETTINGS_GOSSIPPORT

읽기 전용 구성#

  • true: (기본값) System Console에서 설정에 적용한 변경 사항이 무시됩니다.
  • false: System Console에서 설정에 적용한 변경 사항이 config.json에 기록됩니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: ClusterSettings > ReadOnlyConfig > true
  • 환경 변수: MM_CLUSTERSETTINGS_READONLYCONFIG

네트워크 인터페이스#

고가용성 클러스터 기반 배포에서 자동 IP 감지를 수행하는 장치를 식별하는 데 사용하는 IP 주소입니다.

문자열 입력입니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: ClusterSettings > NetworkInterface > ""
  • 환경 변수: MM_CLUSTERSETTINGS_NETWORKINTERFACE

바인드 주소#

클러스터 트래픽을 특정 네트워크 장치에 바인딩하는 데 사용하는 IP 주소입니다.

이 설정은 주로 네트워크 장치가 여러 개이거나, NAT(Network Address Translation)가 포함된 배포처럼 바인드 주소와 광고 주소가 다른 서버에서 사용합니다.

문자열 입력입니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: ClusterSettings > BindAddress > ""
  • 환경 변수: MM_CLUSTERSETTINGS_BINDADDRESS

광고 주소#

다른 노드에서 서버에 접근하는 데 사용하는 IP 주소입니다. 이 설정은 주로 클러스터 노드가 같은 네트워크에 있지 않고 NAT(Network Address Translation)가 포함된 경우에 사용합니다.

문자열 입력입니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: ClusterSettings > AdvertiseAddress > ""
  • 환경 변수: MM_CLUSTERSETTINGS_ADVERTISEADDRESS

속도 제한#

자체 호스팅 배포에서 속도 제한은 Mattermost 서버가 너무 많은 요청으로 과부하되는 것을 방지하고 서버에 대한 서드파티 애플리케이션이나 악의적인 공격의 위험과 영향을 줄입니다.

System Console > Environment > Rate Limiting으로 이동하거나 아래 표에 설명된 대로 config.json 파일을 편집하여 속도 제한 설정을 구성합니다. 이 섹션의 구성 설정을 변경하려면 적용되기 전에 서버를 재시작해야 합니다.

Important

Mattermost 속도 제한 구성 설정은 수백 명의 사용자까지의 소규모 Mattermost 배포를 위한 것이며, 대규모 엔터프라이즈 배포에는 적합하지 않습니다.

API를 초당 지정된 수의 요청으로 제한하는 속도 제한을 활성화하거나 비활성화합니다.

  • true: 초당 최대 쿼리 수 구성 설정에 지정된 속도로 API가 제한됩니다.
  • false: (기본값) API 접근이 제한되지 않습니다.
  • 시스템 구성 경로: Environment > Rate Limiting
  • config.json 설정: RateLimitSettings > Enable > false
  • 환경 변수: MM_RATELIMITSETTINGS_ENABLE

속도 제한이 활성화된 경우 초당 이 수의 요청으로 API를 제한합니다.

숫자 입력. 기본값은 10입니다.

초당 더 많은 요청을 허용하려면 이 값을 높이고, 더 적은 요청을 허용하려면 이 값을 낮춥니다.

  • 시스템 구성 경로: Environment > Rate Limiting
  • config.json 설정: RateLimitSettings > PerSec > 10
  • 환경 변수: MM_RATELIMITSETTINGS_PERSEC

속도 제한이 활성화된 경우 초당 쿼리 제한을 초과하여 허용되는 최대 요청 수입니다.

숫자 입력. 기본값은 100입니다.

더 많은 동시 요청을 처리하려면 이 값을 높이고, 이 용량을 제한하려면 이 값을 낮춥니다.

  • 시스템 구성 경로: Environment > Rate Limiting
  • config.json 설정: RateLimitSettings > MaxBurst > 100
  • 환경 변수: MM_RATELIMITSETTINGS_MAXBURST

속도 제한이 활성화된 경우 다양한 속도 제한 설정에 따라 시스템에 연결된 최대 사용자 세션 수입니다.

숫자 입력. 기본값은 10000입니다. 일반적으로 시스템의 사용자 수로 설정합니다.

예상 사용자 수로 이 값을 설정하는 것을 권장합니다. 값이 높으면 리소스가 충분히 활용되지 않을 수 있으며, 값이 낮으면 사용자 세션/토큰이 너무 자주 만료될 수 있습니다.

  • 시스템 구성 경로: Environment > Rate Limiting
  • config.json 설정: RateLimitSettings > MemoryStoreSize > 10000
  • 환경 변수: MM_RATELIMITSETTINGS_MEMORYSTORESIZE

속도 제한이 활성화된 경우 IP 주소별로 API 접근을 속도 제한하도록 Mattermost를 구성합니다.

  • true: (기본값) IP 주소별로 API 접근을 속도 제한합니다. 프록시 사용 시 권장됩니다.
  • false: IP 주소별로 속도 제한이 다르게 적용되지 않습니다.
  • 시스템 구성 경로: Environment > Rate Limiting
  • config.json 설정: RateLimitSettings > VaryByRemoteAddr > true
  • 환경 변수: MM_RATELIMITSETTINGS_VARYBYREMOTEADDR

속도 제한이 활성화된 경우 인증 토큰별로 API 접근을 속도 제한할지 여부를 설정합니다.

  • true: 사용자 인증 토큰별로 API 접근을 속도 제한합니다. 프록시 사용 시 권장됩니다.
  • false: (기본값) 사용자 인증 토큰별로 속도 제한이 다르게 적용되지 않습니다.
  • 시스템 구성 경로: Environment > Rate Limiting
  • config.json 설정: RateLimitSettings > VaryByUser > false
  • 환경 변수: MM_RATELIMITSETTINGS_VARYBYUSER

지정된 HTTP 헤더 필드에 따라 API 접근 속도 제한을 다르게 적용하도록 Mattermost를 구성합니다. 프록시 사용 시 권장됩니다.

  • NGINX 구성 시 X-Real-IP로 설정합니다.
  • AmazonELB 구성 시 X-Forwarded-For로 설정합니다.
  • 시스템 구성 경로: Environment > Rate Limiting
  • config.json 설정: RateLimitSettings > VaryByHeader > ""
  • 환경 변수: MM_RATELIMITSETTINGS_VARYBYHEADER

로깅#

Mattermost는 자체 호스팅 배포를 위해 운영 및 규정 준수 요구 사항을 충족하도록 별도의 로그 파일 및 순환 정책으로 개별 구성할 수 있는 3가지 독립적인 로깅 시스템을 제공합니다:

기본적으로 모든 Mattermost 에디션은 콘솔과 머신이 읽을 수 있는 JSON 형식의 mattermost.log 파일 모두에 로그를 기록합니다. Mattermost Enterprise 및 Professional 고객은 syslog 및 TCP 소켓 대상에 직접 로그를 기록할 수도 있습니다.

로그 설정#

System Console > Environment > Logging으로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 편집하여 일반 로깅을 구성합니다. 이 섹션의 구성 설정 변경 사항은 서버를 재시작해야 적용됩니다.

콘솔에 로그 출력#

Mattermost가 일반 로그를 콘솔에 출력하도록 구성합니다.

  • true: (기본값) 콘솔 로그 수준 구성에 따라 출력 로그 메시지가 콘솔에 기록됩니다. 서버는 메시지를 표준 출력 스트림(stdout)에 기록합니다.
  • false: 출력 로그 메시지가 콘솔에 기록되지 않습니다.
  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > EnableConsole > true
  • 환경 변수: MM_LOGSETTINGS_ENABLECONSOLE
Note

Mattermost v11.0부터 알림 로그는 메인 콘솔 로그에 자동으로 포함됩니다.

콘솔 로그 수준#

Mattermost가 로그 메시지를 콘솔에 출력할 때 기록되는 일반 로그 이벤트의 상세 수준입니다.

  • DEBUG: (기본값) 문제를 디버깅하는 개발자를 위해 상세한 정보를 출력합니다.
  • ERROR: 오류 메시지만 출력합니다.
  • INFO: 오류 메시지와 시작 및 초기화에 관한 정보를 출력합니다.
  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > ConsoleLevel > "DEBUG"
  • 환경 변수: MM_LOGSETTINGS_CONSOLELEVEL

콘솔 로그를 JSON으로 출력#

Mattermost가 일반 콘솔 로그를 JSON으로 출력하도록 구성합니다.

  • true: (기본값) 기록되는 이벤트가 머신이 읽을 수 있는 JSON 형식으로 작성됩니다.
  • false: 기록되는 이벤트가 일반 텍스트로 작성됩니다.
  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > ConsoleJson > true
  • 환경 변수: MM_LOGSETTINGS_CONSOLEJSON

일반적으로 프로덕션 환경에서는 true로 설정합니다.

일반 텍스트 콘솔 로그 색상 표시#

시스템 관리자가 일반 텍스트로 된 일반 로그 수준 세부 정보를 색상으로 표시할 수 있도록 합니다.

  • true: 기록되는 이벤트가 일반 텍스트로 콘솔에 출력될 때 로그 수준 세부 정보에 색상을 표시합니다.
  • false: (기본값) 콘솔에서 일반 텍스트 로그 세부 정보에 색상을 표시하지 않습니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: LogSettings > EnableColor > false
  • 환경 변수: MM_LOGSETTINGS_ENABLECOLOR

파일에 로그 출력#

Mattermost가 일반 콘솔 로그를 파일로 출력하도록 구성합니다.

  • true: (기본값) 파일 로그 수준 구성에 따라 기록되는 이벤트가 file location으로 구성된 디렉터리에 있는 mattermost.log 파일에 작성됩니다.
  • false: 기록되는 이벤트가 파일에 작성되지 않습니다.
  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > EnableFile > true
  • 환경 변수: MM_LOGSETTINGS_ENABLEFILE
Note
  • Mattermost v11.0부터 알림 로그는 메인 파일 로그에 자동으로 포함됩니다.
  • 이 설정은 일반적으로 프로덕션 환경에서 true로 설정합니다. 활성화하면 System Console > Reporting > Server Logs로 이동하여 로그 다운로드를 선택해 mattermost.log 파일을 로컬에 다운로드할 수 있습니다.

파일 로그 디렉터리#

일반 로그 파일의 위치입니다.

문자열 입력입니다. 비워 두면 로그 파일이 ./logs 디렉터리에 저장됩니다.

  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > FileLocation > ""
  • 환경 변수: MM_LOGSETTINGS_FILELOCATION
Note
  • 설정한 경로가 존재해야 하며, Mattermost는 해당 디렉터리에 쓰기 권한을 가져야 합니다.
  • Mattermost v11.4부터 MM_LOG_PATH 환경 변수를 사용하여 로그 파일 위치를 지정된 루트 디렉터리로 제한할 수 있습니다. 이 보안 기능은 LogSettings.FileLocation, LogSettings.AdvancedLoggingJSON, ExperimentalAuditSettings.FileName 또는 ExperimentalAuditSettings.AdvancedLoggingJSON을 통해 구성된 모든 로그 파일이 승인된 로깅 디렉터리 내에 유지되도록 합니다.
    • MM_LOG_PATH가 설정되지 않은 경우 기본 logs 디렉터리가 사용됩니다. 루트 디렉터리 외부의 경로는 오류 로그를 생성하며 지원 패킷 다운로드에서 제외됩니다. 자세한 내용은 로그 경로 제한 문서를 참조하세요.
    • 기본적으로 루트 디렉터리 외부의 경로는 오류로만 기록되며 구성은 그대로 수락됩니다. 대신 해당 경로를 거부하려면 EnforceLogPathRoot 기능 플래그(MM_FEATUREFLAGS_ENFORCELOGPATHROOT=true)를 설정하세요. 이 경우 서버가 시작되지 않으며, 이러한 경로를 도입하는 구성 변경은 오류와 함께 거부됩니다. 현재 강제 적용은 선택 사항이며 향후 릴리즈에서 기본값이 될 예정이므로, 모든 로그 경로가 MM_LOG_PATH 내부로 확인되는 것을 점검한 후 활성화하는 것을 권장합니다.

파일 로그 수준#

Mattermost가 로그 메시지를 파일로 출력할 때 기록되는 일반 로그 이벤트의 상세 수준입니다.

  • DEBUG: 문제를 디버깅하는 개발자를 위해 상세한 정보를 출력합니다.
  • ERROR: 오류 메시지만 출력합니다.
  • INFO: (기본값) 오류 메시지와 시작 및 초기화에 관한 정보를 출력합니다.
  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > FileLevel > "INFO"
  • 환경 변수: MM_LOGSETTINGS_FILELEVEL
#### 파일 로그를 JSON으로 출력

Mattermost가 일반 파일 로그를 JSON으로 출력하도록 구성합니다.

  • true: (기본값) 기록되는 이벤트가 머신이 읽을 수 있는 JSON 형식으로 작성됩니다.
  • false: 기록되는 이벤트가 일반 텍스트로 작성됩니다.
  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > FileJson > true
  • 환경 변수: MM_LOGSETTINGS_FILEJSON

일반적으로 프로덕션 환경에서는 true로 설정합니다.

웹훅 디버깅 활성화#

Mattermost가 디버깅을 위해 일반 인커밍 웹훅의 내용을 콘솔 및/또는 파일 로그에 캡처하도록 구성합니다.

  • true: (기본값) 디버깅을 위해 인커밍 웹훅의 내용이 로그 파일에 출력됩니다.
  • false: 인커밍 웹훅의 내용이 로그 파일에 출력되지 않습니다.
  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > EnableWebhookDebugging > true
  • 환경 변수: MM_LOGSETTINGS_ENABLEWEBHOOKDEBUGGING
Note

인커밍 웹훅의 요청 본문을 로그에 포함하려면 파일 로그 수준을 DEBUG로 변경하여 디버그 로그를 활성화하세요.

여러 대상에 로그 출력#

Mattermost가 콘솔, 로컬 파일, syslog, TCP 소켓 대상의 모든 조합을 허용하고 일반 로그 레코드를 여러 대상으로 전송하도록 구성합니다.

문자열 입력에는 다른 구성 파일에 대한 파일 사양(filespec), 데이터베이스 DSN 또는 JSON을 포함할 수 있습니다.

  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > AdvancedLoggingJSON > ": ""
  • 환경 변수: MM_LOGSETTINGS_ADVANCEDLOGGINGJSON
Note
  • 자세한 내용은 Mattermost 로깅 문서를 참조하세요. 이러한 대상은 추가 소프트웨어를 설치하지 않고도 대부분의 로그 수집기와 기타 로그 분석 도구를 지원하기 때문에 선택되었습니다.
  • 로그는 호출자에 대한 지연 시간을 줄이기 위해 비동기식으로 기록됩니다.
  • 고급 로깅은 로거 구성의 핫 리로드를 지원합니다.
  • Mattermost v11.4부터 AdvancedLoggingJSON 구성에 지정하는 파일 경로는 MM_LOG_PATH 환경 변수로 지정한 디렉터리 내에 있어야 합니다. 자세한 내용은 로그 경로 제한을 참조하세요.

최대 필드 크기#

시스템 관리자가 로깅 중 일반 로그 필드의 크기를 제한할 수 있도록 합니다.

숫자 값입니다. 기본값은 2048입니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: LogSettings > MaxFieldSize > 2048
  • 환경 변수: MM_LOGSETTINGS_MAXFIELDSIZE

진단 및 오류 보고 활성화#

서버 오류와 충돌을 Sentry를 통해 Mattermost에 보고할지 여부를 제어합니다.

  • true: (기본값) 오류 및 충돌 보고서가 Mattermost의 Sentry 엔드포인트로 전송됩니다.
  • false: 오류 또는 충돌 데이터가 전송되지 않습니다.
  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > EnableDiagnostics > true
  • 환경 변수: MM_LOGSETTINGS_ENABLEDIAGNOSTICS
Note

Mattermost가 수집하는 정보에 대한 자세한 내용은 원격 측정 문서를 참조하세요.

Sentry 보고 활성화#

일반 오류 보고서를 Sentry로 전송할지 여부입니다.

  • true: (기본값) 오류 보고서를 Sentry로 전송합니다. 기본값은 EnableDiagnostics 설정과 일치합니다.
  • false: 오류 보고서를 Sentry로 전송하지 않습니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: LogSettings > EnableSentry > true
  • 환경 변수: MM_LOGSETTINGS_ENABLESENTRY

알림 로깅#

Important

Mattermost v11부터 알림 로그 설정은 표준 콘솔 로그와 mattermost.log 파일에 통합되었습니다. 이제 기본 로그 수준 설정이 서버 로그와 알림 로그를 모두 제어하므로, 고급 로깅 설정을 사용하지 않고는 알림 로깅을 비활성화할 수 없습니다.

개별 알림 로그 수준인 NotificationError, NotificationWarn, NotificationInfo, NotificationDebug, NotificationTrace와 함께 AdvancedLoggingJSON 구성을 사용하면 알림 로그를 별도 파일로 분리하여 문제 해결 시 불필요한 정보를 줄일 수 있습니다. 자세한 내용은 고급 로깅을 참조하세요.

다음 구성 설정은 v11.0 이전의 Mattermost 서버 버전에만 적용됩니다.

다음 표에서 설명한 대로 config.json 파일을 편집하여 Mattermost 알림에 대한 로깅을 별도로 구성할 수 있습니다. 이 설정은 기본 LogSettings와 독립적으로 동작하며, 알림 하위 시스템에 대한 로깅 동작을 구체적으로 사용자 지정할 수 있습니다. 이러한 구성 설정의 변경 사항은 서버를 재시작해야 적용됩니다.

콘솔에 로그 출력#

Mattermost가 알림 로그를 콘솔에 출력하도록 구성합니다.

  • true: (기본값) 콘솔 로그 수준 구성에 따라 출력 로그 메시지가 콘솔에 기록됩니다. 서버는 메시지를 표준 출력 스트림(stdout)에 기록합니다.
  • false: 출력 로그 메시지가 콘솔에 기록되지 않습니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: NotificationLogSettings > EnableConsole > true
  • 환경 변수: MM_NOTIFICATIONLOGSETTINGS_ENABLECONSOLE

콘솔 로그 수준#

Mattermost가 로그 메시지를 콘솔에 출력할 때 기록되는 알림 로그 이벤트의 상세 수준입니다.

  • DEBUG: (기본값) 문제를 디버깅하는 개발자를 위해 상세한 정보를 출력합니다.
  • ERROR: 오류 메시지만 출력합니다.
  • INFO: 오류 메시지와 시작 및 초기화에 관한 정보를 출력합니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: NotificationLogSettings > ConsoleLevel > "DEBUG"
  • 환경 변수: MM_NOTIFICATIONLOGSETTINGS_CONSOLELEVEL

콘솔 로그를 JSON으로 출력#

Mattermost가 알림 콘솔 로그를 JSON으로 출력하도록 구성합니다.

  • true: (기본값) 기록되는 이벤트가 머신이 읽을 수 있는 JSON 형식으로 작성됩니다.
  • false: 기록되는 이벤트가 일반 텍스트로 작성됩니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: NotificationLogSettings > ConsoleJson > true
  • 환경 변수: MM_NOTIFICATIONLOGSETTINGS_CONSOLEJSON

일반적으로 프로덕션 환경에서는 true로 설정합니다.

일반 텍스트 콘솔 로그 색상 표시#

시스템 관리자가 일반 텍스트로 된 알림 로그 수준 세부 정보를 색상으로 표시할 수 있도록 합니다.

  • true: 기록되는 이벤트가 일반 텍스트로 콘솔에 출력될 때 로그 수준 세부 정보에 색상을 표시합니다.
  • false: (기본값) 콘솔에서 일반 텍스트 로그 세부 정보에 색상을 표시하지 않습니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: NotificationLogSettings > EnableColor > false
  • 환경 변수: MM_NOTIFICATIONLOGSETTINGS_ENABLECOLOR

파일에 로그 출력#

Mattermost가 알림 콘솔 로그를 파일로 출력하도록 구성합니다.

  • true: (기본값) 파일 로그 수준 구성에 따라 기록되는 이벤트가 file location으로 구성된 디렉터리에 있는 notifications.log 파일에 작성됩니다.
  • false: 기록되는 이벤트가 파일에 작성되지 않습니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: NotificationLogSettings > EnableFile > true
  • 환경 변수: MM_NOTIFICATIONLOGSETTINGS_ENABLEFILE

파일 로그 디렉터리#

알림 로그 파일의 위치입니다.

문자열 입력입니다. 비워 두면 로그 파일이 ./logs 디렉터리에 저장됩니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: NotificationLogSettings > FileLocation > ""
  • 환경 변수: MM_NOTIFICATIONLOGSETTINGS_FILELOCATION
Note

설정한 경로가 존재해야 하며, Mattermost는 해당 디렉터리에 쓰기 권한을 가져야 합니다.

파일 로그 수준#

Mattermost가 로그 메시지를 파일로 출력할 때 기록되는 알림 로그 이벤트의 상세 수준입니다.

  • DEBUG: 문제를 디버깅하는 개발자를 위해 상세한 정보를 출력합니다.
  • ERROR: 오류 메시지만 출력합니다.
  • INFO: (기본값) 오류 메시지와 시작 및 초기화에 관한 정보를 출력합니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: NotificationLogSettings > FileLevel > "INFO"
  • 환경 변수: MM_NOTIFICATIONLOGSETTINGS_FILELEVEL

파일 로그를 JSON으로 출력#

Mattermost가 알림 파일 로그를 JSON으로 출력하도록 구성합니다.

  • true: (기본값) 기록되는 이벤트가 머신이 읽을 수 있는 JSON 형식으로 작성됩니다.
  • false: 기록되는 이벤트가 일반 텍스트로 작성됩니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: NotificationLogSettings > FileJson > true
  • 환경 변수: MM_NOTIFICATIONLOGSETTINGS_FILEJSON

여러 대상에 로그 출력#

Mattermost가 콘솔, 로컬 파일, syslog, TCP 소켓 대상의 모든 조합을 허용하고 알림 로그 레코드를 여러 대상으로 전송하도록 구성합니다.

문자열 입력에는 다른 구성 파일에 대한 파일 사양(filespec), 데이터베이스 DSN 또는 JSON을 포함할 수 있습니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: NotificationLogSettings > AdvancedLoggingJSON > ": ""
  • 환경 변수: MM_NOTIFICATIONLOGSETTINGS_ADVANCEDLOGGINGJSON

감사 로깅#

사용 가능 플랜: Enterprise, Enterprise Advanced

System Console > Compliance > Audit Logging으로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 편집하여 감사 로깅을 구성합니다. 이 설정은 기본 LogSettings와 독립적으로 동작하며, 감사 하위 시스템에 대한 로깅 동작을 구체적으로 사용자 지정할 수 있습니다. 이러한 구성 설정의 변경 사항은 서버를 재시작해야 적용됩니다.

감사 로그를 파일에 출력#

감사 로그 파일을 디스크에 기록할지 여부입니다.

  • true: 기록되는 이벤트가 감사 파일 이름 구성 설정에 지정된 파일에 작성됩니다.
  • false: (기본값) 감사 로그 파일이 기록되지 않습니다.
  • 시스템 구성 경로: Compliance > Audit Logging
  • config.json 설정: ExperimentalAuditSettings > FileEnabled > false
  • 환경 변수: MM_EXPERIMENTALAUDITSETTINGS_FILEENABLED
Note

FileEnabled를 true로 설정하면 감사 파일 이름을 반드시 설정해야 합니다.

감사 파일 이름#

감사 로그 파일의 이름입니다.

감사 파일에 설정하는 경로가 존재해야 하며 Mattermost가 해당 경로에 쓰기 권한을 가져야 합니다.

예시: /var/log/mattermost_audit.log

  • 시스템 구성 경로: Compliance > Audit Logging
  • config.json 설정: ExperimentalAuditSettings > FileName > ""
  • 환경 변수: MM_EXPERIMENTALAUDITSETTINGS_FILENAME
Note

감사 로그를 파일에 출력을 활성화한 경우 파일 이름을 반드시 설정해야 합니다. 파일 순환과 고급 감사 로그 출력을 구성하려면 AdvancedLoggingJSON 설정을 사용하세요.

감사 로그 인증서#

감사 로깅을 위한 인증서 구성입니다.

문자열 입력입니다. 기본값은 비어 있습니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: ExperimentalAuditSettings > Certificate > ""
  • 환경 변수: MM_EXPERIMENTALAUDITSETTINGS_CERTIFICATE

감사 로그를 여러 대상에 출력#

Mattermost가 감사 로그 레코드를 여러 대상으로 출력하도록 구성합니다.
  • 시스템 구성 경로: Compliance > Audit Logging
  • config.json 설정: ExperimentalAuditSettings > AdvancedLoggingJSON > {}
  • 환경 변수: MM_EXPERIMENTALAUDITSETTINGS_ADVANCEDLOGGINGJSON
Note
  • 고급 로깅 구성에 대한 자세한 내용은 Mattermost 로깅 문서를 참조하세요. 이러한 대상은 추가 소프트웨어를 설치하지 않고도 대부분의 로그 수집기와 기타 로그 분석 도구를 지원하기 때문에 선택되었습니다.
  • 감사 로그는 호출자에 대한 지연 시간을 줄이기 위해 비동기식으로 기록됩니다.
  • 고급 감사 로깅은 로거 구성의 핫 리로드를 지원합니다.
  • Mattermost v12.0부터 기본 제공 감사 로그 파일 대상은 audit-delivery 로그 수준을 기록하지 않으므로, levels 목록에 {"id": 104, "name": "audit-delivery"}가 포함된 대상을 여기에 추가하지 않으면 게시물 전달 감사 레코드가 삭제됩니다.

세션 길이#

자체 호스팅 배포에서는 사용자가 로그인을 시도할 때 사용자 세션이 삭제되며, 세션 데이터베이스 테이블에서 24시간마다 세션이 삭제됩니다. System Console > Environment > Session Lengths로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 편집하여 세션 길이를 구성합니다. 이 섹션의 구성 설정 변경 사항은 서버를 재시작해야 적용됩니다.

활동에 따라 세션 길이 연장#

사용자가 Mattermost 앱에서 활동 중이면 세션을 연장하고 로그인 상태를 유지하여 사용자 환경을 개선합니다.

  • true: (기본값) 사용자가 Mattermost 클라이언트에서 활동 중이면 세션이 자동으로 연장됩니다. 사용자 세션은 정의된 세션 길이 전체 동안 사용자가 Mattermost 클라이언트에서 활동하지 않은 경우에만 만료됩니다.
  • false: Mattermost에서의 활동으로 세션이 연장되지 않습니다. 사용자 세션은 세션 길이가 끝나는 시점 또는 구성된 세션 유휴 타임아웃에 따라 즉시 만료됩니다.
  • 시스템 구성 경로: Environment > Session Lengths
  • config.json 설정: ServiceSettings > ExtendSessionLengthWithActivity > true
  • 환경 변수: MM_SERVICESETTINGS_EXTENDSESSIONLENGTHWITHACTIVITY

비밀번호 변경 시 세션 종료#

사용자의 비밀번호가 변경될 때 세션 해지를 활성화하거나 비활성화합니다.

  • true: (신규 배포 기본값) 세션 해지가 활성화됩니다. 사용자 본인 또는 시스템 관리자가 비밀번호를 변경하면 해당 사용자의 모든 세션이 만료됩니다. 사용자가 직접 비밀번호를 변경한 경우 현재 세션은 종료되지 않습니다.
  • false: (기존 배포 기본값) 세션 해지가 비활성화됩니다. 사용자가 비밀번호를 변경하면 해당 사용자의 현재 세션만 해지됩니다. 시스템 관리자가 사용자의 비밀번호를 변경하면 해당 사용자의 세션은 하나도 해지되지 않습니다.
  • 시스템 구성 경로: Environment > Session Lengths
  • config.json 설정: ServiceSettings > TerminateSessionsOnPasswordChange > true
  • 환경 변수: MM_SERVICESETTINGS_TERMINATESESSIONSONPASSWORDCHANGE

AD/LDAP 및 이메일 세션 길이#

사용자가 웹 앱 또는 데스크톱 앱에 마지막으로 자격 증명을 입력한 시점부터 이메일 및 AD/LDAP 인증 사용자 세션이 만료될 때까지의 시간(시간 단위)을 설정합니다.

시간 단위 숫자 입력입니다. 기본값은 720시간입니다.

  • 시스템 구성 경로: Environment > Session Lengths
  • config.json 설정: ServiceSettings > SessionLengthWebInHours > 720
  • 환경 변수: MM_SERVICESETTINGS_SESSIONLENGTHWEBINHOURS
Note

이 설정을 변경한 후 새 세션 길이는 사용자가 다음에 자격 증명을 입력할 때부터 적용됩니다.

모바일 세션 길이#

사용자가 모바일 앱에 마지막으로 자격 증명을 입력한 시점부터 사용자 세션이 만료될 때까지의 시간(시간 단위)을 설정합니다.

시간 단위 숫자 입력입니다. 기본값은 720시간입니다.

  • 시스템 구성 경로: Environment > Session Lengths
  • config.json 설정: ServiceSettings > SessionLengthMobileInHours > 720
  • 환경 변수: MM_SERVICESETTINGS_SESSIONLENGTHMOBILEINHOURS
Note

이 설정을 변경한 후 새 세션 길이는 사용자가 다음에 자격 증명을 입력할 때부터 적용됩니다.

SSO 세션 길이#

사용자가 마지막으로 SSO 자격 증명을 입력한 시점부터 사용자 세션이 만료될 때까지의 시간(시간 단위)을 설정합니다. 이 설정은 SAML, GitLab, OAuth 2.0 같은 SSO 인증의 세션 길이를 정의합니다.

시간 단위 숫자 입력입니다. 기본값은 720시간입니다. 이 구성 설정에는 소수도 유효한 값으로 사용할 수 있습니다.

  • 시스템 구성 경로: Environment > Session Lengths
  • config.json 설정: ServiceSettings > SessionLengthSSOInHours > 720
  • 환경 변수: MM_SERVICESETTINGS_SESSIONLENGTHSSOINHOURS
Note
  • 이 설정을 변경한 후 새 세션 길이는 사용자가 다음에 자격 증명을 입력할 때부터 적용됩니다.
  • 인증 방법이 SAML, GitLab 또는 OAuth 2.0인 경우, 사용자가 이미 SAML, GitLab 또는 OAuth 2.0으로 로그인되어 있으면 Mattermost에 자동으로 다시 로그인될 수 있습니다.

세션 캐시#

세션을 메모리에 캐시할 시간(분 단위)을 설정합니다.

분 단위 숫자 입력입니다. 기본값은 10분입니다.

  • 시스템 구성 경로: Environment > Session Lengths
  • config.json 설정: ServiceSettings > SessionCacheInMinutes > 10
  • 환경 변수: MM_SERVICESETTINGS_SESSIONCACHEINMINUTES

세션 유휴 타임아웃#

사용자가 시스템에서 마지막으로 활동한 시점부터 사용자 세션이 만료될 때까지의 시간(분 단위)입니다. 만료되면 사용자는 계속하려면 로그인해야 합니다.

분 단위 숫자 입력입니다. 기본값은 43200(30일)입니다. 최솟값은 5분이며, 0으로 설정하면 시간이 무제한으로 설정됩니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: ServiceSettings > SessionIdleTimeoutInMinutes > 43200
  • 환경 변수: MM_SERVICESETTINGS_SESSIONIDLETIMEOUTINMINUTES
Note
  • 활동에 따라 세션 길이 연장이 true로 설정된 경우 이 설정은 아무런 효과가 없습니다.
  • 이 설정은 웹 앱과 데스크톱 앱에 적용됩니다. 모바일 앱의 경우 EMM 제공업체를 사용하여 사용하지 않을 때 앱을 잠그세요. |
  • 고가용성 모드에서는 안정적인 타임아웃 측정을 위해 IP 해시 로드 밸런싱을 활성화하세요.

성능 모니터링#

사용 가능 플랜: 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 플러그인을 사용하는 방법은 성능 메트릭 수집 문서를 참조하세요.

성능 모니터링 활성화#

성능 모니터링을 활성화하거나 비활성화합니다.

  • true: 성능 모니터링 데이터 수집 및 프로파일링이 활성화됩니다.
  • false: (기본값) Mattermost 성능 모니터링이 비활성화됩니다.
  • 시스템 구성 경로: Environment > Performance Monitoring
  • config.json 설정: MetricsSettings > Enable > false
  • 환경 변수: MM_METRICSSETTINGS_ENABLE

자세한 내용은 성능 모니터링 문서를 참조하세요.

클라이언트 성능 모니터링 활성화#

클라이언트 성능 모니터링을 활성화하거나 비활성화합니다.

  • true: 클라이언트 성능 모니터링 데이터 수집 및 프로파일링이 활성화됩니다.
  • false: (기본값) Mattermost 클라이언트 성능 모니터링이 비활성화됩니다.
  • 시스템 구성 경로: Environment > Performance Monitoring
  • config.json 설정: MetricsSettings > EnableClientMetrics > false
  • 환경 변수: MM_METRICSSETTINGS_ENABLECLIENTMETRICS

클라이언트 측 사용자 ID#

클라이언트 측 웹 앱 메트릭을 추적하려는 사용자 ID를 쉼표로 구분한 목록입니다.

사용자 ID는 최대 5개로 제한됩니다. 기본적으로 비어 있습니다.

  • 시스템 구성 경로: Environment > Performance Monitoring
  • config.json 설정: MetricsSettings > ClientSideUserIds
  • 환경 변수: MM_METRICSSETTINGS_CLIENTSIDEUSERIDS
Note
  • 이 설정은 EnableClientMetrics가 true로 설정된 경우에만 적용됩니다.
  • 각 사용자 ID는 Mattermost 시스템의 유효한 사용자와 일치해야 합니다. 예: MM_METRICSSETTINGS_CLIENTSIDEUSERIDS="user1,user2,user3".
  • 성능을 보장하기 위해 사용자 ID의 총 개수는 5개로 제한됩니다. ID를 더 많이 추가하면 레이블 카디널리티가 높아져 Prometheus에 과부하가 걸릴 수 있습니다. 성능 문제를 방지하려면 이 목록의 변경을 최소화하는 것을 권장합니다.

수신 대기 주소#

활성화된 경우 성능 메트릭을 노출하기 위해 Mattermost 서버가 수신 대기하는 포트입니다.

숫자 입력입니다. 기본값은 8067입니다.

  • 시스템 구성 경로: Environment > Performance Monitoring
  • config.json 설정: MetricsSettings > ListenAddress > 8067
  • 환경 변수: MM_METRICSSETTINGS_LISTENADDRESS
Note
  • ListenAddress는 포트만 허용합니다. IP/호스트는 사용할 수 없습니다. 인터페이스를 제한해야 하는 경우 OS 방화벽이나 리버스 프록시를 통해 제한하세요.
  • 주소는 host:port 형식을 사용합니다. 포트 8067의 모든 인터페이스에서 수신 대기하려면 :8067을 사용하고, localhost로만 제한하려면 localhost:8067을 사용하세요.

블록 프로파일 비율#

Mattermost 내에서 차단 작업(예: 프로그램의 한 부분이 다른 부분을 기다려야 하는 경우)으로 인해 발생하는 지연에 대한 데이터를 Mattermost가 얼마나 자주 수집할지 제어합니다. 기본값은 0(프로파일링 비활성화)입니다.

프로파일러는 차단된 상태로 보낸 시간 rate 나노초마다 평균 한 번의 차단 이벤트를 샘플링하는 것을 목표로 합니다.

기본값은 0입니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: MetricsSettings > BlockProfileRate > 0
  • 환경 변수: MM_METRICSSETTINGS_BLOCKPROFILERATE
Note
  • 이 설정은 System Console에서 사용할 수 없으며 config.json에서만 설정할 수 있습니다.
  • 성능 문제를 진단 중이며 프로파일링 데이터를 분석하는 방법을 아는 경우에만 조정하세요. 이 값은 Mattermost가 성능 프로파일에 차단 이벤트를 기록하는 빈도를 나타냅니다.
    • 0으로 설정하면 차단 이벤트를 기록하지 않습니다(프로파일링 비활성화).
    • 1로 설정하면 모든 차단 이벤트를 기록합니다(프로파일링 완전 활성화).
    • 더 큰 숫자로 설정하면 일부 이벤트만 기록합니다(전체 프로파일링 대신 샘플링에 유용).

알림 모니터링 활성화#

알림 메트릭 데이터 수집을 활성화하거나 비활성화합니다.

  • true: (기본값) 클라이언트 측 웹 및 데스크톱 앱 사용자에 대해 Mattermost 알림 데이터 수집이 활성화됩니다.
  • false: Mattermost 알림 데이터 수집이 비활성화됩니다.
  • 시스템 구성 경로: Site Configuration > Notifications
  • config.json 설정: MetricsSettings > EnableNotificationMetrics > true
  • 환경 변수: MM_METRICSSETTINGS_ENABLENOTIFICATIONMETRICS
Note
  • MetricsSettings.Enable을 true로 설정해야 합니다.
  • MetricsSettings.EnableNotificationMetrics를 true로 설정해야 합니다.

Mattermost 알림 상태(Notification Health) 메트릭에 대한 자세한 내용은 성능 모니터링 문서를 참조하세요.


개발자#

자체 호스팅 배포에서는 System Console > Environment > Developer로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 편집하여 개발자 모드를 구성할 수 있습니다. 이 섹션의 구성 설정 변경 사항은 서버를 재시작해야 적용됩니다.

테스트 명령어 활성화#

/test 슬래시 명령어를 활성화하거나 비활성화합니다.

  • true: (기본값) 테스트 계정과 테스트 데이터를 불러오기 위해 /test 슬래시 명령어가 활성화됩니다. 이 설정은 격리된 비프로덕션 환경에서만 사용하고 프로덕션에서는 절대 사용하지 마세요.
  • false: /test 슬래시 명령어가 비활성화됩니다.
  • 시스템 구성 경로: Environment > Developer
  • config.json 설정: ServiceSettings > EnableTesting > true
  • 환경 변수: MM_SERVICESETTINGS_ENABLETESTING

개발자 모드 활성화#

개발자 모드를 활성화하거나 비활성화합니다.

  • true: (기본값) Javascript 오류가 Mattermost 사용자 인터페이스 상단의 배너에 표시됩니다. 프로덕션에서는 사용하지 않는 것을 권장합니다.
  • false: 사용자에게 Javascript 오류가 알림으로 표시되지 않습니다.
  • 시스템 구성 경로: Environment > Developer
  • config.json 설정: ServiceSettings > EnableDeveloper > true
  • 환경 변수: MM_SERVICESETTINGS_ENABLEDEVELOPER

클라이언트 디버깅 활성화#

개별 사용자의 Settings > Advanced > Debugging에 있는 클라이언트 측 디버깅 설정을 활성화하거나 비활성화합니다.

  • true: 해당 설정이 표시되며 사용자가 활성화할 수 있습니다.
  • false: (기본값) 해당 설정이 숨겨지고 비활성화됩니다.
  • 시스템 구성 경로: Environment > Developer
  • config.json 설정: ServiceSettings > EnableClientPerformanceDebugging > false
  • 환경 변수: MM_SERVICESETTINGS_ENABLECLIENTPERFORMANCEDEBUGGING

자세한 내용은 클라이언트 디버깅 문서를 참조하세요.

신뢰할 수 없는 내부 연결 허용#

Warning

이 설정은 로컬 네트워크 외부에 있는 사용자가 Mattermost 서버를 이용해 내부 네트워크의 기밀 데이터를 요청하지 못하도록 하기 위한 것입니다. 로컬 네트워크에 대한 의도하지 않은 접근을 방지하려면 이 설정을 구성할 때 주의하세요.

Mattermost 서버가 로컬 네트워크 내에서 신뢰할 수 없는 요청을 보낼 수 있는 기능을 제한합니다. 요청이 클라이언트를 대신하여 이루어지는 경우 "신뢰할 수 없는" 요청으로 간주됩니다.
  • 시스템 구성 경로: Environment > Developer
  • config.json 설정: ServiceSettings > AllowedUntrustedInternalConnections > ""
  • 환경 변수: MM_SERVICESETTINGS_ALLOWEDUNTRUSTEDINTERNALCONNECTIONS

이 설정은 Mattermost 서버가 요청할 수 있는 로컬 네트워크 주소의 화이트리스트입니다. 접근할 수 있는 호스트명, IP 주소, CIDR 범위를 공백으로 구분한 목록으로 구성합니다.

시스템 관리자만 구성할 수 있는 요청은 신뢰할 수 있는 요청으로 간주되며 이 설정의 영향을 받지 않습니다. 신뢰할 수 있는 URL에는 OAuth 로그인 또는 푸시 알림 전송에 사용되는 URL이 포함됩니다.

다음 기능은 신뢰할 수 없는 요청을 보내며 이 설정의 영향을 받습니다.

  • 웹훅, 슬래시 명령어 또는 메시지 작업을 사용하는 연동. 이 설정은 해당 연동이 로컬 네트워크 내 엔드포인트를 요청하지 못하도록 합니다.
  • 링크 미리보기. 로컬 네트워크 주소에 대한 링크가 채팅 메시지에 게시되면 이 설정은 링크 미리보기가 표시되지 않도록 합니다.
  • 로컬 이미지 프록시. 로컬 이미지 프록시가 활성화된 경우 로컬 네트워크에 있는 이미지는 연동에서 사용하거나 채팅 메시지에 게시할 수 없습니다.

이 설정을 수정해야 할 수 있는 경우의 예는 다음과 같습니다.

  • Matterpoll처럼 자체 이미지를 포함하는 플러그인을 설치할 때는 Mattermost 서버의 도메인 이름을 이 목록에 추가해야 합니다.
  • 로컬 네트워크에서 봇 또는 웹훅 기반 연동을 실행할 때는 봇/연동의 호스트명을 이 목록에 추가해야 합니다.
  • 공개적으로 접근 가능한 웹 페이지나 이미지를 Mattermost 서버가 내부 IP 주소를 사용해 접근하도록 네트워크가 구성된 경우, 해당 서버의 호스트명을 이 목록에 추가해야 합니다.
Note
  • Mattermost 애플리케이션 서버 자체의 공용 IP도 예약된 IP로 간주됩니다.
  • 호스트명, IP 주소 또는 CIDR 범위를 나열할 때는 쉼표 대신 공백을 사용하세요. 예: webhooks.internal.example.com, 127.0.0.1 또는 10.0.16.0/28.
  • IP 주소 및 도메인 이름 규칙은 호스트 확인 전에 적용됩니다.
  • CIDR 규칙은 호스트 확인 후에 적용되며, CIDR 규칙만 DNS 확인이 필요합니다.
  • Mattermost는 확인 과정 없이 IP 주소와 호스트명을 먼저 일치시키려고 시도합니다. 일치하지 않으면 Mattermost는 로컬 리졸버를 사용하여(먼저 /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은 사용할 수 없습니다.

모바일 보안#

사용 가능 플랜: Enterprise Advanced

Mattermost v10.7 및 모바일 앱 v2.27부터 EMM 공급자에 의존하지 않고 생체 인증을 구성하고, 탈옥 또는 루팅된 기기에서 Mattermost 사용을 방지하며, 화면 캡처를 차단할 수 있습니다. System Console > Environment > Mobile Security로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 편집하여 이 옵션을 구성합니다. 이 섹션의 구성 설정 변경 사항은 서버를 재시작하고 사용자가 모바일 앱을 재시작하거나 로그아웃 후 다시 로그인해야 적용됩니다.

생체 인증 활성화#

앱에 접근하기 전에 생체 인증을 요구하며, PIN/암호를 대체 수단으로 사용할 수 있습니다. 사용자에게는 세션 활동과 서버 전환 규칙에 따라 인증이 요청됩니다.

  • true: 생체 인증이 활성화됩니다.
  • false: (기본값) 생체 인증이 비활성화됩니다.
  • 시스템 구성 경로: Environment > Mobile Security
  • config.json 설정: NativeAppSettings > MobileEnableBiometrics > false
  • 환경 변수: MM_NATIVEAPPSETTINGS_MOBILEENABLEBIOMETRICS
Note
  • 이 구성 설정을 변경하면 모바일 사용자가 Mattermost 모바일 앱을 재시작하거나 로그아웃 후 다시 로그인할 때 적용됩니다.
  • 다음 상황에서 사용자는 인증해야 합니다:
    • 새 서버 추가 시: 모바일 앱에 새 서버가 추가되고 생체 인증이 활성화된 경우.
    • 모바일 앱 열기 시: 활성 서버가 인증을 요구할 때 앱 실행 시.
    • 백그라운드 사용 후 복귀 시: 앱이 5분 이상 백그라운드에 있었고 활성 서버가 인증을 요구하는 경우.
    • 여러 서버 사용 시: 처음으로 서버에 접근할 때, 서버에서 5분 이상 비활성 상태 후, 그리고 마지막 인증 시도가 실패했을 때.

탈옥/루팅 보호 활성화#

탈옥 또는 루팅된 것으로 감지된 기기에서 앱 접근을 차단합니다. 기기가 보안 검사를 통과하지 못하면 사용자의 접근이 거부되거나 규정을 준수하는 서버로 전환하라는 안내가 표시됩니다.

  • true: 탈옥/루팅 보호가 활성화됩니다.
  • false: (기본값) 탈옥/루팅 보호가 비활성화됩니다.
  • 시스템 구성 경로: Environment > Mobile Security
  • config.json 설정: NativeAppSettings > MobileJailbreakProtection > false
  • 환경 변수: MM_NATIVEAPPSETTINGS_MOBILEJAILBREAKPROTECTION
Note
  • 이 구성 설정을 변경하면 모바일 사용자가 Mattermost 모바일 앱을 재시작하거나 로그아웃 후 다시 로그인할 때 적용됩니다.
  • 이 기능의 검사 수행 방법에 대해 자세히 알아보려면 Expo SDK 문서를 참조하세요.

화면 캡처 방지#

모바일 앱 사용 중 스크린샷과 화면 녹화를 차단합니다. 스크린샷은 빈 화면으로 표시되고, 화면 녹화는 흐리게 처리(iOS)되거나 검은 화면으로 표시(Android)됩니다. 앱을 전환할 때도 적용됩니다.

  • true: 화면 캡처 차단이 활성화됩니다.
  • false: (기본값) 화면 캡처 차단이 비활성화됩니다.
  • 시스템 구성 경로: Environment > Mobile Security
  • config.json 설정: NativeAppSettings > MobilePreventScreenCapture > false
  • 환경 변수: MM_NATIVEAPPSETTINGS_MOBILEPREVENTSCREENCAPTURE
Note

이 구성 설정 변경 사항은 모바일 사용자가 Mattermost 모바일 앱을 다시 시작하거나 로그아웃한 후 다시 로그인하면 적용됩니다.

모바일 임시 데이터 모드#

사용 가능 플랜: Enterprise Advanced

타이머와 동작이 어떻게 상호 작용하는지에 대한 전체 설명은 모바일 보안 기능 문서를 참조하세요.

이 설정은 모든 모바일 사용자에게 전역적으로 적용됩니다. 변경 사항은 연결된 기기에 실시간으로 전달되며, 오프라인 기기는 다시 연결될 때까지 마지막으로 알려진 구성에 따라 계속 작동합니다. 타이머 상태는 앱 및 기기 재시작 이후에도 유지됩니다.

타이머가 만료되면 게시물 및 파일 미리보기와 같은 활성 캐시 콘텐츠가 삭제되며, 앱은 정책 적용으로 인해 데이터가 제거되었음을 사용자에게 알립니다. 삭제 후 사용자가 다시 연결되면 서버에서 다시 동기화됩니다 — 서버 URL은 키체인 항목에서 복구할 수 있으므로 서버 접근이 유실되지 않습니다.

모바일 임시 데이터 모드 활성화#

모바일 클라이언트가 서버에 구성된 임시 데이터 정책을 적용할지 여부를 제어합니다.

  • true: (기본값) 임시 데이터 정책이 적용됩니다.
  • false: 모바일 클라이언트에 임시 데이터 정책이 적용되지 않습니다.
  • 시스템 구성 경로: Environment > Mobile Security
  • config.json 설정: NativeAppSettings > MobileEnableEphemeralMode > true
  • 환경 변수: MM_NATIVEAPPSETTINGS_MOBILEENABLEEPHEMERALMODE

연결 해제 타임아웃#

WebSocket 연결이 끊어진 후 기기가 오프라인으로 간주되기까지의 유예 기간(초)입니다. 유예 기간이 지나면 오프라인 지속 타이머가 카운트다운을 시작합니다.

초 단위 숫자 입력입니다. 기본값은 60입니다. 5 미만의 값은 권장하지 않습니다.

  • 시스템 구성 경로: Environment > Mobile Security
  • config.json 설정: NativeAppSettings > MobileDisconnectionTimeoutSeconds > 60
  • 환경 변수: MM_NATIVEAPPSETTINGS_MOBILEDISCONNECTIONTIMEOUTSECONDS

오프라인 지속 타이머#

기기가 오프라인으로 간주된 후 캐시된 콘텐츠를 보존하는 기간(시간)입니다.

시간 단위 숫자 입력입니다. 기본값은 2입니다. 연결이 끊어지면 즉시 삭제하려면 0으로 설정하세요.

  • 시스템 구성 경로: Environment > Mobile Security
  • config.json 설정: NativeAppSettings > MobileOfflinePersistenceTimerHours > 2
  • 환경 변수: MM_NATIVEAPPSETTINGS_MOBILEOFFLINEPERSISTENCETIMERHOURS

자동 캐시 정리#

연결 상태와 관계없이 기기에 캐시된 콘텐츠의 최대 보존 기간(일)입니다.

일 단위 숫자 입력입니다. 기본값은 7입니다. 영구 보존을 사용하지 않는 모드로 설정하려면 0으로 설정하세요.

  • 시스템 구성 경로: Environment > Mobile Security
  • config.json 설정: NativeAppSettings > MobileAutoCacheCleanupDays > 7
  • 환경 변수: MM_NATIVEAPPSETTINGS_MOBILEAUTOCACHECLEANUPDAYS

모바일에서 보안 파일 미리보기 활성화#

이 설정은 필수 파일 보기 기능은 유지하면서 파일 접근을 제한하여 조직의 모바일 보안 태세를 강화합니다.

  • true: 대부분의 파일 형식에 대해 파일 다운로드, 미리보기, 공유를 차단합니다. | - 시스템 구성 경로: Site Configuration > File sharing and downloads | 다음 구성 설정이 활성화되어 있는 경우에도 | - config.json 설정: FileSettings > MobileEnableSecureFilePreview > false | 모바일에서 파일 다운로드 허용 | - 환경 변수: MM_FILESETTINGS_MOBILEENABLESECUREFILEPREVIEW 이 설정과 관계없이 적용됩니다. 앱 내 미리보기는 PDF, | | 동영상, 이미지에 한해 허용합니다. 파일은 앱의 캐시에 임시로 저장되며 내보내거나 공유할 수 없습니다. | |
  • false: (기본값) 보안 파일 미리보기 모드가 비활성화됩니다. | |
Note

이 구성 설정을 변경하면 모바일 사용자가 Mattermost 모바일 앱을 재시작하거나 로그아웃 후 다시 로그인할 때 적용됩니다.

모바일에서 PDF 링크 탐색 허용#

  • true: (기본값) 보안 파일 미리보기 모드가 활성화된 상태에서 모바일의 PDF 내부 링크를 탭할 수 있습니다. 링크는 기기 브라우저 또는 지원되는 앱에서 열립니다.
  • false: 보안 파일 미리보기 모드가 활성화된 상태에서 PDF 내 링크 탐색을 비활성화합니다.
  • 시스템 구성 경로: Site Configuration > File sharing and downloads
  • config.json 설정: FileSettings > MobileAllowPdfLinkNavigation > true
  • 환경 변수: MM_FILESETTINGS_MOBILEALLOWPDFLINKNAVIGATION
Note
  • 이 구성 설정을 변경하면 모바일 사용자가 Mattermost 모바일 앱을 재시작하거나 로그아웃 후 다시 로그인할 때 적용됩니다.
  • 이 설정은 모바일에서 보안 파일 미리보기 구성 설정이 비활성화된 경우 효과가 없습니다.

config.json 전용 설정#

다음 자체 호스팅 배포 설정은 config.json 파일에서만 구성할 수 있으며 System Console에서는 사용할 수 없습니다.

고객 포털 요청 비활성화#

고객 포털 요청을 활성화하거나 비활성화합니다.

  • true: (기본값) 고객 포털로 보내는 서버 측 요청이 비활성화됩니다.
  • false: Mattermost 고객 포털로 보내는 서버 측 요청이 활성화되지만, 에어갭 및 제한된 배포 환경에서는 항상 실패합니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: CloudSettings > Disable > true,
  • 환경 변수: MM_CLOUDSETTINGS_DISABLE
Note

Cloud 관리자는 이 구성 설정을 수정할 수 없습니다.

API 팀 삭제 활성화#

API를 통한 팀 영구 삭제를 허용합니다.

  • true: 팀 관리자와 시스템 관리자(또는 적절한 권한이 있는 사용자)가 api/v4/teams/{teamid}?permanent=true를 호출하거나 mmctl team delete를 사용하여 팀을 영구 삭제할 수 있습니다.
  • false: (기본값) 엔드포인트를 사용할 수 없습니다. api/v4/teams/{teamid}는 여전히 팀을 소프트 삭제합니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: ServiceSettings > EnableAPITeamDeletion > false
  • 환경 변수: N/A
Note

이 설정은 System Console에서 사용할 수 없으며 config.json에서만 설정할 수 있습니다.

API 사용자 삭제 활성화#

API를 통한 사용자 영구 삭제를 허용합니다.

  • true: 시스템 관리자(또는 적절한 권한이 있는 사용자)가 api/v4/users/{userid}?permanent=true를 호출하거나 mmctl user delete를 사용하여 사용자를 영구 삭제할 수 있습니다.
  • false: (기본값) 엔드포인트를 사용할 수 없습니다. api/v4/users/{userid}는 여전히 사용자를 소프트 삭제합니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: ServiceSettings > EnableAPIUserDeletion > false
  • 환경 변수: N/A
Note

이 설정은 System Console에서 사용할 수 없으며 config.json에서만 설정할 수 있습니다.

API 채널 삭제 활성화#

API를 통한 채널 영구 삭제를 허용합니다.

  • true: 시스템 관리자(또는 적절한 권한이 있는 사용자)가 api/v4/channels/{channelid}?permanent=true를 호출하거나 mmctl channel delete를 사용하여 채널을 영구 삭제할 수 있습니다.
  • false: (기본값) 엔드포인트를 사용할 수 없습니다. api/v4/channels/{channelid}는 여전히 채널을 소프트 삭제합니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: ServiceSettings > EnableAPIChannelDeletion > false
  • 환경 변수: N/A
Note

이 설정은 System Console에서 사용할 수 없으며 config.json에서만 설정할 수 있습니다.

데스크톱 앱 개발자 모드 활성화#

Desktop App v5.10부터 이 설정은 Mattermost 데스크톱 앱의 View > Developer Tools 메뉴에서 사용할 수 있는 개발자 디버깅 옵션을 활성화합니다.

이 설정은 System Console에서 사용할 수 없으며 config.json에서 환경 변수 MM_DESKTOP_DEVELOPER_MODE를 true로 설정해야만 활성화할 수 있습니다. 기본적으로 비활성화되어 있습니다.

  • True: 문제 해결 및 디버깅을 위해 데스크톱 앱에서 다음 옵션을 잠금 해제합니다. Mattermost 개발자의 지시가 있을 때만 이 설정을 활성화해야 합니다:
    • 브라우저 모드 전용: 프리로드 스크립트를 완전히 비활성화하고 웹 앱 구성 요소가 데스크톱 앱에 있다는 것을 인식하지 못하도록 합니다. 이 옵션은 웹 앱 구성 요소가 성능 및/또는 메모리 보유 문제를 일으키는지 여부의 가장 좋은 지표가 됩니다. 이 옵션은 알림, 크로스 탭 탐색, 읽지 않음/멘션 배지, 통화 위젯을 비활성화하고 macOS에서 크기 조정을 중단합니다.
    • 알림 저장 비활성화: 선택하고 읽을 때까지 읽지 않은 알림에 대한 참조를 유지하는 맵을 끕니다. 이 옵션은 Mattermost가 사용되지 않는 알림에 대한 참조를 너무 많이 유지하는 경우 디버깅에 유용합니다.
    • 사용자 활동 모니터 비활성화: 사용자가 자리를 비웠는지 여부를 확인하는 인터벌을 끕니다. 이 옵션은 사용자의 상태가 예상치 못한 데스크톱 앱 동작을 일으키는지 여부를 디버깅하는 데 유용합니다.
    • 컨텍스트 메뉴 비활성화: BrowserView에 연결된 컨텍스트 메뉴를 끕니다. 이 옵션은 라이브러리 정상성 확인에 유용합니다.
    • 레거시 메시징 API 강제 사용: 앱이 최신 contextBridge API 대신 이전 메시징 API로 되돌아가도록 강제합니다. 이 옵션은 새 API가 메모리 보유 원인인지 확인하는 정상성 확인에 유용합니다.
    • 새 메시징 API 강제 사용: 앱이 contextBridge API를 사용하도록 강제하고 이전 API를 완전히 비활성화합니다. 이 옵션은 이전 API에 대한 리스너를 강제로 끕니다.
  • False: (기본값) 개발자 디버깅 옵션이 잠기고 데스크톱 앱에서 사용할 수 없습니다.

Redis 캐시 백엔드#

사용 가능 플랜: Enterprise Advanced

Mattermost v10.4부터 자체 호스팅 배포를 사용하는 Mattermost Enterprise 고객은 대안적인 캐시 백엔드로 Redis(Remote Dictionary Server)를 구성할 수 있습니다. Redis는 데이터베이스, 캐시, 메시지 브로커로 사용할 수 있는 오픈 소스 인메모리 데이터 구조 저장소입니다. 다양한 데이터 구조를 지원하며 메모리에 데이터를 저장하고 매우 빠른 데이터 접근을 제공하는 성능으로 최우선 선택지가 됩니다.

Redis를 캐싱 솔루션으로 사용하면 고동시성 및 대규모 사용자 기반을 가진 엔터프라이즈급 배포에서 Mattermost가 고사용량에서도 고성능과 효율성을 유지할 수 있습니다.

다음 표에서 설명한 대로 config.json 파일을 편집하여 Redis 캐시를 구성합니다. 이 섹션의 구성 설정 변경 사항은 서버를 재시작해야 적용됩니다.

캐시 유형#

캐시 유형을 정의합니다.

  • lru: (기본값) Mattermost가 인메모리 캐시 저장소를 사용합니다.
  • redis: Mattermost가 구성된 Redis 캐시 저장소를 사용합니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: CacheSettings > CacheType, > lru
  • 환경 변수: MM_CACHESETTINGS_CACHETYPE

Redis 주소#

Redis 호스트의 호스트 이름입니다.

문자열 입력입니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: CacheSettings > RedisAddress,
  • 환경 변수: MM_CACHESETTINGS_REDISADDRESS

Redis 비밀번호#

Redis 호스트의 비밀번호입니다.

문자열 입력입니다. 비밀번호가 없으면 비워 두세요.

  • 시스템 구성 경로: N/A
  • config.json 설정: CacheSettings > RedisPassword,
  • 환경 변수: MM_CACHESETTINGS_REDISPASSWORD

Redis 데이터베이스#

Redis 호스트의 데이터베이스입니다.

15까지의 0부터 시작하는 숫자입니다. 일반적으로 0으로 설정합니다. Redis는 최대 16개의 데이터베이스를 허용합니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: CacheSettings > RedisDB,
  • 환경 변수: MM_CACHESETTINGS_REDISDB
#### 클라이언트 캐시 비활성화

Redis의 클라이언트 측 캐시를 비활성화합니다.

  • true: Redis의 클라이언트 측 캐시가 비활성화됩니다. 일반적으로 테스트 옵션으로 사용하며 프로덕션 환경에서는 사용하지 않습니다.
  • false: (기본값) Redis의 클라이언트 측 캐시가 활성화됩니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: CacheSettings > DisableClientCache, > false
  • 환경 변수: MM_CACHESETTINGS_REDISDB

Redis 캐시 접두사#

모든 Redis 캐시 키에 접두사를 추가합니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: CacheSettings > RedisCachePrefix
  • 환경 변수: MM_CACHESETTINGS_REDISCACHEPREFIX
Tip

모든 Redis 캐시 키에 접두사를 추가하면 키 충돌을 줄이고, 디버깅을 단순화하며, 데이터를 격리하고, Redis 기반 시스템을 관리하고 확장하기 위한 명확한 구조를 제공합니다. 여러 시스템 또는 테넌트가 동일한 Redis 인스턴스를 사용하는 환경에서는 접두사가 데이터 무결성과 운영 효율성을 유지하는 데 중요합니다.

웹허브 채널 반복 활성화#

채널의 WebSocket 브로드캐스팅 성능을 제어합니다.

활성화하면 WebSocket 브로드캐스팅 성능이 향상되지만, 사용자가 채널에 참여하거나 나갈 때 성능이 저하될 수 있습니다.

Mattermost를 활발하게 사용하는 동시 접속 사용자가 최소 200,000명 이상이 아니라면 권장하지 않습니다.

기본적으로 비활성화되어 있습니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: ServiceSettings > EnableWebHubChannelIteration, > false
  • 환경 변수: MM_SERVICESETTINGS_ENABLEWEBHUBCHANNELITERATION

전용 내보내기 파일 스토리지 대상 활성화#

Mattermost 대량 내보내기 및 컴플라이언스 내보내기에 대해 대체 파일 스토리지 대상을 지정할 수 있도록 합니다.

  • True: 다음 구성 설정의 새 구성 값을 사용하여 FileSettings 아래에 새 ExportFileBackend()가 생성됩니다:
    • ExportDriverName
    • ExportDirectory
    • ExportAmazonS3AccessKeyId
    • ExportAmazonS3SecretAccessKey
    • ExportAmazonS3Bucket
    • ExportAmazonS3PathPrefix
    • ExportAmazonS3Region
    • ExportAmazonS3Endpoint
    • ExportAmazonS3SSL
    • ExportAmazonS3SignV2
    • ExportAmazonS3SSE
    • ExportAmazonS3Trace
    • ExportAmazonS3RequestTimeoutMilliseconds
    • ExportAmazonS3PresignExpiresSeconds
    • ExportAzureStorageAccount
    • ExportAzureAuthMode
    • ExportAzureAccessKey
    • ExportAzureContainer
    • ExportAzurePathPrefix
    • ExportAzureCloud
    • ExportAzureEndpoint
    • ExportAzureSSL
    • ExportAzureRequestTimeoutMilliseconds
    • ExportAzurePresignExpiresSeconds
  • False: (기본값) 표준 파일 스토리지가 사용됩니다. 구성 설정 또는 값이 생략된 경우에도 표준 파일 스토리지가 사용됩니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: FileSettings > DedicatedExportStore
  • 환경 변수: MM_FILESETTINGS_DEDICATEDEXPORTSTORE
Note
  • 대체 파일 스토리지 대상이 구성된 경우 Mattermost Cloud 관리자는 /exportlink [job-id|zip file|latest] 슬래시 명령어를 사용하여 내보내기를 위한 사전 서명 다운로드 URL을 생성할 수 있습니다. Amazon S3에서는 S3 사전 서명 URL이며, Azure Blob Storage에서는 공유 액세스 서명(Shared Access Signature, SAS) URL입니다. 이러한 URL의 유효 기간은 각각 ExportAmazonS3PresignExpiresSeconds 또는 ExportAzurePresignExpiresSeconds에 의해 제어됩니다. 자세한 내용은 Mattermost 데이터 마이그레이션 문서를 참조하세요. Cloud 관리자는 mmctl export generate-presigned-url 명령어를 사용하여 mmctl에서 직접 사전 서명 URL을 생성할 수도 있습니다.
  • 사전 서명 URL 생성은 Mattermost Cloud에서만 사용할 수 있으며, 사전 서명 링크를 지원하는 스토리지(Amazon S3 또는 Azure Blob Storage)와 이 전용 내보내기 스토어 설정이 true로 설정되어 있어야 합니다. 공유 스토리지를 사용하는 시스템에서는 내보내기를 위한 사전 서명 URL이 지원되지 않습니다.

환경 구성 설정

Mattermost v12.0
원문 보기

요약

제품 메뉴를 선택하고 System Console을 선택한 후 Environment를 선택하여 System Console에서 다음 환경 구성 옵션을 검토하고 관리하세요. 셀프 호스팅 Mattermost 배포를 관리하는 시스템 관리자는 다음 표에서 설명한 대로 config.json 파일을 편집할 수 있습니다.

사용 가능 플랜: Entry, Professional, Enterprise, Enterprise Advanced

제품 제품 메뉴 아이콘을 사용하여 Channels, 협업 플레이북, 보드 간에 이동합니다. 메뉴를 선택하고 System Console을 선택한 후 Environment를 선택하여 System Console에서 다음 환경 구성 옵션을 검토하고 관리하세요.

Tip

셀프 호스팅 Mattermost 배포를 관리하는 시스템 관리자는 다음 표에서 설명한 대로 config.json 파일을 편집할 수 있습니다. 아래 각 구성 값에는 JSON 인식 도구를 사용하여 config.json 파일에서 프로그래밍 방식으로 값에 접근하기 위한 JSON 경로가 포함되어 있습니다. 예를 들어, SiteURL 값은 ServiceSettings 아래에 있습니다.

  • jq 같은 도구를 사용하는 경우 다음과 같이 입력합니다: cat config/config.json | jq '.ServiceSettings.SiteURL'
  • config.json 파일을 수동으로 작업하는 경우, ServiceSettings 같은 객체를 찾은 다음 해당 객체 내에서 SiteURL 키를 찾으세요.

웹 서버#

셀프 호스팅 배포에서는 System Console > Environment > Web Server로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 업데이트하여 Mattermost가 배포된 네트워크 환경을 구성할 수 있습니다. 이 섹션의 구성 설정 변경 사항은 적용되기 전에 서버를 다시 시작해야 합니다.

사이트 URL#

사용자가 Mattermost에 접속하는 데 사용하는 URL입니다. 80이나 443 같은 표준 포트가 아닌 경우 포트 번호가 필요합니다. 이 필드는 필수입니다.

System Console에서 Test Live URL 버튼을 선택하여 사이트 URL을 검증합니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > SiteURL
  • 환경 변수: MM_SERVICESETTINGS_SITEURL
Note
  • URL에는 https://example.com/company/mattermost와 같이 하위 경로가 포함될 수 있습니다.
  • 사이트 URL 값을 변경하면 데스크톱 앱에서 로그아웃한 후 새 도메인으로 다시 로그인하세요.
  • 사이트 URL이 설정되지 않은 경우:
    • 이메일 알림에 깨진 링크가 포함되고, 이메일 일괄 처리가 작동하지 않습니다.
    • GitLab, Google, Entra ID를 포함한 OAuth 2.0을 통한 인증이 실패합니다.
    • 플러그인이 예상대로 작동하지 않을 수 있습니다.

최대 URL 길이#

쿼리 매개변수를 포함하여 Mattermost 서버가 허용하는 가장 긴 URL의 길이(문자 수)입니다. 이보다 긴 URL은 거부되며 API 호출이 오류와 함께 실패합니다.

숫자 값입니다. 기본값은 2048자입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > MaximumURLLength > 2048
  • 환경 변수: MM_SERVICESETTINGS_MAXIMUMURLLENGTH

웹 서버 수신 주소#

바인딩하고 수신할 주소와 포트입니다. :8065를 지정하면 모든 네트워크 인터페이스에 바인딩됩니다. 127.0.0.1:8065를 지정하면 해당 IP 주소를 가진 네트워크 인터페이스에만 바인딩됩니다.

하위 번호 포트(“시스템 포트” 또는 “잘 알려진 포트”라고 하며 범위는 0-1023)를 선택하는 경우 해당 포트에 바인딩할 권한이 있어야 합니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > ListenAddress
  • 환경 변수: MM_SERVICESETTINGS_LISTENADDRESS
Note

웹 서버는 address:port(예: ":8065")를 사용하는 반면, Metrics는 포트 번호만 사용합니다(예: 8067).

포트 80을 443으로 전달#

보안되지 않은 트래픽을 포트 80에서 포트 443으로 전달합니다.

  • true: 보안되지 않은 모든 트래픽을 포트 80에서 보안 포트 443으로 전달합니다.
  • false: (기본값) Mattermost 앞단에서 NGINX 같은 프록시를 사용하는 경우 이 설정은 필요하지 않으며 false로 설정해야 합니다.
  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > Forward80To443 > false
  • 환경 변수: MM_SERVICESETTINGS_FORWARD80TO443

웹 서버 연결 보안#

Mattermost 클라이언트와 서버 간의 연결 보안입니다.

  • Not specified: Mattermost가 보안되지 않은 연결로 접속합니다.
  • TLS: Mattermost 클라이언트와 서버 간의 통신을 암호화합니다.
  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > ConnectionSecurity
  • 환경 변수: MM_SERVICESETTINGS_CONNECTIONSECURITY

자세한 내용은 Mattermost용 TLS 설정을 참조하세요.

TLS 인증서 파일#

TLS 연결 보안에 사용할 인증서 파일의 경로입니다.

문자열 입력입니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > TLSCertFile
  • 환경 변수: MM_SERVICESETTINGS_TLSCERTFILE

TLS 키 파일#

TLS 연결 보안에 사용할 TLS 키 파일의 경로입니다.

문자열 입력입니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > TLSKeyFile
  • 환경 변수: MM_SERVICESETTINGS_TLSKEYFILE

Let's Encrypt 사용#

Let’s Encrypt에서 인증서를 자동으로 가져오도록 활성화합니다.

  • true: 클라이언트가 새 도메인에서 연결을 시도할 때 인증서를 가져옵니다. 여러 도메인에서 작동합니다.
  • false: (기본값) 위에서 지정한 TLS 인증서 파일과 TLS 키 파일을 기반으로 인증서를 수동으로 지정합니다.
  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > UseLetsEncrypt > false
  • 환경 변수: MM_SERVICESETTINGS_USELETSENCRYPT

Let's Encrypt 설정에 대한 자세한 내용은 Mattermost용 TLS 설정을 참조하세요.

Let's Encrypt 인증서 캐시 파일#

Let’s Encrypt 서비스에 대한 인증서와 기타 데이터가 저장되는 파일의 경로입니다.

파일 경로 입력입니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > LetsEncryptCertificateCacheFile
  • 환경 변수: MM_SERVICESETTINGS_LETSENCRYPTCERTIFICATECACHEFILE

읽기 타임아웃#

연결이 수락된 시점부터 요청 본문을 모두 읽을 때까지 허용되는 최대 시간입니다.

초 단위 숫자 입력입니다. 기본값은 300초입니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > ReadTimeout > 300
  • 환경 변수: MM_SERVICESETTINGS_READTIMEOUT

쓰기 타임아웃#

  • HTTP(보안되지 않음)를 사용하는 경우, 요청 헤더 읽기가 끝난 시점부터 응답이 작성될 때까지 허용되는 최대 시간입니다.
  • HTTPS를 사용하는 경우, 연결이 수락된 시점부터 응답이 작성될 때까지의 총 시간입니다.

초 단위 숫자 입력입니다. 기본값은 300초입니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > WriteTimeout > 300
  • 환경 변수: MM_SERVICESETTINGS_WRITETIMEOUT

유휴 타임아웃#

HTTP 서버에 명시적인 유휴 타임아웃을 설정합니다. 유휴 연결이 끊어지기 전까지 허용되는 최대 시간입니다.

초 단위 숫자 입력입니다. 기본값은 300초입니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > IdleTimeout > 300
  • 환경 변수: MM_SERVICESETTINGS_IDLETIMEOUT

웹 서버 모드#

웹 프록시가 gzip 파일을 제대로 배포하지 못하는 경우처럼 환경에 특별한 제약이 있지 않은 한, 성능을 향상시키기 위해 gzip을 권장합니다.

  • gzip: (기본값) Mattermost 서버가 성능 향상을 위해 gzip으로 압축된 정적 파일을 제공합니다. gzip 압축은 Mattermost 웹 클라이언트를 구성하는 HTML, CSS, Javascript 및 기타 정적 콘텐츠 파일에 적용됩니다.
  • Uncompressed: Mattermost 서버가 압축되지 않은 정적 파일을 제공합니다.
  • Disabled: Mattermost 서버가 정적 파일을 제공하지 않습니다.
  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > WebserverMode > "gzip"
  • 환경 변수: MM_SERVICESETTINGS_WEBSERVERMODE

채널 조회 WebSocket 메시지 활성화#

channel_viewed WebSocket 이벤트를 전송할지 여부를 결정합니다. 이 이벤트는 사용자의 클라이언트와 디바이스 간에 읽지 않은 알림을 동기화합니다.

  • true: (기본값) channel_viewed WebSocket 이벤트를 전송합니다.
  • false: channel_viewed WebSocket 이벤트를 전송하지 않습니다.
  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > EnableChannelViewedMessages > true
  • 환경 변수: MM_SERVICESETTINGS_ENABLECHANNELVIEWEDMESSAGES
Note

대규모 배포에서 이 구성 설정을 비활성화하면 다음 영역에서 서버 성능이 향상될 수 있습니다.

  • 데이터베이스 부하 감소: channel_viewed 이벤트를 비활성화하면 서버가 이 이벤트를 데이터베이스에 기록할 필요가 없습니다. 이로 인해 쓰기 및 업데이트 작업 수가 줄어들며, 많은 사용자가 자주 채널을 전환하는 사용량이 많은 서버에서는 그 효과가 상당할 수 있습니다.
  • 네트워크 트래픽 감소: 이 이벤트를 비활성화하면 서버와 클라이언트 간에 전송되는 메시지가 줄어듭니다. 네트워크 트래픽이 감소하면 지연 시간이 줄어들고 서버의 전반적인 응답성이 향상될 수 있으며, 특히 연결 속도가 느린 사용자에게 효과적입니다.
  • 서버 CPU 사용량 감소: channel_viewed 이벤트를 처리하려면 데이터베이스 트랜잭션과 네트워크 통신을 처리하는 CPU 리소스가 필요합니다. 이 이벤트가 없으면 서버의 CPU를 다른 작업에 더 효율적으로 사용할 수 있어 전반적인 성능이 향상됩니다.
  • 사용자 경험 개선: 서버 부하와 네트워크 트래픽이 줄어들면 사용자는 더 빠른 로딩 시간과 더 매끄러운 애플리케이션 상호작용을 경험할 수 있습니다.

다만 이 구성 설정을 비활성화하면 채널의 읽은 메시지와 읽지 않은 메시지를 정확하게 추적하는 기능 등 일부 기능에 영향을 줍니다. 성능 향상과 조직 및 사용자의 요구 사항 사이에서 균형을 맞추는 것이 중요합니다.

안전하지 않은 발신 연결 활성화#

Mattermost가 안전하지 않은 발신 연결을 허용하도록 구성합니다.

  • true: S3 클라이언트를 포함한 발신 HTTPS 요청이 검증되지 않은 자체 서명 인증서를 수락할 수 있습니다. 예를 들어 자체 서명된 TLS 인증서를 사용하는 서버로 보내는 발신 웹훅은 어떤 도메인이든 허용되며 TLS 검증을 건너뜁니다.
  • false: (기본값) 보안된 HTTPS 요청만 허용됩니다.
  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > EnableInsecureOutgoingConnections > false
  • 환경 변수: MM_SERVICESETTINGS_ENABLEINSECUREOUTGOINGCONNECTIONS
Warning

이 기능을 활성화하면 해당 연결이 중간자 공격(man-in-the-middle attacks)에 취약해집니다.

강화 모드 활성화#

보안을 위해 사용자 경험의 일부를 희생하는 강화 모드로 Mattermost를 실행하도록 구성합니다.

  • true: 강화 모드가 활성화됩니다.
  • false: (기본값) 강화 모드가 비활성화됩니다.
  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > EnableHardenedMode > false
  • 환경 변수: MM_SERVICESETTINGS_ENABLEHARDENEDMODE
Note

이 설정은 Mattermost v11.11까지 ServiceSettings.ExperimentalEnableHardenedMode라고 불렸습니다. 업그레이드 후 처음 시작할 때 서버가 이전 키를 ServiceSettings.EnableHardenedMode로 자동 마이그레이션하고 config.json에서 이전 키를 제거합니다.

강화 모드가 활성화되었을 때 적용되는 변경 사항은 다음과 같습니다.

  • 로그인에 실패하면 사용자 이름과 비밀번호에 대한 구체적인 메시지 대신 일반적인 오류 메시지를 반환합니다.
  • 다중 인증(MFA)이 활성화된 경우, 사용자가 MFA를 활성화했는지 확인하는 경로가 항상 true를 반환합니다. 이로 인해 사용자가 MFA를 활성화하지 않았더라도 MFA 입력 화면이 표시됩니다. 사용자는 아무 값이나 입력하여 이 화면을 통과할 수 있습니다. MFA가 강제로 적용되는 경우에는 강화 모드가 사용자 경험에 영향을 주지 않습니다.
  • 비밀번호 재설정 시 사용자가 Mattermost를 통해 SSO 계정을 재설정할 수 없다는 점을 알리지 않고, 대신 비밀번호 재설정 이메일을 보냈다고 안내합니다.
  • Mattermost는 클라이언트에 반환하기 전에 모든 500 오류를 정제합니다. 제공되는 request_id를 사용하여 사용자에게 표시된 오류와 서버 로그를 대조하세요.

게시물 신원 및 표시 재정의 속성(from_webhook, from_bot, override_username, override_icon_url 및 관련 키)은 통합 기능 작성자가 아닌 경우 호출자가 제공한 생성/업데이트 페이로드에서 항상 제거되며, 검증된 통합 권한이 있는 경우에만 다시 적용됩니다. 업데이트 시 제거는 호출자가 보낸 값을 삭제하며, 게시물에 이미 저장된 기존 신원 속성은 보존되므로 일반적인 편집으로 봇 또는 웹훅 신원을 지우거나 바꿀 수 없습니다. 이 동작은 강화 모드와 무관합니다.

관리되는 리소스 경로#

Mattermost 자체가 아니라 서드파티 서비스에서 관리하는 Mattermost 도메인 내 경로의 쉼표로 구분된 목록입니다.

이러한 경로로 연결되는 링크는 Mattermost 앱에서 새 탭/창으로 열립니다.

예를 들어 Mattermost가 https://mymattermost.com에서 실행 중일 때 이 값을 conference로 설정하면 https://mymattermost.com/conference 같은 링크가 새 창에서 열립니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: ServiceSettings > ManagedResourcePaths
  • 환경 변수: MM_SERVICESETTINGS_MANAGEDRESOURCEPATHS
Note

Mattermost 데스크톱 앱을 사용하는 경우 브라우저 대신 데스크톱 앱 내에서 링크를 열기 위한 추가 구성이 필요합니다. 자세한 내용은 desktop managed resources 문서를 참조하세요.

디스크에서 구성 다시 로드#

사용 가능 플랜: Enterprise, Enterprise Advanced

서버를 중단하지 않고 장애 조치(fail over)하려면 config.json 파일의 데이터베이스 줄을 변경한 다음 구성을 다시 로드해야 합니다.

데이터베이스 구성을 변경한 후 System Console에서 디스크에서 구성 다시 로드 버튼을 선택하세요. 그런 다음 Environment > Database로 이동하여 데이터베이스 연결 재활용을 선택하면 다시 로드가 완료됩니다.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: 해당 없음
  • 환경 변수: 해당 없음

모든 캐시 제거#

세션, 계정, 채널에 대한 모든 인메모리 캐시를 제거합니다.

모든 캐시를 제거하려면 System Console에서 모든 캐시 제거 버튼을 선택하세요.

  • 시스템 구성 경로: Environment > Web Server
  • config.json 설정: 해당 없음
  • 환경 변수: 해당 없음
Note

캐시를 제거하면 성능에 악영향을 미칠 수 있습니다. 고가용성 클러스터 기반 배포에서는 클러스터 내 모든 서버의 캐시를 제거하려고 시도합니다.

웹소켓 URL#

클라이언트가 웹소켓을 연결해야 하는 위치를 서버가 안내하도록 구성할 수 있습니다.

문자열 입력.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > WebsocketURL > ""
  • 환경 변수: MM_SERVICESETTINGS_WEBSOCKETURL
Note

사이트 URL 구성 설정과 일치하는 단일 웹소켓 URL을 구성하는 것을 강력히 권장합니다.

라이선스 파일 위치#

디스크에 있는 라이선스 파일의 경로와 파일 이름입니다. 시작할 때 이전에 업로드한 유효한 라이선스를 데이터베이스에서 찾을 수 없으면 Mattermost는 이 경로에서 라이선스 파일을 찾습니다.

문자열 입력. 절대 경로 또는 mattermost 디렉터리 기준 상대 경로를 사용할 수 있습니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > LicenseFileLocation > ""
  • 환경 변수: MM_SERVICESETTINGS_LICENSEFILELOCATION

TLS 최소 버전#

Mattermost 서버에서 사용하는 최소 TLS 버전입니다.

문자열 입력. 기본값은 1.2입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > TLSMinVer > 1.2
  • 환경 변수: MM_SERVICESETTINGS_TLSMINVER
Note

이 설정은 NGINX와 같은 역방향 프록시 레이어를 사용하지 않고 내장 서버 바이너리를 직접 사용하는 경우에만 적용됩니다.

신뢰할 수 있는 프록시 IP 헤더#

IP 주소를 확인할 헤더를 지정합니다. 지정한 헤더를 하나씩 순서대로 확인하며(순서가 중요합니다), 그 외 모든 헤더는 무시됩니다.

헤더 이름으로 구성된 문자열 배열 입력. 예: ["X-Forwarded-For", "X-Real-Ip"].

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > TrustedProxyIPHeader > []
  • 환경 변수: MM_SERVICESETTINGS_TRUSTEDPROXYIPHEADER
Note
  • 기본값 [] 은 어떤 헤더도 신뢰하지 않음을 의미합니다.
  • 클라이언트가 헤더를 전송하여 속도 제한 및/또는 감사 로그를 우회하는 것을 방지하기 위해, 프록시 없이 Mattermost가 실행되는 경우 기본 설정을 유지하는 것을 권장합니다.
  • 역방향 프록시를 사용하는 환경의 경우, 역방향 프록시가 헤더를 설정하는 한 이 문제가 발생하지 않습니다. 해당 환경에서는 역방향 프록시가 설정한 헤더만 명시적으로 허용하고 추가 값은 허용하지 마세요.

엄격한 전송 보안(HSTS) 활성화#

  • true: 모든 응답에 Strict Transport Security(HSTS) 헤더를 추가하여 브라우저가 모든 리소스를 HTTPS로 요청하도록 강제합니다.
  • false: (기본값) TLS 전송에 제한이 없습니다. 응답에 Strict Transport Security(HSTS) 헤더를 추가하지 않습니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > TLSStrictTransport > false
  • 환경 변수: MM_SERVICESETTINGS_TLSSTRICTTRANSPORT

자세한 내용은 Strict-Transport-Security 문서를 참조하세요.

보안 TLS 전송 만료#

브라우저가 해당 사이트를 HTTPS로만 접속해야 한다고 기억하는 시간(초)입니다. 이 기간이 지나면 TLSStrictTransport를 true로 설정하지 않는 한 사이트에 HTTP로 접속할 수 없습니다.

숫자 입력. 기본값은 63072000(2년)입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > TLSStrictTransportMaxAge > 63072000
  • 환경 변수: MM_SERVICESETTINGS_TLSSTRICTTRANSPORTMAXAGE

자세한 내용은 Strict-Transport-Security 문서를 참조하세요.

TLS 암호 덮어쓰기#

최신 암호를 지원하지 않는 레거시 클라이언트의 요구 사항을 충족하거나 허용하는 암호의 종류를 제한하기 위해 TLS 암호 덮어쓰기를 설정합니다.

지정하지 않으면 Mattermost 서버는 현재 안전한 것으로 간주되는 암호 집합을 사용하며, 예외적인 경우에 덮어쓰기를 허용합니다.

문자열 배열 입력.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > TLSOverwriteCiphers > []
  • 환경 변수: MM_SERVICESETTINGS_TLSOVERWRITECIPHERS
Note
  • 이 설정은 NGINX와 같은 역방향 프록시 레이어를 사용하지 않고 내장 서버 바이너리를 직접 사용하는 경우에만 적용됩니다.
  • 안전한 것으로 간주되는 암호 목록은 /model/config.go 의 ServerTLSSupportedCiphers 변수를 참조하세요.

고루틴 상태 임계값#

Mattermost 시스템이 정상 상태로 간주되는 고루틴(goroutine) 수의 임계값을 설정합니다.

고루틴 수가 이 한도를 초과하면 서버 로그에 경고가 기록됩니다.

숫자 입력. 기본값은 -1이며 임계값 확인을 끕니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > GoroutineHealthThreshold > -1
  • 환경 변수: MM_SERVICESETTINGS_GOROUTINEHEALTHTHRESHOLD

서브도메인 쿠키 허용#

  • true: (기본값) Mattermost 쿠키에 도메인 매개변수를 설정하여 서브도메인에서 쿠키를 허용합니다.
  • false: 서브도메인에서 쿠키를 허용하지 않습니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > AllowCookiesForSubdomains > true
  • 환경 변수: MM_SERVICESETTINGS_ALLOWCOOKIESFORSUBDOMAINS

클러스터 로그 타임아웃#

사용 가능 플랜: Enterprise, Enterprise Advanced

성능 모니터링을 위한 클러스터 요청 시간 로깅의 빈도를 밀리초 단위로 정의합니다.

숫자 입력. 기본값은 2000밀리초(2초)입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > ClusterLogTimeoutMilliseconds > 2000
  • 환경 변수: MM_SERVICESETTINGS_CLUSTERLOGTIMEOUTMILLISECONDS

자세한 내용은 성능 모니터링 문서를 참조하세요.

최대 페이로드 크기#

파일을 입력으로 받는 API를 제외한 모든 API의 최대 페이로드 크기(바이트)입니다.

예를 들어 첨부 파일 업로드 API 또는 커스텀 이모지 업로드 API가 파일을 입력으로 받는 API입니다.

숫자 값. 기본값은 300000(300 kB)입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ServiceSettings > MaximumPayloadSizeBytes > 300000
  • 환경 변수: MM_SERVICESETTINGS_MAXIMUMPAYLOADSIZEBYTES

데이터베이스#

셀프 호스팅 배포에서는 System Console > Environment > Database로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 편집하여 Mattermost가 배포된 데이터베이스 환경을 구성할 수 있습니다. 이 섹션의 구성 설정 변경 사항은 적용되기 전에 서버를 다시 시작해야 합니다.

드라이버 이름#

데이터베이스 유형입니다. 다음 중 하나를 사용할 수 있습니다.

  • mysql: (기본값) MySQL 데이터베이스용 드라이버를 활성화합니다.
  • postgres: PostgreSQL 데이터베이스용 드라이버를 활성화합니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: SqlSettings > DriverName
  • 환경 변수: MM_SQLSETTINGS_DRIVERNAME

데이터 소스#

마스터 데이터베이스에 대한 연결 문자열입니다.

문자열 입력.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: SqlSettings > DataSource
  • 환경 변수: MM_SQLSETTINGS_DATASOURCE

PostgreSQL 데이터베이스#

드라이버 이름을 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 암호화를 사용하지 않습니다.

config.json 파일의 기본값입니다.

disable postgres://mmuser:password@hostname_or_IP:5432/mattermost_test ?sslmode=disable&connect_timeout=10

데이터가 암호화되며 네트워크를 신뢰할 수 있습니다.

생략하면 sslmode의 기본값입니다.

require postgres://mmuser:password@hostname_or_IP:5432/mattermost_test ?sslmode=require&connect_timeout=10
신뢰할 수 있는 서버에 연결할 때 데이터가 암호화됩니다. verify-ca postgres://mmuser:password@hostname_or_IP:5432/mattermost_test ?sslmode=verify-ca&connect_timeout=10
신뢰할 수 있는 서버에 연결할 때 데이터가 암호화됩니다. verify-full postgres://mmuser:password@hostname_or_IP:5432/mattermost_test ?sslmode=verify-full&connect_timeout=10

MySQL 데이터베이스#

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",
  [...]
}
Note

MySQL 8.0 이상을 사용하는 경우 기본 collation이 utf8mb4_0900_ai_ci로 변경되었습니다. MySQL 8.0 지원에 대한 자세한 내용은 Database Software Requirements 문서를 참조하세요.

MySQL 데이터베이스에서 TLS 사용

MySQL 서버에 대한 연결을 암호화하는 매개변수는 tls입니다.

MySQL과 상호 작용하는 데 사용되는 라이브러리는 Go-MySQL-Driver입니다.

현재 표준 MySQL 클라이언트 mysql --ssl-mode=value에 전달할 수 있는 모든 값을 사용하는 것은 불가능합니다. 8.0 버전 예시는 Connection-Encryption Option Summary 문서를 참조하세요.

데이터베이스 관리자는 아래에 설명된 지원되는 값에 따라 기능을 구성해야 합니다.

tls 매개변수에 대한 간단한 설명 값 데이터 소스 이름 예시
MySQL 서버에 TLS / SSL 암호화를 사용하지 않습니다. false "<mmuser:password>@tcp(hostname or IP:3306)/mattermost_test ?charset=utf8mb4,utf8&writeTimeout=30s&tls=false"
MySQL 서버에 TLS / SSL 암호화를 사용합니다. true "<mmuser:password>@tcp(hostname or IP:3306)/mattermost_test ?charset=utf8mb4,utf8&writeTimeout=30s&tls=true"
MySQL 서버에 자체 서명 인증서와 함께 TLS / SSL 암호화를 사용합니다. skip-verify "<mmuser:password>@tcp(hostname or IP:3306)/mattermost_test ?charset=utf8mb4,utf8&writeTimeout=30s&tls=skip-verify"
서버가 대체 연결 가능 여부를 알리면 TLS / SSL 암호화를 사용하고, 알리지 않으면 암호화하지 않습니다. preferred "<mmuser:password>@tcp(hostname or IP:3306)/mattermost_test ?charset=utf8mb4,utf8&writeTimeout=30s&tls=preferred"
#### AWS 고가용성 RDS 클러스터 배포

AWS 고가용성 RDS 클러스터 배포의 경우, AWS 장애 조치 처리의 이점을 얻으려면 이 구성 설정을 클러스터 수준의 쓰기/읽기 엔드포인트로 지정하세요. AWS는 다른 데이터베이스 노드를 작성자 노드로 승격시키는 것을 처리합니다. Mattermost는 이를 관리할 필요가 없습니다. 자세한 내용은 고가용성 데이터베이스 구성 문서를 참조하세요.

최대 열린 연결 수#

데이터베이스에 대해 열 수 있는 최대 연결 수입니다.

숫자 입력. 기본값은 100입니다.

  • 시스템 구성 경로: Environment > Database
  • config.json 설정: SqlSettings > MaxOpenConns > 100
  • 환경 변수: MM_SQLSETTINGS_MAXOPENCONNS
Note

이 한도는 클러스터 전체 합계가 아니라 데이터 소스별, Mattermost 서버 노드별로 적용됩니다. 각 서버 노드는 이 값 크기의 자체 연결 풀을 마스터 데이터베이스(DataSource)에 대해 열고, 읽기 복제본과 검색 복제본 아래에 구성된 각 항목에 대해서도 별도로 엽니다.

데이터베이스(또는 그 앞단의 연결 풀링 프록시)의 max_connections 크기를 산정하려면 먼저 노드당 데이터 소스 수를 계산하세요. 마스터 데이터베이스가 1개이며, 여기에 읽기 복제본 수와 검색 복제본 수를 더합니다. 이 수에 MaxOpenConns를 곱한 다음, (고가용성 클러스터로 배포한 경우) 앱 서버 노드 수를 다시 곱합니다.

MaxOpenConns x (노드당 데이터 소스 수) x (앱 노드 수)

예를 들어 각 노드에 읽기 복제본 1개와 검색 복제본 1개가 구성된 3노드 HA 클러스터에서 MaxOpenConns가 기본값 100이면, 각 노드에는 데이터 소스가 3개이므로 클러스터 전체에서 가능한 연결 수는 3 x 3 x 100 = 900입니다.

최대 유휴 연결 수#

데이터베이스에 열어 둔 채로 유지하는 최대 유휴 연결 수입니다.

숫자 입력. 기본값은 50입니다. MaxOpenConns와 2:1 비율을 권장합니다.

  • 시스템 구성 경로: Environment > Database
  • config.json 설정: SqlSettings > MaxIdleConns > 50
  • 환경 변수: MM_SQLSETTINGS_MAXIDLECONNS

쿼리 타임아웃#

연결을 열고 쿼리를 보낸 후 데이터베이스의 응답을 기다리는 시간(초)입니다.

초 단위 숫자 입력. 기본값은 30초입니다.

  • 시스템 구성 경로: Environment > Database
  • config.json 설정: SqlSettings > QueryTimeout > 30
  • 환경 변수: MM_SQLSETTINGS_QUERYTIMEOUT

최대 연결 수명#

데이터베이스 연결의 최대 수명(밀리초)입니다. 이 설정을 사용하여 데이터베이스 연결을 재사용할 수 있는 최대 시간을 구성하세요

밀리초 단위 숫자 입력. 기본값은 3600000밀리초(1시간)입니다.

  • 시스템 구성 경로: Environment > Database
  • config.json 설정: SqlSettings > ConnMaxLifetimeMilliseconds > 3600000
  • 환경 변수: MM_SQLSETTINGS_CONNMAXLIFETIMEMILLISECONDS

최대 연결 유휴 타임아웃#

데이터베이스 연결이 유휴 상태로 유지될 수 있는 최대 시간(밀리초)입니다.

밀리초 단위 숫자 입력. 기본값은 300000(5분)입니다.

  • 시스템 구성 경로: Environment > Database
  • config.json 설정: SqlSettings > ConnMaxIdleTimeMilliseconds > 300000
  • 환경 변수: MM_SQLSETTINGS_CONNMAXIDLETIMEMILLISECONDS

최소 해시태그 길이#

해시태그의 최소 문자 수입니다. 이 값은 2 이상이어야 합니다.
  • 시스템 구성 경로: Environment > Database
  • config.json 설정: SqlSettings > MinimumHashtagLength > 3
  • 환경 변수: MM_SQLSETTINGS_MINIMUMHASHTAGLENGTH
Note

MySQL 데이터베이스는 세 글자보다 짧은 문자열 검색을 지원하도록 구성해야 합니다. 자세한 내용은 MySQL 문서를 참조하세요.

SQL 문 로깅#

개발용으로 실행된 SQL 문을 로그에 기록할 수 있습니다.

  • true: 실행 중인 SQL 문을 로그에 기록합니다.
  • false: (기본값) SQL 문을 로그에 기록하지 않습니다.
  • 시스템 구성 경로: Environment > Database
  • config.json 설정: SqlSettings > Trace > false
  • 환경 변수: MM_SQLSETTINGS_TRACE

데이터베이스 연결 재활용#

사용 가능 플랜: Enterprise, Enterprise Advanced

데이터베이스 연결 재활용 버튼을 선택하면 20초 이내에 현재 열려 있는 데이터베이스 연결 집합을 닫고 새 연결 집합을 만들어 연결 풀을 수동으로 재활용합니다.

서버를 중지하지 않고 장애 조치하려면 config.json 파일의 데이터베이스 줄을 변경하고, Environment > Web Server에서 디스크에서 구성 다시 로드를 선택한 다음 데이터베이스 연결 재활용을 선택하세요.

  • 시스템 구성 경로: Environment > Database
  • config.json 설정: 해당 없음
  • 환경 변수: 해당 없음

데이터베이스 검색 비활성화#

엔터프라이즈 규모 검색을 사용하는 경우, | - System Config 경로: Environment > Database 데이터베이스 검색이 검색을 수행하지 않도록 비활성화할 수 있습니다. | - config.json 설정: SqlSettings > DisableDatabaseSearch > false | | - 환경 변수: MM_SQLSETTINGS_DISABLEDATABASESEARCH | - true: 데이터베이스를 사용하여 | | 검색을 수행하는 것을 비활성화합니다. 다른 검색 엔진이 구성되어 있지 않은 경우, | | 이 값을 true로 설정하면 검색 | | 결과가 비어 있게 됩니다. | - false: (기본값) 데이터베이스 검색이 비활성화되지 않습니다. | |

Mattermost의 검색 동작은 활성화된 검색 엔진에 따라 달라집니다.

  • Elasticsearch 또는 AWS OpenSearch가 활성화되어 있으면 Mattermost는 이를 가장 먼저 사용하려고 시도합니다.
  • Elasticsearch가 실패하거나 비활성화된 경우, Mattermost는 Bleve 검색이 활성화되어 있으면 이를 사용하려고 시도합니다. Bleve 검색은 Mattermost v11.0에서 더 이상 사용되지 않습니다. 엔터프라이즈 검색 기능에는 Elasticsearch 또는 OpenSearch를 사용하는 것을 권장합니다.
  • 이들이 실패하거나 비활성화된 경우, Mattermost는 데이터베이스 직접 검색이 활성화되어 있으면 데이터베이스를 직접 검색합니다.
  • 위의 모든 방법이 실패하거나 비활성화된 경우 검색 결과는 비어 있게 됩니다.
Note

규모가 큰 배포에서 이 구성 설정을 비활성화하면 다음 영역에서 서버 성능이 향상될 수 있습니다.

  • 데이터베이스 부하 감소: 데이터베이스 검색이 활성화되어 있으면 사용자가 실행하는 모든 검색 쿼리가 데이터베이스와 상호 작용해야 하므로 데이터베이스 서버에 추가 부하가 발생합니다. 데이터베이스 검색을 비활성화하면 이러한 쿼리를 피할 수 있어 데이터베이스 부하가 줄어듭니다.
  • 응답 시간 개선: 데이터베이스 검색은 특히 대용량 데이터 세트에서 시간이 오래 걸릴 수 있습니다. 데이터베이스 검색을 비활성화하면 시스템이 더 이상 데이터베이스에서 검색 결과를 가져와 처리하는 데 시간을 쓰지 않으므로 응답 시간이 빨라질 수 있습니다.
  • 인덱싱 서비스로 검색 오프로드: 데이터베이스 검색을 비활성화하면 검색 작업에 최적화된 Elasticsearch와 같은 전문 인덱싱 서비스로 검색이 오프로드되는 경우가 많습니다. 이러한 서비스는 기존 데이터베이스 검색보다 더 빠르고 효율적인 검색 기능을 제공할 수 있습니다.
  • 리소스 소비 감소: 데이터베이스에 대해 직접 검색 쿼리를 실행하면 리소스(CPU 및 메모리)를 많이 사용할 수 있습니다. 데이터베이스 검색을 비활성화하면 이 리소스를 다른 핵심 기능에 할당할 수 있어 전체 시스템 성능이 향상됩니다.
  • 확장성 향상: 사용자 수와 데이터 볼륨이 증가하면 데이터베이스 검색의 효율이 떨어질 수 있습니다. 전문 검색 서비스는 더 효과적으로 확장되도록 설계되어 전체 시스템 확장성과 성능을 높입니다.

그러나 Mattermost에서 데이터베이스 검색을 수행하는 기능은 특히 다른 검색 엔진이 활성화되어 있지 않은 경우 많은 사용자에게 핵심 기능입니다. 이 기능을 비활성화하면 사용자가 Mattermost 검색 상자를 사용하려고 할 때 오류가 표시됩니다. 성능 개선과 조직 및 사용자의 요구 사이에 균형을 맞추는 것이 중요합니다.

적용된 스키마 마이그레이션#

db_migrations 테이블에서 확인할 수 있는 버전 정보를 기준으로 데이터 저장소에 적용된 모든 마이그레이션의 목록입니다. 배포에 적용된 현재 데이터베이스 스키마 버전을 확인하려면 제품 제품 메뉴 아이콘을 사용하여 Channels, 협업 플레이북, 보드 간에 이동합니다. 메뉴에서 Mattermost 정보를 선택하세요.

활성 검색 백엔드#

현재 검색에 사용 중인 활성 백엔드를 읽기 전용으로 표시합니다. 값은 none, database, elasticsearch, bleve 중 하나일 수 있습니다.

읽기 복제본#

읽기 복제본 데이터베이스의 연결 문자열을 지정합니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: SqlSettings > DataSourceReplicas > []
  • 환경 변수: MM_SQLSETTINGS_DATASOURCEREPLICAS
Note
  • 배열의 각 데이터베이스 연결 문자열은 데이터 소스 설정에 사용하는 것과 같은 형식이어야 합니다.
  • Mattermost가 여러 데이터베이스 인스턴스에 읽기 쿼리를 로드 밸런싱할 수 있도록 배열에서 여러 읽기 복제본을 공백으로 구분하세요. 예: MM_SQLSETTINGS_DATASOURCEREPLICAS=dc-1 dc-2
  • 여기에 추가한 각 항목은 모든 Mattermost 서버 노드에서 MaxOpenConns 크기의 자체 연결 풀을 열며, 다른 항목과 풀을 공유하지 않습니다. 복제본을 추가하기 전에 해당 설정의 참고 사항에서 클러스터 전체 크기 산정 계산을 확인하세요.

AWS 고가용성 RDS 클러스터 배포#

AWS 고가용성 RDS 클러스터 배포의 경우, AWS/RDS가 처리하는 장애 조치/로드 밸런싱(쓰기 트래픽 제외)을 우회하려면 이 구성 설정을 RDS 클러스터 내의 기본 읽기 전용 노드 엔드포인트로 직접 지정하세요. Mattermost에는 읽기 전용 연결을 분산하는 자체 방법이 있으며, 해당 노드가 실패하면 이러한 쿼리를 데이터 소스/쓰기+읽기 연결로 분산할 수도 있습니다. 자세한 내용은 고가용성 데이터베이스 구성 문서를 참조하세요.

검색 복제본#

검색 복제본 데이터베이스의 연결 문자열을 지정합니다. 검색 복제본은 읽기 복제본과 비슷하지만 검색 쿼리를 처리하는 데에만 사용됩니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: SqlSettings > DataSourceSearchReplicas > []
  • 환경 변수: MM_SQLSETTINGS_DATASOURCESEARCHREPLICAS
Note
  • 배열의 각 데이터베이스 연결 문자열은 데이터 소스 설정에 사용하는 것과 같은 형식이어야 합니다.
  • 여기에 추가한 각 항목은 모든 Mattermost 서버 노드에서 MaxOpenConns 크기의 자체 연결 풀을 열며, 다른 항목과 풀을 공유하지 않습니다. 검색 복제본을 추가하기 전에 해당 설정의 참고 사항에서 클러스터 전체 크기 산정 계산을 확인하세요.

AWS 고가용성 RDS 클러스터 배포#

AWS 고가용성 RDS 클러스터 배포의 경우, AWS/RDS가 처리하는 장애 조치/로드 밸런싱(쓰기 트래픽 제외)을 우회하려면 이 구성 설정을 RDS 클러스터 내의 기본 읽기 전용 노드 엔드포인트로 직접 지정하세요. Mattermost에는 읽기 전용 연결을 분산하는 자체 방법이 있으며, 해당 노드가 실패하면 이러한 쿼리를 데이터 소스/쓰기+읽기 연결로 분산할 수도 있습니다. 자세한 내용은 고가용성 데이터베이스 구성 문서를 참조하세요.

복제본 지연 설정#

사용 가능 플랜: Enterprise, Enterprise Advanced

문자열 배열 입력으로 단일 복제본 인스턴스의 복제본 지연을 측정하기 위한 연결 문자열과 데이터베이스에 대한 사용자 정의 SQL 쿼리를 지정합니다.

이 설정은 바이너리 로그 거리/트랜잭션 큐 길이를 기반으로 한 절대 지연과 복제본이 따라잡는 데 걸리는 시간을 모니터링합니다.

문자열 배열 입력은 다음으로 구성됩니다.

  • DataSource: 데이터베이스 인스턴스에 연결하기 위한 데이터베이스 자격 증명입니다.
  • QueryAbsoluteLag: 단일 행을 반환해야 하는 일반 SQL 쿼리입니다. 첫 번째 칼럼은 Prometheus 메트릭의 노드 값이어야 하고, 두 번째 칼럼은 절대 지연을 측정하는 데 사용하는 지연 값이어야 합니다.
  • QueryTimeLag: 단일 행을 반환해야 하는 일반 SQL 쿼리입니다. 첫 번째 칼럼은 Prometheus 메트릭의 노드 값이어야 하고, 두 번째 칼럼은 시간 지연을 측정하는 데 사용하는 지연 값이어야 합니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: SqlSettings > ReplicaLagSettings > []
  • 환경 변수: MM_SQLSETTINGS_REPLICALAGSETTINGS
Note
  • QueryAbsoluteLag 및 QueryTimeLag 쿼리는 단일 행을 반환해야 합니다.
  • 이를 제대로 모니터링하려면 Mattermost용 성능 모니터링을 설정해야 합니다.
  1. 데이터베이스 유형에 따라 복제본 지연 메트릭을 구성하세요. 각 데이터베이스 유형별 구성 방법은 다음 탭을 참조하세요.

아래에 강조 표시된 구성을 SqlSettings.ReplicaLagSettings 배열에 추가하세요. AWS Aurora 노드의 복제 통계는 클러스터 구성원인 모든 서버 인스턴스에서 볼 수 있으므로 한 번만 추가하면 됩니다. DataSource는 그룹 내 단일 노드를 가리키도록 변경해야 합니다.

Aurora 복제 통계에 대한 자세한 내용은 AWS Aurora documentaion을 참조하세요.

예시

&#123;
  "SqlSettings": &#123;
      "ReplicaLagSettings": [
        &#123;
            "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=<>"
        &#125;
      ]
  &#125;
&#125;

아래에 강조 표시된 구성을 SqlSettings.ReplicaLagSettings 배열에 추가하세요. 모든 노드의 복제 통계는 MySQL 복제 그룹의 구성원인 모든 서버 인스턴스에서 공유되므로 한 번만 추가하면 됩니다. DataSource는 그룹 내 단일 노드를 가리키도록 변경해야 합니다.

그룹 복제 통계에 대한 자세한 내용은 MySQL 문서를 참조하세요.

예시

&#123;
  "SqlSettings": &#123;
      "ReplicaLagSettings": [
        &#123;
            "DataSource": "replica-1",
            "QueryAbsoluteLag": "select member_id, count_transactions_remote_in_applier_queue FROM performance_schema.replication_group_member_stats where member_id=<>",
            "QueryTimeLag": ""
        &#125;
      ]
  &#125;
&#125;
  1. 아래에 강조 표시된 구성을 SqlSettings.ReplicaLagSettings 배열에 추가하세요. 이 쿼리는 클러스터의 기본 노드에서 실행해야 하므로, DataSource를 구성한 SqlSettings.DataSource 설정과 일치하도록 변경하세요.

pg_stat_replication에 대한 자세한 내용은 PostgreSQL 문서를 참조하세요.

예시:

&#123;
  "SqlSettings": &#123;
      "ReplicaLagSettings": [
        &#123;
            "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": ""
        &#125;
      ]
  &#125;
&#125;
  1. 데이터베이스 사용자에게 pg_monitor 권한을 부여하세요. 이 사용자는 위의 DataSource 문자열에 구성한 사용자와 같아야 합니다.

역할에 대한 자세한 내용은 PostgreSQL 문서를 참조하세요.

sudo -u postgres psql
postgres=# GRANT pg_monitor TO mmuser;
  1. 구성을 저장하고 모든 Mattermost 노드를 다시 시작하세요.
  2. Mattermost를 모니터링하는 Grafana 인스턴스로 이동하여 Mattermost Performance Monitoring v2 대시보드를 여세요.
  3. QueryTimeLag 차트는 기존 Replica Lag 차트를 활용하여 이미 설정되어 있습니다. QueryAbsoluteLag 메트릭을 사용하는 경우 Replica Lag 차트를 복제하고 쿼리를 아래의 절대 지연 메트릭을 사용하도록 편집한 다음 제목을 Replica Lag Absolute로 수정하세요.
mattermost_db_replica_lag_abs&#123;instance=~"$server"&#125;

Grafana에서 차트를 복제하는 방법을 보여 주는 스크린샷

복제한 Grafana 차트에서 수행할 구체적인 편집 내용을 보여 주는 스크린샷.

복제본 모니터 간격(초)#

비정상 복제본의 활성 상태 확인을 얼마나 자주 모니터링할지 지정합니다. Mattermost는 복제본이 활성 상태이면 동적으로 해당 복제본을 선택합니다.

숫자 입력. 기본값은 5초입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: SqlSettings > ReplicaMonitorIntervalSeconds > 5
  • 환경 변수: MM_SQLSETTINGS_REPLICAMONITORINTERVALSECONDS
Note

이 구성 설정은 셀프 호스팅 배포에만 적용됩니다.


엔터프라이즈 검색#

사용 가능 플랜: Enterprise, Enterprise Advanced

핵심 데이터베이스 검색은 관계형 데이터베이스에서 이루어지며 게시물과 파일 항목이 약 200만~300만 건 미만인 배포를 대상으로 합니다. 이 규모를 넘어서면 게시물이 300만 건에 도달하기 전에 최적의 검색 성능을 위해 Elasticsearch 또는 AWS OpenSearch로 엔터프라이즈 검색을 활성화하는 것을 강력히 권장합니다.

게시물이 300만 건을 넘는 셀프 호스팅 배포에서는 메시지 검색 및 @멘션에서 타임아웃과 같은 심각한 성능 문제를 피하기 위해 Elasticsearch 또는 AWS OpenSearch가 필요합니다.

System Console > Environment > Elasticsearch로 이동하여 Mattermost 엔터프라이즈 검색을 구성할 수 있습니다. 다음 구성 설정은 Elasticsearch와 AWS OpenSearch 모두에 적용됩니다. 다음 표에서 설명한 대로 config.json 파일을 편집할 수도 있습니다. 이 섹션의 구성 설정 변경 사항은 적용되기 전에 서버를 다시 시작해야 합니다.

Elasticsearch 인덱싱 활성화#

새 게시물을 자동으로 인덱싱하도록 Mattermost를 구성합니다.

  • true: 새 메시지의 인덱싱이 자동으로 이루어집니다.
  • false: (기본값) 새 메시지의 인덱싱이 비활성화되어 새 메시지가 인덱싱되지 않습니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > EnableIndexing > false
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_ENABLEINDEXING
Note

인덱싱을 비활성화한 뒤 인덱스를 생성한 후에 다시 활성화한 경우, 검색 결과가 완전하도록 인덱스를 제거하고 다시 빌드하세요.

백엔드 유형#

Elasticsearch와 AWS OpenSearch 모두 엔터프라이즈 규모 배포에 최적화된 검색 성능을 제공하며 성능 저하와 타임아웃을 방지합니다. 제품 문서에서 엔터프라이즈 검색에 대해 자세히 알아보세요.

검색 백엔드의 유형입니다.

  • elasticsearch - (기본값)
  • opensearch - AWS OpenSearch에 필요합니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > Backend > "elasticsearch"
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_BACKEND

엔터프라이즈 검색 버전 지원에 대해 자세히 알아보세요.

서버 연결 주소#

Elasticsearch 또는 AWS OpenSearch 서버의 주소입니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > ConnectionUrl
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_CONNECTIONURL

CA 경로#

Elasticsearch 또는 AWS OpenSearch 서버의 커스텀 인증 기관(Certificate Authority) 인증서에 대한 선택적 경로입니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > CA
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_CA
Note
  • Mattermost v7.8부터 사용할 수 있습니다. 인증서 경로는 /opt/mattermost/data/elasticsearch/ 또는 /opt/mattermost/data/opensearch여야 하며 System Console에서 ./elasticsearch/cert.pem 또는 ./opensearch/cert.pem으로 구성합니다.
  • 기본 인증 자격 증명과 함께 사용하거나 이를 대체할 수 있습니다. 운영 체제의 기본 인증 기관 인증서를 사용하려면 이 설정을 비워 두세요.

클라이언트 인증서 경로#

Mattermost v7.8부터 사용할 수 있습니다. 기본 인증 자격 증명과 함께 사용하거나 이를 대체할 수 있습니다.

Elasticsearch 또는 AWS OpenSearch 서버에 연결하기 위한 PEM 형식의 선택적 클라이언트 인증서입니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > ClientCert
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_CLIENTCERT

클라이언트 인증서 키 경로#

Mattermost v7.8부터 사용할 수 있습니다. 기본 인증 자격 증명과 함께 사용하거나 이를 대체할 수 있습니다.

PEM 형식의 클라이언트 인증서용 선택적 키입니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > ClientKey
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_CLIENTKEY

TLS 검증 건너뛰기#

TLS 연결의 인증서 단계를 건너뛸 수 있습니다.

  • true: TLS 연결의 인증서 검증 단계를 건너뜁니다.
  • false: (기본값) Mattermost가 인증서 검증을 요구합니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > SkipTLSVerification > false
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_SKIPTLSVERIFICATION

서버 사용자 이름#

(선택 사항) Elasticsearch 또는 AWS OpenSearch 서버에 인증하기 위한 사용자 이름입니다.

문자열 입력.

  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > UserName
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_USERNAME

서버 비밀번호#

(선택 사항) Elasticsearch 또는 AWS OpenSearch 서버에 인증하기 위한 비밀번호입니다.

문자열 입력.

  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > Password
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_PASSWORD

클러스터 스니핑 활성화#

클러스터의 모든 데이터 노드를 자동으로 찾아 연결하도록 Mattermost를 구성합니다.

  • true: 스니핑이 클러스터의 모든 데이터 노드를 자동으로 찾아 연결합니다.
  • false: (기본값) 클러스터 스니핑이 비활성화됩니다.

Amazon OpenSearch Service와 같은 클라우드 호스팅 검색 제공업체를 사용할 때는 클러스터 스니핑을 활성화하지 마세요.

  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > Sniff > false
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_SNIFF

Mattermost와 Elasticsearch 또는 AWS OpenSearch 서버 간의 연결을 검증하려면 System Console에서 연결 테스트 버튼을 선택하세요.

대량 인덱싱#

데이터베이스에 있는 모든 기존 게시물을 오래된 것부터 최신 순으로 대량 인덱싱을 시작하도록 Mattermost를 구성합니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: 해당 없음
  • 환경 변수: 해당 없음
Note
  • 대량 인덱싱 전에는 항상 인덱스를 제거하세요.
  • System Console에서 지금 인덱싱 버튼을 선택하면 모든 게시물의 대량 인덱싱이 시작되며, 진행 중인 모든 인덱스 작업을 확인할 수 있습니다.
  • 인덱싱 중에도 Elasticsearch 또는 AWS OpenSearch를 사용할 수 있지만, 인덱싱 작업이 완료될 때까지 검색 결과가 불완전할 수 있습니다.
  • 진행 중인 인덱싱 작업을 취소하면 인덱스와 검색 결과가 불완전해집니다.

채널 인덱스 다시 빌드#

채널 인덱스를 제거하고 데이터베이스에 있는 모든 채널을 오래된 것부터 최신 순으로 다시 인덱싱합니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: 해당 없음
  • 환경 변수: 해당 없음

채널 인덱스를 제거하려면 System Console에서 채널 인덱스 다시 빌드 버튼을 선택하세요. 이 과정을 시작하기 전에 대량 인덱싱 표에서 진행 중인 다른 인덱싱 작업이 없는지 확인하세요. 인덱싱 중에도 채널 자동 완성을 사용할 수 있지만, 인덱싱 작업이 완료될 때까지 검색 결과가 불완전할 수 있습니다.

인덱스 제거#

전체 Elasticsearch 인덱스를 제거합니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: 해당 없음
  • 환경 변수: 해당 없음

인덱스를 제거하려면 System Console에서 인덱스 제거 버튼을 선택하세요. 인덱스를 제거한 후 지금 인덱싱 버튼을 선택하여 새 인덱스를 만드세요.

제거 시 건너뛸 인덱스#

인덱스를 제거할 때 무시할 인덱스 이름을 지정합니다. 여러 인덱스 이름은 쉼표로 구분하세요.

별표(*)를 사용하면 인덱스 이름의 연속된 문자열과 일치시킬 수 있습니다.

  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > IgnoredPurgeIndexes
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_IGNOREDPURGEINDEXES

검색 쿼리에 Elasticsearch 활성화#

최신 인덱스를 사용하는 모든 검색 쿼리에 Elasticsearch 또는 AWS OpenSearch를 사용하도록 Mattermost를 구성합니다.

  • true: 최신 인덱스를 사용하는 모든 검색 쿼리에 Elasticsearch 또는 AWS OpenSearch를 사용합니다. 기존 메시지 데이터베이스의 대량 인덱싱이 완료될 때까지 검색 결과가 불완전할 수 있습니다.
  • false: (기본값) 검색 쿼리에 데이터베이스 검색을 사용합니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > EnableSearching > false
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_ENABLESEARCHING

인덱싱을 비활성화한 뒤 인덱스를 생성한 후에 다시 활성화한 경우, 검색 결과가 완전하도록 인덱스를 제거하고 다시 빌드하세요.

자동 완성 쿼리에 Elasticsearch 활성화#

최신 인덱스를 사용하는 사용자 및 채널에 대한 모든 자동 완성 쿼리에 Elasticsearch 또는 AWS OpenSearch를 사용하도록 Mattermost를 구성합니다.

  • true: 최신 인덱스를 사용하는 사용자 및 채널에 대한 모든 자동 완성 쿼리에 Elasticsearch 또는 AWS OpenSearch를 사용합니다.
  • false: (기본값) 데이터베이스 자동 완성을 사용합니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > EnableAutocomplete > false
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_ENABLEAUTOCOMPLETE

기존 사용자 및 채널 데이터베이스의 대량 인덱싱이 완료될 때까지 자동 완성 결과가 불완전할 수 있습니다.

멤버가 아닌 공개 채널 검색 허용#

사용자가 참여하지 않은 공개 채널의 메시지를 검색할 수 있도록 허용합니다.

처음 활성화하면 기존 게시물이 백그라운드에서 채널 유형 정보로 업데이트됩니다. 이 백필 프로세스는 검색 성능에 영향을 주지 않도록 초당 약 10,000개 게시물로 제한됩니다.

  • true: 사용자는 자신이 속한 팀 범위 내에서 참여하지 않은 공개 채널의 메시지를 찾을 수 있습니다.
  • false: (기본값) 사용자는 자신이 멤버인 채널의 메시지만 검색할 수 있습니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > EnableSearchPublicChannelsWithoutMembership > false
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_ENABLESEARCHPUBLICCHANNELSWITHOUTMEMBERSHIP
Note

컴플라이언스 모드가 활성화되어 있으면 이 설정은 아무 영향이 없습니다. 컴플라이언스 모드가 활성 상태이면 검색 결과는 항상 사용자가 멤버인 채널로 제한됩니다.

파일 인덱싱 활성화#

Mattermost가 Elasticsearch 또는 AWS OpenSearch에서 첨부 파일을 인덱싱할지 여부를 구성합니다.

  • true: (기본값) 새로 추가되거나 업데이트된 첨부 파일이 인덱싱되고, 대량 인덱싱 작업에 파일이 포함됩니다.
  • false: 새로 추가되거나 업데이트된 첨부 파일이 인덱싱되지 않으며, 대량 인덱싱 작업에서 파일을 건너뜁니다. 파일 검색은 이전에 인덱싱된 파일을 계속 반환하며, Mattermost에서 삭제된 파일은 여전히 인덱스에서 제거됩니다.
  • 시스템 구성 경로: Environment > Elasticsearch
  • config.json 설정: ElasticsearchSettings > EnableFileIndexing > true
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_ENABLEFILEINDEXING

이 설정이 false인 동안 업로드된 파일은 파일 검색 결과에 나타나지 않습니다. 설정을 다시 true로 변경한 후 System Console > Environment > Elasticsearch에서 대량 인덱싱을 실행하면 해당 파일을 검색할 수 있습니다.

게시물 인덱스 복제본#

각 게시물 인덱스에 사용할 복제본 수입니다.

숫자 입력. 기본값은 1입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > PostIndexReplicas > 1
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_POSTINDEXREPLICAS
Note
  • 이 설정이 변경되면 변경된 구성은 새로 생성된 인덱스에만 적용됩니다. 기존 인덱스에 변경 사항을 적용하려면 이 설정을 변경한 후 인덱스를 제거하고 재구성하세요.
  • n개의 데이터 노드가 있는 경우, 각 인덱스의 샤드당 복제본 수는 n-1이어야 합니다.
  • Elasticsearch 또는 AWS OpenSearch 클러스터의 노드 수가 변경되면, 이 구성 설정과 함께 채널 인덱스 복제본 및 사용자 인덱스 복제본도 적절히 업데이트해야 합니다.

게시물 인덱스 샤드#

각 게시물 인덱스에 사용할 샤드 수입니다.

숫자 입력. 기본값은 1입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > PostIndexShards > 1
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_POSTINDEXSHARDS
Note

이 구성 설정이 변경되면 변경된 구성은 새로 생성된 인덱스에만 적용됩니다. 기존 인덱스에 변경 사항을 적용하려면 이 설정을 변경한 후 인덱스를 제거하고 재구성하세요.

채널 인덱스 복제본#

각 채널 인덱스에 사용할 복제본 수입니다.

숫자 입력. 기본값은 1입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > ChannelIndexReplicas > 1
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_CHANNELINDEXREPLICAS
Note

n개의 데이터 노드가 있는 경우, 각 인덱스의 샤드당 복제본 수는 n-1이어야 합니다. Elasticsearch 또는 AWS OpenSearch 클러스터의 노드 수가 변경되면, 이 구성 설정과 함께 게시물 인덱스 복제본 및 사용자 인덱스 복제본도 적절히 업데이트해야 합니다.

채널 인덱스 샤드#

각 채널 인덱스에 사용할 샤드 수입니다.

숫자 입력. 기본값은 1입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > ChannelIndexShards > 1
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_CHANNELINDEXSHARDS

사용자 인덱스 복제본#

각 사용자 인덱스에 사용할 복제본 수입니다.

숫자 입력. 기본값은 1입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > UserIndexReplicas > 1
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_USERINDEXREPLICAS
Note

n개의 데이터 노드가 있는 경우, 각 인덱스의 샤드당 복제본 수는 n-1이어야 합니다. Elasticsearch 또는 AWS OpenSearch 클러스터의 노드 수가 변경되면, 이 구성 설정과 함께 게시물 인덱스 복제본 및 사용자 인덱스 복제본도 적절히 업데이트해야 합니다.

사용자 인덱스 샤드#

각 사용자 인덱스에 사용할 샤드 수입니다.

숫자 입력. 기본값은 1입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > UserIndexShards > 1
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_USERINDEXSHARDS

검색 인덱스 집계#

이 설정에서 지정한 기간(일)보다 오래된 Elasticsearch 또는 AWS OpenSearch 인덱스는 매일 예약된 작업 중에 집계됩니다.

숫자 입력. 기본값은 365일입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > AggregatePostsAfterDays > 365
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_AGGREGATEPOSTSAFTERDAYS
Note

데이터 보존과 엔터프라이즈 검색을 함께 사용하는 경우, 데이터 보존 정책보다 큰 값으로 설정하세요.

게시물 집계기 시작 시간#

매일 예약된 집계기 작업의 시작 시간입니다.

서버의 현지 시간을 기준으로 HH:MM 형식의 24시간제 타임스탬프여야 합니다.

기본값은 03:00(오전 3시)입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > PostsAggregatorJobStartTime > "03:00"
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_POSTSAGGREGATORJOBSTARTTIME

인덱스 접두사#

Elasticsearch 또는 AWS OpenSearch 인덱스 이름에 추가되는 접두사입니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > IndexPrefix
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_INDEXPREFIX
Note

이 설정이 사용되면 Mattermost에서 생성한 모든 Elasticsearch 또는 AWS OpenSearch 인덱스에 이 접두사가 붙습니다. 여러 Mattermost 배포가 인덱스 이름이 충돌하지 않도록 Elasticsearch 또는 AWS OpenSearch 클러스터를 공유할 수 있도록 다른 접두사를 설정할 수 있습니다.

글로벌 검색 접두사#

동일한 인덱스 접두사를 가진 여러 Elasticsearch 인덱스에 걸쳐 글로벌 검색을 활성화합니다.

여러 데이터 센터에서 Elasticsearch 인스턴스가 클러스터 간 복제를 사용하여 데이터를 공유하는 구성에 유용합니다. 분산된 인덱스 전반에서 더 쉽고 통합된 검색이 가능합니다.

값은 IndexPrefix의 접두사여야 합니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > GlobalSearchPrefix
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_GLOBALSEARCHPREFIX

실시간 인덱싱 배치 크기#

새 게시물이 Elasticsearch 또는 AWS OpenSearch 인덱스에 추가되기 전에 필요한 새 게시물 수입니다. 인덱스에 추가되면 해당 게시물을 검색할 수 있게 됩니다.

초당 1개 이상의 게시물이 있는 서버에서는 이 값을 20초 동안의 평균 게시물 수로 설정하는 것을 권장합니다.

숫자 입력. 기본값은 1입니다. 모든 게시물은 생성되는 즉시 동기적으로 인덱싱됩니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > LiveIndexingBatchSize > 1
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_LIVEINDEXINGBATCHSIZE
Note

초당 1개 이상의 게시물을 처리하는 설치의 경우, Elasticsearch 또는 AWS OpenSearch 클러스터의 속도 제한 또는 리소스 제한에 도달하지 않으려면 이 값을 늘려야 할 수 있습니다.

이 값을 증가시키면 정확히 어떤 일이 발생합니까?

주요 영향은 게시물의 임계값이 충족된 후 게시물이 Elasticsearch 또는 AWS OpenSearch에 인덱싱되어 Mattermost 내에서 게시물을 검색할 수 있게 된다는 것입니다. 따라서 더 큰 서버에 대한 권장 사항을 기반으로 이 값을 설정하고 게시물을 작성하면 평균적으로 약 10~20초 동안 검색을 통해 찾을 수 없습니다. 현실적으로 이렇게 빠르게 게시물을 활발하게 검색하는 사용자의 수가 제한되어 있으므로 어떤 사용자도 이 영향을 느끼지 않아야 합니다. Elasticsearch 또는 AWS OpenSearch 서버 사양에 따라 이 값을 더 낮거나 높게 설정할 수 있습니다.

사용량이 많은 기간에는 더 많은 트래픽이 발생하여 더 많은 게시물이 생성되고 인덱스 번호에 도달하는 시간이 빨라지므로 이 지연이 더 빨라집니다. 사용량이 적은 기간에는 그 반대를 예상하세요.

서버에 적합한 숫자를 찾는 방법

  1. 서버에서 매분 얼마나 많은 게시물이 작성되는지 이해해야 합니다. 아래 쿼리를 실행하여 서버의 분당 평균 게시물 수를 계산하세요.

    이 쿼리는 부하가 클 수 있으므로 비피크 시간에 실행하는 것을 권장합니다. 또한 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;
    
  2. 환경에 허용 가능한 인덱스 창을 결정하고, 분당 평균 게시물 수를 그것으로 나눕니다. 10-20초를 권장합니다. 평균적으로 분당 600개의 게시물이 있고 20초마다 인덱싱하려면 (60초 / 20초 = 3)을 적용하여 600 / 3을 계산하면 200`이라는 숫자가 나옵니다. 200개의 게시물 후에 Mattermost는 게시물을 Elasticsearch 또는 AWS OpenSearch에 인덱싱합니다. 따라서 평균적으로 검색 가능성에 20초의 지연이 있습니다.

  3. config.json을 편집하거나 mmctl을 실행하여 LiveIndexingBatchSize 설정을 수정합니다

    ``config.json``에서

    &#123;
      "ElasticsearchSettings": &#123;
        "LiveIndexingBatchSize": 200
      &#125;
    &#125;
    

    mmctl 사용

    mmctl config set ElasticsearchSettings.LiveIndexingBatchSize 200
    

    환경 변수 사용

    MM_ELASTICSEARCHSETTINGS_LIVEINDEXINGBATCHSIZE = 200
    
  4. Mattermost 서버를 재시작합니다.

배치 크기#

대량 인덱싱 작업에서 한 번의 배치에 포함되는 게시물 수입니다.

숫자 입력. 기본값은 10000입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > BatchSize > 10000
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_BATCHSIZE

요청 타임아웃#

Elasticsearch 또는 AWS OpenSearch 호출의 타임아웃(초)입니다.

초 단위 숫자 입력. 기본값은 30초입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > RequestTimeoutSeconds > 30
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_REQUESTTIMEOUTSECONDS

추적#

Elasticsearch 또는 AWS OpenSearch 추적 오류를 출력하는 옵션입니다.

  • error: Elasticsearch 또는 AWS OpenSearch 클라이언트를 초기화할 때 오류 추적을 생성하고, 오류를 반환하는 템플릿 생성 또는 검색 쿼리를 오류 메시지의 일부로 출력합니다.
  • all: 드라이버에 대해 세 가지 추적(error, trace, info)을 생성하며, 쿼리는 드라이버의 trace 로그 수준에 포함되므로 출력하지 않습니다.
  • not specified: (기본값) 오류 추적을 생성하지 않습니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > Trace
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_TRACE

CJK 분석기 활성화#

활성화하면 Mattermost가 언어별 분석기 플러그인을 사용하여 한국어, 일본어, 중국어 콘텐츠의 검색 결과를 개선합니다. 이 설정을 활성화하기 전에 필요한 분석기 플러그인이 Elasticsearch 또는 AWS OpenSearch 서버에 설치되어 있어야 합니다.

지원되는 플러그인:

  • analysis-nori (한국어)
  • analysis-kuromoji (일본어)
  • analysis-smartcn (중국어)
  • true: CJK 언어별 분석기가 활성화됩니다.
  • false: (기본값) 표준 분석기를 사용합니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: ElasticsearchSettings > EnableCJKAnalyzers > false
  • 환경 변수: MM_ELASTICSEARCHSETTINGS_ENABLECJKANALYZERS
Note

Mattermost v11.6부터 사용 가능합니다. 전체 분석 지원을 위해 이 설정을 활성화하기 전에 Elasticsearch 또는 AWS OpenSearch 서버에 필요한 분석기 플러그인이 설치되어 있어야 합니다. 플러그인이 감지되지 않으면 경고가 기록됩니다. 플러그인 설치 지침은 Elasticsearch 설정 및 AWS OpenSearch 설정 문서를 참조하세요.

이전에 Elasticsearch 또는 AWS OpenSearch를 실행하던 서버에서 이 설정을 활성화하는 경우, 기존 콘텐츠가 새 분석기로 올바르게 검색 가능하도록 검색 인덱스를 제거하고 재구성해야 합니다. 인덱스 제거 및 재구성 지침은 Elasticsearch 설정 문서를 참조하세요.


파일 스토리지#

셀프 호스팅 배포에서는 System Console > Environment > File Storage로 이동하거나 다음 테이블에서 설명한 대로 config.json 파일을 편집하여 파일 스토리지 설정을 구성할 수 있습니다.

Note

Mattermost는 로컬 파일 시스템, Amazon S3 또는 S3 호환 컨테이너, Azure Blob Storage에 파일을 저장하는 것을 지원합니다. Digital Ocean Spaces로 Mattermost를 테스트했지만 시장의 모든 S3 호환 컨테이너는 테스트하지 않았습니다. 다른 S3 호환 컨테이너를 사용하려는 경우 자체적으로 테스트를 완료하는 것을 권장합니다. NFS를 사용하여 로컬 스토리지 또는 네트워크 드라이브를 사용할 수도 있습니다.

Tip

Azure 리소스 프로비저닝, System Console 구성, 검증 절차를 다루는 단계별 안내는 Mattermost 파일 스토어로 Azure Blob Storage 구성하기 문서를 참조하세요.

파일 스토리지 시스템#

사용하는 파일 스토리지 시스템의 유형입니다. 로컬 파일 시스템, Amazon S3, Azure Blob Storage 중에서 선택할 수 있습니다.

  • local: (기본값) 파일과 이미지가 지정된 로컬 파일 디렉터리에 저장됩니다.
  • amazons3: 제공된 액세스 키, 버킷, 리전 필드를 기반으로 파일과 이미지가 Amazon S3에 저장됩니다. 이 드라이버는 Digital Ocean Spaces와 같은 다른 S3 호환 서비스와도 호환됩니다.
  • azureblob: 제공된 스토리지 계정 이름, 공유 키, 컨테이너 필드를 기반으로 파일과 이미지가 Azure Blob Storage에 저장됩니다.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > DriverName > "local"
  • 환경 변수: MM_FILESETTINGS_DRIVERNAME
Note

새 파일 스토리지 시스템을 저장한 후에는 변경 사항이 적용되도록 배포된 모든 Mattermost 서버를 재시작하세요. 파일 스토리지 백엔드는 시작 시 초기화되며, 런타임에 FileSettings가 변경되어도 자동으로 다시 빌드되지 않습니다.

로컬 스토리지 디렉터리#

파일 스토리지 시스템이 local로 설정된 경우 파일이 기록되는 로컬 디렉터리입니다. Mattermost를 실행하는 사용자가 쓰기 권한을 가진 모든 디렉터리를 지정할 수 있으며, Mattermost가 설치된 디렉터리를 기준으로 한 상대 경로입니다.

기본값은 ./data/입니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > Directory
  • 환경 변수: MM_FILESETTINGS_DIRECTORY

파일 스토리지 시스템이 amazons3로 설정된 경우 이 설정은 적용되지 않습니다.

최대 파일 크기#

메시지 첨부 파일과 플러그인 업로드의 최대 파일 크기입니다. 이 값은 System Console에서는 메비바이트 단위로, config.json 파일에서는 바이트 단위로 지정해야 합니다.

기본값은 104857600바이트(100메비바이트)입니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > MaxFileSize > 104857600
  • 환경 변수: MM_FILESETTINGS_MAXFILESIZE
Note
  • 서버 메모리가 설정을 지원할 수 있는지 확인하세요. 파일 크기가 크면 네트워크 중단으로 인한 서버 충돌 및 업로드 실패 위험이 높아집니다.
  • 플러그인 파일 업로드 시 Received invalid response from the server 오류는 일반적으로 MaxFileSize가 플러그인 파일 업로드를 지원하기에 충분히 크지 않거나 프록시 설정이 충분하지 않을 수 있음을 나타냅니다.
  • Mattermost 앞에 프록시 또는 로드 밸런서를 사용하는 경우 다음 프록시 설정을 적절히 조정해야 합니다.
    • NGINX의 경우 client_max_body_size를 사용합니다.
    • Apache의 경우 LimitRequestBody를 사용합니다.

내용으로 문서 검색 활성화#

사용자가 메시지에 첨부된 문서의 내용을 검색할 수 있도록 합니다.

  • true: (기본값) 문서를 내용으로 검색할 수 있습니다.
  • false: 문서를 내용으로 검색할 수 없습니다. 문서 내용 검색이 비활성화되면 사용자는 파일 이름으로만 파일을 검색할 수 있습니다.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > ExtractContent > true
  • 환경 변수: MM_FILESETTINGS_EXTRACTCONTENT
Note

파일에서 콘텐츠를 추출할 때 내용으로 문서 검색 활성화가 필요합니다. Mattermost 파일 검색과 Mattermost Agents 모두 필요한 의존성이 활성화된 경우 파일과 해당 콘텐츠에 접근할 수 있습니다. Mattermost Server v5.35로 업그레이드하기 전에 공유된 파일의 문서 콘텐츠 검색 결과는 mmctl을 사용하여 추출 명령을 실행할 때까지 불완전할 수 있습니다. 이 명령이 실행되지 않으면 사용자는 파일 이름으로만 이전 파일을 검색할 수 있습니다.

선택적으로 다음 의존성을 설치하여 Mattermost의 콘텐츠 검색 지원을 DOC, RTF, XML, HTML과 같이 PDF, DOCX, ODT 이외의 파일 형식으로 확장할 수 있습니다.

  • tidy: HTML 문서의 콘텐츠 검색에 사용됩니다.
  • wv: DOC 문서의 콘텐츠 검색에 사용됩니다.
  • poppler-utils: PDF 문서 콘텐츠 추출 시 서버 성능을 크게 향상시키는 데 사용됩니다.
  • unrtf: RTF 문서의 콘텐츠 검색에 사용됩니다.
  • JusText: HTML 문서 검색에 사용됩니다. 배포 정보는 JusText Python 패키지를 참조하세요.

이러한 의존성을 설치하지 않으면 추출할 수 없는 문서에 대한 로그 항목이 표시됩니다. 추출할 수 없는 문서는 건너뛰고 기록되어 콘텐츠 추출이 계속 진행될 수 있습니다.

ZIP 파일 내 문서 내용 검색 활성화#

사용자가 메시지에 첨부된 압축 ZIP 파일의 내용을 검색할 수 있도록 합니다.

  • true: ZIP 파일 내 문서의 내용이 검색 결과에 반환됩니다. 대용량 파일의 경우 서버 성능에 영향을 줄 수 있습니다. 지정된 로컬 파일 디렉터리.
  • false: (기본값) ZIP 파일 내 문서의 내용이 검색 결과에 반환되지 않습니다.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > ArchiveRecursion > false
  • 환경 변수: MM_FILESETTINGS_ARCHIVERECURSION
Note
  • 웹 브라우저 또는 데스크톱 앱에서 Mattermost를 사용할 때 ZIP 파일 내 문서 콘텐츠를 검색할 수 있습니다.
  • 문서 콘텐츠 검색은 서버에 부하를 추가합니다.
  • 이 설정은 표준 ZIP 파일에만 적용됩니다. 7zip(.7z) 파일은 보안상의 이유로 차단되며 검색할 수 없습니다.
  • 대규모 배포 또는 대용량의 텍스트 위주 문서를 많이 공유하는 팀의 경우, 하드웨어 요구 사항을 검토하고 프로덕션 환경에서 활성화하기 전에 스테이징 환경에서 이 기능을 테스트하는 것을 권장합니다.

Amazon S3 버킷#

S3 호환 오브젝트 스토리지 인스턴스의 버킷 이름입니다.

S3 호환 버킷 이름을 나타내는 문자열입니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AmazonS3Bucket
  • 환경 변수: MM_FILESETTINGS_AMAZONS3BUCKET

Amazon S3 경로 접두사#

AWS에서 Amazon S3 버킷에 대해 선택한 접두사입니다.

경로 접두사를 포함하는 문자열입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: FileSettings > AmazonS3PathPrefix
  • 환경 변수: MM_FILESETTINGS_AMAZONS3PATHPREFIX

Amazon S3 리전#

AWS에서 Amazon S3 버킷을 생성할 때 선택한 AWS 리전입니다.

버킷이 포함된 AWS 리전을 나타내는 문자열입니다. 리전이 설정되지 않은 경우 Mattermost는 AWS에서 적절한 리전을 가져오려고 시도하며, 찾지 못하면 us-east-1로 설정합니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: `".FileSettings.AmazonS3Region",
  • 환경 변수: MM_FILESETTINGS_AMAZONS3REGION

Digital Ocean Spaces 또는 기타 S3 호환 서비스의 경우 이 설정을 비워두세요.

Amazon S3 액세스 키 ID#

S3 호환 스토리지 인스턴스의 액세스 키를 나타내는 문자열입니다. EC2 관리자가 액세스 키 ID를 제공해 줄 수 있습니다.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AmazonS3AccessKeyId
  • 환경 변수: MM_FILESETTINGS_AMAZONS3ACCESSKEYID
Note

Amazon S3에 Amazon S3 IAM 역할을 사용하는 경우가 아니라면 접근에 필요합니다.

Amazon S3 엔드포인트#

S3 호환 인스턴스의 호스트명입니다.

S3 호환 스토리지 인스턴스의 호스트명을 나타내는 문자열입니다. 기본값은 s3.amazonaws.com입니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AmazonS3Endpoint > "s3.amazonaws.com"
  • 환경 변수: MM_FILESETTINGS_AMAZONS3ENDPOINT
Note

Digital Ocean Spaces의 경우 호스트명은 <region>.digitaloceanspaces.com으로 설정해야 합니다. 여기서 <region>은 Space 설정 시 선택한 리전의 약어입니다. nyc3, ams3, 또는 sgp1이 될 수 있습니다.

Amazon S3 시크릿 액세스 키#

Amazon S3 액세스 키 ID와 연결된 시크릿 액세스 키입니다.

S3 호환 스토리지 인스턴스의 시크릿 액세스 키를 나타내는 문자열입니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AmazonS3SecretAccessKey
  • 환경 변수: MM_FILESETTINGS_AMAZONS3SECRETACCESSKEY

보안 Amazon S3 연결 활성화#

보안 Amazon S3 연결을 활성화하거나 비활성화합니다.

  • true: (기본값) 보안 Amazon S3 연결만 허용합니다.
  • false: Amazon S3에 대한 비보안 연결을 허용합니다.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AmazonS3SSL > true
  • 환경 변수: MM_FILESETTINGS_AMAZONS3SSL

Amazon S3 서명 v2#

기본적으로 Mattermost는 AWS에 대한 API 호출에 서명 v4를 사용하지만, 일부 상황에서는 v2가 필요합니다.

  • true: 서명 v2 서명 프로세스를 사용합니다.
  • false: (기본값) 서명 v4 서명 프로세스를 사용합니다.
  • 시스템 구성 경로: 해당 없음
  • config.json 설정: FileSettings > AmazonS3SignV2 > false
  • 환경 변수: MM_FILESETTINGS_AMAZONS3SIGNV2

서명 v2 서명 프로세스를 사용해야 하는 경우는 AWS 문서를 참조하세요.

Amazon S3 서버 측 암호화 활성화#

사용 가능 플랜: Enterprise, Enterprise Advanced

Amazon S3의 서버 측 암호화를 활성화합니다.

  • true: Amazon S3 관리형 키를 사용하는 서버 측 암호화로 Amazon S3의 파일을 암호화합니다.
  • false: (기본값) Amazon S3의 파일을 암호화하지 않습니다.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AmazonS3SSE > false
  • 환경 변수: MM_FILESETTINGS_AMAZONS3SSE
Note

이 구성 설정은 셀프 호스팅 배포에서만 사용 가능합니다.

Amazon S3 디버깅 활성화#

Amazon S3 디버깅을 활성화하거나 비활성화하여 시스템 로그에 추가 디버깅 정보를 기록합니다.

  • true: 추가 디버깅 정보가 시스템 로그에 기록됩니다.
  • false: (기본값) Amazon S3 디버깅 정보가 시스템 로그에 포함되지 않습니다. 일반적으로 프로덕션에서는 false로 설정합니다.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AmazonS3Trace > false
  • 환경 변수: MM_FILESETTINGS_AMAZONS3TRACE

System Console에서 연결 테스트 버튼을 선택하여 설정을 확인하고 사용자가 서버에 접근할 수 있는지 확인합니다.

Amazon S3 스토리지 클래스#

일부 Amazon S3 호환 스토리지 솔루션은 업로드 요청에 스토리지 클래스 파라미터가 포함되어야 하며, 그렇지 않으면 요청이 거부됩니다. S3 호환 솔루션에서 요구하는 스토리지 클래스를 설정합니다.

S3 호환 스토리지 솔루션에 업로드할 때 사용할 스토리지 클래스입니다.

문자열 입력. 기본값은 빈 문자열 ""입니다. 연결 테스트를 선택하여 구성된 연결을 테스트합니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AmazonS3StorageClass > "",
  • 환경 변수: MM_FILESETTINGS_AMAZONS3STORAGECLASS
Note

대부분의 Amazon S3 호환 스토리지 솔루션은 스토리지 클래스가 제공되지 않으면 기본 스토리지 클래스 STANDARD를 할당합니다. 지원되는 스토리지 클래스에 대한 자세한 내용은 Amazon S3 스토리지 클래스 문서를 참조하세요.

Amazon S3 내보내기 스토리지 클래스#

S3 호환 스토리지 솔루션으로 내보낼 때 사용할 스토리지 클래스입니다.

문자열 입력. 기본값은 빈 문자열 ""입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: FileSettings > ExportAmazonS3StorageClass > ""
  • 환경 변수: MM_FILESETTINGS_EXPORTAMAZONS3STORAGECLASS
Note

대부분의 Amazon S3 호환 스토리지 솔루션은 스토리지 클래스가 제공되지 않으면 기본 스토리지 클래스 STANDARD를 할당합니다. 지원되는 스토리지 클래스에 대한 자세한 내용은 Amazon S3 스토리지 클래스 문서를 참조하세요.

Amazon S3 요청 타임아웃#

Amazon S3 스토리지에 대한 요청이 타임아웃되기까지의 시간(밀리초)입니다.

기본값은 30000(30초)입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: FileSettings > AmazonS3RequestTimeoutMilliseconds > 30000
  • 환경 변수: MM_FILESETTINGS_AMAZONS3REQUESTTIMEOUTMILLISECONDS

Amazon S3 업로드 파트 크기#

Amazon S3로의 멀티파트 업로드에서 각 파트의 크기(바이트)입니다.

숫자 값. 기본값은 5242880(5MB)입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: FileSettings > AmazonS3UploadPartSizeBytes > 5242880
  • 환경 변수: MM_FILESETTINGS_AMAZONS3UPLOADPARTSIZEBYTES
Note

파트 크기가 작을수록 더 많은 요청과 지연 시간 증가를 초래할 수 있으며, 파트 크기가 클수록 더 많은 메모리가 할당될 수 있습니다.

Amazon S3 내보내기 업로드 파트 크기#

Amazon S3로 내보내는 멀티파트에서 각 파트의 크기(바이트)입니다.

숫자 값. 기본값은 104857600(100MB)입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: FileSettings > ExportAmazonS3UploadPartSizeBytes > 104857600
  • 환경 변수: MM_FILESETTINGS_EXPORTAMAZONS3UPLOADPARTSIZEBYTES
Note

파트 크기가 작을수록 더 많은 요청과 지연 시간 증가를 초래할 수 있으며, 파트 크기가 클수록 더 많은 메모리가 할당될 수 있습니다.

Amazon S3 요청 타임아웃#

Amazon S3 스토리지에 대한 요청이 타임아웃되기까지의 시간(밀리초)입니다.

기본값은 30000(30초)입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: FileSettings > AmazonS3RequestTimeoutMilliseconds > 30000
  • 환경 변수: MM_FILESETTINGS_AMAZONS3REQUESTTIMEOUTMILLISECONDS

Azure Storage 계정#

Azure Storage 계정의 이름입니다.

Azure 포털에 표시되는 스토리지 계정 이름을 나타내는 문자열입니다. 3~24자의 영문 소문자와 숫자여야 합니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AzureStorageAccount
  • 환경 변수: MM_FILESETTINGS_AZURESTORAGEACCOUNT

Azure 컨테이너#

Mattermost가 업로드 파일을 저장하는 Azure Storage 계정 내 컨테이너의 이름입니다.

컨테이너 이름을 나타내는 문자열입니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AzureContainer
  • 환경 변수: MM_FILESETTINGS_AZURECONTAINER

Azure 경로 접두사#

Azure 컨테이너의 Blob에 사용할 선택적 경로 접두사입니다.

경로 접두사를 포함하는 문자열입니다. 컨테이너 루트에 기록하려면 비워 두세요.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AzurePathPrefix
  • 환경 변수: MM_FILESETTINGS_AZUREPATHPREFIX

Azure 인증#

Mattermost가 Azure Storage 계정에 인증하는 방식을 선택합니다.

  • shared_key: (기본값) Mattermost가 FileSettings.AzureAccessKey에 있는 스토리지 계정 액세스 키로 요청에 서명합니다. 모든 배포 환경(온프레미스, Azure 이외의 클라우드, 로컬 개발)에서 작동합니다.
  • default_credential: Mattermost가 Azure SDK의 DefaultAzureCredential 체인(관리 ID, 워크로드 ID, 서비스 주체 환경 변수, az login — 이 순서대로)을 통해 Entra ID 토큰을 가져와 요청에 서명합니다. FileSettings.AzureAccessKey는 무시됩니다. 호스트가 이미 관리 ID를 제공하는 Azure 배포 환경에 권장합니다.

    SDK가 선택하는 ID에는 스토리지 계정 또는 컨테이너에 대한 Storage Blob Data Contributor(또는 동등한 역할)가 부여되어 있어야 합니다.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AzureAuthMode
  • 환경 변수: MM_FILESETTINGS_AZUREAUTHMODE

Azure Storage 계정 키#

Azure Storage 계정의 공유 키입니다. FileSettings.AzureAuthMode가 shared_key인 경우에만 사용됩니다. 이 값은 Azure 포털에서 스토리지 계정의 Security + networking > Access keys 블레이드에서 확인할 수 있습니다.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AzureAccessKey
  • 환경 변수: MM_FILESETTINGS_AZUREACCESSKEY
Note

공유 키는 비밀 정보로 취급하세요. Azure는 다운타임 없이 교체를 지원하기 위해 두 개의 키를 제공합니다. Mattermost를 한 키로 업데이트한 후 다른 키를 재생성하고, 다음 교체 주기에 전환하세요.

Azure 클라우드#

Mattermost가 연결할 Azure 클라우드를 선택합니다. 이 선택에 따라 Azure SDK가 요청에 서명할 대상 호스트가 결정됩니다.

  • commercial: (기본값) {account}.blob.core.windows.net에 대한 Vhost 방식입니다. 스토리지 계정 이름만 필요합니다.
  • government: {account}.blob.core.usgovcloudapi.net(Azure Government)에 대한 Vhost 방식입니다. 스토리지 계정 이름만 필요합니다.
  • custom: Mattermost가 FileSettings.AzureEndpoint의 값을 전체 Blob 서비스 URL로 사용합니다. Azurite, 리버스 프록시, Azure China 또는 기본 제공 프리셋이 없는 다른 Azure 클라우드에 사용하세요.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AzureCloud
  • 환경 변수: MM_FILESETTINGS_AZURECLOUD

Azure 엔드포인트#

스킴과 스토리지 계정을 포함한 전체 Blob 서비스 URL입니다. FileSettings.AzureCloud가 custom인 경우에만 사용되며, commercial 및 government 클라우드에서는 무시됩니다(이 클라우드에서는 스토리지 계정 이름으로 URL을 도출합니다).

Mattermost는 이 URL을 변경하지 않고 Azure SDK에 전달하므로, 스토리지 계정이 호스트명(vhost 방식, 예: https://acmemattermost.blob.core.chinacloudapi.cn/) 또는 경로(path 방식, 예: Azurite의 http://localhost:10000/devstoreaccount1/)에 이미 포함되어 있어야 합니다. 공유 키 인증은 이 URL이 가리키는 호스트를 기준으로 서명하므로, 해당 호스트가 FileSettings.AzureStorageAccount에 구성된 스토리지 계정을 실제로 제공하는지 확인하세요.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AzureEndpoint
  • 환경 변수: MM_FILESETTINGS_AZUREENDPOINT

보안 Azure Blob Storage 연결 활성화#

Azure Blob Storage에 대한 보안 연결을 활성화하거나 비활성화합니다.

  • true: (기본값) 보안 Azure Blob Storage 연결만 허용합니다.
  • false: 비보안 연결을 허용합니다. TLS가 없는 로컬 에뮬레이터를 가리킬 때만 false로 설정하세요.
  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AzureSSL > true
  • 환경 변수: MM_FILESETTINGS_AZURESSL

Azure 요청 타임아웃#

Azure Blob Storage에 대한 요청이 타임아웃되기까지의 시간(밀리초)입니다.

기본값은 30000(30초)입니다. 대용량 오브젝트 처리에 네트워크 시간이 더 필요한 경우에만 늘리세요.

  • 시스템 구성 경로: Environment > File Storage
  • config.json 설정: FileSettings > AzureRequestTimeoutMilliseconds > 30000
  • 환경 변수: MM_FILESETTINGS_AZUREREQUESTTIMEOUTMILLISECONDS

초기 글꼴#

색상 배경과 사용자 이름 이니셜로 자동 생성되는 프로필 사진에 사용되는 글꼴입니다.

글꼴 파일 이름을 나타내는 문자열입니다. 기본값은 nunito-bold.ttf입니다.

  • 시스템 구성 경로: 해당 없음
  • config.json 설정: FileSettings > InitialFont > "nunito-bold.ttf"
  • 환경 변수: MM_FILESETTINGS_INITIALFONT

이미지 프록시#

자체 호스팅 배포에서는 이미지 프록시를 사용하여 Mattermost 앱이 원격 자체 호스팅 서버에 직접 연결되지 않도록 할 수 있습니다. System Console > Environment > Image Proxy로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 편집하여 이미지 프록시를 설정합니다.

이미지 프록시 활성화#

이미지 프록시는 Mattermost 앱 연결을 익명화하고 비보안 콘텐츠에 접근하지 못하도록 합니다.

  • true: 외부 이미지를 불러오기 위한 이미지 프록시를 활성화합니다.
  • false: (기본값) 이미지 프록시를 비활성화합니다.
  • 시스템 구성 경로: Environment > Image Proxy
  • config.json 설정: ImageProxySettings > Enable > true
  • 환경 변수: MM_IMAGEPROXYSETTINGS_ENABLE

자세한 내용은 이미지 프록시 문서를 참조하세요.

이미지 프록시 유형#

Mattermost에서 사용하는 이미지 프록시의 유형입니다.

  • local: (기본값) Mattermost 서버 자체가 이미지 프록시 역할을 합니다.

Mattermost v12.0부터 atmos/camo는 더 이상 지원되지 않습니다. 이 설정이 atmos/camo로 설정되어 있으면 서버가 시작할 때 자동으로 local로 변경하고 경고를 기록합니다.

  • 시스템 구성 경로: Environment > Image Proxy
  • config.json 설정: ImageProxySettings > ImageProxyType > "local"
  • 환경 변수: MM_IMAGEPROXYSETTINGS_IMAGEPROXYTYPE

자세한 내용은 이미지 프록시 문서를 참조하세요.


SMTP#

자체 호스팅 배포에서는 System Console > Environment > SMTP로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 편집하여 SMTP 이메일 서버 설정을 구성할 수 있습니다.

SMTP 서버#

이메일 알림에 사용되는 SMTP 이메일 서버의 위치입니다.
  • 시스템 구성 경로: Environment > SMTP
  • config.json 설정: EmailSettings > SMTPServer
  • 환경 변수: MM_EMAILSETTINGS_SMTPSERVER

SMTP 서버 포트#

SMTP 이메일 서버의 포트입니다.

문자열 입력.

  • 시스템 구성 경로: Environment > SMTP
  • config.json 설정: EmailSettings > "SMTPPort"
  • 환경 변수: MM_EMAILSETTINGS_SMTPPORT

SMTP 인증 활성화#

SMTP 인증을 활성화하거나 비활성화합니다.

  • true: SMTP 사용자명과 비밀번호를 SMTP 서버 인증에 사용합니다.
  • false: (기본값) Mattermost가 SMTP 서버에 인증을 시도하지 않습니다.
  • 시스템 구성 경로: Environment > SMTP
  • config.json 설정: EmailSettings > EnableSMTPAuth > false
  • 환경 변수: MM_EMAILSETTINGS_ENABLESMTPAUTH

SMTP 서버 사용자명#

SMTP 서버 인증에 사용하는 사용자명입니다.

문자열 입력.

  • 시스템 구성 경로: Environment > SMTP
  • config.json 설정: EmailSettings > SMTPUsername
  • 환경 변수: MM_EMAILSETTINGS_SMTPUSERNAME

SMTP 서버 비밀번호#

SMTP 사용자명과 연결된 비밀번호입니다.

문자열 입력.

  • 시스템 구성 경로: Environment > SMTP
  • config.json 설정: EmailSettings > SMTPPassword
  • 환경 변수: MM_EMAILSETTINGS_SMTPPASSWORD

SMTP 연결 보안#

SMTP를 사용하여 전송하는 이메일의 연결 보안을 지정합니다.

  • Not specified: (기본값) 비보안 연결로 이메일을 전송합니다.
  • TLS: Mattermost와 이메일 서버 간의 통신이 암호화됩니다.
  • STARTTLS: TLS를 사용하여 기존의 비보안 연결을 보안 연결로 업그레이드하려고 시도합니다.
  • 시스템 구성 경로: Environment > SMTP
  • config.json 설정: EmailSettings > ConnectionSecurity
  • 환경 변수: MM_EMAILSETTINGS_CONNECTIONSECURITY

서버 인증서 검증 건너뛰기#

Mattermost가 이메일 서버 인증서 검증을 건너뛰도록 구성합니다.

  • true: Mattermost가 이메일 서버 인증서를 검증하지 않습니다.
  • false: (기본값) Mattermost가 이메일 서버 인증서를 검증합니다.
  • 시스템 구성 경로: Environment > SMTP
  • config.json 설정: EmailSettings > SkipServerCertificateVerification > false
  • 환경 변수: MM_EMAILSETTINGS_SKIPSERVERCERTIFICATEVERIFICATION

보안 알림 활성화#

보안 알림을 활성화하거나 비활성화합니다.

  • true: (기본값) 관련 보안 수정 알림이 공지되면 시스템 관리자에게 이메일로 알립니다. 이메일이 활성화되어 있어야 합니다.
  • false: 보안 알림이 비활성화됩니다.
  • 시스템 구성 경로: Environment > SMTP
  • config.json 설정: ServiceSettings > EnableSecurityFixAlert > true
  • 환경 변수: MM_SERVICESETTINGS_ENABLESECURITYFIXALERT

자세한 내용은 원격 측정 문서를 참조하세요.

SMTP 서버 타임아웃#

Mattermost와 SMTP 서버 간 TCP 연결을 설정하는 데 허용되는 최대 시간(초)입니다.

초 단위 숫자 값입니다.

  • 시스템 구성 경로: Environment > SMTP
  • config.json 설정: EmailSettings > SMTPServerTimeout
  • 환경 변수: MM_EMAILSETTINGS_SMTPSERVERTIMEOUT

푸시 알림 서버#

자체 호스팅 배포에서는 System Console > Environment > Push Notification Server로 이동하거나 아래 표에 설명된 대로 config.json 파일을 편집하여 Mattermost 모바일 푸시 알림을 구성할 수 있습니다. 이 섹션의 구성 설정을 변경하려면 적용되기 전에 서버를 재시작해야 합니다.

Mattermost 푸시 알림을 활성화하거나 비활성화합니다.

  • Do not send push notifications: 모바일 푸시 알림이 비활성화됩니다.
  • Use HPNS connection with uptime SLA to send notifications to iOS and Android apps: (기본값) Mattermost의 호스팅 푸시 알림 서비스를 사용합니다.
  • Use TPNS connection to send notifications to iOS and Android apps: Mattermost의 테스트 푸시 알림 서비스를 사용합니다.
  • Manually enter Push Notification Service location: 커스텀 모바일 앱을 빌드할 때는 자체 모바일 푸시 프록시 서비스를 호스팅하고 해당 URL을 Push Notification Server 필드에 지정해야 합니다.
  • 시스템 구성 경로: Environment > Push Notification Server
  • config.json 설정: EmailSettings > SendPushNotifications
  • 환경 변수: MM_EMAILSETTINGS_SENDPUSHNOTIFICATIONS

호스팅 푸시 알림 서비스 (HPNS)#

Mattermost Enterprise, Professional, Cloud 고객은 Mattermost의 호스팅 푸시 알림 서비스(Hosted Push Notification Service, HPNS)를 사용할 수 있습니다. HPNS는 다음을 제공합니다:

  • GitHub에서 사용 가능한 공개 호스팅된 Mattermost 푸시 알림 서비스(Mattermost Push Notification Service, MPNS) 접근.
  • 암호화되지 않은 메시지 내용에 대한 명시적인 개인정보 보호 정책.
  • 암호화된 TLS 연결:
    • HPNS와 Apple 푸시 알림 서비스 사이
    • HPNS와 Google의 Firebase Cloud Messaging 서비스 사이
    • HPNS와 Mattermost 서버 사이
  • 프로덕션 수준의 가동 시간 기대치.
  • 새 서버에 대한 기본 제공 구성으로 새 배포에 HPNS를 활성화하는 데 별도 작업이 필요하지 않습니다. 기존 배포의 경우 HPNS를 활성화할 수 있습니다.
Note

- HPNS는 Mattermost가 Apple App Store 및 Google Play Store를 통해 배포하는 사전 빌드된 앱에서만 작동합니다. 자체 모바일 앱을 빌드하는 경우 자체 Mattermost 푸시 프록시 서버 호스팅도 필요합니다. - 올바른 포트에서 푸시 프록시에 연결 가능해야 합니다. HPNS의 경우 Mattermost 서버에서 포트 443을 사용합니다. - Mattermost는 알림 데이터를 저장하지 않습니다. HPNS가 알림을 보낼 기기를 알아야 하므로 device_id와 같은 데이터만 서버 수준에서 저장됩니다.

테스트 푸시 알림 서비스 (TPNS)#

비상업적 자체 호스팅 고객은 Mattermost의 무료 기본 테스트 푸시 알림 서비스(Test Push Notifications Service, TPNS)를 사용할 수 있습니다.

Note

- TPNS는 프로덕션 환경에서 사용하는 것을 권장하지 않으며, 프로덕션 수준의 업데이트 서비스 수준 계약(SLA)을 제공하지 않습니다. - TPNS는 Mattermost Cloud 배포에서 사용할 수 없습니다. - TPNS는 Mattermost가 Apple App Store 및 Google Play Store를 통해 배포하는 사전 빌드된 모바일 앱에서만 작동합니다. 자체 모바일 앱을 빌드한 경우 자체 Mattermost 푸시 프록시 서비스 호스팅도 필요합니다. - 올바른 포트에서 푸시 프록시에 연결 가능해야 합니다. TPNS의 경우 Mattermost 서버에서 포트 80을 사용합니다. - 모바일 푸시 알림이 필요하지 않거나 원하지 않는 경우 대규모 배포에서 이 구성 설정을 비활성화하면 다음 영역에서 서버 성능이 향상될 수 있습니다:

  • 처리 부하 감소: 푸시 알림 생성 및 전송에는 처리 능력과 리소스가 필요합니다. 비활성화하면 서버가 해당 리소스를 다른 작업에 할당할 수 있습니다.
  • 네트워크 트래픽 감소: 푸시 알림은 네트워크 통신을 포함합니다. 비활성화하면 전송되는 데이터 양이 줄어들어 전반적인 네트워크 성능이 향상될 수 있습니다.
  • 데이터베이스 부하 감소: 각 푸시 알림은 데이터베이스에서 읽고 쓰는 작업을 수반할 수 있습니다. 이러한 작업을 줄이면 데이터베이스 부하가 감소하여 다른 쿼리의 응답 시간이 향상됩니다.
  • 응답 시간 단축: 알림 관련 처리 작업이 줄어들면 시스템이 사용자의 다른 요청에 더 빠르게 응답하여 사용자 경험이 향상됩니다.
  • 간소화된 오류 처리: 푸시 알림 서비스는 때로 실패하거나 지연 문제가 발생할 수 있어 추가 오류 처리가 필요합니다. 알림을 비활성화하면 시스템 운영이 간소화됩니다.
  • 그러나 푸시 알림을 비활성화하면 사용자 경험, 커뮤니케이션 효율성 및 전반적인 생산성에 부정적인 영향을 줄 수 있습니다. 성능 향상과 조직 및 사용자의 요구 사이의 균형을 맞추는 것이 중요합니다.

ID 전용 푸시 알림#

사용 가능 플랜: Entry, Enterprise, Enterprise Advanced(Professional 제외)

관리자는 Mattermost 구성 설정을 통해 Apple 및 Google에 전송되는 데이터를 제한하여 iOS 및 Android 알림 인프라 침해에 대해 Mattermost 고객을 보호하기 위해 모바일 알림을 완전히 비공개로 설정할 수 있습니다.

iOS 및 Android 애플리케이션에 알림을 보내는 표준 방식은 Apple 또는 Google에 일반 텍스트 메시지를 전송하여 사용자의 전화기로 전달하고 iOS 또는 Android에 표시하는 것입니다. Apple이나 Google은 데이터를 수집하거나 저장하지 않는다고 보장하지만, 해당 조직이 침해되거나 강요를 받는 경우 플랫폼의 모든 표준 모바일 알림이 손상될 수 있습니다.

이러한 위험을 피하기 위해 Mattermost는 모바일 알림 텍스트를 Apple이나 Google에 어떤 정보도 전달하지 않는 메시지 ID 번호로 대체하도록 구성할 수 있습니다. 사용자 전화기의 Mattermost 모바일 애플리케이션이 메시지 ID를 수신하면, 해당 ID를 사용하여 Mattermost 서버와 비공개로 통신하고 암호화된 채널을 통해 모바일 알림 메시지를 가져옵니다. 즉, 메시지 텍스트는 Apple이나 Google의 메시지 릴레이 시스템에 표시되지 않습니다. 메시지 내용은 Mattermost에도 도달하지 않습니다.

Note

Mattermost의 ID 전용 푸시 알림을 통한 비공개 모바일 기능으로 알림 메시지를 검색하는 추가 단계로 인해 최종 사용자는 Apple 및 Google 플랫폼을 통해 일반 텍스트를 전송하는 경우와 비교하여 모바일 알림이 완전히 표시되기 전에 약간의 지연을 경험할 수 있습니다.

ID 전용 푸시 알림 구성 설정에 대한 자세한 내용은 구성 설정 문서를 참조하세요. 데이터 프라이버시를 위한 ID 전용 푸시 알림 사용에 대한 자세한 내용은 모바일 앱 FAQ 문서를 참조하세요.

Mattermost 호스팅 푸시 알림 서비스(HPNS) 서버의 지역입니다.

지역을 선택하면 Push Notification Server 필드가 해당 URL로 자동으로 채워집니다:

  • Global: https://global.push.mattermost.com (아래의 지역별 엔드포인트에 걸쳐 요청을 로드 밸런싱합니다)
  • US: https://us.push.mattermost.com
  • EU (Germany): https://eu.push.mattermost.com
  • AP (Japan): https://ap.push.mattermost.com
  • 시스템 구성 경로: Environment > Push Notification Server
  • config.json 설정: EmailSettings > PushNotificationServer
  • 환경 변수: MM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER
Note

https://us.push.mattermost.com은 이전 https://push.mattermost.com URL을 대체하며, https://eu.push.mattermost.com은 이전 https://hpns-de.mattermost.com URL을 대체합니다. 이전 URL은 여전히 작동하지만 더 이상 사용되지 않으며(deprecated), 현재는 위의 대체 URL과 동일한 새 인프라를 가리킵니다.

@all, @here, @channel이 성능 극대화를 위해 데스크톱, 이메일, 모바일 푸시 알림을 더 이상 전송하지 않게 되는 채널당 최대 총 사용자 수입니다.

숫자 입력. 기본값은 1000입니다.

  • 시스템 구성 경로: Environment > Push Notification Server
  • config.json 설정: TeamSettings > MaxNotificationsPerChannel > 1000
  • 환경 변수: MM_EMAILSETTINGS_MAXNOTIFICATIONSPERCHANNEL
Note
  • 이 값을 조금씩 늘리고, 성능 모니터링 메트릭을 추적하여 시스템 상태를 모니터링하며, 읽기 전용 채널과 같이 채널에 게시할 수 있는 사람을 제한하는 제한된 권한이 있는 대형 채널이 있는 경우에만 이 값을 늘리는 것을 권장합니다.
  • 대규모 배포에서 이 구성 설정 값을 10으로 줄이면 다음 영역에서 서버 성능이 향상될 수 있습니다:
    • 알림 시스템 부하 감소: 각 알림은 일정량의 계산 및 네트워크 부하를 생성합니다. 채널당 알림 수를 제한하면 시스템이 더 적은 알림을 처리하여 서버 부하가 줄어듭니다.
    • 데이터베이스 효율성: 알림은 일반적으로 데이터베이스에 저장됩니다. 알림이 적으면 데이터베이스 쓰기 및 읽기 빈도가 줄어들어 데이터베이스 작업이 빨라지고 지연이 감소합니다.
    • 클라이언트 처리 최소화: 사용자의 클라이언트(예: 데스크톱 및 모바일 앱)는 알림을 가져와 처리해야 합니다. 알림이 적으면 클라이언트가 더 효율적으로 작동하여 사용자 기기의 메모리 및 CPU 사용량이 줄어듭니다.
    • 사용자 경험 향상: 알림이 너무 많으면 사용자에게 성능 지연 및 혼란스러운 경험을 유발할 수 있습니다. 수를 제한하면 사용자가 가장 중요한 알림만 받게 되어 사용성과 응답 시간이 향상될 수 있습니다.
    • 네트워크 대역폭: 많은 수의 알림, 특히 많은 사용자에게 전송되는 경우 많은 대역폭을 소비할 수 있습니다. 알림이 적으면 전반적인 네트워크 사용량이 줄어들고 중요한 메시지의 전달이 빨라질 수 있습니다.
    • 서버 부하 분산: 알림 수를 줄이면 워크로드를 서버 전체에 더 균등하게 분산할 수 있어 더 나은 부하 분산이 이루어지고 단일 서버가 병목 현상이 되는 것을 방지합니다.

고가용성#

사용 가능 플랜: Enterprise, Enterprise Advanced

자체 호스팅 배포에서는 System Console > Environment > High Availability로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 편집하여 Mattermost를 고가용성 클러스터 기반 배포로 구성할 수 있습니다. 이 섹션의 구성 설정 변경 사항은 서버를 재시작해야 적용됩니다.

Mattermost 고가용성 클러스터 기반 배포에서 구성에 config.json을 사용하면 System Console이 기본적으로 읽기 전용으로 설정되며, 설정은 config.json 파일을 직접 편집해야만 변경할 수 있습니다. 단, 고가용성 클러스터 기반 환경을 테스트하려면 config.json 파일에서 ClusterSettings.ReadOnlyConfig를 false로 설정하여 비활성화할 수 있습니다. 이렇게 하면 System Console을 통해 적용된 변경 사항이 구성 파일에 다시 저장됩니다. 구성을 데이터베이스에 저장하는 경우에는 ClusterSettings.ReadOnlyConfig가 무시되며 System Console을 완전히 편집할 수 있습니다. 자세한 내용은 데이터베이스에 구성 저장을 참조하세요.

고가용성 모드 활성화#

고가용성 모드를 활성화할 수 있습니다.

  • true: Mattermost 서버가 클러스터 이름이 같은 클러스터 내 다른 서버와 노드 간 통신을 시도합니다. 서버 간 config.json 파일의 동기화를 유지하기 위해 System Console이 읽기 전용 모드로 설정됩니다.
  • false: (기본값) Mattermost 고가용성 모드가 비활성화됩니다.
  • 시스템 구성 경로: Environment > High Availability
  • config.json 설정: ClusterSettings > Enable > false
  • 환경 변수: MM_CLUSTERSETTINGS_ENABLE

클러스터 이름#

고가용성 클러스터 기반 배포에서 이름으로 참여할 클러스터입니다.

클러스터 이름이 같은 노드만 서로 결합합니다. 이는 블루-그린 배포 또는 같은 데이터베이스를 가리키는 스테이징 환경을 지원하기 위한 것입니다.

  • 시스템 구성 경로: Environment > High Availability
  • config.json 설정: ClusterSettings > ClusterName
  • 환경 변수: MM_CLUSTERSETTINGS_CLUSTERNAME

호스트명 재정의#

이 서버의 호스트명을 재정의할 수 있습니다.

  • 필요한 경우 이 속성을 특정 IP 주소로 설정할 수 있지만, 꼭 필요한 경우가 아니라면 호스트명을 재정의하지 않는 것을 권장합니다.
  • 비워 두면 Mattermost가 운영 체제에서 호스트명을 가져오거나 IP 주소를 사용합니다.
  • 시스템 구성 경로: Environment > High Availability
  • config.json 설정: ClusterSettings > OverrideHostname
  • 환경 변수: MM_CLUSTERSETTINGS_OVERRIDEHOSTNAME

자세한 내용은 고가용성 클러스터 기반 배포 문서를 참조하세요.

IP 주소 사용#

고가용성 클러스터 기반 배포가 IP 주소 대신 호스트명을 사용하여 통신하도록 구성할 수 있습니다.

  • true: (기본값) 클러스터가 지정된 IP 주소를 사용하여 통신을 시도합니다.
  • false: 클러스터가 호스트명을 사용하여 통신을 시도합니다.
  • 시스템 구성 경로: Environment > High Availability
  • config.json 설정: ClusterSettings > UseIPAddress > true
  • 환경 변수: MM_CLUSTERSETTINGS_USEIPADDRESS

가십 암호화 활성화#

가십 암호화는 기본적으로 AES-256을 사용하며, 이 값은 설계상 구성할 수 없습니다.

  • true: (기본값) 서버가 지정된 가십 포트를 통해 가십 프로토콜로 통신을 시도합니다.
  • false: 서버가 스트리밍 포트를 통해 통신을 시도합니다.
  • 시스템 구성 경로: Environment > High Availability
  • config.json 설정: ClusterSettings > EnableGossipEncryption > true
  • 환경 변수: MM_CLUSTERSETTINGS_ENABLEGOSSIPENCRYPTION
Note
  • Gossip 프로토콜은 코넬 대학교 연구진이 개발한 SWIM 프로토콜에 설명된 원칙을 기반으로 합니다. Gossip 프로토콜은 분산 시스템에서 노드가 무작위로 정보를 교환하여 네트워크 전체의 데이터 일관성을 보장하는 통신 메커니즘입니다. 탈중앙화, 확장성, 내결함성을 갖추고 있어 노드 수가 많은 시스템에 이상적입니다. 정보는 소셜 가십과 유사한 방식으로 확산되며, 네트워크가 일관된 상태로 수렴될 때까지 노드가 주기적으로 랜덤 피어에게 업데이트를 "가십"합니다. 분산 데이터베이스, 블록체인 네트워크, P2P 시스템에서 널리 사용되며, 구현이 간단하고 노드 장애에 강하지만 대규모 네트워크에서는 중복성과 전파 지연이 발생할 수 있습니다.
  • 또는 Systems 테이블에서 ClusterEncryptionKey 행 값을 수동으로 설정할 수 있습니다. 키는 base64로 변환된 바이트 배열입니다. AES-128, AES-192, AES-256을 선택하려면 이 값을 각각 16, 24, 32바이트로 설정합니다.
  • Mattermost v10.11부터 모든 새 배포에서 기본적으로 가십 암호화가 활성화됩니다. 기존 배포에서는 수동으로 암호화를 활성화하지 않으면 Gossip 프로토콜을 사용하는 모든 통신이 암호화되지 않은 상태로 유지됩니다. v10.11 이전에는 Cloud 배포에서 기본적으로 가십 암호화가 활성화되고 자체 호스팅 배포에서는 기본적으로 비활성화됩니다.

가십 압축 활성화#

더 나은 성능을 위해 이 구성 설정을 비활성화하는 것을 권장합니다.

  • true: (자체 호스팅 배포 기본값) 클러스터를 통한 모든 통신에 가십 압축을 사용합니다. 이 설정은 이전 버전 서버와의 호환성을 유지하기 위해 기본적으로 활성화되어 있습니다.
  • false: (Cloud 배포 기본값) 가십 프로토콜을 사용하는 모든 통신이 압축되지 않은 상태로 유지됩니다.
  • 시스템 구성 경로: Environment > High Availability
  • config.json 설정: ClusterSettings > EnableGossipCompression > true
  • 환경 변수: MM_CLUSTERSETTINGS_ENABLEGOSSIPCOMPRESSION

가십 포트#

가십 프로토콜에 사용하는 포트입니다. 이 포트에서 UDP와 TCP를 모두 허용해야 합니다.

숫자 입력입니다. 기본값은 8074입니다.

  • 시스템 구성 경로: Environment > High Availability
  • config.json 설정: ClusterSettings > GossipPort > 8074
  • 환경 변수: MM_CLUSTERSETTINGS_GOSSIPPORT

읽기 전용 구성#

  • true: (기본값) System Console에서 설정에 적용한 변경 사항이 무시됩니다.
  • false: System Console에서 설정에 적용한 변경 사항이 config.json에 기록됩니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: ClusterSettings > ReadOnlyConfig > true
  • 환경 변수: MM_CLUSTERSETTINGS_READONLYCONFIG

네트워크 인터페이스#

고가용성 클러스터 기반 배포에서 자동 IP 감지를 수행하는 장치를 식별하는 데 사용하는 IP 주소입니다.

문자열 입력입니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: ClusterSettings > NetworkInterface > ""
  • 환경 변수: MM_CLUSTERSETTINGS_NETWORKINTERFACE

바인드 주소#

클러스터 트래픽을 특정 네트워크 장치에 바인딩하는 데 사용하는 IP 주소입니다.

이 설정은 주로 네트워크 장치가 여러 개이거나, NAT(Network Address Translation)가 포함된 배포처럼 바인드 주소와 광고 주소가 다른 서버에서 사용합니다.

문자열 입력입니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: ClusterSettings > BindAddress > ""
  • 환경 변수: MM_CLUSTERSETTINGS_BINDADDRESS

광고 주소#

다른 노드에서 서버에 접근하는 데 사용하는 IP 주소입니다. 이 설정은 주로 클러스터 노드가 같은 네트워크에 있지 않고 NAT(Network Address Translation)가 포함된 경우에 사용합니다.

문자열 입력입니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: ClusterSettings > AdvertiseAddress > ""
  • 환경 변수: MM_CLUSTERSETTINGS_ADVERTISEADDRESS

속도 제한#

자체 호스팅 배포에서 속도 제한은 Mattermost 서버가 너무 많은 요청으로 과부하되는 것을 방지하고 서버에 대한 서드파티 애플리케이션이나 악의적인 공격의 위험과 영향을 줄입니다.

System Console > Environment > Rate Limiting으로 이동하거나 아래 표에 설명된 대로 config.json 파일을 편집하여 속도 제한 설정을 구성합니다. 이 섹션의 구성 설정을 변경하려면 적용되기 전에 서버를 재시작해야 합니다.

Important

Mattermost 속도 제한 구성 설정은 수백 명의 사용자까지의 소규모 Mattermost 배포를 위한 것이며, 대규모 엔터프라이즈 배포에는 적합하지 않습니다.

API를 초당 지정된 수의 요청으로 제한하는 속도 제한을 활성화하거나 비활성화합니다.

  • true: 초당 최대 쿼리 수 구성 설정에 지정된 속도로 API가 제한됩니다.
  • false: (기본값) API 접근이 제한되지 않습니다.
  • 시스템 구성 경로: Environment > Rate Limiting
  • config.json 설정: RateLimitSettings > Enable > false
  • 환경 변수: MM_RATELIMITSETTINGS_ENABLE

속도 제한이 활성화된 경우 초당 이 수의 요청으로 API를 제한합니다.

숫자 입력. 기본값은 10입니다.

초당 더 많은 요청을 허용하려면 이 값을 높이고, 더 적은 요청을 허용하려면 이 값을 낮춥니다.

  • 시스템 구성 경로: Environment > Rate Limiting
  • config.json 설정: RateLimitSettings > PerSec > 10
  • 환경 변수: MM_RATELIMITSETTINGS_PERSEC

속도 제한이 활성화된 경우 초당 쿼리 제한을 초과하여 허용되는 최대 요청 수입니다.

숫자 입력. 기본값은 100입니다.

더 많은 동시 요청을 처리하려면 이 값을 높이고, 이 용량을 제한하려면 이 값을 낮춥니다.

  • 시스템 구성 경로: Environment > Rate Limiting
  • config.json 설정: RateLimitSettings > MaxBurst > 100
  • 환경 변수: MM_RATELIMITSETTINGS_MAXBURST

속도 제한이 활성화된 경우 다양한 속도 제한 설정에 따라 시스템에 연결된 최대 사용자 세션 수입니다.

숫자 입력. 기본값은 10000입니다. 일반적으로 시스템의 사용자 수로 설정합니다.

예상 사용자 수로 이 값을 설정하는 것을 권장합니다. 값이 높으면 리소스가 충분히 활용되지 않을 수 있으며, 값이 낮으면 사용자 세션/토큰이 너무 자주 만료될 수 있습니다.

  • 시스템 구성 경로: Environment > Rate Limiting
  • config.json 설정: RateLimitSettings > MemoryStoreSize > 10000
  • 환경 변수: MM_RATELIMITSETTINGS_MEMORYSTORESIZE

속도 제한이 활성화된 경우 IP 주소별로 API 접근을 속도 제한하도록 Mattermost를 구성합니다.

  • true: (기본값) IP 주소별로 API 접근을 속도 제한합니다. 프록시 사용 시 권장됩니다.
  • false: IP 주소별로 속도 제한이 다르게 적용되지 않습니다.
  • 시스템 구성 경로: Environment > Rate Limiting
  • config.json 설정: RateLimitSettings > VaryByRemoteAddr > true
  • 환경 변수: MM_RATELIMITSETTINGS_VARYBYREMOTEADDR

속도 제한이 활성화된 경우 인증 토큰별로 API 접근을 속도 제한할지 여부를 설정합니다.

  • true: 사용자 인증 토큰별로 API 접근을 속도 제한합니다. 프록시 사용 시 권장됩니다.
  • false: (기본값) 사용자 인증 토큰별로 속도 제한이 다르게 적용되지 않습니다.
  • 시스템 구성 경로: Environment > Rate Limiting
  • config.json 설정: RateLimitSettings > VaryByUser > false
  • 환경 변수: MM_RATELIMITSETTINGS_VARYBYUSER

지정된 HTTP 헤더 필드에 따라 API 접근 속도 제한을 다르게 적용하도록 Mattermost를 구성합니다. 프록시 사용 시 권장됩니다.

  • NGINX 구성 시 X-Real-IP로 설정합니다.
  • AmazonELB 구성 시 X-Forwarded-For로 설정합니다.
  • 시스템 구성 경로: Environment > Rate Limiting
  • config.json 설정: RateLimitSettings > VaryByHeader > ""
  • 환경 변수: MM_RATELIMITSETTINGS_VARYBYHEADER

로깅#

Mattermost는 자체 호스팅 배포를 위해 운영 및 규정 준수 요구 사항을 충족하도록 별도의 로그 파일 및 순환 정책으로 개별 구성할 수 있는 3가지 독립적인 로깅 시스템을 제공합니다:

기본적으로 모든 Mattermost 에디션은 콘솔과 머신이 읽을 수 있는 JSON 형식의 mattermost.log 파일 모두에 로그를 기록합니다. Mattermost Enterprise 및 Professional 고객은 syslog 및 TCP 소켓 대상에 직접 로그를 기록할 수도 있습니다.

로그 설정#

System Console > Environment > Logging으로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 편집하여 일반 로깅을 구성합니다. 이 섹션의 구성 설정 변경 사항은 서버를 재시작해야 적용됩니다.

콘솔에 로그 출력#

Mattermost가 일반 로그를 콘솔에 출력하도록 구성합니다.

  • true: (기본값) 콘솔 로그 수준 구성에 따라 출력 로그 메시지가 콘솔에 기록됩니다. 서버는 메시지를 표준 출력 스트림(stdout)에 기록합니다.
  • false: 출력 로그 메시지가 콘솔에 기록되지 않습니다.
  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > EnableConsole > true
  • 환경 변수: MM_LOGSETTINGS_ENABLECONSOLE
Note

Mattermost v11.0부터 알림 로그는 메인 콘솔 로그에 자동으로 포함됩니다.

콘솔 로그 수준#

Mattermost가 로그 메시지를 콘솔에 출력할 때 기록되는 일반 로그 이벤트의 상세 수준입니다.

  • DEBUG: (기본값) 문제를 디버깅하는 개발자를 위해 상세한 정보를 출력합니다.
  • ERROR: 오류 메시지만 출력합니다.
  • INFO: 오류 메시지와 시작 및 초기화에 관한 정보를 출력합니다.
  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > ConsoleLevel > "DEBUG"
  • 환경 변수: MM_LOGSETTINGS_CONSOLELEVEL

콘솔 로그를 JSON으로 출력#

Mattermost가 일반 콘솔 로그를 JSON으로 출력하도록 구성합니다.

  • true: (기본값) 기록되는 이벤트가 머신이 읽을 수 있는 JSON 형식으로 작성됩니다.
  • false: 기록되는 이벤트가 일반 텍스트로 작성됩니다.
  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > ConsoleJson > true
  • 환경 변수: MM_LOGSETTINGS_CONSOLEJSON

일반적으로 프로덕션 환경에서는 true로 설정합니다.

일반 텍스트 콘솔 로그 색상 표시#

시스템 관리자가 일반 텍스트로 된 일반 로그 수준 세부 정보를 색상으로 표시할 수 있도록 합니다.

  • true: 기록되는 이벤트가 일반 텍스트로 콘솔에 출력될 때 로그 수준 세부 정보에 색상을 표시합니다.
  • false: (기본값) 콘솔에서 일반 텍스트 로그 세부 정보에 색상을 표시하지 않습니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: LogSettings > EnableColor > false
  • 환경 변수: MM_LOGSETTINGS_ENABLECOLOR

파일에 로그 출력#

Mattermost가 일반 콘솔 로그를 파일로 출력하도록 구성합니다.

  • true: (기본값) 파일 로그 수준 구성에 따라 기록되는 이벤트가 file location으로 구성된 디렉터리에 있는 mattermost.log 파일에 작성됩니다.
  • false: 기록되는 이벤트가 파일에 작성되지 않습니다.
  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > EnableFile > true
  • 환경 변수: MM_LOGSETTINGS_ENABLEFILE
Note
  • Mattermost v11.0부터 알림 로그는 메인 파일 로그에 자동으로 포함됩니다.
  • 이 설정은 일반적으로 프로덕션 환경에서 true로 설정합니다. 활성화하면 System Console > Reporting > Server Logs로 이동하여 로그 다운로드를 선택해 mattermost.log 파일을 로컬에 다운로드할 수 있습니다.

파일 로그 디렉터리#

일반 로그 파일의 위치입니다.

문자열 입력입니다. 비워 두면 로그 파일이 ./logs 디렉터리에 저장됩니다.

  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > FileLocation > ""
  • 환경 변수: MM_LOGSETTINGS_FILELOCATION
Note
  • 설정한 경로가 존재해야 하며, Mattermost는 해당 디렉터리에 쓰기 권한을 가져야 합니다.
  • Mattermost v11.4부터 MM_LOG_PATH 환경 변수를 사용하여 로그 파일 위치를 지정된 루트 디렉터리로 제한할 수 있습니다. 이 보안 기능은 LogSettings.FileLocation, LogSettings.AdvancedLoggingJSON, ExperimentalAuditSettings.FileName 또는 ExperimentalAuditSettings.AdvancedLoggingJSON을 통해 구성된 모든 로그 파일이 승인된 로깅 디렉터리 내에 유지되도록 합니다.
    • MM_LOG_PATH가 설정되지 않은 경우 기본 logs 디렉터리가 사용됩니다. 루트 디렉터리 외부의 경로는 오류 로그를 생성하며 지원 패킷 다운로드에서 제외됩니다. 자세한 내용은 로그 경로 제한 문서를 참조하세요.
    • 기본적으로 루트 디렉터리 외부의 경로는 오류로만 기록되며 구성은 그대로 수락됩니다. 대신 해당 경로를 거부하려면 EnforceLogPathRoot 기능 플래그(MM_FEATUREFLAGS_ENFORCELOGPATHROOT=true)를 설정하세요. 이 경우 서버가 시작되지 않으며, 이러한 경로를 도입하는 구성 변경은 오류와 함께 거부됩니다. 현재 강제 적용은 선택 사항이며 향후 릴리즈에서 기본값이 될 예정이므로, 모든 로그 경로가 MM_LOG_PATH 내부로 확인되는 것을 점검한 후 활성화하는 것을 권장합니다.

파일 로그 수준#

Mattermost가 로그 메시지를 파일로 출력할 때 기록되는 일반 로그 이벤트의 상세 수준입니다.

  • DEBUG: 문제를 디버깅하는 개발자를 위해 상세한 정보를 출력합니다.
  • ERROR: 오류 메시지만 출력합니다.
  • INFO: (기본값) 오류 메시지와 시작 및 초기화에 관한 정보를 출력합니다.
  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > FileLevel > "INFO"
  • 환경 변수: MM_LOGSETTINGS_FILELEVEL
#### 파일 로그를 JSON으로 출력

Mattermost가 일반 파일 로그를 JSON으로 출력하도록 구성합니다.

  • true: (기본값) 기록되는 이벤트가 머신이 읽을 수 있는 JSON 형식으로 작성됩니다.
  • false: 기록되는 이벤트가 일반 텍스트로 작성됩니다.
  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > FileJson > true
  • 환경 변수: MM_LOGSETTINGS_FILEJSON

일반적으로 프로덕션 환경에서는 true로 설정합니다.

웹훅 디버깅 활성화#

Mattermost가 디버깅을 위해 일반 인커밍 웹훅의 내용을 콘솔 및/또는 파일 로그에 캡처하도록 구성합니다.

  • true: (기본값) 디버깅을 위해 인커밍 웹훅의 내용이 로그 파일에 출력됩니다.
  • false: 인커밍 웹훅의 내용이 로그 파일에 출력되지 않습니다.
  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > EnableWebhookDebugging > true
  • 환경 변수: MM_LOGSETTINGS_ENABLEWEBHOOKDEBUGGING
Note

인커밍 웹훅의 요청 본문을 로그에 포함하려면 파일 로그 수준을 DEBUG로 변경하여 디버그 로그를 활성화하세요.

여러 대상에 로그 출력#

Mattermost가 콘솔, 로컬 파일, syslog, TCP 소켓 대상의 모든 조합을 허용하고 일반 로그 레코드를 여러 대상으로 전송하도록 구성합니다.

문자열 입력에는 다른 구성 파일에 대한 파일 사양(filespec), 데이터베이스 DSN 또는 JSON을 포함할 수 있습니다.

  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > AdvancedLoggingJSON > ": ""
  • 환경 변수: MM_LOGSETTINGS_ADVANCEDLOGGINGJSON
Note
  • 자세한 내용은 Mattermost 로깅 문서를 참조하세요. 이러한 대상은 추가 소프트웨어를 설치하지 않고도 대부분의 로그 수집기와 기타 로그 분석 도구를 지원하기 때문에 선택되었습니다.
  • 로그는 호출자에 대한 지연 시간을 줄이기 위해 비동기식으로 기록됩니다.
  • 고급 로깅은 로거 구성의 핫 리로드를 지원합니다.
  • Mattermost v11.4부터 AdvancedLoggingJSON 구성에 지정하는 파일 경로는 MM_LOG_PATH 환경 변수로 지정한 디렉터리 내에 있어야 합니다. 자세한 내용은 로그 경로 제한을 참조하세요.

최대 필드 크기#

시스템 관리자가 로깅 중 일반 로그 필드의 크기를 제한할 수 있도록 합니다.

숫자 값입니다. 기본값은 2048입니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: LogSettings > MaxFieldSize > 2048
  • 환경 변수: MM_LOGSETTINGS_MAXFIELDSIZE

진단 및 오류 보고 활성화#

서버 오류와 충돌을 Sentry를 통해 Mattermost에 보고할지 여부를 제어합니다.

  • true: (기본값) 오류 및 충돌 보고서가 Mattermost의 Sentry 엔드포인트로 전송됩니다.
  • false: 오류 또는 충돌 데이터가 전송되지 않습니다.
  • 시스템 구성 경로: Environment > Logging
  • config.json 설정: LogSettings > EnableDiagnostics > true
  • 환경 변수: MM_LOGSETTINGS_ENABLEDIAGNOSTICS
Note

Mattermost가 수집하는 정보에 대한 자세한 내용은 원격 측정 문서를 참조하세요.

Sentry 보고 활성화#

일반 오류 보고서를 Sentry로 전송할지 여부입니다.

  • true: (기본값) 오류 보고서를 Sentry로 전송합니다. 기본값은 EnableDiagnostics 설정과 일치합니다.
  • false: 오류 보고서를 Sentry로 전송하지 않습니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: LogSettings > EnableSentry > true
  • 환경 변수: MM_LOGSETTINGS_ENABLESENTRY

알림 로깅#

Important

Mattermost v11부터 알림 로그 설정은 표준 콘솔 로그와 mattermost.log 파일에 통합되었습니다. 이제 기본 로그 수준 설정이 서버 로그와 알림 로그를 모두 제어하므로, 고급 로깅 설정을 사용하지 않고는 알림 로깅을 비활성화할 수 없습니다.

개별 알림 로그 수준인 NotificationError, NotificationWarn, NotificationInfo, NotificationDebug, NotificationTrace와 함께 AdvancedLoggingJSON 구성을 사용하면 알림 로그를 별도 파일로 분리하여 문제 해결 시 불필요한 정보를 줄일 수 있습니다. 자세한 내용은 고급 로깅을 참조하세요.

다음 구성 설정은 v11.0 이전의 Mattermost 서버 버전에만 적용됩니다.

다음 표에서 설명한 대로 config.json 파일을 편집하여 Mattermost 알림에 대한 로깅을 별도로 구성할 수 있습니다. 이 설정은 기본 LogSettings와 독립적으로 동작하며, 알림 하위 시스템에 대한 로깅 동작을 구체적으로 사용자 지정할 수 있습니다. 이러한 구성 설정의 변경 사항은 서버를 재시작해야 적용됩니다.

콘솔에 로그 출력#

Mattermost가 알림 로그를 콘솔에 출력하도록 구성합니다.

  • true: (기본값) 콘솔 로그 수준 구성에 따라 출력 로그 메시지가 콘솔에 기록됩니다. 서버는 메시지를 표준 출력 스트림(stdout)에 기록합니다.
  • false: 출력 로그 메시지가 콘솔에 기록되지 않습니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: NotificationLogSettings > EnableConsole > true
  • 환경 변수: MM_NOTIFICATIONLOGSETTINGS_ENABLECONSOLE

콘솔 로그 수준#

Mattermost가 로그 메시지를 콘솔에 출력할 때 기록되는 알림 로그 이벤트의 상세 수준입니다.

  • DEBUG: (기본값) 문제를 디버깅하는 개발자를 위해 상세한 정보를 출력합니다.
  • ERROR: 오류 메시지만 출력합니다.
  • INFO: 오류 메시지와 시작 및 초기화에 관한 정보를 출력합니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: NotificationLogSettings > ConsoleLevel > "DEBUG"
  • 환경 변수: MM_NOTIFICATIONLOGSETTINGS_CONSOLELEVEL

콘솔 로그를 JSON으로 출력#

Mattermost가 알림 콘솔 로그를 JSON으로 출력하도록 구성합니다.

  • true: (기본값) 기록되는 이벤트가 머신이 읽을 수 있는 JSON 형식으로 작성됩니다.
  • false: 기록되는 이벤트가 일반 텍스트로 작성됩니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: NotificationLogSettings > ConsoleJson > true
  • 환경 변수: MM_NOTIFICATIONLOGSETTINGS_CONSOLEJSON

일반적으로 프로덕션 환경에서는 true로 설정합니다.

일반 텍스트 콘솔 로그 색상 표시#

시스템 관리자가 일반 텍스트로 된 알림 로그 수준 세부 정보를 색상으로 표시할 수 있도록 합니다.

  • true: 기록되는 이벤트가 일반 텍스트로 콘솔에 출력될 때 로그 수준 세부 정보에 색상을 표시합니다.
  • false: (기본값) 콘솔에서 일반 텍스트 로그 세부 정보에 색상을 표시하지 않습니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: NotificationLogSettings > EnableColor > false
  • 환경 변수: MM_NOTIFICATIONLOGSETTINGS_ENABLECOLOR

파일에 로그 출력#

Mattermost가 알림 콘솔 로그를 파일로 출력하도록 구성합니다.

  • true: (기본값) 파일 로그 수준 구성에 따라 기록되는 이벤트가 file location으로 구성된 디렉터리에 있는 notifications.log 파일에 작성됩니다.
  • false: 기록되는 이벤트가 파일에 작성되지 않습니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: NotificationLogSettings > EnableFile > true
  • 환경 변수: MM_NOTIFICATIONLOGSETTINGS_ENABLEFILE

파일 로그 디렉터리#

알림 로그 파일의 위치입니다.

문자열 입력입니다. 비워 두면 로그 파일이 ./logs 디렉터리에 저장됩니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: NotificationLogSettings > FileLocation > ""
  • 환경 변수: MM_NOTIFICATIONLOGSETTINGS_FILELOCATION
Note

설정한 경로가 존재해야 하며, Mattermost는 해당 디렉터리에 쓰기 권한을 가져야 합니다.

파일 로그 수준#

Mattermost가 로그 메시지를 파일로 출력할 때 기록되는 알림 로그 이벤트의 상세 수준입니다.

  • DEBUG: 문제를 디버깅하는 개발자를 위해 상세한 정보를 출력합니다.
  • ERROR: 오류 메시지만 출력합니다.
  • INFO: (기본값) 오류 메시지와 시작 및 초기화에 관한 정보를 출력합니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: NotificationLogSettings > FileLevel > "INFO"
  • 환경 변수: MM_NOTIFICATIONLOGSETTINGS_FILELEVEL

파일 로그를 JSON으로 출력#

Mattermost가 알림 파일 로그를 JSON으로 출력하도록 구성합니다.

  • true: (기본값) 기록되는 이벤트가 머신이 읽을 수 있는 JSON 형식으로 작성됩니다.
  • false: 기록되는 이벤트가 일반 텍스트로 작성됩니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: NotificationLogSettings > FileJson > true
  • 환경 변수: MM_NOTIFICATIONLOGSETTINGS_FILEJSON

여러 대상에 로그 출력#

Mattermost가 콘솔, 로컬 파일, syslog, TCP 소켓 대상의 모든 조합을 허용하고 알림 로그 레코드를 여러 대상으로 전송하도록 구성합니다.

문자열 입력에는 다른 구성 파일에 대한 파일 사양(filespec), 데이터베이스 DSN 또는 JSON을 포함할 수 있습니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: NotificationLogSettings > AdvancedLoggingJSON > ": ""
  • 환경 변수: MM_NOTIFICATIONLOGSETTINGS_ADVANCEDLOGGINGJSON

감사 로깅#

사용 가능 플랜: Enterprise, Enterprise Advanced

System Console > Compliance > Audit Logging으로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 편집하여 감사 로깅을 구성합니다. 이 설정은 기본 LogSettings와 독립적으로 동작하며, 감사 하위 시스템에 대한 로깅 동작을 구체적으로 사용자 지정할 수 있습니다. 이러한 구성 설정의 변경 사항은 서버를 재시작해야 적용됩니다.

감사 로그를 파일에 출력#

감사 로그 파일을 디스크에 기록할지 여부입니다.

  • true: 기록되는 이벤트가 감사 파일 이름 구성 설정에 지정된 파일에 작성됩니다.
  • false: (기본값) 감사 로그 파일이 기록되지 않습니다.
  • 시스템 구성 경로: Compliance > Audit Logging
  • config.json 설정: ExperimentalAuditSettings > FileEnabled > false
  • 환경 변수: MM_EXPERIMENTALAUDITSETTINGS_FILEENABLED
Note

FileEnabled를 true로 설정하면 감사 파일 이름을 반드시 설정해야 합니다.

감사 파일 이름#

감사 로그 파일의 이름입니다.

감사 파일에 설정하는 경로가 존재해야 하며 Mattermost가 해당 경로에 쓰기 권한을 가져야 합니다.

예시: /var/log/mattermost_audit.log

  • 시스템 구성 경로: Compliance > Audit Logging
  • config.json 설정: ExperimentalAuditSettings > FileName > ""
  • 환경 변수: MM_EXPERIMENTALAUDITSETTINGS_FILENAME
Note

감사 로그를 파일에 출력을 활성화한 경우 파일 이름을 반드시 설정해야 합니다. 파일 순환과 고급 감사 로그 출력을 구성하려면 AdvancedLoggingJSON 설정을 사용하세요.

감사 로그 인증서#

감사 로깅을 위한 인증서 구성입니다.

문자열 입력입니다. 기본값은 비어 있습니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: ExperimentalAuditSettings > Certificate > ""
  • 환경 변수: MM_EXPERIMENTALAUDITSETTINGS_CERTIFICATE

감사 로그를 여러 대상에 출력#

Mattermost가 감사 로그 레코드를 여러 대상으로 출력하도록 구성합니다.
  • 시스템 구성 경로: Compliance > Audit Logging
  • config.json 설정: ExperimentalAuditSettings > AdvancedLoggingJSON > {}
  • 환경 변수: MM_EXPERIMENTALAUDITSETTINGS_ADVANCEDLOGGINGJSON
Note
  • 고급 로깅 구성에 대한 자세한 내용은 Mattermost 로깅 문서를 참조하세요. 이러한 대상은 추가 소프트웨어를 설치하지 않고도 대부분의 로그 수집기와 기타 로그 분석 도구를 지원하기 때문에 선택되었습니다.
  • 감사 로그는 호출자에 대한 지연 시간을 줄이기 위해 비동기식으로 기록됩니다.
  • 고급 감사 로깅은 로거 구성의 핫 리로드를 지원합니다.
  • Mattermost v12.0부터 기본 제공 감사 로그 파일 대상은 audit-delivery 로그 수준을 기록하지 않으므로, levels 목록에 {"id": 104, "name": "audit-delivery"}가 포함된 대상을 여기에 추가하지 않으면 게시물 전달 감사 레코드가 삭제됩니다.

세션 길이#

자체 호스팅 배포에서는 사용자가 로그인을 시도할 때 사용자 세션이 삭제되며, 세션 데이터베이스 테이블에서 24시간마다 세션이 삭제됩니다. System Console > Environment > Session Lengths로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 편집하여 세션 길이를 구성합니다. 이 섹션의 구성 설정 변경 사항은 서버를 재시작해야 적용됩니다.

활동에 따라 세션 길이 연장#

사용자가 Mattermost 앱에서 활동 중이면 세션을 연장하고 로그인 상태를 유지하여 사용자 환경을 개선합니다.

  • true: (기본값) 사용자가 Mattermost 클라이언트에서 활동 중이면 세션이 자동으로 연장됩니다. 사용자 세션은 정의된 세션 길이 전체 동안 사용자가 Mattermost 클라이언트에서 활동하지 않은 경우에만 만료됩니다.
  • false: Mattermost에서의 활동으로 세션이 연장되지 않습니다. 사용자 세션은 세션 길이가 끝나는 시점 또는 구성된 세션 유휴 타임아웃에 따라 즉시 만료됩니다.
  • 시스템 구성 경로: Environment > Session Lengths
  • config.json 설정: ServiceSettings > ExtendSessionLengthWithActivity > true
  • 환경 변수: MM_SERVICESETTINGS_EXTENDSESSIONLENGTHWITHACTIVITY

비밀번호 변경 시 세션 종료#

사용자의 비밀번호가 변경될 때 세션 해지를 활성화하거나 비활성화합니다.

  • true: (신규 배포 기본값) 세션 해지가 활성화됩니다. 사용자 본인 또는 시스템 관리자가 비밀번호를 변경하면 해당 사용자의 모든 세션이 만료됩니다. 사용자가 직접 비밀번호를 변경한 경우 현재 세션은 종료되지 않습니다.
  • false: (기존 배포 기본값) 세션 해지가 비활성화됩니다. 사용자가 비밀번호를 변경하면 해당 사용자의 현재 세션만 해지됩니다. 시스템 관리자가 사용자의 비밀번호를 변경하면 해당 사용자의 세션은 하나도 해지되지 않습니다.
  • 시스템 구성 경로: Environment > Session Lengths
  • config.json 설정: ServiceSettings > TerminateSessionsOnPasswordChange > true
  • 환경 변수: MM_SERVICESETTINGS_TERMINATESESSIONSONPASSWORDCHANGE

AD/LDAP 및 이메일 세션 길이#

사용자가 웹 앱 또는 데스크톱 앱에 마지막으로 자격 증명을 입력한 시점부터 이메일 및 AD/LDAP 인증 사용자 세션이 만료될 때까지의 시간(시간 단위)을 설정합니다.

시간 단위 숫자 입력입니다. 기본값은 720시간입니다.

  • 시스템 구성 경로: Environment > Session Lengths
  • config.json 설정: ServiceSettings > SessionLengthWebInHours > 720
  • 환경 변수: MM_SERVICESETTINGS_SESSIONLENGTHWEBINHOURS
Note

이 설정을 변경한 후 새 세션 길이는 사용자가 다음에 자격 증명을 입력할 때부터 적용됩니다.

모바일 세션 길이#

사용자가 모바일 앱에 마지막으로 자격 증명을 입력한 시점부터 사용자 세션이 만료될 때까지의 시간(시간 단위)을 설정합니다.

시간 단위 숫자 입력입니다. 기본값은 720시간입니다.

  • 시스템 구성 경로: Environment > Session Lengths
  • config.json 설정: ServiceSettings > SessionLengthMobileInHours > 720
  • 환경 변수: MM_SERVICESETTINGS_SESSIONLENGTHMOBILEINHOURS
Note

이 설정을 변경한 후 새 세션 길이는 사용자가 다음에 자격 증명을 입력할 때부터 적용됩니다.

SSO 세션 길이#

사용자가 마지막으로 SSO 자격 증명을 입력한 시점부터 사용자 세션이 만료될 때까지의 시간(시간 단위)을 설정합니다. 이 설정은 SAML, GitLab, OAuth 2.0 같은 SSO 인증의 세션 길이를 정의합니다.

시간 단위 숫자 입력입니다. 기본값은 720시간입니다. 이 구성 설정에는 소수도 유효한 값으로 사용할 수 있습니다.

  • 시스템 구성 경로: Environment > Session Lengths
  • config.json 설정: ServiceSettings > SessionLengthSSOInHours > 720
  • 환경 변수: MM_SERVICESETTINGS_SESSIONLENGTHSSOINHOURS
Note
  • 이 설정을 변경한 후 새 세션 길이는 사용자가 다음에 자격 증명을 입력할 때부터 적용됩니다.
  • 인증 방법이 SAML, GitLab 또는 OAuth 2.0인 경우, 사용자가 이미 SAML, GitLab 또는 OAuth 2.0으로 로그인되어 있으면 Mattermost에 자동으로 다시 로그인될 수 있습니다.

세션 캐시#

세션을 메모리에 캐시할 시간(분 단위)을 설정합니다.

분 단위 숫자 입력입니다. 기본값은 10분입니다.

  • 시스템 구성 경로: Environment > Session Lengths
  • config.json 설정: ServiceSettings > SessionCacheInMinutes > 10
  • 환경 변수: MM_SERVICESETTINGS_SESSIONCACHEINMINUTES

세션 유휴 타임아웃#

사용자가 시스템에서 마지막으로 활동한 시점부터 사용자 세션이 만료될 때까지의 시간(분 단위)입니다. 만료되면 사용자는 계속하려면 로그인해야 합니다.

분 단위 숫자 입력입니다. 기본값은 43200(30일)입니다. 최솟값은 5분이며, 0으로 설정하면 시간이 무제한으로 설정됩니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: ServiceSettings > SessionIdleTimeoutInMinutes > 43200
  • 환경 변수: MM_SERVICESETTINGS_SESSIONIDLETIMEOUTINMINUTES
Note
  • 활동에 따라 세션 길이 연장이 true로 설정된 경우 이 설정은 아무런 효과가 없습니다.
  • 이 설정은 웹 앱과 데스크톱 앱에 적용됩니다. 모바일 앱의 경우 EMM 제공업체를 사용하여 사용하지 않을 때 앱을 잠그세요. |
  • 고가용성 모드에서는 안정적인 타임아웃 측정을 위해 IP 해시 로드 밸런싱을 활성화하세요.

성능 모니터링#

사용 가능 플랜: 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 플러그인을 사용하는 방법은 성능 메트릭 수집 문서를 참조하세요.

성능 모니터링 활성화#

성능 모니터링을 활성화하거나 비활성화합니다.

  • true: 성능 모니터링 데이터 수집 및 프로파일링이 활성화됩니다.
  • false: (기본값) Mattermost 성능 모니터링이 비활성화됩니다.
  • 시스템 구성 경로: Environment > Performance Monitoring
  • config.json 설정: MetricsSettings > Enable > false
  • 환경 변수: MM_METRICSSETTINGS_ENABLE

자세한 내용은 성능 모니터링 문서를 참조하세요.

클라이언트 성능 모니터링 활성화#

클라이언트 성능 모니터링을 활성화하거나 비활성화합니다.

  • true: 클라이언트 성능 모니터링 데이터 수집 및 프로파일링이 활성화됩니다.
  • false: (기본값) Mattermost 클라이언트 성능 모니터링이 비활성화됩니다.
  • 시스템 구성 경로: Environment > Performance Monitoring
  • config.json 설정: MetricsSettings > EnableClientMetrics > false
  • 환경 변수: MM_METRICSSETTINGS_ENABLECLIENTMETRICS

클라이언트 측 사용자 ID#

클라이언트 측 웹 앱 메트릭을 추적하려는 사용자 ID를 쉼표로 구분한 목록입니다.

사용자 ID는 최대 5개로 제한됩니다. 기본적으로 비어 있습니다.

  • 시스템 구성 경로: Environment > Performance Monitoring
  • config.json 설정: MetricsSettings > ClientSideUserIds
  • 환경 변수: MM_METRICSSETTINGS_CLIENTSIDEUSERIDS
Note
  • 이 설정은 EnableClientMetrics가 true로 설정된 경우에만 적용됩니다.
  • 각 사용자 ID는 Mattermost 시스템의 유효한 사용자와 일치해야 합니다. 예: MM_METRICSSETTINGS_CLIENTSIDEUSERIDS="user1,user2,user3".
  • 성능을 보장하기 위해 사용자 ID의 총 개수는 5개로 제한됩니다. ID를 더 많이 추가하면 레이블 카디널리티가 높아져 Prometheus에 과부하가 걸릴 수 있습니다. 성능 문제를 방지하려면 이 목록의 변경을 최소화하는 것을 권장합니다.

수신 대기 주소#

활성화된 경우 성능 메트릭을 노출하기 위해 Mattermost 서버가 수신 대기하는 포트입니다.

숫자 입력입니다. 기본값은 8067입니다.

  • 시스템 구성 경로: Environment > Performance Monitoring
  • config.json 설정: MetricsSettings > ListenAddress > 8067
  • 환경 변수: MM_METRICSSETTINGS_LISTENADDRESS
Note
  • ListenAddress는 포트만 허용합니다. IP/호스트는 사용할 수 없습니다. 인터페이스를 제한해야 하는 경우 OS 방화벽이나 리버스 프록시를 통해 제한하세요.
  • 주소는 host:port 형식을 사용합니다. 포트 8067의 모든 인터페이스에서 수신 대기하려면 :8067을 사용하고, localhost로만 제한하려면 localhost:8067을 사용하세요.

블록 프로파일 비율#

Mattermost 내에서 차단 작업(예: 프로그램의 한 부분이 다른 부분을 기다려야 하는 경우)으로 인해 발생하는 지연에 대한 데이터를 Mattermost가 얼마나 자주 수집할지 제어합니다. 기본값은 0(프로파일링 비활성화)입니다.

프로파일러는 차단된 상태로 보낸 시간 rate 나노초마다 평균 한 번의 차단 이벤트를 샘플링하는 것을 목표로 합니다.

기본값은 0입니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: MetricsSettings > BlockProfileRate > 0
  • 환경 변수: MM_METRICSSETTINGS_BLOCKPROFILERATE
Note
  • 이 설정은 System Console에서 사용할 수 없으며 config.json에서만 설정할 수 있습니다.
  • 성능 문제를 진단 중이며 프로파일링 데이터를 분석하는 방법을 아는 경우에만 조정하세요. 이 값은 Mattermost가 성능 프로파일에 차단 이벤트를 기록하는 빈도를 나타냅니다.
    • 0으로 설정하면 차단 이벤트를 기록하지 않습니다(프로파일링 비활성화).
    • 1로 설정하면 모든 차단 이벤트를 기록합니다(프로파일링 완전 활성화).
    • 더 큰 숫자로 설정하면 일부 이벤트만 기록합니다(전체 프로파일링 대신 샘플링에 유용).

알림 모니터링 활성화#

알림 메트릭 데이터 수집을 활성화하거나 비활성화합니다.

  • true: (기본값) 클라이언트 측 웹 및 데스크톱 앱 사용자에 대해 Mattermost 알림 데이터 수집이 활성화됩니다.
  • false: Mattermost 알림 데이터 수집이 비활성화됩니다.
  • 시스템 구성 경로: Site Configuration > Notifications
  • config.json 설정: MetricsSettings > EnableNotificationMetrics > true
  • 환경 변수: MM_METRICSSETTINGS_ENABLENOTIFICATIONMETRICS
Note
  • MetricsSettings.Enable을 true로 설정해야 합니다.
  • MetricsSettings.EnableNotificationMetrics를 true로 설정해야 합니다.

Mattermost 알림 상태(Notification Health) 메트릭에 대한 자세한 내용은 성능 모니터링 문서를 참조하세요.


개발자#

자체 호스팅 배포에서는 System Console > Environment > Developer로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 편집하여 개발자 모드를 구성할 수 있습니다. 이 섹션의 구성 설정 변경 사항은 서버를 재시작해야 적용됩니다.

테스트 명령어 활성화#

/test 슬래시 명령어를 활성화하거나 비활성화합니다.

  • true: (기본값) 테스트 계정과 테스트 데이터를 불러오기 위해 /test 슬래시 명령어가 활성화됩니다. 이 설정은 격리된 비프로덕션 환경에서만 사용하고 프로덕션에서는 절대 사용하지 마세요.
  • false: /test 슬래시 명령어가 비활성화됩니다.
  • 시스템 구성 경로: Environment > Developer
  • config.json 설정: ServiceSettings > EnableTesting > true
  • 환경 변수: MM_SERVICESETTINGS_ENABLETESTING

개발자 모드 활성화#

개발자 모드를 활성화하거나 비활성화합니다.

  • true: (기본값) Javascript 오류가 Mattermost 사용자 인터페이스 상단의 배너에 표시됩니다. 프로덕션에서는 사용하지 않는 것을 권장합니다.
  • false: 사용자에게 Javascript 오류가 알림으로 표시되지 않습니다.
  • 시스템 구성 경로: Environment > Developer
  • config.json 설정: ServiceSettings > EnableDeveloper > true
  • 환경 변수: MM_SERVICESETTINGS_ENABLEDEVELOPER

클라이언트 디버깅 활성화#

개별 사용자의 Settings > Advanced > Debugging에 있는 클라이언트 측 디버깅 설정을 활성화하거나 비활성화합니다.

  • true: 해당 설정이 표시되며 사용자가 활성화할 수 있습니다.
  • false: (기본값) 해당 설정이 숨겨지고 비활성화됩니다.
  • 시스템 구성 경로: Environment > Developer
  • config.json 설정: ServiceSettings > EnableClientPerformanceDebugging > false
  • 환경 변수: MM_SERVICESETTINGS_ENABLECLIENTPERFORMANCEDEBUGGING

자세한 내용은 클라이언트 디버깅 문서를 참조하세요.

신뢰할 수 없는 내부 연결 허용#

Warning

이 설정은 로컬 네트워크 외부에 있는 사용자가 Mattermost 서버를 이용해 내부 네트워크의 기밀 데이터를 요청하지 못하도록 하기 위한 것입니다. 로컬 네트워크에 대한 의도하지 않은 접근을 방지하려면 이 설정을 구성할 때 주의하세요.

Mattermost 서버가 로컬 네트워크 내에서 신뢰할 수 없는 요청을 보낼 수 있는 기능을 제한합니다. 요청이 클라이언트를 대신하여 이루어지는 경우 "신뢰할 수 없는" 요청으로 간주됩니다.
  • 시스템 구성 경로: Environment > Developer
  • config.json 설정: ServiceSettings > AllowedUntrustedInternalConnections > ""
  • 환경 변수: MM_SERVICESETTINGS_ALLOWEDUNTRUSTEDINTERNALCONNECTIONS

이 설정은 Mattermost 서버가 요청할 수 있는 로컬 네트워크 주소의 화이트리스트입니다. 접근할 수 있는 호스트명, IP 주소, CIDR 범위를 공백으로 구분한 목록으로 구성합니다.

시스템 관리자만 구성할 수 있는 요청은 신뢰할 수 있는 요청으로 간주되며 이 설정의 영향을 받지 않습니다. 신뢰할 수 있는 URL에는 OAuth 로그인 또는 푸시 알림 전송에 사용되는 URL이 포함됩니다.

다음 기능은 신뢰할 수 없는 요청을 보내며 이 설정의 영향을 받습니다.

  • 웹훅, 슬래시 명령어 또는 메시지 작업을 사용하는 연동. 이 설정은 해당 연동이 로컬 네트워크 내 엔드포인트를 요청하지 못하도록 합니다.
  • 링크 미리보기. 로컬 네트워크 주소에 대한 링크가 채팅 메시지에 게시되면 이 설정은 링크 미리보기가 표시되지 않도록 합니다.
  • 로컬 이미지 프록시. 로컬 이미지 프록시가 활성화된 경우 로컬 네트워크에 있는 이미지는 연동에서 사용하거나 채팅 메시지에 게시할 수 없습니다.

이 설정을 수정해야 할 수 있는 경우의 예는 다음과 같습니다.

  • Matterpoll처럼 자체 이미지를 포함하는 플러그인을 설치할 때는 Mattermost 서버의 도메인 이름을 이 목록에 추가해야 합니다.
  • 로컬 네트워크에서 봇 또는 웹훅 기반 연동을 실행할 때는 봇/연동의 호스트명을 이 목록에 추가해야 합니다.
  • 공개적으로 접근 가능한 웹 페이지나 이미지를 Mattermost 서버가 내부 IP 주소를 사용해 접근하도록 네트워크가 구성된 경우, 해당 서버의 호스트명을 이 목록에 추가해야 합니다.
Note
  • Mattermost 애플리케이션 서버 자체의 공용 IP도 예약된 IP로 간주됩니다.
  • 호스트명, IP 주소 또는 CIDR 범위를 나열할 때는 쉼표 대신 공백을 사용하세요. 예: webhooks.internal.example.com, 127.0.0.1 또는 10.0.16.0/28.
  • IP 주소 및 도메인 이름 규칙은 호스트 확인 전에 적용됩니다.
  • CIDR 규칙은 호스트 확인 후에 적용되며, CIDR 규칙만 DNS 확인이 필요합니다.
  • Mattermost는 확인 과정 없이 IP 주소와 호스트명을 먼저 일치시키려고 시도합니다. 일치하지 않으면 Mattermost는 로컬 리졸버를 사용하여(먼저 /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은 사용할 수 없습니다.

모바일 보안#

사용 가능 플랜: Enterprise Advanced

Mattermost v10.7 및 모바일 앱 v2.27부터 EMM 공급자에 의존하지 않고 생체 인증을 구성하고, 탈옥 또는 루팅된 기기에서 Mattermost 사용을 방지하며, 화면 캡처를 차단할 수 있습니다. System Console > Environment > Mobile Security로 이동하거나 다음 표에서 설명한 대로 config.json 파일을 편집하여 이 옵션을 구성합니다. 이 섹션의 구성 설정 변경 사항은 서버를 재시작하고 사용자가 모바일 앱을 재시작하거나 로그아웃 후 다시 로그인해야 적용됩니다.

생체 인증 활성화#

앱에 접근하기 전에 생체 인증을 요구하며, PIN/암호를 대체 수단으로 사용할 수 있습니다. 사용자에게는 세션 활동과 서버 전환 규칙에 따라 인증이 요청됩니다.

  • true: 생체 인증이 활성화됩니다.
  • false: (기본값) 생체 인증이 비활성화됩니다.
  • 시스템 구성 경로: Environment > Mobile Security
  • config.json 설정: NativeAppSettings > MobileEnableBiometrics > false
  • 환경 변수: MM_NATIVEAPPSETTINGS_MOBILEENABLEBIOMETRICS
Note
  • 이 구성 설정을 변경하면 모바일 사용자가 Mattermost 모바일 앱을 재시작하거나 로그아웃 후 다시 로그인할 때 적용됩니다.
  • 다음 상황에서 사용자는 인증해야 합니다:
    • 새 서버 추가 시: 모바일 앱에 새 서버가 추가되고 생체 인증이 활성화된 경우.
    • 모바일 앱 열기 시: 활성 서버가 인증을 요구할 때 앱 실행 시.
    • 백그라운드 사용 후 복귀 시: 앱이 5분 이상 백그라운드에 있었고 활성 서버가 인증을 요구하는 경우.
    • 여러 서버 사용 시: 처음으로 서버에 접근할 때, 서버에서 5분 이상 비활성 상태 후, 그리고 마지막 인증 시도가 실패했을 때.

탈옥/루팅 보호 활성화#

탈옥 또는 루팅된 것으로 감지된 기기에서 앱 접근을 차단합니다. 기기가 보안 검사를 통과하지 못하면 사용자의 접근이 거부되거나 규정을 준수하는 서버로 전환하라는 안내가 표시됩니다.

  • true: 탈옥/루팅 보호가 활성화됩니다.
  • false: (기본값) 탈옥/루팅 보호가 비활성화됩니다.
  • 시스템 구성 경로: Environment > Mobile Security
  • config.json 설정: NativeAppSettings > MobileJailbreakProtection > false
  • 환경 변수: MM_NATIVEAPPSETTINGS_MOBILEJAILBREAKPROTECTION
Note
  • 이 구성 설정을 변경하면 모바일 사용자가 Mattermost 모바일 앱을 재시작하거나 로그아웃 후 다시 로그인할 때 적용됩니다.
  • 이 기능의 검사 수행 방법에 대해 자세히 알아보려면 Expo SDK 문서를 참조하세요.

화면 캡처 방지#

모바일 앱 사용 중 스크린샷과 화면 녹화를 차단합니다. 스크린샷은 빈 화면으로 표시되고, 화면 녹화는 흐리게 처리(iOS)되거나 검은 화면으로 표시(Android)됩니다. 앱을 전환할 때도 적용됩니다.

  • true: 화면 캡처 차단이 활성화됩니다.
  • false: (기본값) 화면 캡처 차단이 비활성화됩니다.
  • 시스템 구성 경로: Environment > Mobile Security
  • config.json 설정: NativeAppSettings > MobilePreventScreenCapture > false
  • 환경 변수: MM_NATIVEAPPSETTINGS_MOBILEPREVENTSCREENCAPTURE
Note

이 구성 설정 변경 사항은 모바일 사용자가 Mattermost 모바일 앱을 다시 시작하거나 로그아웃한 후 다시 로그인하면 적용됩니다.

모바일 임시 데이터 모드#

사용 가능 플랜: Enterprise Advanced

타이머와 동작이 어떻게 상호 작용하는지에 대한 전체 설명은 모바일 보안 기능 문서를 참조하세요.

이 설정은 모든 모바일 사용자에게 전역적으로 적용됩니다. 변경 사항은 연결된 기기에 실시간으로 전달되며, 오프라인 기기는 다시 연결될 때까지 마지막으로 알려진 구성에 따라 계속 작동합니다. 타이머 상태는 앱 및 기기 재시작 이후에도 유지됩니다.

타이머가 만료되면 게시물 및 파일 미리보기와 같은 활성 캐시 콘텐츠가 삭제되며, 앱은 정책 적용으로 인해 데이터가 제거되었음을 사용자에게 알립니다. 삭제 후 사용자가 다시 연결되면 서버에서 다시 동기화됩니다 — 서버 URL은 키체인 항목에서 복구할 수 있으므로 서버 접근이 유실되지 않습니다.

모바일 임시 데이터 모드 활성화#

모바일 클라이언트가 서버에 구성된 임시 데이터 정책을 적용할지 여부를 제어합니다.

  • true: (기본값) 임시 데이터 정책이 적용됩니다.
  • false: 모바일 클라이언트에 임시 데이터 정책이 적용되지 않습니다.
  • 시스템 구성 경로: Environment > Mobile Security
  • config.json 설정: NativeAppSettings > MobileEnableEphemeralMode > true
  • 환경 변수: MM_NATIVEAPPSETTINGS_MOBILEENABLEEPHEMERALMODE

연결 해제 타임아웃#

WebSocket 연결이 끊어진 후 기기가 오프라인으로 간주되기까지의 유예 기간(초)입니다. 유예 기간이 지나면 오프라인 지속 타이머가 카운트다운을 시작합니다.

초 단위 숫자 입력입니다. 기본값은 60입니다. 5 미만의 값은 권장하지 않습니다.

  • 시스템 구성 경로: Environment > Mobile Security
  • config.json 설정: NativeAppSettings > MobileDisconnectionTimeoutSeconds > 60
  • 환경 변수: MM_NATIVEAPPSETTINGS_MOBILEDISCONNECTIONTIMEOUTSECONDS

오프라인 지속 타이머#

기기가 오프라인으로 간주된 후 캐시된 콘텐츠를 보존하는 기간(시간)입니다.

시간 단위 숫자 입력입니다. 기본값은 2입니다. 연결이 끊어지면 즉시 삭제하려면 0으로 설정하세요.

  • 시스템 구성 경로: Environment > Mobile Security
  • config.json 설정: NativeAppSettings > MobileOfflinePersistenceTimerHours > 2
  • 환경 변수: MM_NATIVEAPPSETTINGS_MOBILEOFFLINEPERSISTENCETIMERHOURS

자동 캐시 정리#

연결 상태와 관계없이 기기에 캐시된 콘텐츠의 최대 보존 기간(일)입니다.

일 단위 숫자 입력입니다. 기본값은 7입니다. 영구 보존을 사용하지 않는 모드로 설정하려면 0으로 설정하세요.

  • 시스템 구성 경로: Environment > Mobile Security
  • config.json 설정: NativeAppSettings > MobileAutoCacheCleanupDays > 7
  • 환경 변수: MM_NATIVEAPPSETTINGS_MOBILEAUTOCACHECLEANUPDAYS

모바일에서 보안 파일 미리보기 활성화#

이 설정은 필수 파일 보기 기능은 유지하면서 파일 접근을 제한하여 조직의 모바일 보안 태세를 강화합니다.

  • true: 대부분의 파일 형식에 대해 파일 다운로드, 미리보기, 공유를 차단합니다. | - 시스템 구성 경로: Site Configuration > File sharing and downloads | 다음 구성 설정이 활성화되어 있는 경우에도 | - config.json 설정: FileSettings > MobileEnableSecureFilePreview > false | 모바일에서 파일 다운로드 허용 | - 환경 변수: MM_FILESETTINGS_MOBILEENABLESECUREFILEPREVIEW 이 설정과 관계없이 적용됩니다. 앱 내 미리보기는 PDF, | | 동영상, 이미지에 한해 허용합니다. 파일은 앱의 캐시에 임시로 저장되며 내보내거나 공유할 수 없습니다. | |
  • false: (기본값) 보안 파일 미리보기 모드가 비활성화됩니다. | |
Note

이 구성 설정을 변경하면 모바일 사용자가 Mattermost 모바일 앱을 재시작하거나 로그아웃 후 다시 로그인할 때 적용됩니다.

모바일에서 PDF 링크 탐색 허용#

  • true: (기본값) 보안 파일 미리보기 모드가 활성화된 상태에서 모바일의 PDF 내부 링크를 탭할 수 있습니다. 링크는 기기 브라우저 또는 지원되는 앱에서 열립니다.
  • false: 보안 파일 미리보기 모드가 활성화된 상태에서 PDF 내 링크 탐색을 비활성화합니다.
  • 시스템 구성 경로: Site Configuration > File sharing and downloads
  • config.json 설정: FileSettings > MobileAllowPdfLinkNavigation > true
  • 환경 변수: MM_FILESETTINGS_MOBILEALLOWPDFLINKNAVIGATION
Note
  • 이 구성 설정을 변경하면 모바일 사용자가 Mattermost 모바일 앱을 재시작하거나 로그아웃 후 다시 로그인할 때 적용됩니다.
  • 이 설정은 모바일에서 보안 파일 미리보기 구성 설정이 비활성화된 경우 효과가 없습니다.

config.json 전용 설정#

다음 자체 호스팅 배포 설정은 config.json 파일에서만 구성할 수 있으며 System Console에서는 사용할 수 없습니다.

고객 포털 요청 비활성화#

고객 포털 요청을 활성화하거나 비활성화합니다.

  • true: (기본값) 고객 포털로 보내는 서버 측 요청이 비활성화됩니다.
  • false: Mattermost 고객 포털로 보내는 서버 측 요청이 활성화되지만, 에어갭 및 제한된 배포 환경에서는 항상 실패합니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: CloudSettings > Disable > true,
  • 환경 변수: MM_CLOUDSETTINGS_DISABLE
Note

Cloud 관리자는 이 구성 설정을 수정할 수 없습니다.

API 팀 삭제 활성화#

API를 통한 팀 영구 삭제를 허용합니다.

  • true: 팀 관리자와 시스템 관리자(또는 적절한 권한이 있는 사용자)가 api/v4/teams/{teamid}?permanent=true를 호출하거나 mmctl team delete를 사용하여 팀을 영구 삭제할 수 있습니다.
  • false: (기본값) 엔드포인트를 사용할 수 없습니다. api/v4/teams/{teamid}는 여전히 팀을 소프트 삭제합니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: ServiceSettings > EnableAPITeamDeletion > false
  • 환경 변수: N/A
Note

이 설정은 System Console에서 사용할 수 없으며 config.json에서만 설정할 수 있습니다.

API 사용자 삭제 활성화#

API를 통한 사용자 영구 삭제를 허용합니다.

  • true: 시스템 관리자(또는 적절한 권한이 있는 사용자)가 api/v4/users/{userid}?permanent=true를 호출하거나 mmctl user delete를 사용하여 사용자를 영구 삭제할 수 있습니다.
  • false: (기본값) 엔드포인트를 사용할 수 없습니다. api/v4/users/{userid}는 여전히 사용자를 소프트 삭제합니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: ServiceSettings > EnableAPIUserDeletion > false
  • 환경 변수: N/A
Note

이 설정은 System Console에서 사용할 수 없으며 config.json에서만 설정할 수 있습니다.

API 채널 삭제 활성화#

API를 통한 채널 영구 삭제를 허용합니다.

  • true: 시스템 관리자(또는 적절한 권한이 있는 사용자)가 api/v4/channels/{channelid}?permanent=true를 호출하거나 mmctl channel delete를 사용하여 채널을 영구 삭제할 수 있습니다.
  • false: (기본값) 엔드포인트를 사용할 수 없습니다. api/v4/channels/{channelid}는 여전히 채널을 소프트 삭제합니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: ServiceSettings > EnableAPIChannelDeletion > false
  • 환경 변수: N/A
Note

이 설정은 System Console에서 사용할 수 없으며 config.json에서만 설정할 수 있습니다.

데스크톱 앱 개발자 모드 활성화#

Desktop App v5.10부터 이 설정은 Mattermost 데스크톱 앱의 View > Developer Tools 메뉴에서 사용할 수 있는 개발자 디버깅 옵션을 활성화합니다.

이 설정은 System Console에서 사용할 수 없으며 config.json에서 환경 변수 MM_DESKTOP_DEVELOPER_MODE를 true로 설정해야만 활성화할 수 있습니다. 기본적으로 비활성화되어 있습니다.

  • True: 문제 해결 및 디버깅을 위해 데스크톱 앱에서 다음 옵션을 잠금 해제합니다. Mattermost 개발자의 지시가 있을 때만 이 설정을 활성화해야 합니다:
    • 브라우저 모드 전용: 프리로드 스크립트를 완전히 비활성화하고 웹 앱 구성 요소가 데스크톱 앱에 있다는 것을 인식하지 못하도록 합니다. 이 옵션은 웹 앱 구성 요소가 성능 및/또는 메모리 보유 문제를 일으키는지 여부의 가장 좋은 지표가 됩니다. 이 옵션은 알림, 크로스 탭 탐색, 읽지 않음/멘션 배지, 통화 위젯을 비활성화하고 macOS에서 크기 조정을 중단합니다.
    • 알림 저장 비활성화: 선택하고 읽을 때까지 읽지 않은 알림에 대한 참조를 유지하는 맵을 끕니다. 이 옵션은 Mattermost가 사용되지 않는 알림에 대한 참조를 너무 많이 유지하는 경우 디버깅에 유용합니다.
    • 사용자 활동 모니터 비활성화: 사용자가 자리를 비웠는지 여부를 확인하는 인터벌을 끕니다. 이 옵션은 사용자의 상태가 예상치 못한 데스크톱 앱 동작을 일으키는지 여부를 디버깅하는 데 유용합니다.
    • 컨텍스트 메뉴 비활성화: BrowserView에 연결된 컨텍스트 메뉴를 끕니다. 이 옵션은 라이브러리 정상성 확인에 유용합니다.
    • 레거시 메시징 API 강제 사용: 앱이 최신 contextBridge API 대신 이전 메시징 API로 되돌아가도록 강제합니다. 이 옵션은 새 API가 메모리 보유 원인인지 확인하는 정상성 확인에 유용합니다.
    • 새 메시징 API 강제 사용: 앱이 contextBridge API를 사용하도록 강제하고 이전 API를 완전히 비활성화합니다. 이 옵션은 이전 API에 대한 리스너를 강제로 끕니다.
  • False: (기본값) 개발자 디버깅 옵션이 잠기고 데스크톱 앱에서 사용할 수 없습니다.

Redis 캐시 백엔드#

사용 가능 플랜: Enterprise Advanced

Mattermost v10.4부터 자체 호스팅 배포를 사용하는 Mattermost Enterprise 고객은 대안적인 캐시 백엔드로 Redis(Remote Dictionary Server)를 구성할 수 있습니다. Redis는 데이터베이스, 캐시, 메시지 브로커로 사용할 수 있는 오픈 소스 인메모리 데이터 구조 저장소입니다. 다양한 데이터 구조를 지원하며 메모리에 데이터를 저장하고 매우 빠른 데이터 접근을 제공하는 성능으로 최우선 선택지가 됩니다.

Redis를 캐싱 솔루션으로 사용하면 고동시성 및 대규모 사용자 기반을 가진 엔터프라이즈급 배포에서 Mattermost가 고사용량에서도 고성능과 효율성을 유지할 수 있습니다.

다음 표에서 설명한 대로 config.json 파일을 편집하여 Redis 캐시를 구성합니다. 이 섹션의 구성 설정 변경 사항은 서버를 재시작해야 적용됩니다.

캐시 유형#

캐시 유형을 정의합니다.

  • lru: (기본값) Mattermost가 인메모리 캐시 저장소를 사용합니다.
  • redis: Mattermost가 구성된 Redis 캐시 저장소를 사용합니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: CacheSettings > CacheType, > lru
  • 환경 변수: MM_CACHESETTINGS_CACHETYPE

Redis 주소#

Redis 호스트의 호스트 이름입니다.

문자열 입력입니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: CacheSettings > RedisAddress,
  • 환경 변수: MM_CACHESETTINGS_REDISADDRESS

Redis 비밀번호#

Redis 호스트의 비밀번호입니다.

문자열 입력입니다. 비밀번호가 없으면 비워 두세요.

  • 시스템 구성 경로: N/A
  • config.json 설정: CacheSettings > RedisPassword,
  • 환경 변수: MM_CACHESETTINGS_REDISPASSWORD

Redis 데이터베이스#

Redis 호스트의 데이터베이스입니다.

15까지의 0부터 시작하는 숫자입니다. 일반적으로 0으로 설정합니다. Redis는 최대 16개의 데이터베이스를 허용합니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: CacheSettings > RedisDB,
  • 환경 변수: MM_CACHESETTINGS_REDISDB
#### 클라이언트 캐시 비활성화

Redis의 클라이언트 측 캐시를 비활성화합니다.

  • true: Redis의 클라이언트 측 캐시가 비활성화됩니다. 일반적으로 테스트 옵션으로 사용하며 프로덕션 환경에서는 사용하지 않습니다.
  • false: (기본값) Redis의 클라이언트 측 캐시가 활성화됩니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: CacheSettings > DisableClientCache, > false
  • 환경 변수: MM_CACHESETTINGS_REDISDB

Redis 캐시 접두사#

모든 Redis 캐시 키에 접두사를 추가합니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: CacheSettings > RedisCachePrefix
  • 환경 변수: MM_CACHESETTINGS_REDISCACHEPREFIX
Tip

모든 Redis 캐시 키에 접두사를 추가하면 키 충돌을 줄이고, 디버깅을 단순화하며, 데이터를 격리하고, Redis 기반 시스템을 관리하고 확장하기 위한 명확한 구조를 제공합니다. 여러 시스템 또는 테넌트가 동일한 Redis 인스턴스를 사용하는 환경에서는 접두사가 데이터 무결성과 운영 효율성을 유지하는 데 중요합니다.

웹허브 채널 반복 활성화#

채널의 WebSocket 브로드캐스팅 성능을 제어합니다.

활성화하면 WebSocket 브로드캐스팅 성능이 향상되지만, 사용자가 채널에 참여하거나 나갈 때 성능이 저하될 수 있습니다.

Mattermost를 활발하게 사용하는 동시 접속 사용자가 최소 200,000명 이상이 아니라면 권장하지 않습니다.

기본적으로 비활성화되어 있습니다.

  • 시스템 구성 경로: N/A
  • config.json 설정: ServiceSettings > EnableWebHubChannelIteration, > false
  • 환경 변수: MM_SERVICESETTINGS_ENABLEWEBHUBCHANNELITERATION

전용 내보내기 파일 스토리지 대상 활성화#

Mattermost 대량 내보내기 및 컴플라이언스 내보내기에 대해 대체 파일 스토리지 대상을 지정할 수 있도록 합니다.

  • True: 다음 구성 설정의 새 구성 값을 사용하여 FileSettings 아래에 새 ExportFileBackend()가 생성됩니다:
    • ExportDriverName
    • ExportDirectory
    • ExportAmazonS3AccessKeyId
    • ExportAmazonS3SecretAccessKey
    • ExportAmazonS3Bucket
    • ExportAmazonS3PathPrefix
    • ExportAmazonS3Region
    • ExportAmazonS3Endpoint
    • ExportAmazonS3SSL
    • ExportAmazonS3SignV2
    • ExportAmazonS3SSE
    • ExportAmazonS3Trace
    • ExportAmazonS3RequestTimeoutMilliseconds
    • ExportAmazonS3PresignExpiresSeconds
    • ExportAzureStorageAccount
    • ExportAzureAuthMode
    • ExportAzureAccessKey
    • ExportAzureContainer
    • ExportAzurePathPrefix
    • ExportAzureCloud
    • ExportAzureEndpoint
    • ExportAzureSSL
    • ExportAzureRequestTimeoutMilliseconds
    • ExportAzurePresignExpiresSeconds
  • False: (기본값) 표준 파일 스토리지가 사용됩니다. 구성 설정 또는 값이 생략된 경우에도 표준 파일 스토리지가 사용됩니다.
  • 시스템 구성 경로: N/A
  • config.json 설정: FileSettings > DedicatedExportStore
  • 환경 변수: MM_FILESETTINGS_DEDICATEDEXPORTSTORE
Note
  • 대체 파일 스토리지 대상이 구성된 경우 Mattermost Cloud 관리자는 /exportlink [job-id|zip file|latest] 슬래시 명령어를 사용하여 내보내기를 위한 사전 서명 다운로드 URL을 생성할 수 있습니다. Amazon S3에서는 S3 사전 서명 URL이며, Azure Blob Storage에서는 공유 액세스 서명(Shared Access Signature, SAS) URL입니다. 이러한 URL의 유효 기간은 각각 ExportAmazonS3PresignExpiresSeconds 또는 ExportAzurePresignExpiresSeconds에 의해 제어됩니다. 자세한 내용은 Mattermost 데이터 마이그레이션 문서를 참조하세요. Cloud 관리자는 mmctl export generate-presigned-url 명령어를 사용하여 mmctl에서 직접 사전 서명 URL을 생성할 수도 있습니다.
  • 사전 서명 URL 생성은 Mattermost Cloud에서만 사용할 수 있으며, 사전 서명 링크를 지원하는 스토리지(Amazon S3 또는 Azure Blob Storage)와 이 전용 내보내기 스토어 설정이 true로 설정되어 있어야 합니다. 공유 스토리지를 사용하는 시스템에서는 내보내기를 위한 사전 서명 URL이 지원되지 않습니다.