Skip to content

Draft: Rework Calls Deployment Guide#8879

Open
esethna wants to merge 34 commits intomasterfrom
calls-deploy-v6
Open

Draft: Rework Calls Deployment Guide#8879
esethna wants to merge 34 commits intomasterfrom
calls-deploy-v6

Conversation

@esethna
Copy link
Copy Markdown
Contributor

@esethna esethna commented Apr 12, 2026

Summary

  • Reworks the Calls deployment doc from a reference-style overview into a step-by-step deployment guide for system administrators.
  • Introduces a phased deployment flow covering preparation and networking, integrated setup, RTCD setup, recording setup, pilot rollout, and production rollout.
  • Adds clearer decision guidance for deployment architecture, including when to use Integrated mode, RTCD, recording, STUN, and TURN.
  • Adds explicit port tables, network validation checks, verification gates, rollback guidance, troubleshooting, and rollout communication templates.

@esethna esethna added the Work In Progress Not yet ready for review label Apr 12, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA 9fa3794

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA 9a2ed57

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA 0d96b59

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA 4da4a85

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA be54c5a

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA 855e76e

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA 3ebb08a

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA 62030ec

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA beabac2

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA fb0154b

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA 67c50de

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA ce98172

@esethna esethna marked this pull request as ready for review April 14, 2026 23:37
Copilot AI review requested due to automatic review settings April 14, 2026 23:37
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 14, 2026

Warning

Rate limit exceeded

@esethna has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 57 minutes and 45 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 57 minutes and 45 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 8bccd4a2-cdc3-4d58-a6a6-06b64dccf048

📥 Commits

Reviewing files that changed from the base of the PR and between b7efa47 and 06952dd.

⛔ Files ignored due to path filters (4)
  • source/images/calls-deployment-integrated-recording.png is excluded by !**/*.png
  • source/images/calls-deployment-integrated.png is excluded by !**/*.png
  • source/images/calls-deployment-rtcd-recording.png is excluded by !**/*.png
  • source/images/calls-deployment-rtcd.png is excluded by !**/*.png
📒 Files selected for processing (26)
  • .cursor/rules/calls-expert-persona-bill.mdc
  • source/_static/css/homepage-v1.css
  • source/administration-guide/configure/calls-deployment-guide.md
  • source/administration-guide/configure/calls-deployment.md
  • source/administration-guide/configure/calls-kubernetes.md
  • source/administration-guide/configure/calls-logging.md
  • source/administration-guide/configure/calls-metrics-monitoring.md
  • source/administration-guide/configure/calls-offloader-setup.md
  • source/administration-guide/configure/calls-overview.rst
  • source/administration-guide/configure/calls-rtcd-setup.md
  • source/administration-guide/configure/plugins-configuration-settings.rst
  • source/conf.py
  • source/deployment-guide/deployment-guide-index.rst
  • source/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment.rst
  • source/deployment-guide/reference-architecture/deployment-scenarios/deploy-ddil-operations.rst
  • source/deployment-guide/reference-architecture/deployment-scenarios/deploy-mission-partner.rst
  • source/deployment-guide/reference-architecture/deployment-scenarios/deploy-sovereign-collaboration.rst
  • source/deployment-guide/server/linux/deploy-rhel.rst
  • source/deployment-guide/server/preparations.rst
  • source/end-user-guide/collaborate/audio-and-screensharing.rst
  • source/end-user-guide/collaborate/make-calls.rst
  • source/product-overview/certifications-and-compliance.rst
  • source/product-overview/plans.md
  • source/product-overview/product-overview-index.rst
  • source/product-overview/unsupported-legacy-releases.md
  • source/redirects.py
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch calls-deploy-v6

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@esethna esethna added the Do Not Merge Should not be merged until this label is removed label Apr 14, 2026
@esethna esethna changed the title Rework Calls Deployment Guide Draft: Rework Calls Deployment Guide Apr 14, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA 2f420ba

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Reworks the Mattermost Calls documentation from a reference-style “deployment overview” into a phased, step-by-step deployment guide, and updates site navigation/links/redirects to point to the new guide and related sub-guides.

Changes:

  • Adds a new phased “Mattermost Calls Deployment Guide” and removes the legacy Calls overview/deployment pages.
  • Updates internal docs to link to the new Calls deployment guide + RTCD/offloader/logging pages.
  • Adds redirects, MyST task list support, a new architecture image, and targeted CSS to improve table rendering in the new guide.

Reviewed changes

Copilot reviewed 25 out of 28 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
source/redirects.py Adds/updates redirects from legacy Calls URLs to the new deployment guide and logging page.
source/product-overview/unsupported-legacy-releases.md Updates a Calls highlight link (currently to a non-canonical URL).
source/product-overview/product-overview-index.rst Updates Calls deployment doc link to the new deployment guide.
source/product-overview/plans.md Updates Calls-related plan table links to the new guide/RTCD setup anchors.
source/product-overview/certifications-and-compliance.rst Updates Calls deployment doc link to the new deployment guide.
source/images/calls-deployment-rtcd-recording.png Adds a new RTCD + recording architecture diagram for the new guide.
source/end-user-guide/collaborate/make-calls.rst Updates the dedicated RTCD reference link to the new deployment guide.
source/end-user-guide/collaborate/audio-and-screensharing.rst Updates Calls deployment link to the new deployment guide.
source/deployment-guide/server/preparations.rst Removes the old “Calls overview” link from the server prep list.
source/deployment-guide/server/linux/deploy-rhel.rst Updates Calls/RTCD references to the new deployment guide and RTCD setup page.
source/deployment-guide/reference-architecture/deployment-scenarios/deploy-sovereign-collaboration.rst Updates Calls/RTCD/offloader references to the new guide structure.
source/deployment-guide/reference-architecture/deployment-scenarios/deploy-mission-partner.rst Updates Calls/RTCD/offloader references to the new guide structure.
source/deployment-guide/reference-architecture/deployment-scenarios/deploy-ddil-operations.rst Updates Calls/RTCD/offloader references to the new guide structure.
source/deployment-guide/reference-architecture/deployment-scenarios/air-gapped-deployment.rst Updates Calls references to point to the new deployment guide.
source/deployment-guide/deployment-guide-index.rst Adds the Calls deployment guide into Deployment Guide navigation.
source/conf.py Enables MyST tasklist extension to support checklists in the new guide.
source/administration-guide/configure/plugins-configuration-settings.rst Updates Calls config doc cross-links to the new deployment guide.
source/administration-guide/configure/calls-rtcd-setup.md Updates references to the new guide + logging page, and updates sizing link.
source/administration-guide/configure/calls-overview.rst Removes the legacy Calls overview landing page.
source/administration-guide/configure/calls-offloader-setup.md Updates references to the new guide + logging page.
source/administration-guide/configure/calls-metrics-monitoring.md Updates references to the new guide + logging page.
source/administration-guide/configure/calls-logging.md Renames/repurposes troubleshooting page to “Calls Logging” and fixes formatting.
source/administration-guide/configure/calls-kubernetes.md Updates references to the new guide + logging page.
source/administration-guide/configure/calls-deployment.md Removes the legacy Calls deployment overview page.
source/administration-guide/configure/calls-deployment-guide.md Adds the new phased deployment guide with checklists, port tables, gates, and templates.
source/_static/css/homepage-v1.css Adds targeted table layout CSS rules for the new deployment guide page.

