InfoGrab DocsInfoGrab Docs

Mattermost Calls 배포 가이드

요약

이 가이드는 시스템 관리자가 Mattermost Calls를 배포하는 과정을 준비 및 네트워크 점검부터 파일럿 테스트와 프로덕션 롤아웃까지 단계별로 안내합니다. Mattermost Calls에 대한 사전 경험은 필요하지 않습니다.

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

이 가이드는 시스템 관리자가 Mattermost Calls를 배포하는 과정을 준비 및 네트워크 점검부터 파일럿 테스트와 프로덕션 롤아웃까지 단계별로 안내합니다. 명확한 의사 결정 지점, 검증 확인 항목, 문제 해결 팁을 제공하므로 다음 단계로 넘어가기 전에 각 배포 단계가 정상적으로 동작하는지 확인할 수 있습니다.

Mattermost Calls에 대한 사전 경험은 필요하지 않습니다. 이 가이드는 처음 시작한다고 가정하며, 필수 개념과 모범 사례를 함께 소개합니다.

Calls 개요#

Mattermost Calls는 셀프 호스팅 음성 통화와 화면 공유를 제공하여 인프라 내부에서 완전히 독립적인 실시간 협업을 가능하게 합니다. 즉, 통화 미디어나 메타데이터가 서드파티 시스템을 거치지 않습니다.

Calls는 데이터 주권, 통제, 컴플라이언스를 타협할 수 없는 국방, 정보, 보안, 핵심 인프라 분야의 미션 크리티컬 운영에 특히 적합합니다. 인터넷에 접속할 수 없는 격리된 네트워크에서도 동작하도록 설계되어, 완전한 에어갭 컴플라이언스가 요구되는 배포를 지원합니다.

제공 기능은 다음과 같습니다.

  • 1:1 및 그룹 통화: 둘 이상의 참가자 간에 실시간 음성 통신을 시작합니다.
  • 화면 공유: 통화 중에 화면을 공유하여 작업을 시각적으로 협업하고, 문서를 검토하고, 실시간 문제를 해결합니다.
  • 통화 녹화 및 전사: 비동기 검토를 위해 음성 세션을 녹화합니다. (Enterprise, Enterprise Advanced)
  • 실시간 자막: 접근성을 위해 실시간 자막을 생성합니다. (Enterprise, Enterprise Advanced)

배포 개요#

이 가이드는 번호가 매겨진 단계로 구성된 순차적 배포 단계로 이루어져 있습니다. 각 단계는 사전 요구 사항으로 시작해서 검증 확인으로 끝납니다. 어떤 단계든 시작하기 전에 나열된 사전 요구 사항이 충족되었는지 확인하고, 검증 확인을 통과한 후에 다음 단계로 이동하세요. 이러한 구조는 문제를 가장 쉽게 분리할 수 있는 초기에 발견하고 해결하는 데 도움이 됩니다.

배포 단계:

  1. 준비 및 네트워킹

    배포 아키텍처를 선택하고, 네트워킹 관련 결정을 내리고, 필요한 서버를 프로비저닝하고, 배포 전에 필요한 네트워크 포트와 경로가 열려 있는지 확인합니다.

  2. Calls 설치 및 구성

    1단계에서 선택한 배포 아키텍처에 맞춰 설치와 구성을 완료합니다. 경로는 하나만 따르면 됩니다.

    • 경로 A: 통합 Calls 구성

      소규모 환경에서 더 간단하게 배포할 수 있도록 Mattermost 서버에 내장된 Calls 서비스를 사용합니다.

    • 경로 B: RTCD 설치 및 구성 (선택 사항)

      대규모 프로덕션 배포에는 RTCD(Real-Time Communication Daemon) 서비스를 사용합니다. RTCD는 Mattermost 서버의 미디어 처리 작업을 분담하여 성능과 확장성을 최적화합니다.

  3. 녹화 설치 및 구성 (선택 사항)

    Calls Offloader는 녹화, 전사, 실시간 자막을 제공하는 데 필요한 서비스입니다.

  4. 파일럿 롤아웃

    소규모 파일럿 사용자 그룹으로 테스트를 확대하여 실제 사용 환경에서 클라이언트, 네트워크, 환경별 문제가 발생하는지 확인합니다.

  5. 프로덕션 롤아웃

    적절한 공지와 모니터링을 갖추고 전체 사용자에게 단계적으로 롤아웃하며, 필요하면 중단하거나 롤백할 수 있도록 대비합니다.

배포 사전 요구 사항#

이 체크리스트를 사용하여 Calls 배포를 시작하기 전에 필요한 인프라, 기술, 액세스 권한을 갖추었는지 확인하세요. 이러한 사전 요구 사항을 지금 완료하면 배포 과정 후반에 누락된 의존성 때문에 발생하는 지연을 예방할 수 있습니다.

배포 인프라 요구 사항#

  • Mattermost v10.0 이상을 실행하는 Mattermost 서버가 있습니다.

    Mattermost 에디션과 버전을 확인하려면 시스템 정보 보기를 참조하세요.

  • Mattermost 서버가 HTTPS를 사용하도록 구성되어 있습니다.

    HTTPS를 설정해야 한다면 TLS 구성을 참조하세요.

  • 현재 Mattermost 배포의 활성 사용자 수를 알고 있습니다.

    사용량 지표를 확인하려면 사이트 통계를 참조하세요.

  • RTCD 서비스를 사용할 계획이라면 전용 Linux 서버 또는 VM을 하나 이상 프로비저닝할 수 있습니다.

    RTCD가 필요한지 확실하지 않다면 인프라 결정(1.2단계)을 참조하세요.

  • 녹화, 전사 또는 실시간 자막이 필요하다면 calls-offloader 서비스용 전용 Linux 서버 또는 VM을 프로비저닝할 수 있습니다.

  • 사용자가 UDP 또는 TCP 8443에서 미디어 서비스에 안정적으로 접속할 수 없는 경우 TURN 서버를 배포할 준비가 되어 있습니다.

    TURN 서버가 필요한지 확실하지 않다면 네트워킹 결정(1.3단계)을 참조하세요.

  • 필요한 기능에 맞는 Mattermost 에디션 및 라이선스를 보유하고 있습니다.

    • Mattermost Entry 또는 Team Edition: 1:1 통화 및 화면 공유(최대 40분)
    • Mattermost Professional: 그룹 통화 및 화면 공유(시간 제한 없음)
    • Mattermost Enterprise 또는 Enterprise Advanced: 다음 항목에 필요합니다.
      • 대규모(50명 이상 사용자) 및 프로덕션 안정성을 위한 RTCD 서비스
      • 녹화, 전사 또는 실시간 자막

기술 및 액세스 요구 사항#

  • 기본적인 Linux 관리에 익숙하거나, 익숙한 담당자가 있습니다. SSH로 서버에 접속하고, 구성 파일을 편집하고, systemd 서비스를 관리하고, 로그를 확인하고, 셸 명령을 실행해야 합니다.

  • Mattermost 서버에 대한 시스템 관리자 액세스 권한이 있습니다.

    역할과 권한에 대해 알아보려면 Mattermost 역할을 참조하세요.

네트워킹 요구 사항#

  • 최종 사용자가 Calls에 접속하는 방식(사설 네트워크, VPN 또는 공용 인터넷)을 알고 있습니다.

    이는 네트워킹 결정(1.3단계)에 영향을 줍니다.

  • 필요한 인바운드 및 아웃바운드 방화벽 규칙을 열 수 있거나, 방화벽을 관리하는 네트워크 또는 보안 팀과 협의할 수 있습니다.

검증 리소스#

  • Calls 설치 및 구성 중 스모크 테스트에 사용할 테스트 계정이 두 개 있습니다.
  • 중요하게 생각하는 클라이언트 유형과 네트워크에서 검증할 수 있는 소규모 파일럿 그룹(5-10명)이 있습니다.

지원팀 문의#

  • 문제가 발생했을 때 Mattermost 지원팀에 요청을 등록하는 방법을 알고 있습니다.

    실패한 정확한 단계 번호(예: 2A.2.1)와 함께 Mattermost 지원 패킷 및 Calls 로그를 포함해 주세요.

Note

Calls 배포에 전문가의 도움이 필요하다면 담당 어카운트 매니저에게 문의하거나 Mattermost 전문가와 상담하여 전문 서비스 제공 내용을 알아보세요.


1단계: 준비 및 네트워킹#

1.1 사전 요구 사항#

시작하기 전에 다음 사항을 확인하세요.

  • 현재 Mattermost 배포의 활성 사용자 수를 알고 있습니다.

  • 배포에 녹화, 전사 또는 실시간 자막이 필요한지 알고 있습니다.

  • 선택한 아키텍처에 RTCD 또는 녹화 서비스가 필요하다면 서버를 추가로 프로비저닝할 수 있습니다.

  • 배포에 사용하는 서버에서 인바운드 및 아웃바운드 네트워크 포트를 열 수 있습니다.

    네트워크 또는 보안 팀이 방화벽을 관리한다면 계속하기 전에 해당 팀과 협의해야 합니다.

1.2 인프라 결정#

여기에서는 두 가지 중요한 인프라 결정을 내립니다. 먼저 미디어 처리 아키텍처를 선택하고, 그다음 녹화가 필요한지 결정합니다. 각 아키텍처의 참조 토폴로지가 제공됩니다.

미디어 서비스: RTCD 또는 통합#

통합

미디어 처리를 담당하는 별도 서비스를 프로비저닝할 필요가 없으므로 가장 간단한 배포 모델입니다. 통합 모드에서는 Calls 플러그인이 Mattermost 서버에서 내장 미디어 서비스를 직접 실행합니다.

RTCD

RTCD는 Mattermost 메인 서버 외부에서 통화 미디어를 처리하는 Mattermost Calls 전용 실시간 통신 서비스입니다. 대부분의 프로덕션 배포에서는 통화 트래픽을 분리하고 Mattermost 서버의 부하를 줄여 성능, 확장성, 안정성을 높여 주므로 RTCD를 권장하는 배포 모델입니다.

RTCD가 필요한지 판단하려면 먼저 배포에 대한 다음 질문에 답하세요.

  • Kubernetes에 Calls를 배포합니까?
    • 예: Calls를 실행하는 유일한 지원 방식이므로 RTCD를 배포해야 합니다. 자세한 내용은 Kubernetes Calls 배포 가이드를 참조하세요.
    • 아니요: 다음 질문으로 넘어갑니다.
  • 기존 Mattermost 배포의 전체 사용자 수는 얼마입니까? (사이트 통계 확인)
    • 50명 이하: 통합 배포 모델을 사용할 수 있습니다.
    • 50명 초과: Mattermost 서버의 메시징 성능에 영향을 주지 않도록 RTCD를 배포해야 합니다.

아래 탭을 사용하여 각 배포 모델의 참조 아키텍처를 확인하세요.

통합 배포에는 추가 인프라가 필요하지 않습니다.

통합 Calls 배포

사용하기 적합한 경우

  • Calls를 처음 평가하고 있습니다.
  • Calls 사용자가 50명 미만일 것으로 예상합니다.
  • 가능한 한 가장 간단한 배포를 원합니다.

구성 요소

  • Mattermost 서버: Calls 플러그인이 사전 설치되어 있으며 추가 인프라가 필요하지 않습니다.

라이선스

  • Mattermost Entry: 1:1 통화 + 화면 공유(최대 40분)
  • Mattermost Professional, Enterprise 또는 Enterprise Advanced: 그룹 통화 + 화면 공유(시간 제한 없음)

녹화#

녹화, 전사, 실시간 자막을 활성화해야 한다면 통합 Calls 배포에 녹화 서비스(calls-offloader)를 선택적으로 추가할 수 있습니다.

통합 Calls에서 녹화 서비스를 사용할 때의 참조 아키텍처는 다음과 같습니다.

통합 Calls와 녹화를 사용하는 Calls 배포

구성 요소

  • Mattermost 서버: Calls 플러그인이 사전 설치되어 있습니다.
  • Calls Offloader: 녹화, 전사, 실시간 자막을 관리하는 작업 서비스입니다.

라이선스

  • Mattermost Enterprise 또는 Enterprise Advanced

RTCD 서버는 모든 통화 오디오와 화면 공유 미디어를 처리하는 전용 미디어 서비스로 추가됩니다.

RTCD를 사용하는 Calls 배포

Mattermost 서버는 시그널링(통화 설정, 관리, 종료)과 채널 상태(참여 및 퇴장 여부, 음소거 여부, 전체 통화 상태)를 계속 담당하지만, 통화 미디어 자체는 Mattermost 서버를 완전히 거치지 않고 클라이언트와 RTCD 서버 사이에서 직접 전달됩니다.

사용하기 적합한 경우

Mattermost Calls에 최적화된 성능, 확장성, 최상의 사용자 경험이 필요하다면 RTCD를 사용하세요. 구체적으로 다음과 같은 경우입니다.

  • 전반적인 서버 성능을 높이고 CPU 사용량 급증을 줄이기 위해 통화 미디어 트래픽을 메인 Mattermost 서버에서 분리하려고 합니다.
  • 통화량이 늘어나도 배포를 쉽게 확장해야 합니다. 로드 밸런싱을 위해 RTCD 서버를 추가할 수 있습니다.
  • Calls에서 가능한 한 가장 낮은 미디어 지연 시간과 가장 높은 안정성을 원합니다.
  • RTCD가 필수인 Kubernetes에 Mattermost를 배포합니다.

구성 요소

  • Mattermost 서버: Calls 플러그인이 사전 설치되어 있습니다.
  • RTCD 서버: 전용 미디어 서비스입니다. 클라이언트는 미디어 트래픽을 위해 이 서버에 직접 연결합니다.

라이선스

  • Mattermost Enterprise 또는 Enterprise Advanced

녹화#

녹화, 전사, 실시간 자막을 활성화해야 한다면 RTCD Calls 배포에 녹화 서비스(calls-offloader)를 선택적으로 추가할 수 있습니다.

RTCD에서 녹화 서비스를 사용할 때의 참조 아키텍처는 다음과 같습니다.

RTCD와 녹화를 사용하는 Calls 배포

구성 요소

  • Mattermost 서버: Calls 플러그인이 사전 설치되어 있습니다.
  • RTCD 서버: 전용 미디어 서비스입니다. 클라이언트는 미디어 트래픽을 위해 이 서버에 직접 연결합니다.
  • Calls Offloader: 녹화, 전사, 실시간 자막을 관리하는 작업 서비스입니다.

라이선스

  • Mattermost Enterprise 또는 Enterprise Advanced
Note

녹화가 필요한 대부분의 프로덕션 배포에서는 통화 미디어를 Mattermost 서버에서 분리하고 더 예측 가능하게 확장할 수 있으므로 RTCD와 calls-offloader 조합을 권장합니다.

1.3 네트워킹 결정#

1.3.1 공용 IP 검색을 위한 STUN#

STUN은 미디어 서버가 자신의 공용 IP 주소를 자동으로 검색하여 원격 클라이언트가 Calls에 접속할 수 있도록 돕는 프로토콜입니다.

Mattermost는 기본 STUN 서버(stun.global.calls.mattermost.com)를 제공합니다. 이 서비스를 통해서는 통화 미디어나 시그널링 트래픽이 전송되지 않으며 STUN 조회에만 사용됩니다. 다음 의사 결정 트리를 사용하여 공용 IP 검색을 위해 미디어 서버에서 Mattermost 글로벌 STUN 서비스로 나가는 아웃바운드 액세스를 허용해야 하는지 판단하세요.

Note

미디어 서버는 통합 Calls 배포에서는 Mattermost 서버이고, RTCD Calls 배포에서는 RTCD 서버입니다.

STUN 의사 결정 트리

  1. 모든 사용자와 미디어 서버가 외부 클라이언트 없이 같은 사설 네트워크, VPN 또는 에어갭 환경에 있습니까?

    • 예: 공용 IP 검색에 STUN이 필요하지 않습니다. 2단계의 구성에서 미디어 서버의 사설 주소를 사용합니다.
    • 아니요: 다음 질문으로 넘어갑니다.
  2. 미디어 서버에 공용 인터넷의 클라이언트가 접속할 수 있는 고정 공용 IP 주소 또는 DNS 이름이 있습니까?

    • 예: 공용 IP 검색에 STUN이 필요하지 않습니다. 2단계의 구성에서 미디어 서버의 고정 공용 주소를 사용합니다.
    • 아니요: STUN이 필요합니다. 미디어 서버에서 stun.global.calls.mattermost.com으로 나가는 아웃바운드 UDP 3478을 열어야 합니다.

배포에 공용 IP 검색을 위한 STUN이 필요하다면, 1.5단계에서 포트를 열 때 포함할 수 있도록 지금 기록해 두세요.

1.3.2 TURN 서버#

TURN은 클라이언트가 Calls 미디어 서비스에 직접 접속할 수 없을 때만 사용하는 릴레이 서비스입니다. STUN이 클라이언트가 접속할 위치를 찾도록 돕는다면, TURN은 직접 연결이 불가능할 때 대체 경로 역할을 합니다.

다음 두 조건이 모두 참이면 TURN 서버를 프로비저닝해야 합니다.

  • 클라이언트가 미디어 트래픽용 포트 8443에서 UDP(권장)로 RTCD 서버 또는 Calls 플러그인에 직접 접속할 수 없는 네트워크에 있습니다.
  • 클라이언트가 미디어 트래픽용 포트 8443에서 TCP(대체)로 RTCD 서버 또는 Calls 플러그인에 직접 접속할 수 없는 네트워크에 있습니다.

TURN은 지연 시간과 인프라 복잡성을 높이므로 일반적으로 최후의 수단입니다. 답변 결과 미디어에 UDP나 TCP를 사용할 수 없고 사용자에게 대체 경로가 필요한 경우에만 TURN 배포를 계획하세요.

Important

TURN은 대체 서비스이며 기본 요구 사항이 아닙니다. 클라이언트가 UDP 또는 TCP 8443으로 미디어 서비스에 안정적으로 접속할 수 있다면 TURN을 배포하지 마세요. TURN을 배포하는 경우 실제로 사용하는 TURN 수신 포트와 전송 방식만 열고, 조직의 네트워크 정책에 따라 클라이언트 액세스 범위를 제한하세요.

1.4 인프라 프로비저닝#

이제 Calls 배포를 지원하는 데 필요한 서버 또는 VM을 프로비저닝합니다. 여기서는 인프라만 준비하며, 소프트웨어 설치와 서비스 구성은 이후 단계에서 진행합니다. 다음 단계에서 네트워킹 구성을 마무리하려면 이러한 서버의 IP 주소 또는 DNS 이름이 필요하므로 이 단계가 중요합니다.

필요한 인프라는 1.2단계에서 선택한 배포 인프라에 따라 달라집니다. 하드웨어를 추가로 프로비저닝하는 경우 1.5단계에서 사용하므로 IP 주소 또는 DNS 이름을 지금 기록해 두세요.

통합

Mattermost 서버가 모든 미디어 처리를 담당하므로 이 단계를 건너뛰고 1.5단계의 네트워크 구성으로 넘어가도 됩니다.

RTCD

RTCD용 새 서버를 프로비저닝해야 합니다. 하드웨어 사이징 벤치마크 예시는 성능 기준을 참조하세요. RTCD 서비스는 수평 확장을 지원하지만, 서버 한 대로 시작하고 예상 워크로드에 필요하다면 확장하는 것을 권장합니다.

녹화

calls-offloader 서비스용 새 서버를 프로비저닝해야 합니다. 권장 시작 사양은 8 vCPU / 16 GB RAM이며, 녹화 용량과 전사 부하를 추정하려면 이 성능 벤치마크를 사용할 수 있습니다.

TURN 서버

1.3.2단계에서 사용자가 UDP 또는 TCP 8443으로 미디어 서버에 안정적으로 접속할 수 없다고 판단했다면 지금 TURN 서버를 프로비저닝해야 합니다.

Mattermost는 coturn 설치를 권장합니다.

1.5단계로 넘어가기 전에 다음 사항을 확인하세요.

  • 필요한 모든 서버 또는 VM이 생성되었습니다.
  • 필요한 모든 서버에 이후 구성에서 사용할 IP 주소 또는 DNS 이름이 있습니다.
  • 필요한 모든 서버에 대한 관리 액세스 권한이 있습니다. (ssh <user>@로 검증)

1.5 네트워크 구성#

이 섹션에서는 Calls 배포에 사용하는 각 서버에서 열어야 하는 네트워크 포트를 나열합니다. 이러한 규칙을 구성하려면 서버 인스턴스가 먼저 존재해야 하므로 1.4단계의 프로비저닝이 먼저 진행됩니다.

포트를 여는 방법은 환경에 따라 다릅니다.

  • 클라우드 배포(AWS, Azure, GCP): 클라우드 콘솔의 보안 그룹 또는 네트워크 ACL에서 각 인스턴스의 인바운드 및 아웃바운드 규칙을 구성합니다.
  • 온프레미스 또는 자체 관리 VM: 각 서버에서 firewalld(RHEL, Rocky Linux, AlmaLinux) 또는 ufw(Ubuntu/Debian) 명령을 직접 사용합니다.
  • 중앙에서 관리하는 방화벽: 네트워크 팀이 방화벽을 관리한다면 아래 표를 공유하고 진행하기 전에 규칙을 요청하세요.

누락된 항목이 없는지 확인한 후 넘어갈 수 있도록 서버를 한 번에 하나씩 작업하세요.

선택한 배포 아키텍처(통합 또는 RTCD)에 해당하는 포트만 여세요.

Mattermost 서버 포트#
포트 프로토콜 방향 소스 대상 참고
443 TCP 인바운드 Mattermost 클라이언트 Mattermost 서버 HTTPS 및 WebSocket 시그널링입니다.
8443 UDP 인바운드 Mattermost 클라이언트 Mattermost 서버 미디어 트래픽입니다(통합 모드).
8443 TCP 인바운드 Mattermost 클라이언트 Mattermost 서버 미디어 트래픽 대체 경로입니다(통합 모드).
3478 UDP 아웃바운드 Mattermost 서버 stun.global.calls.mattermost.com (선택 사항 - 1.3.1단계) STUN을 사용한 공용 IP 검색입니다.
Important

Mattermost 앞단에서 NGINX를 리버스 프록시로 사용하는 경우 UDP 트래픽을 전달하는 데 사용해서는 안 됩니다. 포트 8443은 NGINX가 아니라 미디어 서비스(RTCD 또는 통합)를 실행하는 서버에서 직접 열어야 합니다. Calls에서 NGINX가 처리해야 하는 포트는 443뿐입니다.

녹화 서버 포트#

1.4단계에서 calls-offloader 서버를 배포했다면 다음 포트를 여세요.

포트 프로토콜 방향 소스 대상 참고
4545 TCP 인바운드 Mattermost 서버 calls-offloader 서버 작업 서비스 API입니다(내부 전용. 이 규칙은 Mattermost 서버 또는 승인된 애플리케이션 서브넷으로만 제한하세요.)
8443 UDP 아웃바운드 calls-offloader 서버 Mattermost 서버 녹화 및 전사 작업이 통화 참가자로서 미디어 서비스에 연결합니다.
8443 TCP 아웃바운드 calls-offloader 서버 Mattermost 서버 미디어 트래픽 대체 경로입니다.
443 TCP 아웃바운드 calls-offloader 서버 Mattermost 서버 녹화 및 전사 작업이 결과를 Mattermost에 다시 게시합니다.
TURN 서버 포트#

1.4단계에서 TURN 서버를 배포했다면 실제로 구성하는 전송 방식에 필요한 포트만 여세요. coturn을 사용하는 경우 일반적인 기본값은 다음과 같습니다.

포트 프로토콜 방향 소스 대상 참고
3478 UDP / TCP 인바운드 Mattermost 클라이언트 TURN 서버 TURN 릴레이입니다.
5349 TCP 인바운드 Mattermost 클라이언트 TURN 서버 (선택 사항) TLS를 통한 TURN을 구성하는 경우입니다. 명시적으로 사용하지 않는다면 이 포트를 열지 마세요.
49152-65535 UDP 인바운드 Mattermost 클라이언트 TURN 서버 미디어를 릴레이하는 데 필요한 TURN 릴레이 포트 범위입니다.
Mattermost 서버 포트#
포트 프로토콜 방향 소스 대상 참고
443 TCP 인바운드 Mattermost 클라이언트 Mattermost 서버 HTTPS 및 WebSocket 시그널링입니다.
RTCD 서버 포트#
포트 프로토콜 방향 소스 대상 참고
8443 UDP 인바운드 Mattermost 클라이언트 및 calls-offloader 서버 RTCD 서버 미디어 트래픽입니다.
8443 TCP 인바운드 Mattermost 클라이언트 및 calls-offloader 서버 RTCD 서버 미디어 트래픽 대체 경로입니다.
8045 TCP 인바운드 Mattermost 서버 RTCD 서버 RTCD API입니다(내부 전용. 이 규칙은 Mattermost 서버 또는 승인된 애플리케이션 서브넷으로만 제한하세요.)
3478 UDP 아웃바운드 RTCD 서버 stun.global.calls.mattermost.com (선택 사항 - 1.3.1단계) STUN을 사용한 공용 IP 검색입니다.
Important

Mattermost 앞단에서 NGINX를 리버스 프록시로 사용하는 경우 UDP 트래픽을 전달하는 데 사용해서는 안 됩니다. 포트 8443은 NGINX가 아니라 미디어 서비스(RTCD 또는 통합)를 실행하는 서버에서 직접 열어야 합니다. Calls에서 NGINX가 처리해야 하는 포트는 443뿐입니다.

녹화 서버 포트#

1.4단계에서 calls-offloader 서버를 배포했다면 다음 포트를 여세요.

포트 프로토콜 방향 소스 대상 참고
4545 TCP 인바운드 Mattermost 서버 calls-offloader 서버 작업 서비스 API입니다(내부 전용. 이 규칙은 Mattermost 서버 또는 승인된 애플리케이션 서브넷으로만 제한하세요.)
8443 UDP 아웃바운드 calls-offloader 서버 RTCD 서버 녹화 및 전사 작업이 통화 참가자로서 미디어 서비스에 연결합니다.
8443 TCP 아웃바운드 calls-offloader 서버 RTCD 서버 미디어 트래픽 대체 경로입니다.
443 TCP 아웃바운드 calls-offloader 서버 Mattermost 서버 녹화 및 전사 작업이 결과를 Mattermost에 다시 게시합니다.
TURN 서버 포트#

1.4단계에서 TURN 서버를 배포했다면 다음 포트를 여세요. coturn을 사용하는 경우 일반적인 기본값은 다음과 같습니다.

포트 프로토콜 방향 소스 대상 참고
3478 UDP / TCP 인바운드 Mattermost 클라이언트 TURN 서버 TURN 릴레이입니다.
5349 TCP 인바운드 Mattermost 클라이언트 TURN 서버 (선택 사항) TLS를 통한 TURN을 구성하는 경우입니다. 명시적으로 사용하지 않는다면 이 포트를 열지 마세요.
49152-65535 UDP 인바운드 Mattermost 클라이언트 TURN 서버 미디어를 릴레이하는 데 필요한 TURN 릴레이 포트 범위입니다.

1.6 네트워킹 검사#

이 검사는 방화벽 규칙과 네트워크 도달 가능 여부를 확인합니다. 프로덕션 Calls, RTCD, calls-offloader 서비스가 아직 설치되지 않아도 수행할 수 있습니다. 해당 서비스가 없는 상태에서 신뢰할 수 있는 결과를 얻으려면 아래의 각 스캔을 실행하기 전에 대상 호스트에서 임시 리스너를 시작하세요. 차단된 포트와 허용되었지만 사용되지 않는 포트가 그렇지 않으면 동일하게 보일 수 있으므로, 특히 UDP 검사에서 중요합니다.

먼저 검사를 실행할 각 소스 머신 또는 클라이언트에 nmap을 설치하고, 임시 리스너를 시작할 각 대상 호스트에 ncat을 설치하세요. 예를 들면 다음과 같습니다.

  • Ubuntu 또는 Debian: sudo apt install nmap ncat
  • RHEL, Rocky Linux 또는 AlmaLinux: sudo dnf install nmap nmap-ncat

아래의 각 검사를 실행하면 nmap이 open, closed, filtered 중 하나를 반환합니다.

통과:

  • open: 포트에 도달할 수 있으며, 대상 호스트가 해당 포트에서 임시 리스너를 바인딩할 수 있었습니다.

실패:

  • closed: 트래픽이 대상 호스트에 도달했지만 해당 포트에서 수신 대기 중인 프로세스가 없습니다. 임시 리스너가 계속 실행 중인지, 포트가 올바른지, 다른 프로세스가 해당 포트를 이미 사용하고 있지 않은지 확인하세요.
  • filtered: 방화벽이 포트를 차단하고 있습니다. 계속하기 전에 1.5단계의 네트워킹 구성을 다시 검토하세요.
Note

아래 명령어에서 TARGET_IP를 테스트하는 서버의 실제 IP 주소로 바꾸세요. 먼저 대상 호스트에서 서버 측 ncat 리스너를 시작한 다음, 소스 머신에서 클라이언트 측 nmap 명령어를 실행하세요. 검사가 끝나면 Ctrl+C로 임시 리스너를 중지하세요.

통합 배포

Mattermost 서버에서 임시 리스너를 시작한 다음, 사용자와 같은 네트워크에 있는 아무 클라이언트 머신에서 nmap을 실행하세요.

검사 명령어 TARGET_IP 설명
1.6.1 Mattermost 서버: sudo ncat -u -l -k -p 8443 -c '/bin/cat'
클라이언트: sudo nmap -sU -p 8443 TARGET_IP
Mattermost 서버 IP 클라이언트가 Mattermost 서버로 UDP 미디어를 보낼 수 있습니다
1.6.2 Mattermost 서버: sudo ncat -l -k -p 8443
클라이언트: nmap -p 8443 TARGET_IP
Mattermost 서버 IP 클라이언트가 TCP 미디어 대체 연결을 위해 Mattermost 서버에 접속할 수 있습니다

RTCD 배포

RTCD 서버에서 임시 리스너를 시작한 다음, 사용자와 같은 네트워크에 있는 아무 클라이언트 머신에서 nmap을 실행하세요.

검사 명령어 TARGET_IP 설명
1.6.3 RTCD 서버: sudo ncat -u -l -k -p 8443 -c '/bin/cat'
클라이언트: sudo nmap -sU -p 8443 TARGET_IP
RTCD 서버 IP 클라이언트가 RTCD 서버로 UDP 미디어를 보낼 수 있습니다
1.6.4 RTCD 서버: sudo ncat -l -k -p 8443
클라이언트: nmap -p 8443 TARGET_IP
RTCD 서버 IP 클라이언트가 TCP 미디어 대체 연결을 위해 RTCD 서버에 접속할 수 있습니다

RTCD 서버에서 임시 리스너를 시작한 다음, Mattermost 서버에서 nmap을 실행하세요.

검사 명령어 TARGET_IP 설명
1.6.5 RTCD 서버: sudo ncat -l -k -p 8045
Mattermost 서버: nmap -p 8045 TARGET_IP
RTCD 서버 IP Mattermost가 RTCD API에 접속할 수 있습니다

녹화 배포

녹화 서버(calls-offloader)에서 임시 리스너를 시작한 다음, Mattermost 서버에서 nmap을 실행하세요.

검사 명령어 TARGET_IP 설명
1.6.6 녹화 서버: sudo ncat -l -k -p 4545
Mattermost 서버: nmap -p 4545 TARGET_IP
calls-offloader 서버 IP Mattermost가 calls-offloader API에 접속할 수 있습니다

미디어 서버(RTCD 또는 통합 모드를 사용하는 경우 Mattermost 서버)에서 임시 리스너를 시작한 다음, 녹화 서버(calls-offloader)에서 nmap을 실행하세요.

검사 명령어 TARGET_IP 설명
1.6.7 RTCD 또는 Mattermost 서버: sudo ncat -u -l -k -p 8443 -c '/bin/cat'
녹화 서버: sudo nmap -sU -p 8443 TARGET_IP
RTCD 서버 IP(통합 모드를 사용하는 경우 Mattermost 서버 IP) Calls Offloader가 녹화를 위해 통화에 참여하고자 미디어 서비스로 UDP 미디어를 보낼 수 있습니다
1.6.8 RTCD 또는 Mattermost 서버: sudo ncat -l -k -p 8443
녹화 서버: nmap -p 8443 TARGET_IP
RTCD 서버 IP(통합 모드를 사용하는 경우 Mattermost 서버 IP) Calls Offloader가 TCP 미디어 대체 연결을 위해 미디어 서비스에 접속할 수 있습니다

다음 검사에서는 임시 ncat 리스너를 시작하는 대신, 실행 중인 Mattermost 서버의 기존 HTTPS 리스너를 사용하세요.

검사 명령어 TARGET_IP 설명
1.6.9 녹화 서버: nmap -p 443 TARGET_IP Mattermost 서버 IP Calls Offloader가 녹화 파일을 Mattermost로 다시 게시할 수 있습니다

TURN 배포

TURN 서버에서 임시 리스너를 시작한 다음, 사용자와 같은 네트워크에 있는 아무 클라이언트 머신에서 nmap을 실행하세요.

검사 명령어 TARGET_IP 설명
1.6.10 TURN 서버: sudo ncat -u -l -k -p 3478 -c '/bin/cat'
클라이언트: sudo nmap -sU -p 3478 TARGET_IP
TURN 서버 IP 클라이언트가 UDP 3478에서 TURN 서버에 접속할 수 있습니다
1.6.11 TURN 서버: sudo ncat -l -k -p 3478
클라이언트: nmap -p 3478 TARGET_IP
TURN 서버 IP 클라이언트가 TCP 3478에서 TURN 서버에 접속할 수 있습니다
1.6.12 TURN 서버: sudo ncat -u -l -k -p 49152 -c '/bin/cat'
클라이언트: sudo nmap -sU -p 49152 TARGET_IP
TURN 서버 IP TURN 릴레이 포트 범위의 표본 점검입니다

1.7 검증 검사#

2단계로 넘어가기 전에 다음 항목을 모두 확인하세요.

  • 배포 아키텍처를 선택하고 필요한 서버를 프로비저닝했습니다.
  • Mattermost 라이선스가 배포하려는 아키텍처와 기능을 지원하는지 확인했습니다.
  • 선택한 아키텍처에 필요한 모든 방화벽 규칙과 네트워크 경로를 열었습니다.
  • 1.6단계의 관련 네트워크 검사가 모두 예상한 결과(open이며 closed 또는 filtered가 아님)를 반환했습니다.
  • STUN이 필요한 경우, stun.global.calls.mattermost.com으로 향하는 아웃바운드 UDP 3478이 허용되어 있습니다.
Important

배포 아키텍처와 관련된 이 섹션의 모든 검사가 통과하기 전에는 2단계로 넘어가지 마세요. 검사가 하나라도 실패하면 부록 A: 문제 해결로 이동하세요.


2단계: Calls 설치 및 구성#

이제 배포 아키텍처에 맞는 경로에 따라 Calls를 구성합니다. 같은 배포에 두 경로를 모두 완료하지 마세요.

  • 통합 Calls 배포 모델을 사용하는 경우 경로 A를 따르세요.
  • RTCD Calls 배포 모델을 사용하는 경우 경로 B를 따르세요.

아래 탭에서 경로를 선택하여 해당하는 설치 및 구성 안내를 따르세요.

경로 A: 통합 Calls 구성#

2A.1 사전 요구 사항#

  • 1단계 검증 검사를 통과했습니다
  • 통합이 1.2단계에서 선택한 기본 아키텍처입니다
  • Mattermost 서버에 테스트 계정 2개가 있습니다
  • Mattermost 서버에 대한 시스템 관리자 권한이 있습니다

2A.2 Calls 플러그인 구성#

Calls 플러그인은 Mattermost 셀프 호스팅 배포에 사전 패키징되어 있습니다. System Console > Plugins > Calls > Settings로 이동하여 다음 단계를 완료하세요.

2A.2.1: 플러그인 활성화

플러그인 활성화를 true로 설정하세요. 그러면 페이지의 나머지 구성 설정을 편집할 수 있습니다.

2A.2.2: 테스트 모드 활성화

초기 검증 중에 Calls가 제한된 상태로 유지되도록 테스트 모드를 on으로 설정하세요. 이 모드에서는 시스템 관리자가 Calls를 사용할 수 있는 위치를 제어하며, 테스트를 위해 특정 채널에서 Calls를 활성화할 수 있습니다.

2A.2.3: 호스트 미디어 주소 구성

ICE 호스트 재정의를 클라이언트가 미디어 서비스에 접속할 때 사용할 IP 주소 또는 DNS 이름으로 설정하세요. ICE(Interactive Connectivity Establishment)는 사용자의 디바이스가 미디어 서버로 가는 경로를 찾는 데 사용하는 프로토콜입니다. ICE 호스트 재정의는 Calls가 사용자에게 알려 줄 주소를 지정합니다. 이 값은 1.3.1단계의 STUN 결정 트리를 기준으로 설정하세요.

  • 사용자가 프라이빗 네트워크, VPN 또는 에어 갭 환경에 있는 경우, 사용자가 접속할 수 있는 Mattermost 서버의 프라이빗 주소로 설정하세요.
  • Mattermost 서버에 고정 공인 IP가 있는 경우, 해당 IP로 설정하세요.
  • 그렇지 않으면 STUN을 사용한 공인 주소 자동 검색을 위해 비워 두세요.

2A.2.4: TURN 서버 구성

TURN을 사용하는 경우, ICE 서버 구성 배열을 TURN 서버 정보로 바꾸거나 확장하세요.

[
  {
    "urls": ["turn:turn.example.com:3478"],
    "username": "",
    "credential": ""
  }
]

TURN 배포에서 단기 생성 자격 증명을 사용하는 경우, TURN 정적 인증 시크릿과 TURN 자격 증명 만료도 설정하세요.

2A.2.5: 구성 저장

Calls 설정 페이지에서 저장을 클릭하세요. 미디어 서버 설정을 변경한 후에는 플러그인을 다시 시작하는 것도 권장합니다.

  1. System Console > Plugins > Plugin Management로 이동합니다.
  2. Calls를 비활성화하고 몇 초간 기다립니다.
  3. Calls를 다시 활성화합니다.

2A.3 검증 검사#

이제 테스트 계정으로 Calls 배포를 스모크 테스트하세요.

  • calls-test 같은 테스트 채널을 만듭니다.
  • 채널 메뉴를 열고 통화 활성화를 선택합니다.
  • 실제 통화를 검증할 수 있도록 테스트 사용자를 채널에 초대합니다.
검사 작업 통과 기준
2A.3.1 두 번째 사용자와 함께 테스트 채널에서 통화를 시작합니다 두 사용자가 모두 통화에 참여합니다
2A.3.2 통화 중에 말합니다 두 사용자가 서로의 목소리를 또렷하게 들을 수 있습니다
2A.3.3 데스크톱 앱 또는 지원되는 브라우저에서 화면을 공유합니다 다른 사용자에게 화면 공유가 표시됩니다
2A.3.4 통화를 종료합니다 채널에서 통화 표시기가 사라집니다
Important

모든 검사가 통과하기 전에는 계속 진행하지 마세요. 검사가 하나라도 실패하면 부록 A: 문제 해결로 이동하세요.

경로 B: RTCD 설치 및 구성#

2B.1 사전 요구 사항#

  • 1단계 검증 검사를 통과했습니다
  • RTCD가 1.2단계에서 선택한 기본 아키텍처입니다
  • RTCD 서버가 프로비저닝되었고(1.4) RTCD 네트워킹 검사를 통과했습니다(1.6.3-1.6.5)
  • 서버에서 Mattermost Enterprise 또는 Enterprise Advanced 라이선스가 활성화되어 있습니다
  • Mattermost 서버에 테스트 계정 2개가 있습니다
  • Mattermost 서버에 대한 시스템 관리자 권한이 있습니다

2B.2 RTCD 설치#

실제 설치는 RTCD 설정 및 구성 가이드를 따르세요. 이 가이드에서 다루는 내용은 다음과 같습니다.

  • 바이너리 설치
  • rtcd.toml 구성
  • 서비스 설정
  • TURN 구성(해당하는 경우)
Note

쿠버네티스에 배포하는 경우, 클러스터별 설치와 Helm 기반 구성을 위해 쿠버네티스에서의 Calls 배포 가이드도 함께 참고하세요.

계속하기 전에 Mattermost 서버에서 다음 검사를 실행하여 RTCD가 실행 중이고 접속할 수 있는지 확인하세요.

검사 명령어 통과 기준
2B.2.1 nmap -p 8045 YOUR_RTCD_SERVER open - RTCD가 실행 중이며 연결을 수락하고 있습니다.
2B.2.2 curl http://YOUR_RTCD_SERVER:8045/version JSON 버전 문자열을 반환합니다

2B.3 Mattermost를 RTCD에 연결#

RTCD를 설치, 구성하고 접속할 수 있게 되면 Calls 플러그인이 RTCD를 사용하도록 업데이트하세요.

  1. System Console > Plugins > Calls > Settings로 이동합니다.

  2. 플러그인 활성화를 true로 설정합니다. 그러면 페이지의 나머지 Calls 설정을 편집할 수 있습니다.

  3. 초기 검증 중에 Calls가 제한된 상태로 유지되도록 테스트 모드를 on으로 설정합니다. 이 모드에서는 시스템 관리자가 Calls를 사용할 수 있는 위치를 제어하며, 테스트를 위해 특정 채널에서 Calls를 활성화할 수 있습니다.

  4. RTCD 서비스 URL을 RTCD 주소로 설정합니다. RTCD 설정 중에 RTCD 자격 증명이 생성된 경우 URL에 직접 포함하세요.

    http://clientID:authKey@rtcd.internal:8045
    

    clientID와 authKey를 RTCD 설정 중에 생성된 값으로 바꾸세요. RTCD에 처음 연결하면 클라이언트가 자체 등록되고 인증 키가 데이터베이스에 저장됩니다.

    또는 Mattermost 서버의 환경 변수 MM_CALLS_RTCD_CLIENT_ID와 MM_CALLS_RTCD_AUTH_KEY로 자격 증명을 설정할 수도 있습니다.

  5. 저장을 클릭하고 변경 사항이 적용되도록 Calls 플러그인을 다시 시작합니다.

2B.4 Calls 모니터링 구성#

파일럿을 시작하기 전에 Calls 모니터링을 설정하여 실제 사용자가 테스트하는 동안 세션, 오류, CPU, 메모리를 확인할 수 있도록 하세요.

Calls 모니터링은 Prometheus(서버에서 메트릭을 수집하는 도구)와 Grafana(해당 메트릭을 시각화하는 대시보드)를 사용합니다. 아직 설정하지 않았다면 계속하기 전에 Mattermost 모니터링 설정을 참고하세요. 이미 Prometheus와 Grafana를 실행 중이라면 다음 스크레이프 대상을 추가하고 대시보드를 가져오세요.

  • RTCD 메트릭: http://YOUR_RTCD_SERVER:8045/metrics
  • Calls 플러그인 메트릭: http://YOUR_MATTERMOST_SERVER:8067/plugins/com.mattermost.calls/metrics
  • Grafana 대시보드: 대시보드 ID 23225를 가져옵니다

전체 구성 세부 정보는 Calls 메트릭 및 모니터링을 참고하세요.

2B.5 검증 검사#

이제 테스트 계정으로 RTCD 배포를 스모크 테스트하세요.

  • calls-test 같은 테스트 채널을 만듭니다.
  • 채널 메뉴를 열고 통화 활성화를 선택합니다.
  • 실제 통화를 검증할 수 있도록 테스트 사용자를 채널에 초대합니다.
검사 작업 통과 기준
2B.5.1 두 번째 사용자와 함께 테스트 채널에서 통화를 시작합니다 두 사용자가 모두 통화에 참여합니다
2B.5.2 통화 중에 말합니다 두 사용자가 서로의 목소리를 또렷하게 들을 수 있습니다
2B.5.3 데스크톱 앱 또는 지원되는 브라우저에서 화면을 공유합니다 다른 사용자에게 화면 공유가 표시됩니다
2B.5.4 통화를 종료합니다 채널에서 통화 표시기가 사라집니다

이 검사가 실패하면 먼저 다음 문제 해결 방법을 시도하세요.

  • 검사 2B.2.1과 2B.2.2를 다시 실행하여 RTCD가 수신 대기 중이고 응답하는지 확인합니다.
  • RTCD 서비스 URL이 올바른지, 그리고 RTCD 설정에서 필요한 경우 자격 증명이 포함되어 있는지 확인합니다.
  • Mattermost 서버가 포트 8045에서 RTCD에 접속할 수 있는지 확인하고, 다른 설정을 변경하기 전에 RTCD 로그를 검토합니다.
Important

모든 검사가 통과하기 전에는 계속 진행하지 마세요. 검사가 하나라도 실패하면 부록 A: 문제 해결로 이동하세요.


3단계: 녹화 설치 및 구성#

이제 통화 녹화, 전사, 실시간 자막을 처리하는 calls-offloader 작업 서비스를 설치하고 구성합니다.

녹화, 전사, 실시간 자막이 필요하지 않다면 이 단계를 건너뛸 수 있습니다.

3.1 사전 요구 사항#

  • calls-offloader 서버가 프로비저닝되었고(1.4) 관련 네트워킹 검사를 통과했습니다(1.6.6-1.6.9)
  • 통합 모드를 사용하는 경우: 2A단계 검증 검사를 통과했습니다(2A.3.1-2A.3.4).
  • RTCD를 사용하는 경우: 2B단계 검증 검사를 통과했습니다(2B.5.1-2B.5.4).
  • 서버에서 Mattermost Enterprise 또는 Enterprise Advanced 라이선스가 활성화되어 있습니다
  • Mattermost 서버에 대한 시스템 관리자 권한이 있습니다

3.2 calls-offloader 설치#

설치는 Calls Offloader 설정 및 구성 가이드를 따르세요. 이 가이드에서 다루는 내용은 다음과 같습니다.

  • 바이너리 설치
  • config.toml 구성
  • Systemd 서비스 설정
  • Docker 기반 작업
  • 프라이빗 네트워크 재정의
  • 에어 갭 설치

계속하기 전에 Mattermost 서버에서 다음 검사를 실행하여 calls-offloader가 실행 중이고 접속할 수 있는지 확인하세요.

검사 명령어 통과 기준
3.2.1 nmap -p 4545 YOUR_OFFLOADER_SERVER open - calls-offloader가 실행 중이며 연결을 수락하고 있습니다.
3.2.2 curl http://YOUR_OFFLOADER_SERVER:4545/version JSON 버전 문자열을 반환합니다

3.3 calls-offloader를 Mattermost에 연결#

  1. System Console > Plugins > Calls > Settings로 이동합니다.
  2. 작업 서비스 URL을 calls-offloader 주소로 설정합니다. 신뢰할 수 있는 내부 네트워크에서는 http://calls-offloader.internal:4545처럼 설정할 수 있습니다.
  3. 필요한 경우 통화 녹화를 활성화합니다.
  4. 필요한 경우 통화 전사를 활성화합니다. 전사를 사용하려면 녹화가 활성화되어 있어야 합니다.
  5. 필요한 경우 실시간 자막을 활성화합니다. 실시간 자막을 사용하려면 녹화와 전사가 모두 활성화되어 있어야 합니다.
  6. 저장을 클릭하고 변경 사항이 적용되도록 Calls 플러그인을 다시 시작합니다.

3.4 검증 검사#

이제 테스트 계정으로 녹화 관련 기능을 스모크 테스트하세요.

검사 작업 통과 기준
3.4.1 통화 호스트로서 녹화를 시작합니다 오류 없이 녹화가 시작됩니다.
3.4.2 통화를 종료하거나 녹화를 중지합니다 처리가 완료된 후 통화 스레드에 MP4 파일이 나타납니다.
3.4.3 전사를 활성화한 상태에서 녹화된 통화를 종료합니다 처리가 완료된 후 통화 스레드에 MP4 파일과 전사 파일이 나타납니다.
3.4.4 실시간 자막을 활성화한 상태에서 녹화된 통화를 시작합니다 참가자가 말한 후 1~3초 이내에 통화 중 자막이 나타납니다.

녹화 관련 검사가 실패하면 다시 시도하기 전에 문제를 분리하세요.

  • 3.4.1 또는 3.4.2 실패: 작업 서비스 URL이 올바른지, calls-offloader 서비스가 실행 중인지, Mattermost 서버가 포트 4545에 접속할 수 있는지 확인하세요.
  • 3.4.3 실패: 먼저 녹화가 활성화되어 있는지 확인한 다음, 전사가 활성화되어 있는지 확인하세요.
  • 3.4.4 실패: 실시간 자막을 테스트하기 전에 녹화와 전사가 모두 활성화되어 있는지 확인하세요.
Important

모든 검사가 통과하기 전에는 계속 진행하지 마세요. 검사가 하나라도 실패하면 부록 A: 문제 해결로 이동하세요.


4단계: 파일럿 롤아웃#

기술 구성이 완료되고 검증되었으므로, 전체 롤아웃에 앞서 실제 사용자와 함께 소규모 파일럿을 실행하세요. 목표는 조직에서 사용하는 클라이언트와 위치 전반에서 Calls가 안정적으로 작동하는지, 일반적인 사용량에서 서버가 정상 상태를 유지하는지 확인하는 것입니다.

4.1 사전 요구 사항#

  • 통합 모드를 사용하는 경우: 2A단계 검증 검사를 통과했습니다(2A.3.1-2A.3.4)
  • RTCD를 사용하는 경우: 2B단계 검증 검사를 통과했습니다(2B.5.1-2B.5.4)
  • 녹화를 사용하는 경우: 3단계 검증 검사를 통과했습니다(3.4.1-3.4.4)
  • 서로 다른 위치에 있는 자원봉사 파일럿 사용자 5~10명
  • Calls 인프라의 메트릭 대시보드와 로그에 대한 접근 권한
  • 파일럿 사용자가 최신 Mattermost 데스크톱 및 모바일 앱을 사용하고 있습니다

4.2 준비 및 커뮤니케이션#

파일럿을 성공적으로 진행하려면 파일럿 사용자가 무엇을 테스트해야 하는지, 통화를 어떻게 시작하는지, 문제를 어떻게 보고하는지 알고 있어야 합니다.

파일럿 사용자를 calls-test 채널에 초대한 후, 모든 사용자가 같은 항목을 테스트할 수 있도록 해당 채널에 짧은 메시지를 게시하세요. 아래에 템플릿이 있습니다.

파일럿 사용자 커뮤니케이션 템플릿
## Mattermost Calls pilot

Thank you for volunteering to test Mattermost Calls before a wider rollout. After 3-5 days of pilot testing, we will ask everyone to share their findings and experiences. Please keep track of any issues or feedback so you can summarize them when requested.

**How to start**

Calls is enabled in this channel for pilot testing. You can select **Start call** in the channel header to begin, or join an existing call if one is already started.

You can learn more about Mattermost Calls in the [documentation](https://docs.mattermost.com/end-user-guide/collaborate/make-calls.html).

**Test Cases**

| Test | Action | Pass criteria | Client Types |
|---|---|---|---|
| T1 | Group call with 3-5 participants | All participants can hear each other clearly | Web, Desktop, Mobile |
| T2 | Group call lasting 15 minutes or longer | No unexpected drops or audio degradation | Web, Desktop, Mobile |
| T3 | Participants join calls from outside the main office network | Call quality is acceptable from that network | Web, Desktop, Mobile |
| T4 | Participants share screen during a call | Screen sharing works and is visible to all participants | Desktop, Web |
| T5 | Record a group call, if recording is enabled | MP4 and transcription file appear in the call thread after processing completes | Web, Desktop, Mobile |
| T6 | Enable Live Captions during a group call, if captions are enabled | Captions appear during the call within 1-3 seconds after participants speak | Web, Desktop |

**Reporting Issues**

If you encounter an issue, please report it by posting in this channel and including:

- Test number
- Reproduction steps
- What you expected to happen
- What actually happened (with screenshots)
- Your client type (desktop, browser, or mobile)

4.3 검증 검사#

모니터링

검사 작업 통과 기준
4.3.1 파일럿 통화 중에 메트릭 대시보드를 확인합니다 활성 세션과 참가자가 표시되며 정확하게 집계됩니다
4.3.2 RTCD를 사용하는 경우, 파일럿 통화 후 RTCD 오류 메트릭(rtcd_rtc_errors_total)을 확인합니다 오류 수가 증가하지 않았습니다
4.3.3 RTCD를 사용하는 경우, 파일럿 통화 중에 CPU 및 메모리 메트릭(rtcd_process_cpu_seconds_total, rtcd_process_resident_memory_bytes)을 확인합니다 CPU 또는 메모리 급증이 관찰되지 않았습니다
4.3.4 Mattermost 로그를 검토하고, RTCD와 calls-offloader가 배포된 경우 해당 서비스의 로그도 검토합니다 반복되는 ERROR 줄이 없고, 예상치 못한 WARN 패턴이 없습니다

프로덕션 준비 상태

파일럿 사용자로부터 영업일 기준 3~5일 후에 피드백을 수집하고, 이를 사용해 프로덕션 준비 상태를 평가하세요.

검사 요구 사항
4.3.5 파일럿 사용자의 80% 이상이 음질을 허용 가능한 수준으로 평가했습니다
4.3.6 파일럿 테스트 케이스에서 진행을 막는 문제가 발견되지 않았습니다
4.3.7 모든 파일럿 사용자가 프로덕션 롤아웃 준비가 되었음을 확인했습니다

파일럿 사용자가 문제를 발견한 경우 아직 롤아웃을 확대하지 마세요.

  • 가능한 한 가장 작은 범위에서 문제를 해결합니다.
  • 영향을 받은 파일럿 테스트 케이스를 반복합니다.
  • 실패한 시나리오가 일관되게 통과할 때까지 파일럿 상태를 유지합니다.

테스트가 실패한 후에는 Mattermost 메시지 입력 영역에서 /call stats를 실행하여 추가 진단 단서를 얻을 수도 있습니다.

Important

관련된 모든 검사가 통과하기 전에는 프로덕션 롤아웃으로 진행하지 마세요. 검사가 하나라도 실패하면 부록 A: 문제 해결로 이동하세요.


5단계: 프로덕션 롤아웃#

이제 프로덕션의 모든 사용자를 대상으로 더 넓은 롤아웃을 실행합니다.

5.1 사전 요구 사항#

  • 4단계 프로덕션 준비 상태 검사를 통과했습니다(4.3.1-4.3.7)
  • 롤백 계획이 문서화되었으며 충분히 이해되었습니다
  • Mattermost 서버에 대한 시스템 관리자 권한이 있습니다
  • Calls 인프라의 메트릭 대시보드와 로그에 대한 접근 권한

5.2 롤백 계획#

단계별 프로덕션 롤아웃을 시작하기 전에 롤백 옵션을 숙지해야 합니다. 문제가 발생하면 문제를 해결할 수 있는 가장 작은 범위의 롤백을 선택하세요.

채널별 롤백

특정 채널에서 Calls를 비활성화합니다.

  1. 영향을 받은 채널로 이동합니다.
  2. 채널 메뉴를 선택한 다음 통화 비활성화를 선택합니다.

테스트 모드 롤백

시스템 관리자가 Calls를 활성화한 채널로 Calls를 제한합니다.

  1. System Console > Plugins > Calls > Settings로 이동합니다.
  2. 테스트 모드를 on으로 설정합니다.

전체 롤백

모든 사용자에 대해 Calls를 완전히 비활성화합니다.

  1. System Console > Plugins > Plugin Management로 이동합니다.
  2. Calls 플러그인을 비활성화합니다.

기존 화상 회의 도구가 있다면 Calls가 프로덕션에서 안정될 때까지 계속 사용할 수 있도록 유지하세요.

5.3 준비 및 커뮤니케이션#

사용자에게 Calls를 공지하기 전에 calls-support 공개 채널을 만드세요. 이렇게 하면 사용자가 문제를 보고할 명확한 장소가 생기고, 관리자가 롤아웃 문제를 한곳에서 추적할 수 있습니다.

전체 공지 채널이나 눈에 잘 띄는 비슷한 위치에 공유할 짧은 공지도 함께 준비하세요. 아래에 템플릿이 있습니다.

프로덕션 롤아웃 커뮤니케이션 템플릿
## Mattermost Calls rollout

We're enabling Mattermost Calls across this server. Starting today, you can start audio calls in select channels directly within Mattermost - no need to switch to a separate tool.

We're rolling out gradually, starting with a select set of channels before expanding to everyone.

**Calls features**

- Start or join 1:1 and group audio calls
- Share your screen from the desktop app or browser
- Record calls and generate transcripts, if enabled
- Use live captions during recorded calls, if enabled

You can learn more about Mattermost Calls in the [documentation](https://docs.mattermost.com/end-user-guide/collaborate/make-calls.html).

**How to start a call**

Select **Start call** in the channel header. Anyone in the channel can join.

**Things to know**

- We recommend updating your [desktop and mobile apps](https://mattermost.com/apps/) to the latest version
- Your browser or desktop app may ask for microphone permission the first time you join a call.
- Screen sharing may also require a screen capture permission prompt.

**Need help?**

Post in `~calls-support` and include what you were trying to do, what happened, and a screenshot if possible.

5.4 롤아웃 단계#

Calls를 모든 곳에서 한 번에 활성화하지 말고 단계적으로 활성화하는 것을 권장합니다. 이렇게 하면 실제 사용 현황을 지켜보고, 문제를 조기에 발견하며, 필요한 경우 깔끔하게 롤백할 수 있습니다.

단계 채널 / 부서 권장 일정 롤백 방식
1단계 IT 및 관리자 채널 1~3일 차 채널별 롤백
2단계 엔지니어링 또는 파워 유저 채널 4~7일 차 채널별 롤백
3단계 전체 조직 8일 차 이후 테스트 모드(문제가 일부에 한정된 경우) 또는 전체 롤백

롤아웃 단계에서 문제가 발생하면 롤아웃을 일시 중지하고, 해당 단계에 명시된 롤백 옵션을 사용하고, 문제를 해결한 다음, 다음 단계로 넘어가기 전에 같은 단계를 반복하세요.

5.5 모니터링 및 최적화#

Calls가 가동되면 처음 2주 동안 적극적으로 모니터링하고 관찰한 내용에 따라 조정하세요.

5.5.1: 통화 피크 시간대의 서버 상태 확인

피크 사용 시간대에는 미디어 서버(RTCD 또는 Mattermost 서버)의 CPU와 메모리를 매일 모니터링하세요. CPU 사용률이 지속적으로 70%를 초과하면 다음 롤아웃 단계 전에 하드웨어 사양을 높이거나 RTCD 노드를 추가하는 것을 고려하세요.

5.5.2: 로그 매일 검토

매일 Mattermost, RTCD, calls-offloader 로그에서 반복되는 ERROR 또는 WARN 줄이 있는지 확인하세요. 사용자에게 영향을 주는 문제로 번지기 전에 패턴을 해결하세요.

5.5.3: 최대 통화 참가자 수 조정

대규모 통화 중에 리소스 부족이 보이면 System Console > Plugins > Calls에서 최대 통화 참가자 수를 낮추세요. 기본적으로 참가자 제한은 없습니다(0으로 구성되며, 무제한을 의미합니다). 대부분의 배포에서 현실적인 상한선은 50입니다.

5.5.4: 사용자가 보고한 문제 추적

~calls-support에서 반복되는 불만 사항을 모니터링하세요.

일반적인 문제와 해결 방법은 부록 A: 문제 해결에서 확인하세요.


부록 A: 문제 해결#

A.1 통화 버튼이 보이지 않습니다#

원인 해결 방법
Calls 플러그인이 비활성화되어 있습니다 System Console > Plugins > Plugin Management로 이동하여 Calls를 활성화합니다
배포가 테스트 모드입니다 System Console > Plugins > Calls > Settings로 이동하여 배포 상태를 확인합니다 - 테스트 모드에서는 시스템 관리자가 특정 채널에서 Calls를 활성화해야 합니다
해당 채널에서 Calls가 활성화되어 있지 않습니다 테스트 모드가 활성화된 경우 채널 메뉴를 열고 통화 활성화를 선택합니다
사용자가 오래된 클라이언트를 사용하고 있습니다 사용자에게 최신 Mattermost 데스크톱 또는 모바일 앱으로 업데이트하도록 안내합니다

A.2 통화는 시작되지만 오디오가 작동하지 않습니다#

원인 해결 방법
UDP 8443이 차단되어 있습니다 1단계의 UDP 연결 검사(검사 1.6.1 또는 1.6.3)를 반복하고 방화벽 규칙이 적용되었는지 확인합니다
TCP 8443도 차단되어 있어 대체 연결이 실패하고 있습니다 TCP 검사(1.6.2 또는 1.6.4)를 반복합니다 - 클라이언트에는 미디어 서비스로 가는 경로가 최소 하나 필요합니다
잘못된 미디어 주소가 알려지고 있습니다 2A단계(통합)의 ICE Host Override 또는 2B단계(RTCD)의 rtcd.toml에 있는 ice_host_override를 다시 확인합니다 - 해당 주소는 클라이언트가 접속할 수 있어야 합니다
브라우저 또는 데스크톱 마이크 권한이 거부되었습니다 사용자에게 브라우저 또는 OS의 마이크 권한을 확인하고 앱을 다시 불러오도록 안내합니다

A.3 원격 사용자가 네트워크 외부에서 참여할 수 없습니다#

원인 해결 방법
외부 방화벽 규칙이 UDP 8443을 차단하고 있습니다 미디어 서버의 UDP 8443에 외부에서 접속할 수 있는지 확인합니다 - 클라우드 보안 그룹과 온프레미스 방화벽 모두 인터넷에서 들어오는 인바운드 트래픽을 허용해야 합니다
알려지는 미디어 주소가 프라이빗 IP입니다 ICE Host Override(통합) 또는 rtcd.toml의 ice_host_override를 올바른 공인 IP로 설정하거나 STUN(1.3.1)을 사용합니다
클라이언트 네트워크가 직접 UDP 또는 TCP 연결을 허용하지 않을 만큼 제한적입니다 TURN 서버를 배포하고 ICE 서버 구성에 추가합니다

A.4 녹화, 전사 또는 자막이 실패합니다#

원인 해결 방법
calls-offloader가 실행 중이지 않습니다 Mattermost 서버에서 nmap -p 4545 YOUR_OFFLOADER_SERVER를 실행합니다 - 결과가 closed이면 서비스가 실행 중이지 않은 것이므로 systemd 서비스 로그를 확인합니다
Mattermost가 작업 서비스 URL에 접속할 수 없습니다 Mattermost 서버에서 curl http://YOUR_OFFLOADER_SERVER:4545/version을 실행하여 버전 문자열을 반환하는지 확인합니다
offloader 서비스 계정이 Docker를 사용할 수 없습니다 calls-offloader 서버에서 서비스 계정이 docker 그룹에 속해 있는지 확인합니다

Mattermost Calls 배포 가이드

Mattermost v12.0
원문 보기

요약

이 가이드는 시스템 관리자가 Mattermost Calls를 배포하는 과정을 준비 및 네트워크 점검부터 파일럿 테스트와 프로덕션 롤아웃까지 단계별로 안내합니다. Mattermost Calls에 대한 사전 경험은 필요하지 않습니다.

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

이 가이드는 시스템 관리자가 Mattermost Calls를 배포하는 과정을 준비 및 네트워크 점검부터 파일럿 테스트와 프로덕션 롤아웃까지 단계별로 안내합니다. 명확한 의사 결정 지점, 검증 확인 항목, 문제 해결 팁을 제공하므로 다음 단계로 넘어가기 전에 각 배포 단계가 정상적으로 동작하는지 확인할 수 있습니다.

Mattermost Calls에 대한 사전 경험은 필요하지 않습니다. 이 가이드는 처음 시작한다고 가정하며, 필수 개념과 모범 사례를 함께 소개합니다.

Calls 개요#

Mattermost Calls는 셀프 호스팅 음성 통화와 화면 공유를 제공하여 인프라 내부에서 완전히 독립적인 실시간 협업을 가능하게 합니다. 즉, 통화 미디어나 메타데이터가 서드파티 시스템을 거치지 않습니다.

Calls는 데이터 주권, 통제, 컴플라이언스를 타협할 수 없는 국방, 정보, 보안, 핵심 인프라 분야의 미션 크리티컬 운영에 특히 적합합니다. 인터넷에 접속할 수 없는 격리된 네트워크에서도 동작하도록 설계되어, 완전한 에어갭 컴플라이언스가 요구되는 배포를 지원합니다.

제공 기능은 다음과 같습니다.

  • 1:1 및 그룹 통화: 둘 이상의 참가자 간에 실시간 음성 통신을 시작합니다.
  • 화면 공유: 통화 중에 화면을 공유하여 작업을 시각적으로 협업하고, 문서를 검토하고, 실시간 문제를 해결합니다.
  • 통화 녹화 및 전사: 비동기 검토를 위해 음성 세션을 녹화합니다. (Enterprise, Enterprise Advanced)
  • 실시간 자막: 접근성을 위해 실시간 자막을 생성합니다. (Enterprise, Enterprise Advanced)

배포 개요#

이 가이드는 번호가 매겨진 단계로 구성된 순차적 배포 단계로 이루어져 있습니다. 각 단계는 사전 요구 사항으로 시작해서 검증 확인으로 끝납니다. 어떤 단계든 시작하기 전에 나열된 사전 요구 사항이 충족되었는지 확인하고, 검증 확인을 통과한 후에 다음 단계로 이동하세요. 이러한 구조는 문제를 가장 쉽게 분리할 수 있는 초기에 발견하고 해결하는 데 도움이 됩니다.

배포 단계:

  1. 준비 및 네트워킹

    배포 아키텍처를 선택하고, 네트워킹 관련 결정을 내리고, 필요한 서버를 프로비저닝하고, 배포 전에 필요한 네트워크 포트와 경로가 열려 있는지 확인합니다.

  2. Calls 설치 및 구성

    1단계에서 선택한 배포 아키텍처에 맞춰 설치와 구성을 완료합니다. 경로는 하나만 따르면 됩니다.

    • 경로 A: 통합 Calls 구성

      소규모 환경에서 더 간단하게 배포할 수 있도록 Mattermost 서버에 내장된 Calls 서비스를 사용합니다.

    • 경로 B: RTCD 설치 및 구성 (선택 사항)

      대규모 프로덕션 배포에는 RTCD(Real-Time Communication Daemon) 서비스를 사용합니다. RTCD는 Mattermost 서버의 미디어 처리 작업을 분담하여 성능과 확장성을 최적화합니다.

  3. 녹화 설치 및 구성 (선택 사항)

    Calls Offloader는 녹화, 전사, 실시간 자막을 제공하는 데 필요한 서비스입니다.

  4. 파일럿 롤아웃

    소규모 파일럿 사용자 그룹으로 테스트를 확대하여 실제 사용 환경에서 클라이언트, 네트워크, 환경별 문제가 발생하는지 확인합니다.

  5. 프로덕션 롤아웃

    적절한 공지와 모니터링을 갖추고 전체 사용자에게 단계적으로 롤아웃하며, 필요하면 중단하거나 롤백할 수 있도록 대비합니다.

배포 사전 요구 사항#

이 체크리스트를 사용하여 Calls 배포를 시작하기 전에 필요한 인프라, 기술, 액세스 권한을 갖추었는지 확인하세요. 이러한 사전 요구 사항을 지금 완료하면 배포 과정 후반에 누락된 의존성 때문에 발생하는 지연을 예방할 수 있습니다.

배포 인프라 요구 사항#

  • Mattermost v10.0 이상을 실행하는 Mattermost 서버가 있습니다.

    Mattermost 에디션과 버전을 확인하려면 시스템 정보 보기를 참조하세요.

  • Mattermost 서버가 HTTPS를 사용하도록 구성되어 있습니다.

    HTTPS를 설정해야 한다면 TLS 구성을 참조하세요.

  • 현재 Mattermost 배포의 활성 사용자 수를 알고 있습니다.

    사용량 지표를 확인하려면 사이트 통계를 참조하세요.

  • RTCD 서비스를 사용할 계획이라면 전용 Linux 서버 또는 VM을 하나 이상 프로비저닝할 수 있습니다.

    RTCD가 필요한지 확실하지 않다면 인프라 결정(1.2단계)을 참조하세요.

  • 녹화, 전사 또는 실시간 자막이 필요하다면 calls-offloader 서비스용 전용 Linux 서버 또는 VM을 프로비저닝할 수 있습니다.

  • 사용자가 UDP 또는 TCP 8443에서 미디어 서비스에 안정적으로 접속할 수 없는 경우 TURN 서버를 배포할 준비가 되어 있습니다.

    TURN 서버가 필요한지 확실하지 않다면 네트워킹 결정(1.3단계)을 참조하세요.

  • 필요한 기능에 맞는 Mattermost 에디션 및 라이선스를 보유하고 있습니다.

    • Mattermost Entry 또는 Team Edition: 1:1 통화 및 화면 공유(최대 40분)
    • Mattermost Professional: 그룹 통화 및 화면 공유(시간 제한 없음)
    • Mattermost Enterprise 또는 Enterprise Advanced: 다음 항목에 필요합니다.
      • 대규모(50명 이상 사용자) 및 프로덕션 안정성을 위한 RTCD 서비스
      • 녹화, 전사 또는 실시간 자막

기술 및 액세스 요구 사항#

  • 기본적인 Linux 관리에 익숙하거나, 익숙한 담당자가 있습니다. SSH로 서버에 접속하고, 구성 파일을 편집하고, systemd 서비스를 관리하고, 로그를 확인하고, 셸 명령을 실행해야 합니다.

  • Mattermost 서버에 대한 시스템 관리자 액세스 권한이 있습니다.

    역할과 권한에 대해 알아보려면 Mattermost 역할을 참조하세요.

네트워킹 요구 사항#

  • 최종 사용자가 Calls에 접속하는 방식(사설 네트워크, VPN 또는 공용 인터넷)을 알고 있습니다.

    이는 네트워킹 결정(1.3단계)에 영향을 줍니다.

  • 필요한 인바운드 및 아웃바운드 방화벽 규칙을 열 수 있거나, 방화벽을 관리하는 네트워크 또는 보안 팀과 협의할 수 있습니다.

검증 리소스#

  • Calls 설치 및 구성 중 스모크 테스트에 사용할 테스트 계정이 두 개 있습니다.
  • 중요하게 생각하는 클라이언트 유형과 네트워크에서 검증할 수 있는 소규모 파일럿 그룹(5-10명)이 있습니다.

지원팀 문의#

  • 문제가 발생했을 때 Mattermost 지원팀에 요청을 등록하는 방법을 알고 있습니다.

    실패한 정확한 단계 번호(예: 2A.2.1)와 함께 Mattermost 지원 패킷 및 Calls 로그를 포함해 주세요.

Note

Calls 배포에 전문가의 도움이 필요하다면 담당 어카운트 매니저에게 문의하거나 Mattermost 전문가와 상담하여 전문 서비스 제공 내용을 알아보세요.


1단계: 준비 및 네트워킹#

1.1 사전 요구 사항#

시작하기 전에 다음 사항을 확인하세요.

  • 현재 Mattermost 배포의 활성 사용자 수를 알고 있습니다.

  • 배포에 녹화, 전사 또는 실시간 자막이 필요한지 알고 있습니다.

  • 선택한 아키텍처에 RTCD 또는 녹화 서비스가 필요하다면 서버를 추가로 프로비저닝할 수 있습니다.

  • 배포에 사용하는 서버에서 인바운드 및 아웃바운드 네트워크 포트를 열 수 있습니다.

    네트워크 또는 보안 팀이 방화벽을 관리한다면 계속하기 전에 해당 팀과 협의해야 합니다.

1.2 인프라 결정#

여기에서는 두 가지 중요한 인프라 결정을 내립니다. 먼저 미디어 처리 아키텍처를 선택하고, 그다음 녹화가 필요한지 결정합니다. 각 아키텍처의 참조 토폴로지가 제공됩니다.

미디어 서비스: RTCD 또는 통합#

통합

미디어 처리를 담당하는 별도 서비스를 프로비저닝할 필요가 없으므로 가장 간단한 배포 모델입니다. 통합 모드에서는 Calls 플러그인이 Mattermost 서버에서 내장 미디어 서비스를 직접 실행합니다.

RTCD

RTCD는 Mattermost 메인 서버 외부에서 통화 미디어를 처리하는 Mattermost Calls 전용 실시간 통신 서비스입니다. 대부분의 프로덕션 배포에서는 통화 트래픽을 분리하고 Mattermost 서버의 부하를 줄여 성능, 확장성, 안정성을 높여 주므로 RTCD를 권장하는 배포 모델입니다.

RTCD가 필요한지 판단하려면 먼저 배포에 대한 다음 질문에 답하세요.

  • Kubernetes에 Calls를 배포합니까?
    • 예: Calls를 실행하는 유일한 지원 방식이므로 RTCD를 배포해야 합니다. 자세한 내용은 Kubernetes Calls 배포 가이드를 참조하세요.
    • 아니요: 다음 질문으로 넘어갑니다.
  • 기존 Mattermost 배포의 전체 사용자 수는 얼마입니까? (사이트 통계 확인)
    • 50명 이하: 통합 배포 모델을 사용할 수 있습니다.
    • 50명 초과: Mattermost 서버의 메시징 성능에 영향을 주지 않도록 RTCD를 배포해야 합니다.

아래 탭을 사용하여 각 배포 모델의 참조 아키텍처를 확인하세요.

통합 배포에는 추가 인프라가 필요하지 않습니다.

통합 Calls 배포

사용하기 적합한 경우

  • Calls를 처음 평가하고 있습니다.
  • Calls 사용자가 50명 미만일 것으로 예상합니다.
  • 가능한 한 가장 간단한 배포를 원합니다.

구성 요소

  • Mattermost 서버: Calls 플러그인이 사전 설치되어 있으며 추가 인프라가 필요하지 않습니다.

라이선스

  • Mattermost Entry: 1:1 통화 + 화면 공유(최대 40분)
  • Mattermost Professional, Enterprise 또는 Enterprise Advanced: 그룹 통화 + 화면 공유(시간 제한 없음)

녹화#

녹화, 전사, 실시간 자막을 활성화해야 한다면 통합 Calls 배포에 녹화 서비스(calls-offloader)를 선택적으로 추가할 수 있습니다.

통합 Calls에서 녹화 서비스를 사용할 때의 참조 아키텍처는 다음과 같습니다.

통합 Calls와 녹화를 사용하는 Calls 배포

구성 요소

  • Mattermost 서버: Calls 플러그인이 사전 설치되어 있습니다.
  • Calls Offloader: 녹화, 전사, 실시간 자막을 관리하는 작업 서비스입니다.

라이선스

  • Mattermost Enterprise 또는 Enterprise Advanced

RTCD 서버는 모든 통화 오디오와 화면 공유 미디어를 처리하는 전용 미디어 서비스로 추가됩니다.

RTCD를 사용하는 Calls 배포

Mattermost 서버는 시그널링(통화 설정, 관리, 종료)과 채널 상태(참여 및 퇴장 여부, 음소거 여부, 전체 통화 상태)를 계속 담당하지만, 통화 미디어 자체는 Mattermost 서버를 완전히 거치지 않고 클라이언트와 RTCD 서버 사이에서 직접 전달됩니다.

사용하기 적합한 경우

Mattermost Calls에 최적화된 성능, 확장성, 최상의 사용자 경험이 필요하다면 RTCD를 사용하세요. 구체적으로 다음과 같은 경우입니다.

  • 전반적인 서버 성능을 높이고 CPU 사용량 급증을 줄이기 위해 통화 미디어 트래픽을 메인 Mattermost 서버에서 분리하려고 합니다.
  • 통화량이 늘어나도 배포를 쉽게 확장해야 합니다. 로드 밸런싱을 위해 RTCD 서버를 추가할 수 있습니다.
  • Calls에서 가능한 한 가장 낮은 미디어 지연 시간과 가장 높은 안정성을 원합니다.
  • RTCD가 필수인 Kubernetes에 Mattermost를 배포합니다.

구성 요소

  • Mattermost 서버: Calls 플러그인이 사전 설치되어 있습니다.
  • RTCD 서버: 전용 미디어 서비스입니다. 클라이언트는 미디어 트래픽을 위해 이 서버에 직접 연결합니다.

라이선스

  • Mattermost Enterprise 또는 Enterprise Advanced

녹화#

녹화, 전사, 실시간 자막을 활성화해야 한다면 RTCD Calls 배포에 녹화 서비스(calls-offloader)를 선택적으로 추가할 수 있습니다.

RTCD에서 녹화 서비스를 사용할 때의 참조 아키텍처는 다음과 같습니다.

RTCD와 녹화를 사용하는 Calls 배포

구성 요소

  • Mattermost 서버: Calls 플러그인이 사전 설치되어 있습니다.
  • RTCD 서버: 전용 미디어 서비스입니다. 클라이언트는 미디어 트래픽을 위해 이 서버에 직접 연결합니다.
  • Calls Offloader: 녹화, 전사, 실시간 자막을 관리하는 작업 서비스입니다.

라이선스

  • Mattermost Enterprise 또는 Enterprise Advanced
Note

녹화가 필요한 대부분의 프로덕션 배포에서는 통화 미디어를 Mattermost 서버에서 분리하고 더 예측 가능하게 확장할 수 있으므로 RTCD와 calls-offloader 조합을 권장합니다.

1.3 네트워킹 결정#

1.3.1 공용 IP 검색을 위한 STUN#

STUN은 미디어 서버가 자신의 공용 IP 주소를 자동으로 검색하여 원격 클라이언트가 Calls에 접속할 수 있도록 돕는 프로토콜입니다.

Mattermost는 기본 STUN 서버(stun.global.calls.mattermost.com)를 제공합니다. 이 서비스를 통해서는 통화 미디어나 시그널링 트래픽이 전송되지 않으며 STUN 조회에만 사용됩니다. 다음 의사 결정 트리를 사용하여 공용 IP 검색을 위해 미디어 서버에서 Mattermost 글로벌 STUN 서비스로 나가는 아웃바운드 액세스를 허용해야 하는지 판단하세요.

Note

미디어 서버는 통합 Calls 배포에서는 Mattermost 서버이고, RTCD Calls 배포에서는 RTCD 서버입니다.

STUN 의사 결정 트리

  1. 모든 사용자와 미디어 서버가 외부 클라이언트 없이 같은 사설 네트워크, VPN 또는 에어갭 환경에 있습니까?

    • 예: 공용 IP 검색에 STUN이 필요하지 않습니다. 2단계의 구성에서 미디어 서버의 사설 주소를 사용합니다.
    • 아니요: 다음 질문으로 넘어갑니다.
  2. 미디어 서버에 공용 인터넷의 클라이언트가 접속할 수 있는 고정 공용 IP 주소 또는 DNS 이름이 있습니까?

    • 예: 공용 IP 검색에 STUN이 필요하지 않습니다. 2단계의 구성에서 미디어 서버의 고정 공용 주소를 사용합니다.
    • 아니요: STUN이 필요합니다. 미디어 서버에서 stun.global.calls.mattermost.com으로 나가는 아웃바운드 UDP 3478을 열어야 합니다.

배포에 공용 IP 검색을 위한 STUN이 필요하다면, 1.5단계에서 포트를 열 때 포함할 수 있도록 지금 기록해 두세요.

1.3.2 TURN 서버#

TURN은 클라이언트가 Calls 미디어 서비스에 직접 접속할 수 없을 때만 사용하는 릴레이 서비스입니다. STUN이 클라이언트가 접속할 위치를 찾도록 돕는다면, TURN은 직접 연결이 불가능할 때 대체 경로 역할을 합니다.

다음 두 조건이 모두 참이면 TURN 서버를 프로비저닝해야 합니다.

  • 클라이언트가 미디어 트래픽용 포트 8443에서 UDP(권장)로 RTCD 서버 또는 Calls 플러그인에 직접 접속할 수 없는 네트워크에 있습니다.
  • 클라이언트가 미디어 트래픽용 포트 8443에서 TCP(대체)로 RTCD 서버 또는 Calls 플러그인에 직접 접속할 수 없는 네트워크에 있습니다.

TURN은 지연 시간과 인프라 복잡성을 높이므로 일반적으로 최후의 수단입니다. 답변 결과 미디어에 UDP나 TCP를 사용할 수 없고 사용자에게 대체 경로가 필요한 경우에만 TURN 배포를 계획하세요.

Important

TURN은 대체 서비스이며 기본 요구 사항이 아닙니다. 클라이언트가 UDP 또는 TCP 8443으로 미디어 서비스에 안정적으로 접속할 수 있다면 TURN을 배포하지 마세요. TURN을 배포하는 경우 실제로 사용하는 TURN 수신 포트와 전송 방식만 열고, 조직의 네트워크 정책에 따라 클라이언트 액세스 범위를 제한하세요.

1.4 인프라 프로비저닝#

이제 Calls 배포를 지원하는 데 필요한 서버 또는 VM을 프로비저닝합니다. 여기서는 인프라만 준비하며, 소프트웨어 설치와 서비스 구성은 이후 단계에서 진행합니다. 다음 단계에서 네트워킹 구성을 마무리하려면 이러한 서버의 IP 주소 또는 DNS 이름이 필요하므로 이 단계가 중요합니다.

필요한 인프라는 1.2단계에서 선택한 배포 인프라에 따라 달라집니다. 하드웨어를 추가로 프로비저닝하는 경우 1.5단계에서 사용하므로 IP 주소 또는 DNS 이름을 지금 기록해 두세요.

통합

Mattermost 서버가 모든 미디어 처리를 담당하므로 이 단계를 건너뛰고 1.5단계의 네트워크 구성으로 넘어가도 됩니다.

RTCD

RTCD용 새 서버를 프로비저닝해야 합니다. 하드웨어 사이징 벤치마크 예시는 성능 기준을 참조하세요. RTCD 서비스는 수평 확장을 지원하지만, 서버 한 대로 시작하고 예상 워크로드에 필요하다면 확장하는 것을 권장합니다.

녹화

calls-offloader 서비스용 새 서버를 프로비저닝해야 합니다. 권장 시작 사양은 8 vCPU / 16 GB RAM이며, 녹화 용량과 전사 부하를 추정하려면 이 성능 벤치마크를 사용할 수 있습니다.

TURN 서버

1.3.2단계에서 사용자가 UDP 또는 TCP 8443으로 미디어 서버에 안정적으로 접속할 수 없다고 판단했다면 지금 TURN 서버를 프로비저닝해야 합니다.

Mattermost는 coturn 설치를 권장합니다.

1.5단계로 넘어가기 전에 다음 사항을 확인하세요.

  • 필요한 모든 서버 또는 VM이 생성되었습니다.
  • 필요한 모든 서버에 이후 구성에서 사용할 IP 주소 또는 DNS 이름이 있습니다.
  • 필요한 모든 서버에 대한 관리 액세스 권한이 있습니다. (ssh <user>@로 검증)

1.5 네트워크 구성#

이 섹션에서는 Calls 배포에 사용하는 각 서버에서 열어야 하는 네트워크 포트를 나열합니다. 이러한 규칙을 구성하려면 서버 인스턴스가 먼저 존재해야 하므로 1.4단계의 프로비저닝이 먼저 진행됩니다.

포트를 여는 방법은 환경에 따라 다릅니다.

  • 클라우드 배포(AWS, Azure, GCP): 클라우드 콘솔의 보안 그룹 또는 네트워크 ACL에서 각 인스턴스의 인바운드 및 아웃바운드 규칙을 구성합니다.
  • 온프레미스 또는 자체 관리 VM: 각 서버에서 firewalld(RHEL, Rocky Linux, AlmaLinux) 또는 ufw(Ubuntu/Debian) 명령을 직접 사용합니다.
  • 중앙에서 관리하는 방화벽: 네트워크 팀이 방화벽을 관리한다면 아래 표를 공유하고 진행하기 전에 규칙을 요청하세요.

누락된 항목이 없는지 확인한 후 넘어갈 수 있도록 서버를 한 번에 하나씩 작업하세요.

선택한 배포 아키텍처(통합 또는 RTCD)에 해당하는 포트만 여세요.

Mattermost 서버 포트#
포트 프로토콜 방향 소스 대상 참고
443 TCP 인바운드 Mattermost 클라이언트 Mattermost 서버 HTTPS 및 WebSocket 시그널링입니다.
8443 UDP 인바운드 Mattermost 클라이언트 Mattermost 서버 미디어 트래픽입니다(통합 모드).
8443 TCP 인바운드 Mattermost 클라이언트 Mattermost 서버 미디어 트래픽 대체 경로입니다(통합 모드).
3478 UDP 아웃바운드 Mattermost 서버 stun.global.calls.mattermost.com (선택 사항 - 1.3.1단계) STUN을 사용한 공용 IP 검색입니다.
Important

Mattermost 앞단에서 NGINX를 리버스 프록시로 사용하는 경우 UDP 트래픽을 전달하는 데 사용해서는 안 됩니다. 포트 8443은 NGINX가 아니라 미디어 서비스(RTCD 또는 통합)를 실행하는 서버에서 직접 열어야 합니다. Calls에서 NGINX가 처리해야 하는 포트는 443뿐입니다.

녹화 서버 포트#

1.4단계에서 calls-offloader 서버를 배포했다면 다음 포트를 여세요.

포트 프로토콜 방향 소스 대상 참고
4545 TCP 인바운드 Mattermost 서버 calls-offloader 서버 작업 서비스 API입니다(내부 전용. 이 규칙은 Mattermost 서버 또는 승인된 애플리케이션 서브넷으로만 제한하세요.)
8443 UDP 아웃바운드 calls-offloader 서버 Mattermost 서버 녹화 및 전사 작업이 통화 참가자로서 미디어 서비스에 연결합니다.
8443 TCP 아웃바운드 calls-offloader 서버 Mattermost 서버 미디어 트래픽 대체 경로입니다.
443 TCP 아웃바운드 calls-offloader 서버 Mattermost 서버 녹화 및 전사 작업이 결과를 Mattermost에 다시 게시합니다.
TURN 서버 포트#

1.4단계에서 TURN 서버를 배포했다면 실제로 구성하는 전송 방식에 필요한 포트만 여세요. coturn을 사용하는 경우 일반적인 기본값은 다음과 같습니다.

포트 프로토콜 방향 소스 대상 참고
3478 UDP / TCP 인바운드 Mattermost 클라이언트 TURN 서버 TURN 릴레이입니다.
5349 TCP 인바운드 Mattermost 클라이언트 TURN 서버 (선택 사항) TLS를 통한 TURN을 구성하는 경우입니다. 명시적으로 사용하지 않는다면 이 포트를 열지 마세요.
49152-65535 UDP 인바운드 Mattermost 클라이언트 TURN 서버 미디어를 릴레이하는 데 필요한 TURN 릴레이 포트 범위입니다.
Mattermost 서버 포트#
포트 프로토콜 방향 소스 대상 참고
443 TCP 인바운드 Mattermost 클라이언트 Mattermost 서버 HTTPS 및 WebSocket 시그널링입니다.
RTCD 서버 포트#
포트 프로토콜 방향 소스 대상 참고
8443 UDP 인바운드 Mattermost 클라이언트 및 calls-offloader 서버 RTCD 서버 미디어 트래픽입니다.
8443 TCP 인바운드 Mattermost 클라이언트 및 calls-offloader 서버 RTCD 서버 미디어 트래픽 대체 경로입니다.
8045 TCP 인바운드 Mattermost 서버 RTCD 서버 RTCD API입니다(내부 전용. 이 규칙은 Mattermost 서버 또는 승인된 애플리케이션 서브넷으로만 제한하세요.)
3478 UDP 아웃바운드 RTCD 서버 stun.global.calls.mattermost.com (선택 사항 - 1.3.1단계) STUN을 사용한 공용 IP 검색입니다.
Important

Mattermost 앞단에서 NGINX를 리버스 프록시로 사용하는 경우 UDP 트래픽을 전달하는 데 사용해서는 안 됩니다. 포트 8443은 NGINX가 아니라 미디어 서비스(RTCD 또는 통합)를 실행하는 서버에서 직접 열어야 합니다. Calls에서 NGINX가 처리해야 하는 포트는 443뿐입니다.

녹화 서버 포트#

1.4단계에서 calls-offloader 서버를 배포했다면 다음 포트를 여세요.

포트 프로토콜 방향 소스 대상 참고
4545 TCP 인바운드 Mattermost 서버 calls-offloader 서버 작업 서비스 API입니다(내부 전용. 이 규칙은 Mattermost 서버 또는 승인된 애플리케이션 서브넷으로만 제한하세요.)
8443 UDP 아웃바운드 calls-offloader 서버 RTCD 서버 녹화 및 전사 작업이 통화 참가자로서 미디어 서비스에 연결합니다.
8443 TCP 아웃바운드 calls-offloader 서버 RTCD 서버 미디어 트래픽 대체 경로입니다.
443 TCP 아웃바운드 calls-offloader 서버 Mattermost 서버 녹화 및 전사 작업이 결과를 Mattermost에 다시 게시합니다.
TURN 서버 포트#

1.4단계에서 TURN 서버를 배포했다면 다음 포트를 여세요. coturn을 사용하는 경우 일반적인 기본값은 다음과 같습니다.

포트 프로토콜 방향 소스 대상 참고
3478 UDP / TCP 인바운드 Mattermost 클라이언트 TURN 서버 TURN 릴레이입니다.
5349 TCP 인바운드 Mattermost 클라이언트 TURN 서버 (선택 사항) TLS를 통한 TURN을 구성하는 경우입니다. 명시적으로 사용하지 않는다면 이 포트를 열지 마세요.
49152-65535 UDP 인바운드 Mattermost 클라이언트 TURN 서버 미디어를 릴레이하는 데 필요한 TURN 릴레이 포트 범위입니다.

1.6 네트워킹 검사#

이 검사는 방화벽 규칙과 네트워크 도달 가능 여부를 확인합니다. 프로덕션 Calls, RTCD, calls-offloader 서비스가 아직 설치되지 않아도 수행할 수 있습니다. 해당 서비스가 없는 상태에서 신뢰할 수 있는 결과를 얻으려면 아래의 각 스캔을 실행하기 전에 대상 호스트에서 임시 리스너를 시작하세요. 차단된 포트와 허용되었지만 사용되지 않는 포트가 그렇지 않으면 동일하게 보일 수 있으므로, 특히 UDP 검사에서 중요합니다.

먼저 검사를 실행할 각 소스 머신 또는 클라이언트에 nmap을 설치하고, 임시 리스너를 시작할 각 대상 호스트에 ncat을 설치하세요. 예를 들면 다음과 같습니다.

  • Ubuntu 또는 Debian: sudo apt install nmap ncat
  • RHEL, Rocky Linux 또는 AlmaLinux: sudo dnf install nmap nmap-ncat

아래의 각 검사를 실행하면 nmap이 open, closed, filtered 중 하나를 반환합니다.

통과:

  • open: 포트에 도달할 수 있으며, 대상 호스트가 해당 포트에서 임시 리스너를 바인딩할 수 있었습니다.

실패:

  • closed: 트래픽이 대상 호스트에 도달했지만 해당 포트에서 수신 대기 중인 프로세스가 없습니다. 임시 리스너가 계속 실행 중인지, 포트가 올바른지, 다른 프로세스가 해당 포트를 이미 사용하고 있지 않은지 확인하세요.
  • filtered: 방화벽이 포트를 차단하고 있습니다. 계속하기 전에 1.5단계의 네트워킹 구성을 다시 검토하세요.
Note

아래 명령어에서 TARGET_IP를 테스트하는 서버의 실제 IP 주소로 바꾸세요. 먼저 대상 호스트에서 서버 측 ncat 리스너를 시작한 다음, 소스 머신에서 클라이언트 측 nmap 명령어를 실행하세요. 검사가 끝나면 Ctrl+C로 임시 리스너를 중지하세요.

통합 배포

Mattermost 서버에서 임시 리스너를 시작한 다음, 사용자와 같은 네트워크에 있는 아무 클라이언트 머신에서 nmap을 실행하세요.

검사 명령어 TARGET_IP 설명
1.6.1 Mattermost 서버: sudo ncat -u -l -k -p 8443 -c '/bin/cat'
클라이언트: sudo nmap -sU -p 8443 TARGET_IP
Mattermost 서버 IP 클라이언트가 Mattermost 서버로 UDP 미디어를 보낼 수 있습니다
1.6.2 Mattermost 서버: sudo ncat -l -k -p 8443
클라이언트: nmap -p 8443 TARGET_IP
Mattermost 서버 IP 클라이언트가 TCP 미디어 대체 연결을 위해 Mattermost 서버에 접속할 수 있습니다

RTCD 배포

RTCD 서버에서 임시 리스너를 시작한 다음, 사용자와 같은 네트워크에 있는 아무 클라이언트 머신에서 nmap을 실행하세요.

검사 명령어 TARGET_IP 설명
1.6.3 RTCD 서버: sudo ncat -u -l -k -p 8443 -c '/bin/cat'
클라이언트: sudo nmap -sU -p 8443 TARGET_IP
RTCD 서버 IP 클라이언트가 RTCD 서버로 UDP 미디어를 보낼 수 있습니다
1.6.4 RTCD 서버: sudo ncat -l -k -p 8443
클라이언트: nmap -p 8443 TARGET_IP
RTCD 서버 IP 클라이언트가 TCP 미디어 대체 연결을 위해 RTCD 서버에 접속할 수 있습니다

RTCD 서버에서 임시 리스너를 시작한 다음, Mattermost 서버에서 nmap을 실행하세요.

검사 명령어 TARGET_IP 설명
1.6.5 RTCD 서버: sudo ncat -l -k -p 8045
Mattermost 서버: nmap -p 8045 TARGET_IP
RTCD 서버 IP Mattermost가 RTCD API에 접속할 수 있습니다

녹화 배포

녹화 서버(calls-offloader)에서 임시 리스너를 시작한 다음, Mattermost 서버에서 nmap을 실행하세요.

검사 명령어 TARGET_IP 설명
1.6.6 녹화 서버: sudo ncat -l -k -p 4545
Mattermost 서버: nmap -p 4545 TARGET_IP
calls-offloader 서버 IP Mattermost가 calls-offloader API에 접속할 수 있습니다

미디어 서버(RTCD 또는 통합 모드를 사용하는 경우 Mattermost 서버)에서 임시 리스너를 시작한 다음, 녹화 서버(calls-offloader)에서 nmap을 실행하세요.

검사 명령어 TARGET_IP 설명
1.6.7 RTCD 또는 Mattermost 서버: sudo ncat -u -l -k -p 8443 -c '/bin/cat'
녹화 서버: sudo nmap -sU -p 8443 TARGET_IP
RTCD 서버 IP(통합 모드를 사용하는 경우 Mattermost 서버 IP) Calls Offloader가 녹화를 위해 통화에 참여하고자 미디어 서비스로 UDP 미디어를 보낼 수 있습니다
1.6.8 RTCD 또는 Mattermost 서버: sudo ncat -l -k -p 8443
녹화 서버: nmap -p 8443 TARGET_IP
RTCD 서버 IP(통합 모드를 사용하는 경우 Mattermost 서버 IP) Calls Offloader가 TCP 미디어 대체 연결을 위해 미디어 서비스에 접속할 수 있습니다

다음 검사에서는 임시 ncat 리스너를 시작하는 대신, 실행 중인 Mattermost 서버의 기존 HTTPS 리스너를 사용하세요.

검사 명령어 TARGET_IP 설명
1.6.9 녹화 서버: nmap -p 443 TARGET_IP Mattermost 서버 IP Calls Offloader가 녹화 파일을 Mattermost로 다시 게시할 수 있습니다

TURN 배포

TURN 서버에서 임시 리스너를 시작한 다음, 사용자와 같은 네트워크에 있는 아무 클라이언트 머신에서 nmap을 실행하세요.

검사 명령어 TARGET_IP 설명
1.6.10 TURN 서버: sudo ncat -u -l -k -p 3478 -c '/bin/cat'
클라이언트: sudo nmap -sU -p 3478 TARGET_IP
TURN 서버 IP 클라이언트가 UDP 3478에서 TURN 서버에 접속할 수 있습니다
1.6.11 TURN 서버: sudo ncat -l -k -p 3478
클라이언트: nmap -p 3478 TARGET_IP
TURN 서버 IP 클라이언트가 TCP 3478에서 TURN 서버에 접속할 수 있습니다
1.6.12 TURN 서버: sudo ncat -u -l -k -p 49152 -c '/bin/cat'
클라이언트: sudo nmap -sU -p 49152 TARGET_IP
TURN 서버 IP TURN 릴레이 포트 범위의 표본 점검입니다

1.7 검증 검사#

2단계로 넘어가기 전에 다음 항목을 모두 확인하세요.

  • 배포 아키텍처를 선택하고 필요한 서버를 프로비저닝했습니다.
  • Mattermost 라이선스가 배포하려는 아키텍처와 기능을 지원하는지 확인했습니다.
  • 선택한 아키텍처에 필요한 모든 방화벽 규칙과 네트워크 경로를 열었습니다.
  • 1.6단계의 관련 네트워크 검사가 모두 예상한 결과(open이며 closed 또는 filtered가 아님)를 반환했습니다.
  • STUN이 필요한 경우, stun.global.calls.mattermost.com으로 향하는 아웃바운드 UDP 3478이 허용되어 있습니다.
Important

배포 아키텍처와 관련된 이 섹션의 모든 검사가 통과하기 전에는 2단계로 넘어가지 마세요. 검사가 하나라도 실패하면 부록 A: 문제 해결로 이동하세요.


2단계: Calls 설치 및 구성#

이제 배포 아키텍처에 맞는 경로에 따라 Calls를 구성합니다. 같은 배포에 두 경로를 모두 완료하지 마세요.

  • 통합 Calls 배포 모델을 사용하는 경우 경로 A를 따르세요.
  • RTCD Calls 배포 모델을 사용하는 경우 경로 B를 따르세요.

아래 탭에서 경로를 선택하여 해당하는 설치 및 구성 안내를 따르세요.

경로 A: 통합 Calls 구성#

2A.1 사전 요구 사항#

  • 1단계 검증 검사를 통과했습니다
  • 통합이 1.2단계에서 선택한 기본 아키텍처입니다
  • Mattermost 서버에 테스트 계정 2개가 있습니다
  • Mattermost 서버에 대한 시스템 관리자 권한이 있습니다

2A.2 Calls 플러그인 구성#

Calls 플러그인은 Mattermost 셀프 호스팅 배포에 사전 패키징되어 있습니다. System Console > Plugins > Calls > Settings로 이동하여 다음 단계를 완료하세요.

2A.2.1: 플러그인 활성화

플러그인 활성화를 true로 설정하세요. 그러면 페이지의 나머지 구성 설정을 편집할 수 있습니다.

2A.2.2: 테스트 모드 활성화

초기 검증 중에 Calls가 제한된 상태로 유지되도록 테스트 모드를 on으로 설정하세요. 이 모드에서는 시스템 관리자가 Calls를 사용할 수 있는 위치를 제어하며, 테스트를 위해 특정 채널에서 Calls를 활성화할 수 있습니다.

2A.2.3: 호스트 미디어 주소 구성

ICE 호스트 재정의를 클라이언트가 미디어 서비스에 접속할 때 사용할 IP 주소 또는 DNS 이름으로 설정하세요. ICE(Interactive Connectivity Establishment)는 사용자의 디바이스가 미디어 서버로 가는 경로를 찾는 데 사용하는 프로토콜입니다. ICE 호스트 재정의는 Calls가 사용자에게 알려 줄 주소를 지정합니다. 이 값은 1.3.1단계의 STUN 결정 트리를 기준으로 설정하세요.

  • 사용자가 프라이빗 네트워크, VPN 또는 에어 갭 환경에 있는 경우, 사용자가 접속할 수 있는 Mattermost 서버의 프라이빗 주소로 설정하세요.
  • Mattermost 서버에 고정 공인 IP가 있는 경우, 해당 IP로 설정하세요.
  • 그렇지 않으면 STUN을 사용한 공인 주소 자동 검색을 위해 비워 두세요.

2A.2.4: TURN 서버 구성

TURN을 사용하는 경우, ICE 서버 구성 배열을 TURN 서버 정보로 바꾸거나 확장하세요.

[
  {
    "urls": ["turn:turn.example.com:3478"],
    "username": "",
    "credential": ""
  }
]

TURN 배포에서 단기 생성 자격 증명을 사용하는 경우, TURN 정적 인증 시크릿과 TURN 자격 증명 만료도 설정하세요.

2A.2.5: 구성 저장

Calls 설정 페이지에서 저장을 클릭하세요. 미디어 서버 설정을 변경한 후에는 플러그인을 다시 시작하는 것도 권장합니다.

  1. System Console > Plugins > Plugin Management로 이동합니다.
  2. Calls를 비활성화하고 몇 초간 기다립니다.
  3. Calls를 다시 활성화합니다.

2A.3 검증 검사#

이제 테스트 계정으로 Calls 배포를 스모크 테스트하세요.

  • calls-test 같은 테스트 채널을 만듭니다.
  • 채널 메뉴를 열고 통화 활성화를 선택합니다.
  • 실제 통화를 검증할 수 있도록 테스트 사용자를 채널에 초대합니다.
검사 작업 통과 기준
2A.3.1 두 번째 사용자와 함께 테스트 채널에서 통화를 시작합니다 두 사용자가 모두 통화에 참여합니다
2A.3.2 통화 중에 말합니다 두 사용자가 서로의 목소리를 또렷하게 들을 수 있습니다
2A.3.3 데스크톱 앱 또는 지원되는 브라우저에서 화면을 공유합니다 다른 사용자에게 화면 공유가 표시됩니다
2A.3.4 통화를 종료합니다 채널에서 통화 표시기가 사라집니다
Important

모든 검사가 통과하기 전에는 계속 진행하지 마세요. 검사가 하나라도 실패하면 부록 A: 문제 해결로 이동하세요.

경로 B: RTCD 설치 및 구성#

2B.1 사전 요구 사항#

  • 1단계 검증 검사를 통과했습니다
  • RTCD가 1.2단계에서 선택한 기본 아키텍처입니다
  • RTCD 서버가 프로비저닝되었고(1.4) RTCD 네트워킹 검사를 통과했습니다(1.6.3-1.6.5)
  • 서버에서 Mattermost Enterprise 또는 Enterprise Advanced 라이선스가 활성화되어 있습니다
  • Mattermost 서버에 테스트 계정 2개가 있습니다
  • Mattermost 서버에 대한 시스템 관리자 권한이 있습니다

2B.2 RTCD 설치#

실제 설치는 RTCD 설정 및 구성 가이드를 따르세요. 이 가이드에서 다루는 내용은 다음과 같습니다.

  • 바이너리 설치
  • rtcd.toml 구성
  • 서비스 설정
  • TURN 구성(해당하는 경우)
Note

쿠버네티스에 배포하는 경우, 클러스터별 설치와 Helm 기반 구성을 위해 쿠버네티스에서의 Calls 배포 가이드도 함께 참고하세요.

계속하기 전에 Mattermost 서버에서 다음 검사를 실행하여 RTCD가 실행 중이고 접속할 수 있는지 확인하세요.

검사 명령어 통과 기준
2B.2.1 nmap -p 8045 YOUR_RTCD_SERVER open - RTCD가 실행 중이며 연결을 수락하고 있습니다.
2B.2.2 curl http://YOUR_RTCD_SERVER:8045/version JSON 버전 문자열을 반환합니다

2B.3 Mattermost를 RTCD에 연결#

RTCD를 설치, 구성하고 접속할 수 있게 되면 Calls 플러그인이 RTCD를 사용하도록 업데이트하세요.

  1. System Console > Plugins > Calls > Settings로 이동합니다.

  2. 플러그인 활성화를 true로 설정합니다. 그러면 페이지의 나머지 Calls 설정을 편집할 수 있습니다.

  3. 초기 검증 중에 Calls가 제한된 상태로 유지되도록 테스트 모드를 on으로 설정합니다. 이 모드에서는 시스템 관리자가 Calls를 사용할 수 있는 위치를 제어하며, 테스트를 위해 특정 채널에서 Calls를 활성화할 수 있습니다.

  4. RTCD 서비스 URL을 RTCD 주소로 설정합니다. RTCD 설정 중에 RTCD 자격 증명이 생성된 경우 URL에 직접 포함하세요.

    http://clientID:authKey@rtcd.internal:8045
    

    clientID와 authKey를 RTCD 설정 중에 생성된 값으로 바꾸세요. RTCD에 처음 연결하면 클라이언트가 자체 등록되고 인증 키가 데이터베이스에 저장됩니다.

    또는 Mattermost 서버의 환경 변수 MM_CALLS_RTCD_CLIENT_ID와 MM_CALLS_RTCD_AUTH_KEY로 자격 증명을 설정할 수도 있습니다.

  5. 저장을 클릭하고 변경 사항이 적용되도록 Calls 플러그인을 다시 시작합니다.

2B.4 Calls 모니터링 구성#

파일럿을 시작하기 전에 Calls 모니터링을 설정하여 실제 사용자가 테스트하는 동안 세션, 오류, CPU, 메모리를 확인할 수 있도록 하세요.

Calls 모니터링은 Prometheus(서버에서 메트릭을 수집하는 도구)와 Grafana(해당 메트릭을 시각화하는 대시보드)를 사용합니다. 아직 설정하지 않았다면 계속하기 전에 Mattermost 모니터링 설정을 참고하세요. 이미 Prometheus와 Grafana를 실행 중이라면 다음 스크레이프 대상을 추가하고 대시보드를 가져오세요.

  • RTCD 메트릭: http://YOUR_RTCD_SERVER:8045/metrics
  • Calls 플러그인 메트릭: http://YOUR_MATTERMOST_SERVER:8067/plugins/com.mattermost.calls/metrics
  • Grafana 대시보드: 대시보드 ID 23225를 가져옵니다

전체 구성 세부 정보는 Calls 메트릭 및 모니터링을 참고하세요.

2B.5 검증 검사#

이제 테스트 계정으로 RTCD 배포를 스모크 테스트하세요.

  • calls-test 같은 테스트 채널을 만듭니다.
  • 채널 메뉴를 열고 통화 활성화를 선택합니다.
  • 실제 통화를 검증할 수 있도록 테스트 사용자를 채널에 초대합니다.
검사 작업 통과 기준
2B.5.1 두 번째 사용자와 함께 테스트 채널에서 통화를 시작합니다 두 사용자가 모두 통화에 참여합니다
2B.5.2 통화 중에 말합니다 두 사용자가 서로의 목소리를 또렷하게 들을 수 있습니다
2B.5.3 데스크톱 앱 또는 지원되는 브라우저에서 화면을 공유합니다 다른 사용자에게 화면 공유가 표시됩니다
2B.5.4 통화를 종료합니다 채널에서 통화 표시기가 사라집니다

이 검사가 실패하면 먼저 다음 문제 해결 방법을 시도하세요.

  • 검사 2B.2.1과 2B.2.2를 다시 실행하여 RTCD가 수신 대기 중이고 응답하는지 확인합니다.
  • RTCD 서비스 URL이 올바른지, 그리고 RTCD 설정에서 필요한 경우 자격 증명이 포함되어 있는지 확인합니다.
  • Mattermost 서버가 포트 8045에서 RTCD에 접속할 수 있는지 확인하고, 다른 설정을 변경하기 전에 RTCD 로그를 검토합니다.
Important

모든 검사가 통과하기 전에는 계속 진행하지 마세요. 검사가 하나라도 실패하면 부록 A: 문제 해결로 이동하세요.


3단계: 녹화 설치 및 구성#

이제 통화 녹화, 전사, 실시간 자막을 처리하는 calls-offloader 작업 서비스를 설치하고 구성합니다.

녹화, 전사, 실시간 자막이 필요하지 않다면 이 단계를 건너뛸 수 있습니다.

3.1 사전 요구 사항#

  • calls-offloader 서버가 프로비저닝되었고(1.4) 관련 네트워킹 검사를 통과했습니다(1.6.6-1.6.9)
  • 통합 모드를 사용하는 경우: 2A단계 검증 검사를 통과했습니다(2A.3.1-2A.3.4).
  • RTCD를 사용하는 경우: 2B단계 검증 검사를 통과했습니다(2B.5.1-2B.5.4).
  • 서버에서 Mattermost Enterprise 또는 Enterprise Advanced 라이선스가 활성화되어 있습니다
  • Mattermost 서버에 대한 시스템 관리자 권한이 있습니다

3.2 calls-offloader 설치#

설치는 Calls Offloader 설정 및 구성 가이드를 따르세요. 이 가이드에서 다루는 내용은 다음과 같습니다.

  • 바이너리 설치
  • config.toml 구성
  • Systemd 서비스 설정
  • Docker 기반 작업
  • 프라이빗 네트워크 재정의
  • 에어 갭 설치

계속하기 전에 Mattermost 서버에서 다음 검사를 실행하여 calls-offloader가 실행 중이고 접속할 수 있는지 확인하세요.

검사 명령어 통과 기준
3.2.1 nmap -p 4545 YOUR_OFFLOADER_SERVER open - calls-offloader가 실행 중이며 연결을 수락하고 있습니다.
3.2.2 curl http://YOUR_OFFLOADER_SERVER:4545/version JSON 버전 문자열을 반환합니다

3.3 calls-offloader를 Mattermost에 연결#

  1. System Console > Plugins > Calls > Settings로 이동합니다.
  2. 작업 서비스 URL을 calls-offloader 주소로 설정합니다. 신뢰할 수 있는 내부 네트워크에서는 http://calls-offloader.internal:4545처럼 설정할 수 있습니다.
  3. 필요한 경우 통화 녹화를 활성화합니다.
  4. 필요한 경우 통화 전사를 활성화합니다. 전사를 사용하려면 녹화가 활성화되어 있어야 합니다.
  5. 필요한 경우 실시간 자막을 활성화합니다. 실시간 자막을 사용하려면 녹화와 전사가 모두 활성화되어 있어야 합니다.
  6. 저장을 클릭하고 변경 사항이 적용되도록 Calls 플러그인을 다시 시작합니다.

3.4 검증 검사#

이제 테스트 계정으로 녹화 관련 기능을 스모크 테스트하세요.

검사 작업 통과 기준
3.4.1 통화 호스트로서 녹화를 시작합니다 오류 없이 녹화가 시작됩니다.
3.4.2 통화를 종료하거나 녹화를 중지합니다 처리가 완료된 후 통화 스레드에 MP4 파일이 나타납니다.
3.4.3 전사를 활성화한 상태에서 녹화된 통화를 종료합니다 처리가 완료된 후 통화 스레드에 MP4 파일과 전사 파일이 나타납니다.
3.4.4 실시간 자막을 활성화한 상태에서 녹화된 통화를 시작합니다 참가자가 말한 후 1~3초 이내에 통화 중 자막이 나타납니다.

녹화 관련 검사가 실패하면 다시 시도하기 전에 문제를 분리하세요.

  • 3.4.1 또는 3.4.2 실패: 작업 서비스 URL이 올바른지, calls-offloader 서비스가 실행 중인지, Mattermost 서버가 포트 4545에 접속할 수 있는지 확인하세요.
  • 3.4.3 실패: 먼저 녹화가 활성화되어 있는지 확인한 다음, 전사가 활성화되어 있는지 확인하세요.
  • 3.4.4 실패: 실시간 자막을 테스트하기 전에 녹화와 전사가 모두 활성화되어 있는지 확인하세요.
Important

모든 검사가 통과하기 전에는 계속 진행하지 마세요. 검사가 하나라도 실패하면 부록 A: 문제 해결로 이동하세요.


4단계: 파일럿 롤아웃#

기술 구성이 완료되고 검증되었으므로, 전체 롤아웃에 앞서 실제 사용자와 함께 소규모 파일럿을 실행하세요. 목표는 조직에서 사용하는 클라이언트와 위치 전반에서 Calls가 안정적으로 작동하는지, 일반적인 사용량에서 서버가 정상 상태를 유지하는지 확인하는 것입니다.

4.1 사전 요구 사항#

  • 통합 모드를 사용하는 경우: 2A단계 검증 검사를 통과했습니다(2A.3.1-2A.3.4)
  • RTCD를 사용하는 경우: 2B단계 검증 검사를 통과했습니다(2B.5.1-2B.5.4)
  • 녹화를 사용하는 경우: 3단계 검증 검사를 통과했습니다(3.4.1-3.4.4)
  • 서로 다른 위치에 있는 자원봉사 파일럿 사용자 5~10명
  • Calls 인프라의 메트릭 대시보드와 로그에 대한 접근 권한
  • 파일럿 사용자가 최신 Mattermost 데스크톱 및 모바일 앱을 사용하고 있습니다

4.2 준비 및 커뮤니케이션#

파일럿을 성공적으로 진행하려면 파일럿 사용자가 무엇을 테스트해야 하는지, 통화를 어떻게 시작하는지, 문제를 어떻게 보고하는지 알고 있어야 합니다.

파일럿 사용자를 calls-test 채널에 초대한 후, 모든 사용자가 같은 항목을 테스트할 수 있도록 해당 채널에 짧은 메시지를 게시하세요. 아래에 템플릿이 있습니다.

파일럿 사용자 커뮤니케이션 템플릿
## Mattermost Calls pilot

Thank you for volunteering to test Mattermost Calls before a wider rollout. After 3-5 days of pilot testing, we will ask everyone to share their findings and experiences. Please keep track of any issues or feedback so you can summarize them when requested.

**How to start**

Calls is enabled in this channel for pilot testing. You can select **Start call** in the channel header to begin, or join an existing call if one is already started.

You can learn more about Mattermost Calls in the [documentation](https://docs.mattermost.com/end-user-guide/collaborate/make-calls.html).

**Test Cases**

| Test | Action | Pass criteria | Client Types |
|---|---|---|---|
| T1 | Group call with 3-5 participants | All participants can hear each other clearly | Web, Desktop, Mobile |
| T2 | Group call lasting 15 minutes or longer | No unexpected drops or audio degradation | Web, Desktop, Mobile |
| T3 | Participants join calls from outside the main office network | Call quality is acceptable from that network | Web, Desktop, Mobile |
| T4 | Participants share screen during a call | Screen sharing works and is visible to all participants | Desktop, Web |
| T5 | Record a group call, if recording is enabled | MP4 and transcription file appear in the call thread after processing completes | Web, Desktop, Mobile |
| T6 | Enable Live Captions during a group call, if captions are enabled | Captions appear during the call within 1-3 seconds after participants speak | Web, Desktop |

**Reporting Issues**

If you encounter an issue, please report it by posting in this channel and including:

- Test number
- Reproduction steps
- What you expected to happen
- What actually happened (with screenshots)
- Your client type (desktop, browser, or mobile)

4.3 검증 검사#

모니터링

검사 작업 통과 기준
4.3.1 파일럿 통화 중에 메트릭 대시보드를 확인합니다 활성 세션과 참가자가 표시되며 정확하게 집계됩니다
4.3.2 RTCD를 사용하는 경우, 파일럿 통화 후 RTCD 오류 메트릭(rtcd_rtc_errors_total)을 확인합니다 오류 수가 증가하지 않았습니다
4.3.3 RTCD를 사용하는 경우, 파일럿 통화 중에 CPU 및 메모리 메트릭(rtcd_process_cpu_seconds_total, rtcd_process_resident_memory_bytes)을 확인합니다 CPU 또는 메모리 급증이 관찰되지 않았습니다
4.3.4 Mattermost 로그를 검토하고, RTCD와 calls-offloader가 배포된 경우 해당 서비스의 로그도 검토합니다 반복되는 ERROR 줄이 없고, 예상치 못한 WARN 패턴이 없습니다

프로덕션 준비 상태

파일럿 사용자로부터 영업일 기준 3~5일 후에 피드백을 수집하고, 이를 사용해 프로덕션 준비 상태를 평가하세요.

검사 요구 사항
4.3.5 파일럿 사용자의 80% 이상이 음질을 허용 가능한 수준으로 평가했습니다
4.3.6 파일럿 테스트 케이스에서 진행을 막는 문제가 발견되지 않았습니다
4.3.7 모든 파일럿 사용자가 프로덕션 롤아웃 준비가 되었음을 확인했습니다

파일럿 사용자가 문제를 발견한 경우 아직 롤아웃을 확대하지 마세요.

  • 가능한 한 가장 작은 범위에서 문제를 해결합니다.
  • 영향을 받은 파일럿 테스트 케이스를 반복합니다.
  • 실패한 시나리오가 일관되게 통과할 때까지 파일럿 상태를 유지합니다.

테스트가 실패한 후에는 Mattermost 메시지 입력 영역에서 /call stats를 실행하여 추가 진단 단서를 얻을 수도 있습니다.

Important

관련된 모든 검사가 통과하기 전에는 프로덕션 롤아웃으로 진행하지 마세요. 검사가 하나라도 실패하면 부록 A: 문제 해결로 이동하세요.


5단계: 프로덕션 롤아웃#

이제 프로덕션의 모든 사용자를 대상으로 더 넓은 롤아웃을 실행합니다.

5.1 사전 요구 사항#

  • 4단계 프로덕션 준비 상태 검사를 통과했습니다(4.3.1-4.3.7)
  • 롤백 계획이 문서화되었으며 충분히 이해되었습니다
  • Mattermost 서버에 대한 시스템 관리자 권한이 있습니다
  • Calls 인프라의 메트릭 대시보드와 로그에 대한 접근 권한

5.2 롤백 계획#

단계별 프로덕션 롤아웃을 시작하기 전에 롤백 옵션을 숙지해야 합니다. 문제가 발생하면 문제를 해결할 수 있는 가장 작은 범위의 롤백을 선택하세요.

채널별 롤백

특정 채널에서 Calls를 비활성화합니다.

  1. 영향을 받은 채널로 이동합니다.
  2. 채널 메뉴를 선택한 다음 통화 비활성화를 선택합니다.

테스트 모드 롤백

시스템 관리자가 Calls를 활성화한 채널로 Calls를 제한합니다.

  1. System Console > Plugins > Calls > Settings로 이동합니다.
  2. 테스트 모드를 on으로 설정합니다.

전체 롤백

모든 사용자에 대해 Calls를 완전히 비활성화합니다.

  1. System Console > Plugins > Plugin Management로 이동합니다.
  2. Calls 플러그인을 비활성화합니다.

기존 화상 회의 도구가 있다면 Calls가 프로덕션에서 안정될 때까지 계속 사용할 수 있도록 유지하세요.

5.3 준비 및 커뮤니케이션#

사용자에게 Calls를 공지하기 전에 calls-support 공개 채널을 만드세요. 이렇게 하면 사용자가 문제를 보고할 명확한 장소가 생기고, 관리자가 롤아웃 문제를 한곳에서 추적할 수 있습니다.

전체 공지 채널이나 눈에 잘 띄는 비슷한 위치에 공유할 짧은 공지도 함께 준비하세요. 아래에 템플릿이 있습니다.

프로덕션 롤아웃 커뮤니케이션 템플릿
## Mattermost Calls rollout

We're enabling Mattermost Calls across this server. Starting today, you can start audio calls in select channels directly within Mattermost - no need to switch to a separate tool.

We're rolling out gradually, starting with a select set of channels before expanding to everyone.

**Calls features**

- Start or join 1:1 and group audio calls
- Share your screen from the desktop app or browser
- Record calls and generate transcripts, if enabled
- Use live captions during recorded calls, if enabled

You can learn more about Mattermost Calls in the [documentation](https://docs.mattermost.com/end-user-guide/collaborate/make-calls.html).

**How to start a call**

Select **Start call** in the channel header. Anyone in the channel can join.

**Things to know**

- We recommend updating your [desktop and mobile apps](https://mattermost.com/apps/) to the latest version
- Your browser or desktop app may ask for microphone permission the first time you join a call.
- Screen sharing may also require a screen capture permission prompt.

**Need help?**

Post in `~calls-support` and include what you were trying to do, what happened, and a screenshot if possible.

5.4 롤아웃 단계#

Calls를 모든 곳에서 한 번에 활성화하지 말고 단계적으로 활성화하는 것을 권장합니다. 이렇게 하면 실제 사용 현황을 지켜보고, 문제를 조기에 발견하며, 필요한 경우 깔끔하게 롤백할 수 있습니다.

단계 채널 / 부서 권장 일정 롤백 방식
1단계 IT 및 관리자 채널 1~3일 차 채널별 롤백
2단계 엔지니어링 또는 파워 유저 채널 4~7일 차 채널별 롤백
3단계 전체 조직 8일 차 이후 테스트 모드(문제가 일부에 한정된 경우) 또는 전체 롤백

롤아웃 단계에서 문제가 발생하면 롤아웃을 일시 중지하고, 해당 단계에 명시된 롤백 옵션을 사용하고, 문제를 해결한 다음, 다음 단계로 넘어가기 전에 같은 단계를 반복하세요.

5.5 모니터링 및 최적화#

Calls가 가동되면 처음 2주 동안 적극적으로 모니터링하고 관찰한 내용에 따라 조정하세요.

5.5.1: 통화 피크 시간대의 서버 상태 확인

피크 사용 시간대에는 미디어 서버(RTCD 또는 Mattermost 서버)의 CPU와 메모리를 매일 모니터링하세요. CPU 사용률이 지속적으로 70%를 초과하면 다음 롤아웃 단계 전에 하드웨어 사양을 높이거나 RTCD 노드를 추가하는 것을 고려하세요.

5.5.2: 로그 매일 검토

매일 Mattermost, RTCD, calls-offloader 로그에서 반복되는 ERROR 또는 WARN 줄이 있는지 확인하세요. 사용자에게 영향을 주는 문제로 번지기 전에 패턴을 해결하세요.

5.5.3: 최대 통화 참가자 수 조정

대규모 통화 중에 리소스 부족이 보이면 System Console > Plugins > Calls에서 최대 통화 참가자 수를 낮추세요. 기본적으로 참가자 제한은 없습니다(0으로 구성되며, 무제한을 의미합니다). 대부분의 배포에서 현실적인 상한선은 50입니다.

5.5.4: 사용자가 보고한 문제 추적

~calls-support에서 반복되는 불만 사항을 모니터링하세요.

일반적인 문제와 해결 방법은 부록 A: 문제 해결에서 확인하세요.


부록 A: 문제 해결#

A.1 통화 버튼이 보이지 않습니다#

원인 해결 방법
Calls 플러그인이 비활성화되어 있습니다 System Console > Plugins > Plugin Management로 이동하여 Calls를 활성화합니다
배포가 테스트 모드입니다 System Console > Plugins > Calls > Settings로 이동하여 배포 상태를 확인합니다 - 테스트 모드에서는 시스템 관리자가 특정 채널에서 Calls를 활성화해야 합니다
해당 채널에서 Calls가 활성화되어 있지 않습니다 테스트 모드가 활성화된 경우 채널 메뉴를 열고 통화 활성화를 선택합니다
사용자가 오래된 클라이언트를 사용하고 있습니다 사용자에게 최신 Mattermost 데스크톱 또는 모바일 앱으로 업데이트하도록 안내합니다

A.2 통화는 시작되지만 오디오가 작동하지 않습니다#

원인 해결 방법
UDP 8443이 차단되어 있습니다 1단계의 UDP 연결 검사(검사 1.6.1 또는 1.6.3)를 반복하고 방화벽 규칙이 적용되었는지 확인합니다
TCP 8443도 차단되어 있어 대체 연결이 실패하고 있습니다 TCP 검사(1.6.2 또는 1.6.4)를 반복합니다 - 클라이언트에는 미디어 서비스로 가는 경로가 최소 하나 필요합니다
잘못된 미디어 주소가 알려지고 있습니다 2A단계(통합)의 ICE Host Override 또는 2B단계(RTCD)의 rtcd.toml에 있는 ice_host_override를 다시 확인합니다 - 해당 주소는 클라이언트가 접속할 수 있어야 합니다
브라우저 또는 데스크톱 마이크 권한이 거부되었습니다 사용자에게 브라우저 또는 OS의 마이크 권한을 확인하고 앱을 다시 불러오도록 안내합니다

A.3 원격 사용자가 네트워크 외부에서 참여할 수 없습니다#

원인 해결 방법
외부 방화벽 규칙이 UDP 8443을 차단하고 있습니다 미디어 서버의 UDP 8443에 외부에서 접속할 수 있는지 확인합니다 - 클라우드 보안 그룹과 온프레미스 방화벽 모두 인터넷에서 들어오는 인바운드 트래픽을 허용해야 합니다
알려지는 미디어 주소가 프라이빗 IP입니다 ICE Host Override(통합) 또는 rtcd.toml의 ice_host_override를 올바른 공인 IP로 설정하거나 STUN(1.3.1)을 사용합니다
클라이언트 네트워크가 직접 UDP 또는 TCP 연결을 허용하지 않을 만큼 제한적입니다 TURN 서버를 배포하고 ICE 서버 구성에 추가합니다

A.4 녹화, 전사 또는 자막이 실패합니다#

원인 해결 방법
calls-offloader가 실행 중이지 않습니다 Mattermost 서버에서 nmap -p 4545 YOUR_OFFLOADER_SERVER를 실행합니다 - 결과가 closed이면 서비스가 실행 중이지 않은 것이므로 systemd 서비스 로그를 확인합니다
Mattermost가 작업 서비스 URL에 접속할 수 없습니다 Mattermost 서버에서 curl http://YOUR_OFFLOADER_SERVER:4545/version을 실행하여 버전 문자열을 반환하는지 확인합니다
offloader 서비스 계정이 Docker를 사용할 수 없습니다 calls-offloader 서버에서 서비스 계정이 docker 그룹에 속해 있는지 확인합니다