The Signal bridge requires a second docker container for signald. Instructions for setting up everything can be found on the Signal-specific Bridge setup with Docker page
- A Matrix homeserver that supports application services (e.g. Synapse)
Docker images are hosted on dock.mau.dev. Available docker tags are generally
:git commit-amd64 and
:git commit-arm64. The latest
and git tag specific docker tags are manifests that contain both amd64 and
- Create a directory for the bridge and cd into it:
mkdir mautrix-$bridge && cd mautrix-$bridge.
N.B. The docker image will
/datadirectory to UID 1337. The commands below mount the working directory as
/data, so make sure you always run them in the correct directory.
- Pull the docker image with
docker pull dock.mau.dev/mautrix/$bridge:<version>. Replace
<version>with the version you want to run (e.g.
- Run the container for the first time, so it can create a config file for you:
docker run --rm -v `pwd`:/data:z dock.mau.dev/mautrix/$bridge:<version>
- Update the config to your liking. You'll at least need to change the homeserver settings, appservice address and permissions.
- Generate the appservice registration by running the container again, same command as above.
- Add the path to the registration file to your Synapse's
app_service_config_files. Restart Synapse to apply changes.
- Run the bridge:
Additionally, you should either add the bridge to the same Docker network as Synapse with
docker run --restart unless-stopped -v `pwd`:/data:z dock.mau.dev/mautrix/$bridge:<version>
--network=synapsenet, or expose the correct port with
- Pull the new version (setup step 1)
- Start the new version (setup step 7)
- Create a directory for the bridge like step #0 in the Docker CLI instructions above.
docker-compose.ymlthat contains something like this:
version: "3.7" services: mautrix-$bridge: container_name: mautrix-$bridge image: dock.mau.dev/mautrix/$bridge:<version> restart: unless-stopped volumes: - .:/data # If synapse is running outside of docker, you'll need to expose the port. # Note that in most cases you should either run everything inside docker # or everything outside docker, rather than mixing docker things with # non-docker things. #ports: #- "$bridgeport:$bridgeport" # You'll also probably want this so the bridge can reach Synapse directly # using something like `http://host.docker.internal:8008` as the address: #extra_hosts: #- "host.docker.internal:host-gateway" # If synapse is in a different network, then add this container to that network. #networks: #- synapsenet # This is also a part of the networks thing above #networks: # synapsenet: # external: # name: synapsenet
- Follow the rest of the Docker setup, but use compose commands instead of the
docker-compose up -dto start,
docker-compose stopto stop and
docker-compose pullto update.
If you want to set it up in an existing docker-compose file instead of a new
dedicated one, simply adjust the
volumes section to mount a subdirectory
instead of the current directory as the data directory:
volumes: - ./mautrix-$bridge:/data
When you put the bridge and Synapse in the same docker-compose file, networking
should work out of the box, which means you don't need any of the commented
networks things in the example compose file.