Comment on lines 2348 to 2351
#### Calls
- [Audio calling and screen sharing](https://docs.mattermost.com/configure/calls-deployment.html) in channels is now generally available to all Mattermost customers.
- [Audio calling and screen sharing](https://docs.mattermost.com/configure/calls-deployment-guide.html) in channels is now generally available to all Mattermost customers.
- Updated [the keyboard shortcut](https://docs.mattermost.com/channels/keyboard-shortcuts-for-channels.html#calls-shortcuts) to start and join calls.
- Please see [the docs](https://docs.mattermost.com/configure/plugins-configuration-settings.html#calls) for additional details on configuration setting updates.
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Persona (Docs editor Evie) — Severity: Blocker

In #### Calls, the link points to https://docs.mattermost.com/configure/calls-deployment-guide.html, but this repo’s canonical URL is under /administration-guide/configure/… (and there’s no redirect entry for /configure/calls-deployment-guide.html). This will 404 in the published docs.

Also, the first bullet is missing the indentation used by the following list items, which can break list rendering/nesting.

Suggestion: change the URL to https://docs.mattermost.com/administration-guide/configure/calls-deployment-guide.html (or use an internal :doc: link), and align the bullet indentation with the other items in this section.

Copilot uses AI. Check for mistakes.
Comment thread source/administration-guide/configure/calls-deployment-guide.md
Comment on lines +92 to +93
- **Up to 50:** You can use the **Integrated** deployment mode.
- **More than 50:** You'll need to deploy an additional component called **RTCD** for handling media processing at scale.
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Persona (Novice Nate) — Severity: Friction

This reads as a hard requirement: “More than 50: You'll need … RTCD”. Elsewhere in the docs, 50 is described as a recommended maximum/baseline, not an enforced limit; phrasing this as “need” may cause admins to over-provision or assume Integrated mode is impossible above 50.

Suggestion: reword to “recommended” and briefly explain that 50 is a practical baseline tied to sizing/performance, with RTCD strongly recommended for higher concurrency/production reliability.

Suggested change
- **Up to 50:** You can use the **Integrated** deployment mode.
- **More than 50:** You'll need to deploy an additional component called **RTCD** for handling media processing at scale.
- **Up to 50:** You can typically use the **Integrated** deployment mode. This is a practical baseline for sizing and performance, not a hard limit.
- **More than 50:** **RTCD** is strongly recommended for higher concurrency and production reliability because it handles media processing at scale.

Copilot uses AI. Check for mistakes.
Comment on lines +119 to +123
- **Mattermost server**: Calls plugin is pre-installed, not additional infrastructure is needed.

**License**

- **Mattermost Entry**: 1:1 Calls + Screen Sharing
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Persona (Docs editor Evie) — Severity: Blocker

In the Integrated tab, the license section says “Mattermost Entry: 1:1 Calls + Screen Sharing”, but editions-and-offerings.rst describes Entry as having “all features of Enterprise Advanced” with a “40-minute Calls” limit (no mention of restricting to 1:1 only). This mismatch can mislead admins about what Calls capabilities Entry includes.

Suggestion: update the Entry row to reflect the documented limitation (e.g., Calls time limit) and avoid implying it’s limited to 1:1 unless that’s explicitly true in product behavior.

(Also minor: “Calls plugin is pre-installed, not additional infrastructure is needed” → “no additional infrastructure is needed”.)

Suggested change
- **Mattermost server**: Calls plugin is pre-installed, not additional infrastructure is needed.
**License**
- **Mattermost Entry**: 1:1 Calls + Screen Sharing
- **Mattermost server**: Calls plugin is pre-installed, no additional infrastructure is needed.
**License**
- **Mattermost Entry**: Calls + Screen Sharing (40-minute limit)

Copilot uses AI. Check for mistakes.
| 3478 | UDP | Outbound | RTCD server | `stun.global.calls.mattermost.com` | (Optional - Step 1.3.1) Public IP discovery using STUN. |

```{important}
If you use NGINX as a reverse proxy in front of Mattermost, note that NGINX cannot forward UDP traffic. Port 8443 must be opened directly on the server running the media service - not on NGINX. Port 443 is the only port NGINX handles for Calls.
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Persona (Veteran Vince) — Severity: Friction

The note says “NGINX cannot forward UDP traffic”. Stock NGINX used as an HTTP reverse proxy can’t proxy UDP media, but NGINX can handle UDP via the stream module in some deployments. The current wording is overly absolute.

Suggestion: clarify the scope (e.g., “NGINX in HTTP reverse-proxy mode won’t proxy UDP media; ensure 8443 reaches the media service directly unless you’ve explicitly configured a UDP-capable proxy/load balancer”).

Suggested change
If you use NGINX as a reverse proxy in front of Mattermost, note that NGINX cannot forward UDP traffic. Port 8443 must be opened directly on the server running the media service - not on NGINX. Port 443 is the only port NGINX handles for Calls.
If you use NGINX as an HTTP reverse proxy in front of Mattermost, note that it won't proxy UDP media traffic in that configuration. Port 8443 should reach the server running the media service directly, unless you've explicitly configured a UDP-capable proxy or load balancer. Port 443 is the only port NGINX handles for Calls in the standard reverse-proxy setup.

Copilot uses AI. Check for mistakes.
Comment on lines +319 to +327
When you execute each check below, `nmap` returns `open`, `closed`, or `filtered`.

**Pass**:
- `open`: Port is reachable and the service is running. Expected if you've already installed the RTCD or Recording services in Phases 3-4.
- `closed`: Port is reachable but the service is not running. Expected if you just provisioned the infrastructure in Step 1.4.

**Fail**:
- `filtered`: Firewall is blocking the port. Revisit your networking configuration in Step 1.5 before continuing.

Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Persona (Novice Nate) — Severity: Friction

The guide says UDP nmap will return only open, closed, or filtered, but UDP scans often show open|filtered (no response) even when a firewall is blocking or when the service is simply not replying. As written, readers may misinterpret results and get stuck in Phase 1.

Suggestion: mention open|filtered explicitly and how to interpret it in this context (or suggest an alternate validation method like nc -u/application-level checks once the service is running).

Copilot uses AI. Check for mistakes.
@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA c6d90dc

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA 0b53f3f

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA 123e2ec

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA 42fae25

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA 3e209ae

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA f3e9de7

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA 820d2b2

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA 7b5e793

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA e669e17

@github-actions
Copy link
Copy Markdown
Contributor

Newest code from mattermost has been published to preview environment for Git SHA 06952dd

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Do Not Merge Should not be merged until this label is removed Work In Progress Not yet ready for review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants