Vanish-risk mirror of dennisklappe/mattermore (Mattermost fork used in our deployment; AGPL-3.0) https://mattermore.dev/
  • Astro 40.5%
  • CSS 22.2%
  • TypeScript 18.2%
  • Shell 12.8%
  • Dockerfile 3.2%
  • Other 3.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Dennis Klappe ccccf4a2a5
Generate release notes for each release (#44) (#45)
Enables GitHub generated release notes on the Calls plugin release, so
each release lists what changed since the previous tag. Fixes #44.
2026-11-08 13:58:51 +01:00
.github Generate release notes for each release (#44) (#45) 2026-11-08 13:58:51 +01:00
brand Settle on one Mattermore mark (#13) 2026-09-09 00:14:12 +02:00
config Stop shipping a plugin that refuses to run, and watch the live services (#21) 2026-09-12 12:10:59 +02:00
patches Bump server to v12.1.0 (#43) 2026-11-07 00:11:07 +01:00
scripts Add the real server release test checklist (#36) 2026-10-15 12:17:49 +02:00
site Bump Calls to v1.12.6 (#38) 2026-10-17 07:18:21 +02:00
worker Collect addresses for release mail (#9) 2026-09-09 00:13:25 +02:00
.env.example Make recording work without a console visit (#10) 2026-09-09 00:13:33 +02:00
.gitignore Add the mattermore.dev site 2026-09-08 12:33:41 +02:00
CLAUDE.md Fail pull requests that carry a Claude co-author trailer (#32) 2026-10-13 16:06:59 +02:00
compose.yaml Make recording work without a console visit (#10) 2026-09-09 00:13:33 +02:00
Containerfile Bump server to v12.0.0 and Calls to v1.12.5 (#35) 2026-10-15 11:09:56 +02:00
CONTRIBUTING.md Add the real server release test checklist (#36) 2026-10-15 12:17:49 +02:00
LICENSE Add project documentation and CI 2026-09-08 15:28:55 +02:00
NOTICE.md Add project documentation and CI 2026-09-08 15:28:55 +02:00
README.md Bump server to v12.0.0 and Calls to v1.12.5 (#35) 2026-10-15 11:09:56 +02:00
upstream.env Bump server to v12.1.0 (#43) 2026-11-07 00:11:07 +01:00

Mattermore

Mattermost, but more.

Licence AGPL-3.0 Latest release Build

A fork of Mattermost that turns the paywalled features back on.

Website  ·  Docs  ·  Install  ·  Releases


What is "more"?

On a self-hosted server, no paid licence Mattermost free Mattermore
One-to-one audio calls, screen sharing Yes Yes
Group audio calls in any channel Needs Professional Yes
Group video calls Direct messages only Not in the current release, being ported
Call recording Needs Enterprise Yes
Transcription, on your own hardware Needs Enterprise Yes
Single sign-on with any OIDC provider Needs Professional Yes
Guest accounts Needs Professional Yes
Users on one server 250, by licence Whatever your hardware handles
Message history 10,000 on Entry All of it

Install

Run the image and everything above is already on:

docker run -d --name mattermost \
  -e MM_SQLSETTINGS_DRIVERNAME=postgres \
  -e MM_SQLSETTINGS_DATASOURCE="postgres://..." \
  -e MM_SERVICESETTINGS_SITEURL="https://chat.example.com" \
  -p 8065:8065 -p 8443:8443/udp -p 8443:8443/tcp \
  ghcr.io/dennisklappe/mattermore:latest

Already running Mattermost and would rather not replace it? Set MM_CALLS_GROUP_CALLS_ALLOWED=true and upload the calls plugin from Releases. That covers everything call-related and takes two minutes.

Full instructions: mattermore.dev/install.

How it works

Three mechanisms, all documented rather than hidden.

Upstream ships some of the switches itself. Group calls are gated by one function that also reads an environment variable Mattermost added:

func (e *LicenseChecker) GroupCallsAllowed() bool {
    return e.isAtLeastProfessionalLicensed() ||
        os.Getenv("MM_CALLS_GROUP_CALLS_ALLOWED") == "true"
}

Where nothing exists, we write it. Single sign-on was not a check to remove: Mattermost keeps its OpenID Connect provider in a private module, so Team Edition has no implementation and answers logins with a 501. So Mattermore contributes one, implementing Mattermost's own four-method interface. It is our code, under the AGPL, with discovery, standard claims, enforced https and identity taken from the userinfo response rather than an unverified token.

Patches, not a diverged branch. Every change is a patch file applied to a pinned upstream tag, one per restriction. Picking up an upstream security fix means bumping one line in upstream.env. If a patch stops applying on a new release it is dropped for that release and everything else still ships.

Licensing

AGPL-3.0, the same licence as the code this builds on.

Mattermore changes AGPL code only. It does not modify anything under the Mattermost Source Available Licence, and it goes further than that: upstream's server/enterprise package is compiled into the calls plugin, so a bundle built from an unmodified tree would redistribute Source Available code. patches/calls/0001 replaces it with an independent AGPL implementation, so it is no longer in the dependency graph at all.

go list -deps ./server/ | grep -c server/enterprise   # 0

Some restrictions are deliberately left alone. LDAP, SAML and the dedicated Google and Office365 providers are gated in AGPL code, but their implementations live in Mattermost's private module. Removing those checks would produce a menu item that fails at runtime, not a working feature.

See NOTICE.md and mattermore.dev/licensing.

Building it yourself

Needs Go, Node 20+, and podman or docker.

./scripts/build-calls.sh     # the plugin bundle
./scripts/build-server.sh    # the server binary
./scripts/build-image.sh     # both, as a container image

upstream.env pins every upstream tag. patches/README.md explains the series and the rules they follow.

Be fair to Mattermost

They wrote this software and open sourced it. If your organisation can afford Professional, buying it funds the upstream work that makes a fork like this possible at all.

Not affiliated with, endorsed by, or supported by Mattermost, Inc. "Mattermost" is their trademark, used here only to describe compatibility.