matterbridge
bridge between mattermost, IRC, gitter, xmpp, slack, discord, telegram, rocketchat, twitch, ssh-chat, zulip, whatsapp, keybase, matrix, microsoft teams, nextcloud, mumble, vk and more with REST API (mattermost not required!)
Top Related Projects
Mattermost is an open source platform for secure collaboration across the entire software development lifecycle..
Dockerized GitLab
The communications platform that puts data protection first.
A glossy Matrix collaboration client for the web.
Quick Overview
Matterbridge is an open-source bridge between various chat platforms. It allows users to connect multiple messaging services, enabling cross-platform communication. Matterbridge supports a wide range of chat protocols and services, making it a versatile tool for integrating different communication channels.
Pros
- Supports a large number of chat platforms and protocols
- Highly configurable with a flexible TOML-based configuration
- Active development and community support
- Can be run as a standalone binary or in a Docker container
Cons
- Setup can be complex, especially for multiple bridges
- Some features may require additional configuration or plugins
- Performance may degrade with a large number of connected bridges
- Limited built-in web interface for management
Getting Started
- Download the latest release from the GitHub repository.
- Create a configuration file named
matterbridge.toml
in the same directory as the binary. - Configure the bridges you want to use in the TOML file. Here's a basic example connecting IRC and Mattermost:
[irc]
[irc.freenode]
Server="irc.freenode.net:6667"
Nick="matterbot"
[mattermost]
[mattermost.myserver]
Server="https://mattermost.example.com"
Team="myteam"
Login="matterbot@example.com"
Password="password"
[[gateway]]
name="mygateway"
enable=true
[[gateway.inout]]
account="irc.freenode"
channel="#mychannel"
[[gateway.inout]]
account="mattermost.myserver"
channel="mychannel"
- Run the Matterbridge binary:
./matterbridge -conf matterbridge.toml
For more detailed instructions and advanced configurations, refer to the project's documentation on GitHub.
Competitor Comparisons
Mattermost is an open source platform for secure collaboration across the entire software development lifecycle..
Pros of Mattermost
- Full-featured, self-hosted team collaboration platform
- Extensive customization and integration options
- Active development with regular updates and enterprise support
Cons of Mattermost
- More complex setup and maintenance
- Higher resource requirements for hosting
- Steeper learning curve for administrators
Code Comparison
Matterbridge (Go):
func (b *Bbridge) handleMatter() {
for message := range b.msteam.Messages() {
// Process and relay messages
}
}
Mattermost (Go):
func (a *App) CreatePostAsUser(post *model.Post, currentSessionId string) (*model.Post, *model.AppError) {
// Create and process posts
}
Matterbridge is focused on bridging different chat platforms, with simpler message handling code. Mattermost has more complex functionality for managing posts within its own platform.
Matterbridge is a lightweight solution for connecting multiple chat services, while Mattermost is a comprehensive team collaboration platform. Matterbridge is easier to set up and requires fewer resources, but Mattermost offers more features and customization options. Choose Matterbridge for simple cross-platform chat bridging, and Mattermost for a full-fledged team communication solution with advanced features and integrations.
Dockerized GitLab
Pros of docker-gitlab
- Provides a complete GitLab solution in a Docker container, offering easier deployment and management
- Includes built-in backup and restore functionality for GitLab data
- Offers extensive configuration options through environment variables
Cons of docker-gitlab
- Larger resource footprint due to running a full GitLab instance
- More complex setup and maintenance compared to simpler chat bridge solutions
- Limited to GitLab-specific functionality, not designed for cross-platform communication
Code Comparison
Matterbridge (config.toml):
[mattermost]
[mattermost.team1]
Server="https://mattermost.example.com"
Team="team1"
Login="matterbridge@example.com"
Password="password"
PrefixMessagesWithNick=true
docker-gitlab (docker-compose.yml):
gitlab:
image: sameersbn/gitlab:latest
environment:
- GITLAB_HOST=gitlab.example.com
- GITLAB_PORT=443
- GITLAB_SSH_PORT=22
- GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
While Matterbridge focuses on bridging multiple chat platforms, docker-gitlab provides a containerized GitLab instance. Matterbridge's configuration is simpler, centered around connecting different chat services. docker-gitlab's setup involves more complex Docker configurations and environment variables to customize the GitLab instance.
The communications platform that puts data protection first.
Pros of Rocket.Chat
- Full-featured chat platform with a wide range of built-in functionality
- Scalable solution suitable for large organizations
- Active development with frequent updates and new features
Cons of Rocket.Chat
- More complex setup and maintenance compared to Matterbridge
- Higher resource requirements for hosting and running the platform
- Steeper learning curve for administrators and users
Code Comparison
Rocket.Chat (JavaScript):
Meteor.startup(() => {
RocketChat.settings.add('Site_Url', '', {
type: 'string',
group: 'General',
public: true
});
});
Matterbridge (Go):
func (b *Matterbridge) Connect() error {
for _, gateway := range b.Gateways {
err := gateway.Connect()
if err != nil {
return err
}
}
return nil
}
Summary
Rocket.Chat is a comprehensive chat platform with extensive features, while Matterbridge focuses on bridging different chat protocols. Rocket.Chat offers a more complete solution but requires more resources and setup, whereas Matterbridge is lighter and easier to configure for specific bridging needs. The code examples highlight the different approaches: Rocket.Chat uses Meteor for settings, while Matterbridge employs Go for connecting gateways.
A glossy Matrix collaboration client for the web.
Pros of Element Web
- Provides a full-featured web client for Matrix, offering a rich user interface and extensive functionality
- Supports end-to-end encryption, enhancing privacy and security for users
- Actively maintained with frequent updates and a large community of contributors
Cons of Element Web
- Limited to Matrix protocol, lacking support for other chat platforms
- Requires more resources to run and maintain compared to lightweight bridges
- Steeper learning curve for users unfamiliar with Matrix ecosystem
Code Comparison
Element Web (React component):
export default class MessageComposer extends React.Component {
onInputStateChanged = (inputState) => {
// Handle input state changes
};
render() {
return (
<SendMessageComposer
ref={this.composerRef}
room={this.props.room}
onInputStateChanged={this.onInputStateChanged}
/>
);
}
}
Matterbridge (Go function):
func (b *Mattermost) handleMatter() {
for message := range b.mch {
// Process incoming messages
b.handleMatterMessage(message)
}
}
The code snippets highlight the different approaches: Element Web uses React for its UI components, while Matterbridge focuses on message handling in Go.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
matterbridge
A simple chat bridge
Letting people be where they want to be.
Bridges between a growing number of protocols. Click below to demo or join the development chat.
Discord | Gitter | IRC | Keybase | Matrix | Mattermost | MSTeams | Rocket.Chat | Slack | Telegram | Twitch | WhatsApp | XMPP | Zulip | And more...
Note: Mattermost isn't required to run matterbridge.
Table of Contents
- matterbridge
- Table of Contents
Features
- Support bridging between any protocols
- Support multiple gateways(bridges) for your protocols
- Message edits and deletes
- Preserves threading when possible
- Attachment / files handling
- Username and avatar spoofing
- Private groups
- API
Natively supported
- Discord
- Gitter
- Harmony
- IRC
- Keybase
- Matrix
- Mattermost
- Microsoft Teams
- Mumble
- Nextcloud Talk
- Rocket.chat
- Slack
- Ssh-chat
Steam- Not supported anymore, see here for more info.
- Telegram
- Twitch
- VK
- WhatsApp
- Whatsapp legacy is natively supported
- Whatsapp multidevice beta is natively supported but you need to build yourself, see here
- XMPP
- Zulip
3rd party via matterbridge api
Past 3rd party projects
- Discourse
- Facebook messenger
- Facebook messenger
- Minecraft
- MatterAMXX: Counter-Strike, half-life and more
- Vintage Story
- Ultima Online Emulator
- Teamspeak
API
The API is basic at the moment. More info and examples on the wiki.
Used by the projects below. Feel free to make a PR to add your project to this list.
- MatterLink (Matterbridge link for Minecraft Forge server chat, archived)
- MatterCraft (Matterbridge link for Minecraft Forge server chat)
- MatterBukkit (Matterbridge link for Minecraft Bukkit/Spigot server chat)
- pyCord (crossplatform chatbot)
- Mattereddit (Reddit chat support)
- fbridge-asyncio (Facebook messenger support)
- fbridge (Facebook messenger support)
- matterbabble (Discourse support)
- MatterAMXX (Counter-Strike, half-life and more via AMXX mod)
- Vintage Story
- ServUO-matterbridge (A matterbridge connector for ServUO servers)
- ts-matterbridge (Integrate teamspeak chat with matterbridge)
- beerchat (Matterbridge link for minetest)
Chat with us
Questions or want to test on your favorite platform? Join below:
- Discord
- Gitter
- IRC
- Keybase
- Matrix
- Mattermost
- Rocket.Chat
- Slack
- Telegram
- Twitch
- XMPP (matterbridge@conference.jabber.de)
- Zulip
Screenshots
See https://github.com/42wim/matterbridge/wiki
Installing / upgrading
Binaries
- Latest stable release v1.26.0
- Development releases (follows master) can be downloaded here selecting the latest green build and then artifacts.
To install or upgrade just download the latest binary. On *nix platforms you may need to make the binary executable - you can do this by running chmod a+x
on the binary (example: chmod a+x matterbridge-1.24.1-linux-64bit
). After downloading (and making the binary executable, if necessary), follow the instructions on the howto for a step by step walkthrough for creating your configuration.
Packages
Building
Most people just want to use binaries, you can find those here
If you really want to build from source, follow these instructions: Go 1.18+ is required. Make sure you have Go properly installed.
Building the binary with all the bridges enabled needs about 3GB RAM to compile.
You can reduce this memory requirement to 0,5GB RAM by adding the nomsteams
tag if you don't need/use the Microsoft Teams bridge.
Matterbridge can be build without gcc/c-compiler: If you're running on windows first run set CGO_ENABLED=0
on other platforms you prepend CGO_ENABLED=0
to the go build
command. (eg CGO_ENABLED=0 go install github.com/42wim/matterbridge
)
To install the latest stable run:
go install github.com/42wim/matterbridge
To install the latest dev run:
go install github.com/42wim/matterbridge@master
To install the latest stable run without msteams or zulip bridge:
go install -tags nomsteams,nozulip github.com/42wim/matterbridge
You should now have matterbridge binary in the ~/go/bin directory:
$ ls ~/go/bin/
matterbridge
Building with whatsapp (beta) multidevice support
Because the library we use for Whatsapp multidevice support includes a GPL3 library we can not provide you binaries. (as this would require the Matterbridge to change it license to GPL)
Matterbridge can be build without gcc/c-compiler: If you're running on windows first run set CGO_ENABLED=0
on other platforms you prepend CGO_ENABLED=0
to the go build
command. (eg CGO_ENABLED=0 go install github.com/42wim/matterbridge
)
So this means you have to build it yourself using the instructions below:
go install -tags whatsappmulti github.com/42wim/matterbridge@master
If you're low on memory and don't need msteams:
go install -tags nomsteams,whatsappmulti github.com/42wim/matterbridge@master
You should now have matterbridge binary in the ~/go/bin directory:
$ ls ~/go/bin/
matterbridge
Configuration
Basic configuration
See howto for a step by step walkthrough for creating your configuration.
Settings
All possible settings for each bridge.
Advanced configuration
- matterbridge.toml.sample for documentation and an example.
Examples
Bridge mattermost (off-topic) - irc (#testing)
[irc]
[irc.libera]
Server="irc.libera.chat:6667"
Nick="yourbotname"
[mattermost]
[mattermost.work]
Server="yourmattermostserver.tld"
Team="yourteam"
Login="yourlogin"
Password="yourpass"
PrefixMessagesWithNick=true
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "
[[gateway]]
name="mygateway"
enable=true
[[gateway.inout]]
account="irc.libera"
channel="#testing"
[[gateway.inout]]
account="mattermost.work"
channel="off-topic"
Bridge slack (#general) - discord (general)
[slack]
[slack.test]
Token="yourslacktoken"
PrefixMessagesWithNick=true
[discord]
[discord.test]
Token="yourdiscordtoken"
Server="yourdiscordservername"
[general]
RemoteNickFormat="[{PROTOCOL}/{BRIDGE}] <{NICK}> "
[[gateway]]
name = "mygateway"
enable=true
[[gateway.inout]]
account = "discord.test"
channel="general"
[[gateway.inout]]
account ="slack.test"
channel = "general"
Running
See howto for a step by step walkthrough for creating your configuration.
Usage of ./matterbridge:
-conf string
config file (default "matterbridge.toml")
-debug
enable debug
-gops
enable gops agent
-version
show version
Docker
Please take a look at the Docker Wiki page for more information.
Systemd
Please take a look at the Service Files page for more information.
Changelog
See changelog.md
FAQ
See FAQ
Related projects
- jwflory/ansible-role-matterbridge (Ansible role to simplify deploying Matterbridge)
- matterbridge autoconfig
- matterbridge config viewer
- matterbridge-heroku
- mattereddit
- matterlink
- mattermost-plugin - Run matterbridge as a plugin in mattermost
- pyCord (crossplatform chatbot)
- fbridge (Facebook messenger support)
- isla (Bot for Discord-Telegram groups used alongside matterbridge)
- matterbabble (Connect Discourse threads to Matterbridge)
- nextcloud talk (Integrates matterbridge in Nextcloud Talk)
- mattercraft (Minecraft bridge)
- vs-matterbridge (Vintage Story bridge)
- ServUO-matterbridge (A matterbridge connector for ServUO servers)
- ts-matterbridge (Integrate teamspeak chat with matterbridge)
Articles / Tutorials
- matterbridge on kubernetes
- https://mattermost.com/blog/connect-irc-to-mattermost/
- https://blog.valvin.fr/2016/09/17/mattermost-et-un-channel-irc-cest-possible/
- https://blog.brightscout.com/top-10-mattermost-integrations/
- https://www.algoo.fr/blog/2018/01/19/recouvrez-votre-liberte-en-quittant-slack-pour-un-mattermost-auto-heberge/
- https://kopano.com/blog/matterbridge-bridging-mattermost-chat/
- https://www.stitcher.com/s/?eid=52382713
- https://daniele.tech/2019/02/how-to-use-matterbridge-to-connect-2-different-slack-workspaces/
- https://userlinux.net/mattermost-and-matterbridge.html
- https://nextcloud.com/blog/bridging-chat-services-in-talk/
- https://minecraftchest1.wordpress.com/2021/06/05/how-to-install-and-setup-matterbridge/
- Youtube: whatsapp - telegram bridging
Thanks
This project is supported by:
Matterbridge wouldn't exist without these libraries:
- discord - https://github.com/bwmarrin/discordgo
- echo - https://github.com/labstack/echo
- gops - https://github.com/google/gops
- gozulipbot - https://github.com/ifo/gozulipbot
- gumble - https://github.com/layeh/gumble
- harmony - https://github.com/harmony-development/shibshib
- irc - https://github.com/lrstanley/girc
- keybase - https://github.com/keybase/go-keybase-chat-bot
- matrix - https://github.com/matrix-org/gomatrix
- mattermost - https://github.com/mattermost/mattermost-server
- msgraph.go - https://github.com/yaegashi/msgraph.go
- mumble - https://github.com/layeh/gumble
- nctalk - https://github.com/gary-kim/go-nc-talk
- rocketchat - https://github.com/RocketChat/Rocket.Chat.Go.SDK
- slack - https://github.com/nlopes/slack
- sshchat - https://github.com/shazow/ssh-chat
- steam - https://github.com/Philipp15b/go-steam
- telegram - https://github.com/go-telegram-bot-api/telegram-bot-api
- tengo - https://github.com/d5/tengo
- vk - https://github.com/SevereCloud/vksdk
- whatsapp - https://github.com/Rhymen/go-whatsapp
- whatsapp - https://github.com/tulir/whatsmeow
- xmpp - https://github.com/mattn/go-xmpp
- zulip - https://github.com/ifo/gozulipbot
Top Related Projects
Mattermost is an open source platform for secure collaboration across the entire software development lifecycle..
Dockerized GitLab
The communications platform that puts data protection first.
A glossy Matrix collaboration client for the web.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot