Mattermost v12.0 메이저 릴리즈 주요 업데이트

안녕하세요, 인포그랩입니다. 이번 글에서는 2026년 10월 16일 출시된 Mattermost v12.0 메이저 릴리즈의 주요 변경 사항을 살펴봅니다. 메시지 최대 길이는 16,383자에서 262,144자로 늘어났으며, 이를 위한 데이터베이스 마이그레이션이 포함되었습니다. 웹 앱과 데스크톱 앱은 React 19로 전환되었고, 최소 지원 PostgreSQL 버전은 v15로 상향되었습니다. 반면 RHEL 7·8, OpenSearch 1.x, atmos/camo 이미지 프록시 지원은 종료되었습니다.
주요 기능으로는 Attribute Management 페이지, Enterprise Advanced 플랜의 채널 속성, 체크박스 대화상자 요소, 팀·채널 단위 내보내기와 가져오기를 지원하는 mmctl 기능이 추가되었습니다. 메이저 릴리즈인 만큼 업그레이드에 영향을 줄 수 있는 Breaking Changes를 먼저 자세히 살펴본 뒤, 주요 하이라이트와 영역별 변경 사항, 버그 수정, 운영 체크리스트 순으로 정리합니다.
한눈에 보는 v12.0 하이라이트
- 릴리즈 정보: v12.0은 2026-10-16에 출시된 Major Release이며, 서버 릴리즈 페이지 기준 지원 종료일은 2027-01-15입니다. Extended Support Release(ESR, 확장 지원 릴리즈)가 아닙니다. 현재 ESR은 v11.7이고, 같은 페이지 기준 지원 종료일은 2027-05-15입니다.
- ESR 공지: v10.11 ESR은 2026-08-15에 지원이 종료되었습니다. v10.11을 쓰는 환경은 v11.7 이상으로 올려야 한다는 안내가 원문 상단에 있습니다.
- 릴리즈 규모: 개선 사항 73건(User Interface 27건, Plugins/Integrations 6건, Administration 23건, mmctl 14건, Performance 3건), 버그 수정 51건, API 변경 10건, 감사 로그 이벤트 변경 13건, 데이터베이스 스키마 변경 19건이 포함되었습니다. Go v1.26.7로 빌드되었습니다.
- Breaking Changes: 공식 체인지로그에는 데이터베이스 마이그레이션, 플러그인, 시스템 요구 사항, 제거된 설정과 API, 언어 변경 등 총 26개 항목이 정리되어 있습니다.
- Attribute Management: System Console의 System Attributes 아래에 속성을 한 번 정의해 사용자, 채널, 게시물에 적용하는 페이지가 추가되었습니다(Enterprise 플랜). 계층형(Hierarchical) 속성 유형도 들어왔습니다.
- 채널 속성: Enterprise Advanced에서
ChannelAttributes기능 플래그 뒤에 채널 속성이 추가되었습니다. 필수 속성이 비어 있으면 채널을 만들 수 없습니다. - 인터랙티브 대화상자:
checkbox_group,checkbox_matrix요소가 추가되었고, 대화상자 제목 최대 길이가 24자에서 80자로 늘었습니다. - mmctl: 팀 또는 채널 단위로 내보내고, 대상 팀·채널을 바꿔 가져올 수 있습니다. 가져오기 작업은 체크포인트가 저장되어 중단 후 재개됩니다.
- 성능: Mattermost가 공개한 v12.0 벤치마크(Performance Reports)에서 지원 사용자 수가 4.31% 감소했지만, 이는 예측 구간
[-5%, +5%]안에 있어 유의미한 차이가 없다고 원문이 설명합니다. - 호환성: 최소 지원 macOS는 15 이상, 최소 지원 Safari는 27 이상으로 올라갔습니다.
Breaking Changes 자세히 보기
업그레이드 절차에 미치는 영향을 기준으로 v12.0의 Breaking Changes를 정리했습니다. 공식 체인지로그의 26개 항목을 모두 다룹니다.
1) 데이터베이스와 시스템 요건
- 메시지 길이 확장과 ACCESS EXCLUSIVE 잠금: 마이그레이션이
message컬럼을VARCHAR(65535)에서VARCHAR(1048576)으로 넓혀 최대 메시지 길이를 16,383자에서 262,144자로 늘립니다. 메시지 한도는 컬럼 크기의 4분의 1이며, 최대 4바이트 문자를 고려한 값입니다. 지원되는 PostgreSQL 버전에서 VARCHAR 확장은 메타데이터만 바꾸지만, 대상 테이블(posts포함)마다 짧은ACCESS EXCLUSIVE잠금을 잡습니다. 이 잠금은 진행 중이거나 idle-in-transaction 상태인 DB 세션 때문에 획득이 지연될 수 있습니다. 잠금 대기 중에는 해당 테이블의 읽기와 쓰기가 기다립니다. - 전문 검색 인덱스 재생성: 잠금 시간을 줄이려고 게시물 메시지의 전문 검색 인덱스
idx_posts_message_txt를 컬럼 확장 전에 삭제하고, 이후 마이그레이션이CONCURRENTLY로 다시 만듭니다. 재생성이 끝나기 전까지 게시물의 데이터베이스 전문 검색은 이 인덱스 없이 동작합니다. 원문은 규모가 크거나 사용량이 많은 환경에서 마이그레이션을 먼저 시험하고 점검 시간을 잡도록 안내합니다. - PostgreSQL 15 이상: 최소 지원 PostgreSQL 버전이 v15입니다. v14 이하는 지원되지 않습니다.
- RHEL 7·8 지원 종료: 서버 바이너리는 glibc 2.34 이상을 요구합니다(Linux에서 보고됨).
- OpenSearch 2.x 이상: OpenSearch 1.x 지원이 종료되었습니다. 지원되지 않는 버전에 연결되면 시작할 때 오류를 로그로 남깁니다.
- atmos/camo 이미지 프록시 제거:
ImageProxySettings.ImageProxyType이atmos/camo이면 서버가 시작할 때local로 바꾸고 경고를 남깁니다. 이미지 프록시를 쓰는 환경에서는 Mattermost 서버가 직접 프록시 역할을 하므로, 서버가 이미지를 가져오는 외부 호스트에 접근할 수 있어야 합니다.RemoteImageProxyURL,RemoteImageProxyOptions설정도 제거되어 무시됩니다.
2) 플러그인과 웹 앱
- 플러그인 재빌드: 일부 사전 패키지 플러그인이 v12.0에서 오류 없이 동작하도록 메이저 버전으로 올랐습니다. v12.0용으로 다시 빌드되지 않은 웹 앱 플러그인은 런타임 오류를 막기 위해 활성화가 억제될 수 있습니다. 업그레이드 전에 커뮤니티 플러그인을 v12.0 지원 버전으로 올리고, 자체 제작 플러그인은 v12.0 기준으로 다시 빌드하고 시험해야 합니다.
- React 19: Mattermost 웹 앱과 데스크톱 앱이 React 19로 빌드됩니다. 웹 앱(프런트엔드) 컴포넌트를 등록하는 플러그인만 영향을 받으며, 서버 전용 플러그인은 영향이 없습니다. 웹 앱 플러그인은 웹 앱이 제공하는 React 버전을 쓰므로 다시 빌드하지 않아도 React 19에서 렌더링됩니다.
ReactDOM.findDOMNode, 함수 컴포넌트의propTypes·defaultProps, 레거시 Context, 문자열 ref 같은 React 19에서 제거된 API를 호출하거나 레거시 동기 렌더링에 의존하는 플러그인은 깨질 수 있습니다. 대상 플러그인에npx codemod@latest react/19/migration-recipe를 실행한 뒤 제거된 API 사용 부분을 직접 고치는 것이 좋습니다. 자세한 내용은 원문이 안내하는 Mattermost 포럼 글에 있습니다. - EnableConcurrentReact 제거:
EnableConcurrentReact기능 플래그가 제거되었습니다. 웹 앱은 항상 concurrent React로 렌더링합니다.
3) 제거된 기능 플래그와 설정
- MoveThreadsEnabled: 이 기능 플래그는 더 이상 지원되지 않습니다. 켜져 있으면 서버가 시작할 때 끄고 경고를 남깁니다. 대안으로
https://github.com/mattermost/mattermost-plugin-wrangler플러그인을 쓸 수 있습니다. - AppsEnabled: 이 기능 플래그도 지원되지 않습니다.
true로 설정되어 있으면 서버가 시작할 때 끄고 경고를 남깁니다. - 미사용 설정 11개 제거:
ElasticsearchSettings.BulkIndexingTimeWindowSeconds,ClusterSettings.EnableExperimentalGossipEncryption,ExperimentalSettings.ClientSideCertEnable,TeamSettings.ExperimentalViewArchivedChannels,CloudSettings.CWSMock,PluginSettings.ChimeraOAuthProxyURL,DataRetentionSettings.EnableBoardsDeletion,DataRetentionSettings.BoardsRetentionDays,SqlSettings.AtRestEncryptKey,NativeAppSettings.EnableIntuneMAM,GuestAccountsSettings.AllowEmailAccounts입니다. 기존config.json에 남아 있어도 무시되고 서버는 정상 시작하므로 설정 변경은 필요하지 않습니다.NativeAppSettings.EnableIntuneMAM을 쓰던 관리자는IntuneSettings.Enable을 써야 합니다. - 로그인 버튼 색상 필드 제거:
EmailLoginButtonColor,EmailLoginButtonBorderColor,EmailLoginButtonTextColor클라이언트 구성 필드가EmailSettings의 로그인 버튼 색상 설정과 함께 제거되었습니다. 이 필드는 어떤 클라이언트에서도 적용된 적이 없습니다. - HardenedMode 설정 이름 변경:
ServiceSettings.ExperimentalEnableHardenedMode는 지원 중단되고ServiceSettings.EnableHardenedMode로 대체되었습니다. 설정 위치도 System Console > Experimental > Features에서 System Console > Environment > Web Server로 옮겨졌습니다. 기존 값은 업그레이드할 때 자동으로 이어받습니다. 이후에는 서버가EnableHardenedMode만 읽으므로, 이전 설정 키를 쓰는 설정 관리 도구, 환경 변수, 스크립트는 갱신해야 합니다.
4) API와 연동
- Slack import API·CLI 제거: 내장 Slack import API와 CLI가 제거되었습니다.
POST /teams/{team_id}/import엔드포인트와mattermost import slack명령을 더 이상 쓸 수 없습니다.mmetl도구와mmctl import를 함께 쓰는 방식으로 옮겨야 합니다. - Slack 호환 Go 타입 제거: Go 패키지에서
SlackAttachment,SlackAttachmentField,ParseSlackAttachment,StringifySlackFieldValue가 제거되었습니다. 각각MessageAttachment,MessageAttachmentField,ParseMessageAttachment,StringifyMessageAttachmentFieldValue로 바꿔야 합니다. - logs/query 400 응답:
POST /api/v4/logs/query는date_from또는date_to가 비어 있지 않으면서"2006-01-02 15:04:05.999 -07:00"형식으로 해석되지 않을 때 HTTP 400을 반환합니다. 이전에는 이런 값이 조용히 무시되고 필터 없는 결과와 HTTP 200이 돌아왔습니다. 빈 값은 계속 제한 없음을 뜻합니다. - license/client 형식 파라미터 제거:
GET /api/v4/license/client에서 필수였던format쿼리 파라미터가 제거되었습니다. 형식 지정 없이 클라이언트 라이선스 정보를 반환합니다. - 게시물 identity props 제한:
from_webhook,from_bot,from_oauth_app,from_plugin,override_username,override_icon_url,override_icon_emoji,webhook_display_name은 일반 사용자 세션과 개인용 액세스 토큰(PAT) 세션에서 더 이상 받아들여지지 않습니다. 게시물을 만들거나 수정할 때 제거되며, 검증된 연동에만 다시 적용됩니다. 재적용 대상은 override 항목은 수신 웹훅과 슬래시 명령,from_*표식은 봇, OAuth, 플러그인입니다. PAT로from_webhook과override_*를 지정해 임의의 이름과 아이콘으로 게시하던 스크립트는 봇 계정이나 수신 웹훅으로 옮겨야 합니다. - EnableHardenedMode의 역할 축소:
EnableHardenedMode는 reserved 게시물 props를 HTTP 400으로 거부하지 않습니다. 로그인, MFA, 비밀번호 재설정, 5xx 응답 정보 제거만 계속 제어합니다. - interactive dialog 날짜 필드: 폐기된 날짜·날짜시간 필드가 제거되었습니다. 최상위
min_date,max_date,time_interval과datetime_config.allow_manual_time_entry는 받아들여지지 않으며 오류 없이 무시됩니다.manual_time_entry가 있는datetime_config를 써야 합니다. - channel member API 필드: 채널 멤버 API 엔드포인트가 다른 사용자의 멤버십에 대해
last_viewed_at,last_update_at을 반환하지 않습니다. 이전에는 유효하지 않은 값-1을 반환했고, 이제는 요청자 본인이 아닌 경우 응답에서 필드가 빠집니다. 이 필드를 다른 사용자에 대해 읽는 클라이언트는 필드가 없는 경우를 처리해야 합니다(Linux에서 보고됨).
5) 속성과 접근 제어
- ABAC auto_add: 속성 기반 접근 정책이 걸린 채널이나 팀에 구성원을 자동으로 추가하는 설정이 정책의 active 플래그가 아닌 정책의 멤버십 규칙에 저장됩니다. 설정은 채널별, 팀별로 지정하며 기존 설정은 자동으로 이전됩니다.
PUT /api/v4/access_control_policies로active필드를 바꿔 자동 추가를 제어하던 클라이언트는 멤버십 규칙의auto_add메타데이터를 설정해야 합니다./access_control_policies/activate엔드포인트는 그대로 동작합니다(webapp에서 보고됨). - 1000개 초과 옵션: 옵션이 1000개를 넘는 사용자 지정 속성 필드는 옵션 목록 대신 개수를 직렬화합니다.
- User Attributes 페이지 이전: Enterprise 플랜에서 System Console > System Attributes > User Attributes 페이지가 제거되었습니다. 기존 Custom Profile Attributes(User Attributes) 필드는 서버가 시작할 때 Attribute Management로 자동 이전되며, v12.0부터 그곳에서 관리합니다. 이전 페이지 URL은 Attribute Management로 리디렉션됩니다.
- custom_profile_attributes PATCH·DELETE 400:
/api/v4/custom_profile_attributes/fields/{field_id}에 대한 PATCH와 DELETE 요청은 해당 필드가 Attribute Management 템플릿에 연결되어 있으면 HTTP 400을 반환하고, 오류 메시지가 Global Attributes API를 안내합니다. Enterprise 플랜에서는 대상이 되는 기존 User Attributes 필드가 서버 시작 시 템플릿에 자동으로 연결됩니다. 이 필드를 User Attributes API로 수정하거나 삭제하던 스크립트와 연동은 Global Attributes API로 바꿔야 합니다.
6) 언어
- 실험적 언어 설정 제거:
LocalizationSettings.EnableExperimentalLocales설정이 제거되었고, 이 설정이 노출하던 작업 중 번역 카탈로그 대부분도 함께 제거되었습니다. 덴마크어는 정식 지원 언어가 되었습니다. 체코어, 크로아티아어, 핀란드어, 리투아니아어, 노르웨이어 보크말, 포르투갈어(포르투갈)는 설정 없이 모든 사용자에게 실험적 언어로 제공됩니다. 제거된 다른 언어를 선택했던 사용자는 영어로 Mattermost를 보게 됩니다. 기존config.json에 이 설정이 남아 있어도 무시됩니다. - 벨라루스어 제거: 벨라루스어가 제거되었습니다. 벨라루스어를 선택했던 사용자에게는 기본 언어가 표시됩니다.
세부 기능 개선 사항
User Interface (27건)
- 사전 패키지 플러그인(12건): Calls v1.12.5, Dataminr v2.0.0, GitLab v2.0.0, Zoom v2.0.0, GitHub v3.0.0, Legal Hold v1.1.6, Playbooks v2.12.1, MS Calendar v2.0.0, MS Teams Meetings v3.0.0, Boards v10.0.0, Agents 2.9.0, Jira v5.0.0이 포함됩니다.
- 웹 앱이 React 19로 갱신되었고 concurrent 렌더링이 기본으로 켜집니다.
- 새로 만든 개인용 액세스 토큰과 봇 액세스 토큰에 복사 버튼이 추가되었습니다.
- OpenGraph 이미지 미리보기를 숨기고 표시하는 버튼에 접근성 레이블이 추가되었습니다.
- 인터랙티브 대화상자에
checkbox_group(여러 항목 선택 체크박스 목록)과checkbox_matrix(행·열을 설정하고 행마다 단일 또는 다중 선택이 가능한 체크박스 격자) 요소가 추가되었습니다. 두 요소 모두label_position옵션을 지원하며, 이 옵션은 radio와 bool 요소에서도 쓸 수 있습니다. - 인터랙티브 대화상자 제목의 최대 길이가 24자에서 80자로 늘었습니다.
- 게시물의 단일 이미지 미리보기 너비가 디자인 사양에 맞춰 700px로 제한됩니다.
- 설정된 로케일을 쓸 수 없으면 표시 설정이 영어로 대체됩니다.
- 불가리아어, 중국어(간체·번체), 네덜란드어, 영어(호주), 프랑스어, 독일어, 헝가리어, 이탈리아어, 일본어, 한국어, 페르시아어, 폴란드어, 포르투갈어(브라질), 루마니아어, 러시아어, 스페인어, 스웨덴어, 튀르키예어, 우크라이나어, 베트남어 카탈로그의 누락된 번역이 추가되었습니다.
- Settings > Display > Language에 덴마크어가 지원 언어로, 체코어, 크로아티아어, 핀란드어, 리투아니아어, 노르웨이어 보크말, 포르투갈어(포르투갈)가 실험적 언어로 추가되었습니다. 벨라루스어는 제거되었습니다.
- 범위 지정 마이그레이션으로 만들어져 관리자 검토를 기다리는 계정을 구분하도록 사용자 프로필에
IMPORTED - INACTIVE태그가 추가되었습니다. - 채널 관리자가 Channel Settings > Configuration에서 채널별로 입장·퇴장 시스템 메시지를 숨길 수 있습니다. 게시물은 저장되어 있다가 설정을 다시 켜면 나타납니다.
- 채널 헤더와 스레드 오른쪽 사이드바의 채널 속성 칩이 개선되었고 System Console 속성 화면이 다듬어졌습니다.
- 채널 정보의 채널 속성 칩 스타일이 개선되었고, 채널 이름이 잘릴 때 채널 헤더의 속성 레이블이 깜빡이지 않도록 안정화되었습니다.
- moment-timezone이 0.6.4(IANA tzdata 2026d)로 올랐습니다. 브리티시컬럼비아, 앨버타, 노스웨스트 준주, 모로코에 적용되는 2026년 규칙으로 예약, 리마인더, 사용자 지정 시간을 계산합니다.
Plugins/Integrations (6건)
- 라이선스가 바뀔 때 호출되는 플러그인 훅
OnLicenseChanged가 추가되었습니다. - 세션 범위 파일 작업 정책을 확인하는 Plugin API 메서드가 추가되었습니다.
- 컨텍스트를 인식하는 플러그인이 보내는 서버 대 플러그인, 플러그인 간 HTTP 요청에 요청 기한과 취소가 전파됩니다.
- 웹 앱 플러그인용 공유 React JSX 런타임 export가 추가되었습니다. 프로덕션 호스트에서 development JSX를 쓰는 경우도 지원합니다.
- Mattermost 라이선스와 함께 구매하고 라이선스가 허용할 때만 실행되는 플러그인인 licensed add-on을 지원합니다.
- 이후 React 업그레이드를 지원하도록 웹 앱이 노출하는 React Bootstrap 라이브러리가 갱신되었습니다.
Administration (23건)
- 위임 관리자 역할: System Console > Users > Manage Roles 모달에서 세분화된 위임 관리 역할을 바로 부여할 수 있습니다.
- 프로필 사진 관리: System Console 관리자가 User Management 사용자 상세 페이지에서 사용자 프로필 사진을 올리거나 삭제할 수 있습니다.
- Attribute Management: System Console > System Attributes(Enterprise 플랜)에 속성을 한 번 정의해 사용자에 적용하는 페이지가 추가되었습니다.
ChannelAttributes기능 플래그가 켜져 있으면 Enterprise Advanced의 채널에,PostAttributes기능 플래그가 켜져 있으면 게시물에도 적용할 수 있습니다. 속성 유형은 Text, Phone, URL, Select, Multiselect, Ranked입니다. 관리자는 속성을 만들고 수정하고 삭제할 수 있으며, 속성 이름을 바꾸면 같은 레이블을 쓰는 연결 리소스 필드의 이름도 바뀝니다. 플러그인이 소유한 속성은 읽기 전용으로 표시되고 플러그인 설정으로 가는 링크가 붙습니다. - 계층형 속성: 값이 부모와 자식 계층을 이루는 Hierarchical 속성 유형(API에서는
graph)이 추가되었습니다. Attribute Management에서 만들고, Account Settings와 System Console 사용자 상세 페이지에서 옵션 선택기로 설정하며, 사용자 프로필 팝오버에는 이름으로 표시됩니다. 기존 속성의 유형을 Hierarchical로 바꾸거나 그 반대로 바꿀 수는 없습니다. 접근 정책은coversAll,coversAny,withinAll,withinAny네 함수로 계층형 속성을 비교할 수 있습니다. 속성 옵션을 조회, 생성, 수정, 삭제하는 REST 엔드포인트와 Plugin API 메서드도 추가되었습니다. - 채널 속성(Enterprise Advanced):
ChannelAttributes기능 플래그 뒤에서 제공됩니다. 채널을 만들 때 필수 채널 속성을 입력하도록 요청하며, 채우기 전에는 채널을 만들 수 없습니다. 생성 후에는 Channel Info의 새 속성 섹션에서 값을 보고 수정하고 추가할 수 있고, 속성별 변경 정책(변경 자유, 올리기만 가능, 내리기만 가능, 변경 불가)을 따릅니다. 잠긴 속성은 사유와 함께 읽기 전용으로 표시됩니다. 채널 배너는 채널 속성 값으로 구성되며, 수동으로 설정한 배너가 있으면 그것이 우선합니다.POST /api/v4/channels는 채널 속성 값을 받고, 필수 값이 빠진 채널은 만들지 않습니다. - 플러그인을 덮어쓰기 전에 설치된 버전과 업로드한 버전을 비교하는 중복 플러그인 업로드 확인 모달이 추가되었습니다.
- 플러그인 설정 페이지의 활성화 설정이 즉시 실행되는 동작 버튼으로 바뀌었고, 플러그인 설정에서 제거하는 옵션이 추가되었습니다.
- System Console 플러그인 업로드 화면에 자동 업로드 드롭존, 진행 표시, 더 분명한 비활성 상태 안내가 추가되었습니다.
- 내보내기, SQL 복제본 모니터, 기능 플래그 동기화, burn-on-read, LDAP 그룹 필터, Elasticsearch 인덱스 크기, 연결된 워크스페이스 배치 크기, 푸시 알림 버퍼, 로그 수준, 파일 스토리지, 이메일, 세션, 데이터 보존, TLS, 웹 서버 설정에 대한 서버 설정 검증이 강화되었습니다.
- Mobile Ephemeral Mode 설정과 관련된 모바일 기기 캐시 데이터 삭제 이벤트에 감사 로그가 추가되었습니다.
- 접근 규칙이 사용자 속성을 접근 대상 채널의 속성과 비교할 수 있습니다. 다중 값 속성에는
hasAnyOf,hasAllOf를 쓰며 새ResourceAttributesInPolicies기능 플래그 뒤에서 제공됩니다. 채널 속성을 참조하는 규칙은 해당 값을 설정하지 않은 모든 채널의 접근을 거부합니다. - PAT 수명 적용, 만료 알림, 규정 미준수 토큰 폐기가 사용자 소유 봇 계정까지 확대되었습니다. 플러그인 소유 봇과 보호된 시스템 봇은 제외됩니다.
- 사용자 소유 봇 계정의 PAT 만료와 재생성을 웹 앱에서 지원합니다.
- 채널 파일 다운로드 권한 정책이 콘텐츠 검토자에게도 적용됩니다.
- Security Guide에 제품, 심각도, 이슈 ID, 날짜, 영향 버전 범위로 권고문을 거르는 Security Updates 게시판이 추가되었습니다.
EnableAIRecaps기능 플래그가 켜져 있지 않으면 System Console의 Recaps 페이지가 숨겨집니다.- OAuth 애플리케이션 관리와 인가 엔드포인트 처리가 갱신되었습니다.
- 사용자 목록 API의 팀 필터 처리가 갱신되었습니다.
- 세션 속성(사용자 에이전트, IP 주소, 기기·네트워크 상태)이 기본으로 수집됩니다.
- 게시물 조회, 채널 북마크, 알림 전달에서 쓰는 파일 메타데이터 준비 방식이 갱신되었습니다.
- 사용자 지정 이모지 이미지 처리가 공유 이미지 디코더를 쓰도록 바뀌어, 애니메이션 GIF 원본도 설정된 최대 이미지 해상도와 이미지 디코더 동시 처리 제한을 따릅니다.
- 이미지 방향을 판단할 때 EXIF 메타데이터를 읽는 방식이 갱신되었습니다.
- 생성되는 Support Packet과 서버 로그에서 데이터베이스 연결 문자열을 보고하는 방식이 갱신되었습니다.
mmctl (14건)
mmctl bot create --with-token에 사용자 소유 봇 계정의 PAT 수명 적용을 위한--expires-in플래그가 추가되었습니다.mmctl export create에--team-name,--team-id플래그가 추가되어 서버 전체 대신 단일 팀 또는 쉼표로 구분한 여러 팀을 내보낼 수 있습니다.mmctl export create에--channel-name,--channel-id플래그가 추가되어 팀 안의 단일 채널 또는 쉼표로 구분한 여러 채널을 내보낼 수 있습니다.- 범위를 지정한 내보내기는 기본적으로 사용자 지정 이모지를 제외합니다. 원본 서버의 전체 이모지 라이브러리가 대상 서버로 넘어가는 것을 막기 위해서입니다. 포함하려면
--include-custom-emoji를 지정합니다. 대상 서버에 없는 사용자 지정 이모지를 참조하는 리액션은:name:문자 그대로 표시됩니다. - 내보낸 팀에 할당된 사용자 지정 권한 스킴이 내보내기에 보존됩니다.
mmctl import process에--destination-team-name,--destination-team-id플래그가 추가되어 내보낸 팀을 대상 서버의 다른 팀으로 매핑할 수 있습니다.mmctl import process에--destination-channel-name,--destination-channel-id플래그가 추가되어 내보낸 채널을 대상 서버의 다른 채널로 매핑할 수 있습니다.mmctl import process에--skip-preflight플래그가 추가되어 SSO 사용자를 가져오기 전에 실행되는 LDAP/SAML 설정 확인을 건너뛸 수 있습니다.- 가져오기 작업이 진행 상황을 체크포인트로 저장하며, 프로세스를 강제 종료해 중단된 경우를 포함해 충돌이나 실패 뒤 재개할 수 있습니다.
- 범위 지정 가져오기로 들어온 모든 사용자는 비활성 상태로 생성되고
IMPORTED - INACTIVE태그가 붙어 관리자 검토를 기다립니다. 대상 서버에 이미 있는 사용자는 기존 계정과 매칭되어 활성 상태를 유지합니다. - 가져온 사용자의 username이 대상 서버의 기존 계정과 같으면, 게시물과 리액션이 버려지지 않고 그 계정에 귀속됩니다.
- 대상 서버에 없는 채널을 참조하는 게시물은 건너뛰며, 가져오기 전체가 중단되지 않습니다.
- 대상 서버에 하나뿐인 시스템 관리자를 강등하게 되는 역할 변경은 건너뛰며, 가져오기가 중단되지 않습니다.
- 원본 사용자의 과거 비활성화 날짜가 가져오기 시각으로 덮어써지지 않고 보존됩니다.
Performance (3건)
- Mattermost Performance Reports 벤치마크 결과 지원 사용자 수가 4.31% 감소했습니다. 예측 구간
[-5%, +5%]안에 있어 유의미한 차이가 없다고 원문이 설명합니다. 원본 데이터와 방법론은 Mattermost Performance Reports 리포지터리에서 확인할 수 있습니다. - 매우 큰
FileInfo,Channels테이블에서 Elasticsearch와 OpenSearch 일괄 인덱싱 작업 성능이 개선되었습니다. - "11:11:11" 같은 타임스탬프의 이모지 형태 토큰처럼 존재하지 않는 사용자 지정 이모지 이름의 조회를 캐시해 데이터베이스 부하를 줄였습니다.
DB 스키마 변경 (19건)
| 대상 | 변경 내용 | 운영 영향 |
|---|---|---|
channelmembers | 부분 인덱스 idx_channelmembers_autotranslation_enabled를 CONCURRENTLY로 삭제 | 다운타임과 쿼리 정확성 영향 없음 |
channelmembers | 마이그레이션 000215로 오래전에 폐기된 autotranslation 컬럼 제거 | 카탈로그만 바뀌며 테이블 재작성 없음, 잠금 영향 최소 |
AttributeView | UserAttributeView와 ChannelAttributeView로 분리 | 해당 테이블이 기능 플래그 뒤에 있고 운영 환경에서 비어 있어 성능 영향 없음으로 예상 |
posts, drafts, scheduledposts, temporaryposts | message 컬럼 한도를 65,535자에서 1,048,576자로 확장 | 테이블마다 짧은 ACCESS EXCLUSIVE 잠금, 읽기와 쓰기가 일시적으로 막힐 수 있음. 마이그레이션 전에 idx_posts_message_txt 삭제 |
posts | 마이그레이션 000234로 idx_posts_message_txt를 CREATE INDEX CONCURRENTLY로 재생성 | 읽기와 쓰기는 막히지 않음. 빌드가 끝나기 전까지 게시물 전문 검색은 인덱스 없이 동작 |
PostDeliveryTrackingChannels | 새 테이블과 ChannelId 고유 인덱스 추가 | 기존 테이블과 쿼리에 영향 없음 |
Fileinfo | (CreateAt, Id) 복합 인덱스 idx_fileinfo_create_at_id를 CONCURRENTLY로 추가 | 다운타임 영향 없음 |
Channels | (CreateAt, Id) 복합 인덱스 idx_channels_create_at_id 추가, 커서 기반 페이지네이션 가속 | 다운타임 없음, 동시 작업 영향 최소 |
Channels | DisableJoinLeaveMessages boolean 컬럼 추가 | 메타데이터만 바뀌며 테이블 재작성 없음 |
property_field_type | enum에 graph 값 추가 | 사용자 테이블에 영향 없음 |
PropertyFields | 마이그레이션 000223으로 옵션을 JSON blob에서 PropertyOptions, PropertyOptionEdges 테이블로 분리하고 두 속성 뷰를 재생성 | PropertyValues 테이블이 큰 환경은 마이그레이션 중 뷰 쿼리가 잠시 지연될 수 있음 |
PropertyOptions | 부분 복합 인덱스 idx_propertyoptions_fieldid_createat_id 추가(DeleteAt = 0 조건) | 읽기와 쓰기 영향 없음 |
PropertyOptions | 부분 복합 인덱스 idx_propertyoptions_fieldid_name 추가(DeleteAt = 0 조건) | 다운타임 불필요 |
PropertyOptionEdges | (FieldID, ParentOptionID, ChildOptionID) 비차단 복합 인덱스 추가 | 읽기와 쓰기 영향 없음 |
AccessControlPolicies | 멤버십 규칙에 auto_add: "always" 메타데이터를 백필하고 Active 컬럼 기반 동작을 규칙별 메타데이터로 이전 | 성능 영향 없음 |
AccessControlPolicies | Data -> 'rules'에 GIN 인덱스 idx_access_control_policies_rules 추가 | 다운타임과 잠금 영향 없음 |
AccessControlPolicies | Data -> 'imports'에 jsonb_path_ops GIN 인덱스 추가 | 일반 트래픽에 다운타임과 잠금 영향 없음 |
PropertyFields | 사용자·템플릿이 아닌 모든 행의 Attrs JSONB에서 오래된 ldap, saml 키 제거 | 되돌릴 수 없는 데이터 정리, 인덱스가 없는 환경에서는 전체 테이블 스캔 가능성 |
posts | posts(message)에 GIN 전문 검색 인덱스 idx_posts_message_txt를 CREATE INDEX CONCURRENTLY로 추가 | 대규모 환경에서는 I/O 부하가 큰 긴 빌드가 예상되며 다운타임은 없음 |
원문은 idx_posts_message_txt의 삭제와 재생성, GIN 인덱스 추가를 각각 별도 항목으로 기록하므로 위 표도 같은 방식으로 19건을 셌습니다.
config.json 변경
- 전체 플랜:
ServiceSettings.EnableHardenedMode가 추가되었고 System Console의 위치가 Environment > Web Server로 옮겨졌습니다(Linux와 Chromium에서 보고됨).ImageProxySettings.RemoteImageProxyOptions,ImageProxySettings.RemoteImageProxyURL,EmailSettings.LoginButtonBorderColor,EmailSettings.LoginButtonColor,EmailSettings.LoginButtonTextColor,LocalizationSettings.EnableExperimentalLocales가 제거되었습니다.TeamSettings.ExperimentalViewArchivedChannels,CloudSettings.CWSMock,PluginSettings.ChimeraOAuthProxyURL,SqlSettings.AtRestEncryptKey,GuestAccountsSettings.AllowEmailAccounts도 제거되었습니다. - System Console 위치 이동(전체 플랜): Experimental > Features에 있던 설정이 정식 위치로 옮겨졌습니다. 사용자 입력 중 메시지(Enable User Typing Messages)와 User Typing Timeout은 Site Configuration > Posts로 이동했습니다. Email Batching Buffer Size, Email Batching Interval, Use Channel Name in Email Notifications는 Site Configuration > Notifications로 이동했습니다.
TeamSettings.EnableUserDeactivation,TeamSettings.UserStatusAwayTimeout은 Site Configuration > Users and Teams로,ServiceSettings.EnableChannelViewedMessages는 Environment > Web Server로 이동했습니다. Enable Tutorial과 Enable Onboarding은 Site Configuration > Customization으로 이동했습니다. - 이미지 프록시 유형:
atmos/camo유형이 제거되어,ImageProxySettings.ImageProxyType이atmos/camo인 배포는 업그레이드할 때local로 자동 변경되고 경고가 기록됩니다. - WebserverMode:
ServiceSettings.WebserverMode가 System Console이 저장하는 값인uncompressed를nogzip대신 받아들입니다. 인식할 수 없는 값은 이전 버전이 동작하던 방식대로 시작할 때uncompressed로 바뀝니다. - Professional, Enterprise, Enterprise Advanced:
ThemeSettings.AllowedThemes가 System Console > Site Configuration > Customization에 추가되었습니다(이전에는config.json편집으로만 설정 가능). Enable Theme Selection, Allow Custom Themes, Default Theme 설정은 Experimental > Features에서 Customization으로 이동했습니다. - Entry, Enterprise Advanced:
NativeAppSettings.EnableIntuneMAM이 제거되었으며IntuneSettings.Enable을 써야 합니다. - Enterprise, Enterprise Advanced:
MessageExportSettings.GlobalRelaySettings.SenderAddress가 추가되어 Global Relay EML 컴플라이언스 내보내기의 From 주소를 고정할 수 있습니다(선택).ElasticsearchSettings.BulkIndexingTimeWindowSeconds,ClusterSettings.EnableExperimentalGossipEncryption,ExperimentalSettings.ClientSideCertEnable,DataRetentionSettings.EnableBoardsDeletion,DataRetentionSettings.BoardsRetentionDays가 제거되었습니다. - Enterprise Advanced: 게시물 전달 감사 로그를 제어하는
DeliveryTrackingSettings.Enable(기본값false)과DeliveryTrackingSettings.EnableForAllChannels(기본값true)가 추가되었습니다.
API 변경 (10건)
POST /access_control/decisions/actions/search(searchAccessControlDecisionActions)GET /delivery_tracking/config(getDeliveryTrackingConfig)PUT /delivery_tracking/config(updateDeliveryTrackingConfig)POST /ephemeral_mode/cleanup(logCleanup),POST /ephemeral_mode/purge(logOfflinePurge),POST /ephemeral_mode/wipe(logSessionWipe)GET,POST,PATCH,DELETE /properties/groups/{group_name}/{object_type}/fields/{field_id}/options(getPropertyFieldOptions,createPropertyFieldOptions,patchPropertyFieldOptions,deletePropertyFieldOptions)
감사 로그 이벤트 변경 (13건)
- 추가 11건:
AuditEventAutoCacheCleanupRun,AuditEventChannelMembershipAdded,AuditEventChannelMembershipRemoved,AuditEventCreatePropertyFieldOptions,AuditEventDeletePropertyFieldOptions,AuditEventGetPropertyFieldOptions,AuditEventOfflinePurge,AuditEventPatchPropertyFieldOptions,AuditEventPostDelivered,AuditEventSessionWipe,AuditEventUpdateDeliveryTrackingConfig - 제거 2건:
AuditEventImportTeam(importTeam)과AuditEventSlackImport(slackImport)가 내장 Slack import API와 CLI 제거에 맞춰 함께 제거되었습니다.
호환성과 빌드
- 최소 지원 macOS 버전이 15 이상, 최소 지원 Safari 버전이 27 이상으로 올라갔습니다. 이전 버전은 데스크톱 앱과 웹 앱에서 지원되지 않습니다. 자세한 내용은 소프트웨어·하드웨어 요구 사항 문서에서 확인할 수 있습니다.
- v12.0은 Go v1.26.7로 빌드되었습니다.
주요 버그 수정
공식 체인지로그에는 버그 수정 51건이 수록되어 있습니다. 아래 표에서는 여러 영역에 걸쳐 있는 항목을 가장 밀접한 영역에 한 번씩만 분류해 정리했습니다.
| 영역 | 수정 건수 | 주요 내용 |
|---|---|---|
| 서버 시작·검색·운영 | 4 | 읽기 복제본 지연으로 인한 시작 중단, OutgoingIntegrationRequestsTimeout 30초 상한, 한국어 nori 분석기 미적용, v12가 이전 설정으로 시작되지 않던 문제 |
| 인증·세션·보안 | 7 | 리디렉션 체인 뒤 제한 도메인 링크 미리보기, 사용자 프로필 업데이트, 수신 웹훅 DM 대상, 세션 무효화 전파, ZIP 압축 해제 메모리, SAML 메타데이터 가져오기, received_group WebSocket 범위 |
| 속성·접근 제어 | 8 | ABAC 정책 저장 가드, 알림 배너의 내장 속성, 채널 속성 칩 깜빡임, LDAP·SAML 동기화 속성의 403, 스레드의 헤더 속성, Classification Markings 충돌, 세션 속성 변경 후 첨부 파일 표시, Attribute Management 권한·링크·동기화 |
| 플러그인 | 7 | 섹션 기반 설정의 렌더링·검증·검색, 비활성 플러그인의 설정 은닉, 푸터 없는 섹션의 읽기 전용 표시, App Marketplace 너비 변동, burn-on-read 예약 게시물 훅, Threads 뷰에서 사이드바 패널 열기, 플러그인 시작 실패의 웹 앱 차단 |
| 관리 콘솔 | 8 | Recaps 페이지 권한, 쉼표 목록 설정의 공백 저장, 기본 채널 URL 변경 시도, 사용자 CSV 내보내기의 검색어 무시, 헤더 메뉴 스크롤 잘림, 게스트 초대 오류 안내, "No file chosen" 컨트롤, 자동 번역 AI 서비스 변경 미적용 |
| 현지화 | 3 | 번역 불가능한 관리 콘솔 문자열 4개, 영어 오타와 감사 로그 문구, 스페인어·프랑스어·이탈리아어·일본어의 빈 서버 메시지 |
| 메시지·채널·웹 UI | 11 | DM·GM 사이드바의 빈 행, 미디어 갤러리 크기 깜빡임, 대화상자가 잘못된 채널로 제출, 오래된 게시물의 고정 해제, 멘션 미리보기에서 초안 게시, 예약 메뉴 중복 예약, GIF 선택기 이미지 외관, 클라우드 프리뷰 모달 위치, "Today" 구분선, 스레드 팝아웃 빈 창, Threads Unreads 빈 목록 |
| mmctl·가져오기·API | 3 | mmctl 출력 형식, 기존 계정 대량 가져오기, 채널 멤버 API의 -1 값 |
- 표 합계는 4 + 7 + 8 + 7 + 8 + 3 + 11 + 3 = 51건으로 원문 항목 수와 같습니다.
- 운영 영향이 큰 수정 1, 시작 중단: 라이선스가 있고
SqlSettings.DataSourceReplicas를 설정한 서버에서, 앱 마이그레이션이 방금 쓴 행을 따라오지 못한 읽기 복제본에서 읽다가 시작이 중단되던 문제가 수정되었습니다. - 운영 영향이 큰 수정 2, 이전 설정 호환: v12가 이전 버전이 받아들이던 설정으로 시작되지 않던 문제가 수정되었습니다. 지원되지 않는
TLSMinVer와WebserverMode값, 표시 이름이 있는 이메일 설정, 범위를 벗어난 숫자 설정은 시작할 때 경고와 함께 보정됩니다. 비활성 로그 대상의 잘못된 로그 수준, LDAP 비활성 상태에서의 잘못된 LDAP 포트와 쿼리 제한 시간은 더 이상 거부되지 않습니다. - 운영 영향이 큰 수정 3, 타임아웃:
ServiceSettings.OutgoingIntegrationRequestsTimeout을 30초보다 크게 설정해도 슬래시 명령, 수신 웹훅, 게시물 액션 콜백, 대화상자 제출과 조회에서 30초로 조용히 제한되던 문제가 수정되었습니다. - 운영 영향이 큰 수정 4, 한국어 검색: AWS OpenSearch Service처럼 검색 클러스터가
opensearch-analysis-nori같은 접두 이름으로 플러그인을 보고하면 한국어nori분석기가 적용되지 않던 문제가 수정되었습니다. 한국어 검색을 운영하는 환경에 직접 관련됩니다. - 운영 영향이 큰 수정 5, 대화상자 채널: 인터랙티브 대화상자가 사용자가 현재 보고 있는 채널이 아니라 트리거가 만들어진 채널로 제출되도록 수정되었습니다(webapp에서 보고됨).
- 운영 영향이 큰 수정 6, 세션 무효화: 캐시된 세션을 무효화해도 이미 열려 있는 WebSocket 연결에 전파되지 않던 경우가 수정되었습니다.
- 운영 영향이 큰 수정 7, 데이터 보호: burn-on-read 예약 게시물이 예약되거나 수정될 때
ScheduledPostWillBeCreated훅을 구현한 플러그인이 내용을 받던 문제가 수정되었습니다. 이제 해당 게시물에는 훅이 호출되지 않아 가드 플러그인이 내용을 검사하거나 거부할 수 없습니다. - 운영 영향이 큰 수정 8, 캐시 정리: Threads Unreads 탭이 읽지 않은 스레드가 있다고 보고하면서 빈 목록을 보여 주던 문제가 수정되었습니다(desktop app에서 보고됨). 업그레이드 후에도 문제가 계속되고 리버스 프록시나 CDN이 API 응답을 캐시하고 있다면 해당 캐시를 한 번 비워야 합니다.
- SAML 메타데이터: System Console의 Get SAML Metadata from IdP가 IdP 메타데이터에
cacheDuration속성(예: PingFederate 기본값cacheDuration="PT1440M")이나 시간대 없는validUntil값이 있을 때 실패하던 문제가 수정되었습니다. - Attribute Management: 시스템 관리자가 아닌 사용자에게 수정·삭제 동작이 보이던 문제, Classification Markings가 요구하는 Enterprise Advanced 라이선스 없이 Classification 속성이 표시되던 문제, Attribute-Based Access 링크가 Attribute Management로 연결되지 않던 문제, 템플릿의 LDAP 또는 SAML 동기화 소스 변경이 연결된 사용자 속성에 반영되지 않던 문제가 수정되었습니다.
- Classification Markings 충돌: Attribute Management에서 만든 이름이 "classification"인 무관한 속성을 Classification Markings 페이지가 조용히 받아들이거나 충돌하던 문제가 수정되었습니다. 이제 충돌은 설명이 있는 오류로 보고되고, 해결되기 전까지 페이지는 읽기 전용입니다. 충돌하는 속성은 Attribute Management에서 계속 수정하고 삭제할 수 있습니다.
마이그레이션 및 운영 체크리스트
업그레이드 전 확인: Breaking Changes
- PostgreSQL 버전: 최소 지원 버전이 v15입니다. v14 이하를 쓰는 환경은 PostgreSQL을 먼저 올려야 합니다.
- OS와 glibc: RHEL 7·8은 지원되지 않으며 서버 바이너리는 glibc 2.34 이상이 필요합니다. 서버 OS의 glibc 버전을 확인합니다.
- OpenSearch: 1.x를 쓰는 환경은 2.x 이상으로 올려야 합니다. 지원되지 않는 버전에서는 시작할 때 오류가 로그로 남습니다.
- 점검 시간: 메시지 컬럼 확장은
posts를 포함한 테이블마다 짧은ACCESS EXCLUSIVE잠금을 잡습니다. 활성 세션과 idle-in-transaction 세션이 있으면 잠금 획득이 지연되므로, 스테이징에서 마이그레이션을 시험하고 점검 시간을 잡는 것이 좋습니다. - 전문 검색 인덱스 재생성:
idx_posts_message_txt가 삭제된 뒤 재생성되므로, 완료될 때까지 게시물 전문 검색이 인덱스 없이 동작합니다. 대규모 환경은 I/O 부하가 큰 긴 빌드를 예상해야 합니다. - 플러그인 재빌드: 커뮤니티 플러그인은 v12.0 지원 버전으로 올리고, 자체 제작 웹 앱 플러그인은 v12.0 기준으로 다시 빌드하고 시험합니다. 다시 빌드하지 않은 플러그인은 활성화가 억제될 수 있습니다.
- React 19 API 사용 여부: 웹 앱 플러그인이
ReactDOM.findDOMNode, 함수 컴포넌트의propTypes·defaultProps, 레거시 Context, 문자열 ref를 쓰는지 확인하고, 필요하면npx codemod@latest react/19/migration-recipe를 실행합니다. - PAT로 override 하던 스크립트: PAT로
from_webhook,override_username,override_icon_url등을 지정해 게시하던 스크립트가 있으면 봇 계정이나 수신 웹훅으로 옮깁니다. - Slack import 경로:
POST /teams/{team_id}/import와mattermost import slack을 쓰던 절차는mmetl도구와mmctl import조합으로 바꿉니다. - Slack 호환 Go 타입: 자체 Go 코드가
SlackAttachment계열 타입과 함수를 쓰면MessageAttachment계열로 바꿉니다. - HardenedMode 키: 설정 관리 도구, 환경 변수, 스크립트가
ServiceSettings.ExperimentalEnableHardenedMode를 설정하고 있다면ServiceSettings.EnableHardenedMode로 바꿉니다. - 커스텀 프로필 속성 API 사용 스크립트:
/api/v4/custom_profile_attributes/fields/{field_id}로 필드를 수정하거나 삭제하던 스크립트는 템플릿에 연결된 필드에서 HTTP 400을 받으므로 Global Attributes API로 옮깁니다. - 이미지 프록시 외부 접근:
atmos/camo를 쓰던 환경은local로 자동 전환됩니다. Mattermost 서버가 이미지가 있는 외부 호스트에 접근할 수 있는지 방화벽과 프록시 규칙을 확인합니다. - logs/query 호출:
POST /api/v4/logs/query의date_from,date_to가"2006-01-02 15:04:05.999 -07:00"형식인지 확인합니다. 형식이 틀리면 HTTP 400이 반환됩니다. - license/client 호출:
GET /api/v4/license/client에format파라미터를 붙이던 클라이언트는 정리해도 됩니다. - channel member API 소비자: 다른 사용자의
last_viewed_at,last_update_at을 읽는 클라이언트는 필드가 없는 경우를 처리해야 합니다. - ABAC auto_add:
PUT /api/v4/access_control_policies의active필드로 자동 추가를 제어하던 클라이언트는 멤버십 규칙의auto_add메타데이터를 쓰도록 바꿉니다. - interactive dialog:
min_date,max_date,time_interval,datetime_config.allow_manual_time_entry를 쓰던 대화상자는manual_time_entry가 있는datetime_config로 바꿉니다. - 기능 플래그:
MoveThreadsEnabled와AppsEnabled를 쓰던 환경은 서버가 시작할 때 끈다는 점을 확인하고, 스레드 이동은 mattermost-plugin-wrangler로 대체합니다. - 제거된 설정 키: 배포 스크립트와 설정 템플릿이 제거된 설정 11개와 로그인 버튼 색상 설정을 참조하는지 점검합니다. 서버 시작에는 영향이 없습니다.
- 언어 설정: 벨라루스어나 제거된 실험적 언어를 선택한 사용자에게는 기본 언어 또는 영어가 표시됩니다. 사용자 공지가 필요한지 확인합니다.
- 클라이언트 환경: 데스크톱 앱과 웹 앱을 쓰는 사용자의 macOS가 15 이상, Safari가 27 이상인지 확인합니다.
업그레이드 후 확인
- 메시지 최대 길이가 262,144자로 늘었는지, 게시물 전문 검색 인덱스 재생성이 끝났는지 확인합니다.
- User Attributes를 쓰던 Enterprise 환경은 필드가 Attribute Management로 이전되었는지 확인합니다.
- 서버 로그에서
atmos/camo,MoveThreadsEnabled,AppsEnabled자동 변경 경고를 확인합니다. - 사전 패키지 플러그인과 자체 웹 앱 플러그인이 활성화 상태인지 확인합니다.
- 한국어 검색을 운영하는 환경은 검색 결과가 정상인지 확인합니다.
업그레이드 경로
- v10.11 ESR은 2026-08-15에 지원이 종료되었으므로, v10.11을 쓰는 환경은 v11.7 이상으로 올려야 합니다.
- 여러 ESR 버전을 건너뛰는 업그레이드는 지원되지만 시험되지 않았습니다. ESR 사이의 단계별 업그레이드를 권장하며, 자세한 내용은 중요 업그레이드 노트를 확인합니다.
- v12.0은 ESR이 아닙니다. 장기 유지가 필요한 환경은 현재 ESR인 v11.7을 유지하는 방안도 검토할 수 있습니다.
참조 링크 및 버전 정보
| 버전 | 릴리즈 날짜 | 유형 | Changelog |
|---|---|---|---|
| v12.0 | 2026-10-16 | Major Release | Mattermost v12 Changelog |
- 공식 체인지로그: https://docs.mattermost.com/product-overview/mattermost-v12-changelog.html
- Mattermost 서버 릴리즈 개요: https://docs.mattermost.com/product-overview/mattermost-server-releases.html
- 중요 업그레이드 노트: https://docs.mattermost.com/upgrade/important-upgrade-notes.html
- React 19 전환 안내(Mattermost 포럼): https://forum.mattermost.com/t/starting-with-mattermost-v12-0-october-2026-the-mattermost-web-and-desktop-apps-are-built-on-react-19/26038
- React 19 업그레이드 가이드: https://react.dev/blog/2024/04/25/react-19-upgrade-guide
- mattermost-plugin-wrangler: https://github.com/mattermost/mattermost-plugin-wrangler
본 콘텐츠는 Mattermost Release Note의 영문 원본을 한국어로 번역하고 재구성한 것으로 인포그랩은 Mattermost의 한국 공식 파트너사입니다.
Mattermost 구축부터 성공적인 협업 플랫폼 운영까지 Mattermost 공식 파트너사 인포그랩과 함께하세요!
관련 글

2026년 10월 Mattermost 최신 버전 주요 업데이트
Mattermost 2026년 10월 릴리즈에서는 주간 반복 예약 게시물과 AI 예약 요약 기능이 추가되고, 플러그인용 ABAC API와 Post Exposure Report가 도입되며, 보안 패치 3종과 FIPS 환경에서 DB 비밀번호 최소 14자 요구 등 주요 보안·운영 개선이 포함됩니다.

2026년 9월 Mattermost 최신 버전 주요 업데이트
2026년 9월 Mattermost 릴리즈 노트는 8월 중순 이후 배포된 보안 패치 v11.10.1과 ESR v11.7.10을 다루며, SAML RelayState 서명·검증, 팀·역할 권한 검증 강화, 로컬 이미지 프록시 최대 크기 제한 등 인증·권한·콘텐츠 처리 전반의 보안 및 안정성 개선을 포함합니다. 특히 FIPS 번들 환경에서는 PostgreSQL 비밀번호가 14자 미만이면 패닉이 발생하므로 비밀번호 길이 확인이 필요하고, Go 런타임이 1.26.7로 업데이트되었습니다. 주요 변경 사항을 적용하고 체크리스트를 따라 업그레이드하면 보안 위험을 최소화할 수 있습니다.

2026년 8월 Mattermost 최신 버전 주요 업데이트
2026년 8월 Mattermost v11.10 업데이트는 WYSIWYG 에디터 베타, 미디어 갤러리 레이아웃, Mattermost Blocks, 무음(silent) 게시, 개인 액세스 토큰(PAT) 만료 알림 및 시크릿 회전 API 등 메시지 작성과 관리 거버넌스를 크게 개선하고, v11.9.1 보안 패치를 포함한 여러 보안·버그 수정과 플러그인·운영 기능 강화가 포함된 주요 기능 및 개선 사항을 제공합니다.