Skip to content

Repository files navigation

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 Yes
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.

About

Mattermost, but more. A fork that turns the paywalled features back on: group calls, group video, recording, local transcription, single sign-on, guest accounts and no user limit. AGPL-3.0.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages