mirror of https://github.com/mautrix/docs.git
3.6 KiB
3.6 KiB
Signal bridge setup with Docker
Requirements
- Docker
- Docker Compose, or knowledge how to read a docker-compose file and run the docker containers yourself.
- A Matrix homeserver that supports application services (e.g. Synapse)
Setup
- Create a directory for the bridge and cd into it:
mkdir mautrix-signal && cd mautrix-signal
. - Create
docker-compose.yml
that contains something like this:version: "3.7" services: mautrix-signal: container_name: mautrix-signal image: dock.mau.dev/mautrix/signal restart: unless-stopped volumes: - ./bridge:/data - ./signald:/signald depends_on: - signald # 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: #- "29328:29328" # 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. # Note the networks object at the bottom too. #networks: #- default # keep the container in the default network too so that the db container is reachable. #- synapsenet signald: container_name: signald image: docker.io/signald/signald restart: unless-stopped volumes: - ./signald:/signald db: image: postgres:13-alpine restart: unless-stopped environment: POSTGRES_USER: mautrixsignal POSTGRES_DATABASE: mautrixsignal POSTGRES_PASSWORD: foobar volumes: - ./db:/var/lib/postgresql/data # When synapse is in a different network (note the networks object in the service too): #networks: # synapsenet: # external: # name: synapsenet
- Run
docker-compose up -d signald
to start signald and make sure it doesn't crash. - Run
docker-compose up mautrix-signal
to make the bridge generate a config file for you, thendocker-compose stop mautrix-signal
so it doesn't try to keep restarting while you're fixing the config. - Update the config to your liking.
- As usual, you'll at least need to change the homeserver settings and add yourself to the permissions section.
- Only postgres is supported as the bridge database, so configure that too.
If you use the docker-compose example above directly,
use
postgres://mautrixsignal:foobar@db/mautrixsignal
as the database URI (but change the password to something else thanfoobar
). - Additionally, you need to update the paths in the
signal
section:socket_path
is/signald/signald.sock
.outgoing_attachment_dir
should be/signald/attachments
(if you can figure out how, you could even use a shared tmpfs for that directory to avoid unencrypted files being temporarily stored on disk).avatar_dir
is/signald/avatars
.
- Generate the appservice registration by running the container again, same command as above.
- Add the path to the registration file to your Synapse's
homeserver.yaml
under theapp_service_config_files
section. - Restart Synapse to apply changes.
- Run
docker-compose up -d
to start the bridge.
Upgrading
docker-compose pull
docker-compose up -d