mautrix / signal

A Matrix-Signal puppeting bridge
GNU Affero General Public License v3.0
514 stars 75 forks source link

Inconsistent login #563

Closed Surferlul closed 1 month ago

Surferlul commented 1 month ago

Login is Inconsistent at best, failing to log in most of the time. I'm running mautrix-signal in docker (v0.7.1, upgraded to v0.7.2 but it didn't fix the issue) I'm running synapse in docker I'm running an ipv6 only server. The connection from synapse to the bridge is ipv4 because python-hyperlink ipv6 support is broken Sometimes it works semi-consistently

The error the signal bot gives me:

Failed to start login: failed to WebSocket dial: failed to send handshake request: Get "https://chat.signal.org/v1/websocket/provisioning/": context deadline exceeded

from inside the mautrix-signal container i can consistently ping chat.signal.org with ping -6 chat.signal.org, ping chat.signal.org gives me the error "bad address" because i sent an NXDOMAIN response

Sometimes I also get the error

Login failed: failed to WebSocket dial: failed to send handshake request: Get "https://chat.signal.org/v1/websocket/": read tcp [MAUTRIX:SIGNAL:IPV6]:48882->[2600:9000:a507:ab6d:4ce3:2f58:25d7:9cbf]:443: read: connection reset by peer

Sometimes the qr code generates, but after scanning it failes to log in

All of these errors take time, e.g. I wait 1-5min and then it gives the error (i did not measure the time)

creating a container on a new database with different double puppeting seems to somewhat fix the errors. I haven't tested it over a longer period of time, only a few logins though, so it might also have been luck.

At some point, because of these errors and the observation that a new instance seemed to work better, I completely reset the database, the bridge data and the puppets and the data synapse stored about the puppets. This did not fix the issue. It worked a bit better, but still inconsistently.

Mautrix-signal is behind coredns which dropps all "A" dns requests. I already got the error before it was behind this dns though.

When the login works, every step is instant (generating the qr code, login in after scanning etc.). The long wait times only come up in the step that it fails at

other mautrix-bridges like mautrix-whatsapp, mautrix-telegram and mautrix-gmessages seem to work without an issue

debug logs (starting at my message, ending at the message from the signal bot

mautrix-signal  | 2024-10-16T14:46:32.72Z DBG Starting handling of transaction content={"pdu":1,"unstable_edu":0,"unstable_to_device":0} transaction_id=191335
mautrix-signal  | 2024-10-16T14:46:32.72Z DBG Finished dispatching events from transaction transaction_id=191335
mautrix-signal  | 2024-10-16T14:46:32.721Z DBG Decrypting received event event_id=$vDuuoqwqsy1dc5tmINF0gx2T9cC4ffC_7Cj4dthkdrc session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw
mautrix-signal  | 2024-10-16T14:46:32.729Z DBG Upserting megolm inbound group session account_id= action="decrypt megolm event" event_id=$vDuuoqwqsy1dc5tmINF0gx2T9cC4ffC_7Cj4dthkdrc is_scheduled=false key_backup_version= max_age=604800000 max_messages=100 received_at=2024-10-16T14:20:42.123677Z room_id=!CJRjUpCmgPTVSZiPwv:my-matrix-domain.com sender=@my-matrix-username:my-matrix-domain.com sender_key=NgPGkpxlzB9U7RYUMThS/K6uqygMOZSTYABCWQbgL2Y session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw signing_key=K/SO+B9aRgdjjLyHCPHh4L67HeZeyqOo5wxXmZiwkME
mautrix-signal  | 2024-10-16T14:46:32.733Z DBG Ratchet safety data changed (ratchet state didn't change) action="decrypt megolm event" event_id=$vDuuoqwqsy1dc5tmINF0gx2T9cC4ffC_7Cj4dthkdrc lost_indices=[] max_messages=100 missed_indices=[0,1,2,3,4,5,6] new_ratchet_index=0 next_new_index=8 prev_ratchet_index=0 sender=@my-matrix-username:my-matrix-domain.com sender_key=NgPGkpxlzB9U7RYUMThS/K6uqygMOZSTYABCWQbgL2Y session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw
mautrix-signal  | 2024-10-16T14:46:32.741Z DBG Event decrypted successfully action="decrypt megolm event" decrypted_event_type="m.room.message (message)" event_id=$vDuuoqwqsy1dc5tmINF0gx2T9cC4ffC_7Cj4dthkdrc message_index=7 sender=@my-matrix-username:my-matrix-domain.com sender_key=NgPGkpxlzB9U7RYUMThS/K6uqygMOZSTYABCWQbgL2Y session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw
mautrix-signal  | 2024-10-16T14:46:32.744Z DBG Received command event_id=$vDuuoqwqsy1dc5tmINF0gx2T9cC4ffC_7Cj4dthkdrc mx_command=login session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw
mautrix-signal  | 2024-10-16T14:46:48.885Z DBG Request completed as_user_id=@signalbot:my-matrix-domain.com duration=30012.126939 method=GET req_id=320 response_length=213 response_mime=application/json status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/client/v3/sync?filter=0&since=s86420_132434_3014_83981_29041_12_19808_903_0_4&timeout=30000&user_id=%40signalbot%3Amy-matrix-domain.com
mautrix-signal  | 2024-10-16T14:46:48.89Z TRC Starting sync response handling component=crypto since=s86420_132434_3014_83981_29041_12_19808_903_0_4
mautrix-signal  | 2024-10-16T14:46:48.89Z TRC Successfully handled sync response component=crypto since=s86420_132434_3014_83981_29041_12_19808_903_0_4
mautrix-signal  | 2024-10-16T14:47:02.734Z WRN Handling event in appservice transaction channel is taking long event_id=$vDuuoqwqsy1dc5tmINF0gx2T9cC4ffC_7Cj4dthkdrc event_type=m.room.encrypted
mautrix-signal  | 2024-10-16T14:47:02.743Z WRN Handling event in appservice transaction channel is taking long event_id=$vDuuoqwqsy1dc5tmINF0gx2T9cC4ffC_7Cj4dthkdrc event_type=m.room.message
mautrix-signal  | 2024-10-16T14:47:18.904Z DBG Request completed as_user_id=@signalbot:my-matrix-domain.com duration=30013.058502 method=GET req_id=321 response_length=213 response_mime=application/json status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/client/v3/sync?filter=0&since=s86421_132440_3014_83981_29042_12_19808_903_0_4&timeout=30000&user_id=%40signalbot%3Amy-matrix-domain.com
mautrix-signal  | 2024-10-16T14:47:18.907Z TRC Starting sync response handling component=crypto since=s86421_132440_3014_83981_29042_12_19808_903_0_4
mautrix-signal  | 2024-10-16T14:47:18.907Z TRC Successfully handled sync response component=crypto since=s86421_132440_3014_83981_29042_12_19808_903_0_4
mautrix-signal  | 2024-10-16T14:47:48.921Z DBG Request completed as_user_id=@signalbot:my-matrix-domain.com duration=30013.214206 method=GET req_id=322 response_length=213 response_mime=application/json status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/client/v3/sync?filter=0&since=s86421_132440_3014_83981_29043_12_19808_903_0_4&timeout=30000&user_id=%40signalbot%3Amy-matrix-domain.com
mautrix-signal  | 2024-10-16T14:47:48.925Z TRC Starting sync response handling component=crypto since=s86421_132440_3014_83981_29043_12_19808_903_0_4
mautrix-signal  | 2024-10-16T14:47:48.925Z TRC Successfully handled sync response component=crypto since=s86421_132440_3014_83981_29043_12_19808_903_0_4
mautrix-signal  | 2024-10-16T14:48:18.939Z DBG Request completed as_user_id=@signalbot:my-matrix-domain.com duration=30012.330199 method=GET req_id=323 response_length=213 response_mime=application/json status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/client/v3/sync?filter=0&since=s86421_132440_3014_83981_29043_12_19808_903_0_4&timeout=30000&user_id=%40signalbot%3Amy-matrix-domain.com
mautrix-signal  | 2024-10-16T14:48:18.942Z TRC Starting sync response handling component=crypto since=s86421_132440_3014_83981_29043_12_19808_903_0_4
mautrix-signal  | 2024-10-16T14:48:18.943Z TRC Successfully handled sync response component=crypto since=s86421_132440_3014_83981_29043_12_19808_903_0_4
mautrix-signal  | 2024-10-16T14:48:32.746Z ERR error opening provisioning websocket error="failed to WebSocket dial: failed to send handshake request: Get \"https://chat.signal.org/v1/websocket/provisioning/\": context deadline exceeded" action="perform provisioning" resp=null user_id=@my-matrix-username:my-matrix-domain.com
mautrix-signal  | 2024-10-16T14:48:32.752Z TRC Encrypting event... event_id=$vDuuoqwqsy1dc5tmINF0gx2T9cC4ffC_7Cj4dthkdrc event_type=m.room.message expected_index=17 mx_command=login room_id=!CJRjUpCmgPTVSZiPwv:my-matrix-domain.com session_id=fHrWVnFeGSnYoyL9aSFAnmj0dBiZYCPVUpMVCHmF/5E state_key=null
mautrix-signal  | 2024-10-16T14:48:32.753Z DBG Encrypted event successfully event_id=$vDuuoqwqsy1dc5tmINF0gx2T9cC4ffC_7Cj4dthkdrc event_type=m.room.message expected_index=17 message_index=17 mx_command=login room_id=!CJRjUpCmgPTVSZiPwv:my-matrix-domain.com session_id=fHrWVnFeGSnYoyL9aSFAnmj0dBiZYCPVUpMVCHmF/5E state_key=null
mautrix-signal  | 2024-10-16T14:48:32.951Z DBG Request completed duration=192.115796 event_id=$vDuuoqwqsy1dc5tmINF0gx2T9cC4ffC_7Cj4dthkdrc method=PUT mx_command=login req_body={"algorithm":"m.megolm.v1.aes-sha2","ciphertext":"AwgREqAEIyhtyrbsVNGoMQcszhuJ34kbQXqN537Ta/ys8RHp7LL0bu3XsNI/UQ3fHHEEGqp/Z5Be6P9v2Q+PIYj3Z9YwDbhcm2dglEQrZ6bQxFZAg/+Sgxa2uRfG7kzmedgNl7ap8lIdkVfX/HrZGtQyxLKuIdKoKmDyzGEqss5Wfl9OdJIoS1bz9hq2RjGFUj4A4AwRiC+X+gStVvHHks6yqCQtE8F4ZCFxB+ykZBE7wSI2ws/Z2y8CijSnRBUdSZfy+9vNqNHuPt5aSU/zCzKilwR6HIHa9zFkM6hIq6dEdVUhU/5kbAUlXM4Ux9BNRAOP3D5ybWt881skRqeh3LR/Rn13/6RX/8JyFIA2NrMq9vpSe0TqY15rKTWCvr3LZBxxE4FUgohauj4tM4xxOgCDuLSePz8kjxPbNOXN+inKFkNpozpNZrK7g0aF9EwtJFM+QeNAlmCGL2tQcIGCr/jBOCqf61Zbkd2kZygPd4CR8gZ/M5QY0H4PEg9WMqd7d1nRIRLtPAliWE2fjfzuo6PlZxeuFNpyJpVGxsUsZQBR958ShXLPRs9RjjSOgdCpR6olXx9a60cJaN8Kbe7xSh+bRifG8vTAuTwnK7bP76oYci+iRk0mh44s/AOjkAP38J/dw8fQO4S5roNbjpb0vho42aNJoBb+3V1c8/yX/uAl0yz6opbmV8e2OIessttCkKCocsCxB5y1bstt7enoJ6LMMFfpRhSFRVXIkjvbR3P2iRr6rCeLJpbTT/mUlIIeJUZ10KKroiLQThVogNW16fcms4eBAQh9QDp+hS/8ZeMTfXxqu/q9GxdR6WMqDQ","device_id":"TKTSMTWJEQ","sender_key":"/8X8lCBcEfbkCfupduV1/gP+BFhjLHvOYxBIIlfCbkE","session_id":"fHrWVnFeGSnYoyL9aSFAnmj0dBiZYCPVUpMVCHmF/5E"} req_id=325 response_length=59 response_mime=application/json session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/client/v3/rooms/%21CJRjUpCmgPTVSZiPwv:my-matrix-domain.com/send/m.room.encrypted/mautrix-go_1729090112758342331_17?user_id=%40signalbot%3Amy-matrix-domain.com
mautrix-signal  | 2024-10-16T14:48:32.98Z DBG Starting handling of transaction content={"pdu":1,"unstable_edu":0,"unstable_to_device":0} transaction_id=191338
mautrix-signal  | 2024-10-16T14:48:32.98Z DBG Finished dispatching events from transaction transaction_id=191338
mautrix-signal  | 2024-10-16T14:48:33.005Z DBG Request completed duration=52.874126 event_id=$vDuuoqwqsy1dc5tmINF0gx2T9cC4ffC_7Cj4dthkdrc method=POST mx_command=login req_body={} req_id=326 response_length=2 response_mime=application/json session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/client/v3/rooms/%21CJRjUpCmgPTVSZiPwv:my-matrix-domain.com/receipt/m.read/$vDuuoqwqsy1dc5tmINF0gx2T9cC4ffC_7Cj4dthkdrc?user_id=%40signalbot%3Amy-matrix-domain.com
mautrix-signal  | 2024-10-16T14:48:33.035Z DBG Starting handling of transaction content={"pdu":0,"unstable_edu":1,"unstable_to_device":0} transaction_id=191339

bridge config

# Network-specific config options
network:
    # Displayname template for Signal users.
    # {{.ProfileName}} - The Signal profile name set by the user.
    # {{.ContactName}} - The name for the user from your phone's contact list. This is not safe on multi-user instances.
    # {{.PhoneNumber}} - The phone number of the user.
    # {{.UUID}} - The UUID of the Signal user.
    # {{.AboutEmoji}} - The emoji set by the user in their profile.
    displayname_template: '{{or .ProfileName .PhoneNumber "Unknown user"}} (SG)'
    # Should avatars from the user's contact list be used? This is not safe on multi-user instances.
    use_contact_avatars: true
    # Should the bridge request the user's contact list from the phone on startup?
    sync_contacts_on_startup: true
    # Should the bridge sync ghost user info even if profile fetching fails? This is not safe on multi-user instances.
    use_outdated_profiles: false
    # Should the Signal user's phone number be included in the room topic in private chat portal rooms?
    number_in_topic: true
    # Default device name that shows up in the Signal app.
    device_name: mautrix-signal
    # Avatar image for the Note to Self room.
    note_to_self_avatar: mxc://maunium.net/REBIVrqjZwmaWpssCZpBlmlL
    # Format for generating URLs from location messages for sending to Signal.
    # Google Maps: 'https://www.google.com/maps/place/%[1]s,%[2]s'
    # OpenStreetMap: 'https://www.openstreetmap.org/?mlat=%[1]s&mlon=%[2]s'
    location_format: 'https://www.google.com/maps/place/%[1]s,%[2]s'

# Config options that affect the central bridge module.
bridge:
    # The prefix for commands. Only required in non-management rooms.
    command_prefix: '!sg'
    # Should the bridge create a space for each login containing the rooms that account is in?
    personal_filtering_spaces: true
    # Whether the bridge should set names and avatars explicitly for DM portals.
    # This is only necessary when using clients that don't support MSC4171.
    private_chat_portal_meta: false
    # Should events be handled asynchronously within portal rooms?
    # If true, events may end up being out of order, but slow events won't block other ones.
    # This is not yet safe to use.
    async_events: false
    # Should every user have their own portals rather than sharing them?
    # By default, users who are in the same group on the remote network will be
    # in the same Matrix room bridged to that group. If this is set to true,
    # every user will get their own Matrix room instead.
    split_portals: false
    # Should the bridge resend `m.bridge` events to all portals on startup?
    resend_bridge_info: true

    # Should leaving Matrix rooms be bridged as leaving groups on the remote network?
    bridge_matrix_leave: false
    # Should room tags only be synced when creating the portal? Tags mean things like favorite/pin and archive/low priority.
    # Tags currently can't be synced back to the remote network, so a continuous sync means tagging from Matrix will be undone.
    tag_only_on_create: true
    # Should room mute status only be synced when creating the portal?
    # Like tags, mutes can't currently be synced back to the remote network.
    mute_only_on_create: true

    # What should be done to portal rooms when a user logs out or is logged out?
    # Permitted values:
    #   nothing - Do nothing, let the user stay in the portals
    #   kick - Remove the user from the portal rooms, but don't delete them
    #   unbridge - Remove all ghosts in the room and disassociate it from the remote chat
    #   delete - Remove all ghosts and users from the room (i.e. delete it)
    cleanup_on_logout:
        # Should cleanup on logout be enabled at all?
        enabled: true
        # Settings for manual logouts (explicitly initiated by the Matrix user)
        manual:
            # Action for private portals which will never be shared with other Matrix users.
            private: delete
            # Action for portals with a relay user configured.
            relayed: nothing
            # Action for portals which may be shared, but don't currently have any other Matrix users.
            shared_no_users: nothing
            # Action for portals which have other logged-in Matrix users.
            shared_has_users: nothing
        # Settings for credentials being invalidated (initiated by the remote network, possibly through user action).
        # Keys have the same meanings as in the manual section.
        bad_credentials:
            private: nothing
            relayed: nothing
            shared_no_users: nothing
            shared_has_users: nothing

    # Settings for relay mode
    relay:
        # Whether relay mode should be allowed. If allowed, the set-relay command can be used to turn any
        # authenticated user into a relaybot for that chat.
        enabled: true
        # Should only admins be allowed to set themselves as relay users?
        # If true, non-admins can only set users listed in default_relays as relays in a room.
        admin_only: false
        # List of user login IDs which anyone can set as a relay, as long as the relay user is in the room.
        default_relays: []
        # The formats to use when sending messages via the relaybot.
        # Available variables:
        #   .Sender.UserID - The Matrix user ID of the sender.
        #   .Sender.Displayname - The display name of the sender (if set).
        #   .Sender.RequiresDisambiguation - Whether the sender's name may be confused with the name of another user in the room.
        #   .Sender.DisambiguatedName - The disambiguated name of the sender. This will be the displayname if set,
        #                               plus the user ID in parentheses if the displayname is not unique.
        #                               If the displayname is not set, this is just the user ID.
        #   .Message - The `formatted_body` field of the message.
        #   .Caption - The `formatted_body` field of the message, if it's a caption. Otherwise an empty string.
        #   .FileName - The name of the file being sent.
        message_formats:
            m.text: "<b>{{ .Sender.DisambiguatedName }}</b>: {{ .Message }}"
            m.notice: "<b>{{ .Sender.DisambiguatedName }}</b>: {{ .Message }}"
            m.emote: "* <b>{{ .Sender.DisambiguatedName }}</b> {{ .Message }}"
            m.file: "<b>{{ .Sender.DisambiguatedName }}</b> sent a file{{ if .Caption }}: {{ .Caption }}{{ end }}"
            m.image: "<b>{{ .Sender.DisambiguatedName }}</b> sent an image{{ if .Caption }}: {{ .Caption }}{{ end }}"
            m.audio: "<b>{{ .Sender.DisambiguatedName }}</b> sent an audio file{{ if .Caption }}: {{ .Caption }}{{ end }}"
            m.video: "<b>{{ .Sender.DisambiguatedName }}</b> sent a video{{ if .Caption }}: {{ .Caption }}{{ end }}"
            m.location: "<b>{{ .Sender.DisambiguatedName }}</b> sent a location{{ if .Caption }}: {{ .Caption }}{{ end }}"
        # For networks that support per-message displaynames (i.e. Slack and Discord), the template for those names.
        # This has all the Sender variables available under message_formats (but without the .Sender prefix).
        # Note that you need to manually remove the displayname from message_formats above.
        displayname_format: "{{ .DisambiguatedName }}"

    # Permissions for using the bridge.
    # Permitted values:
    #    relay - Talk through the relaybot (if enabled), no access otherwise
    # commands - Access to use commands in the bridge, but not login.
    #     user - Access to use the bridge with puppeting.
    #    admin - Full access, user level with some additional administration tools.
    # Permitted keys:
    #        * - All Matrix users
    #   domain - All users on that homeserver
    #     mxid - Specific user
    permissions:
        "*": relay
        my-domain.com: user
        "@admin:my-domain.com": admin

# Config for the bridge's database.
database:
    # The database type. "sqlite3-fk-wal" and "postgres" are supported.
    type: postgres
    # The database URI.
    #   SQLite: A raw file path is supported, but `file:<path>?_txlock=immediate` is recommended.
    #           https://github.com/mattn/go-sqlite3#connection-string
    #   Postgres: Connection string. For example, postgres://user:password@host/database?sslmode=disable
    #             To connect via Unix socket, use something like postgres:///dbname?host=/var/run/postgresql
    uri: postgres://postgres-credentials@[POSTGRES:IPV6]:5432/mautrix-signal?sslmode=disable
    # Maximum number of connections.
    max_open_conns: 5
    max_idle_conns: 1
    # Maximum connection idle time and lifetime before they're closed. Disabled if null.
    # Parsed with https://pkg.go.dev/time#ParseDuration
    max_conn_idle_time: null
    max_conn_lifetime: null

# Homeserver details.
homeserver:
    # The address that this appservice can use to connect to the homeserver.
    # Local addresses without HTTPS are generally recommended when the bridge is running on the same machine,
    # but https also works if they run on different machines.
    address: http://[SYNAPSE:IPV6]:8008
    # The domain of the homeserver (also known as server_name, used for MXIDs, etc).
    domain: my-domain.com

    # What software is the homeserver running?
    # Standard Matrix homeservers like Synapse, Dendrite and Conduit should just use "standard" here.
    software: standard
    # The URL to push real-time bridge status to.
    # If set, the bridge will make POST requests to this URL whenever a user's remote network connection state changes.
    # The bridge will use the appservice as_token to authorize requests.
    status_endpoint:
    # Endpoint for reporting per-message status.
    # If set, the bridge will make POST requests to this URL when processing a message from Matrix.
    # It will make one request when receiving the message (step BRIDGE), one after decrypting if applicable
    # (step DECRYPTED) and one after sending to the remote network (step REMOTE). Errors will also be reported.
    # The bridge will use the appservice as_token to authorize requests.
    message_send_checkpoint_endpoint:
    # Does the homeserver support https://github.com/matrix-org/matrix-spec-proposals/pull/2246?
    async_media: true

    # Should the bridge use a websocket for connecting to the homeserver?
    # The server side is currently not documented anywhere and is only implemented by mautrix-wsproxy,
    # mautrix-asmux (deprecated), and hungryserv (proprietary).
    websocket: false
    # How often should the websocket be pinged? Pinging will be disabled if this is zero.
    ping_interval_seconds: 0

# Application service host/registration related details.
# Changing these values requires regeneration of the registration (except when noted otherwise)
appservice:
    # The address that the homeserver can use to connect to this appservice.
    # Like the homeserver address, a local non-https address is recommended when the bridge is on the same machine.
    # If the bridge is elsewhere, you must secure the connection yourself (e.g. with https or wireguard)
    # If you want to use https, you need to use a reverse proxy. The bridge does not have TLS support built in.
    address: http://signalbot-ipv4:29328
    # A public address that external services can use to reach this appservice.
    # This is only needed for things like public media. A reverse proxy is generally necessary when using this field.
    # This value doesn't affect the registration file.
    public_address:

    # The hostname and port where this appservice should listen.
    # For Docker, you generally have to change the hostname to 0.0.0.0.
    hostname: 0.0.0.0
    port: 29328

    # The unique ID of this appservice.
    id: signal
    # Appservice bot details.
    bot:
        # Username of the appservice bot.
        username: signalbot
        # Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty
        # to leave display name/avatar as-is.
        displayname: Signal bridge bot
        avatar: mxc://maunium.net/wPJgTQbZOtpBFmDNkiNEMDUp

    # Whether to receive ephemeral events via appservice transactions.
    ephemeral_events: true
    # Should incoming events be handled asynchronously?
    # This may be necessary for large public instances with lots of messages going through.
    # However, messages will not be guaranteed to be bridged in the same order they were sent in.
    # This value doesn't affect the registration file.
    async_transactions: false

    # Authentication tokens for AS <-> HS communication. Autogenerated; do not modify.
    as_token: generated_as_token
    hs_token: generated_hs_token

    # Localpart template of MXIDs for remote users.
    # {{.}} is replaced with the internal ID of the user.
    username_template: signal_{{.}}

# Config options that affect the Matrix connector of the bridge.
matrix:
    # Whether the bridge should send the message status as a custom com.beeper.message_send_status event.
    message_status_events: false
    # Whether the bridge should send a read receipt after successfully bridging a message.
    delivery_receipts: true
    # Whether the bridge should send error notices via m.notice events when a message fails to bridge.
    message_error_notices: true
    # Whether the bridge should update the m.direct account data event when double puppeting is enabled.
    sync_direct_chat_list: false
    # Whether created rooms should have federation enabled. If false, created portal rooms
    # will never be federated. Changing this option requires recreating rooms.
    federate_rooms: true
    # The threshold as bytes after which the bridge should roundtrip uploads via the disk
    # rather than keeping the whole file in memory.
    upload_file_threshold: 5242880

# Segment-compatible analytics endpoint for tracking some events, like provisioning API login and encryption errors.
analytics:
    # API key to send with tracking requests. Tracking is disabled if this is null.
    token: null
    # Address to send tracking requests to.
    url: https://api.segment.io/v1/track
    # Optional user ID for tracking events. If null, defaults to using Matrix user ID.
    user_id: null

# Settings for provisioning API
provisioning:
    # Prefix for the provisioning API paths.
    prefix: /_matrix/provision
    # Shared secret for authentication. If set to "generate" or null, a random secret will be generated,
    # or if set to "disable", the provisioning API will be disabled.
    shared_secret: generated_shared_secret
    # Whether to allow provisioning API requests to be authed using Matrix access tokens.
    # This follows the same rules as double puppeting to determine which server to contact to check the token,
    # which means that by default, it only works for users on the same server as the bridge.
    allow_matrix_auth: true
    # Enable debug API at /debug with provisioning authentication.
    debug_endpoints: false

# Some networks require publicly accessible media download links (e.g. for user avatars when using Discord webhooks).
# These settings control whether the bridge will provide such public media access.
public_media:
    # Should public media be enabled at all?
    # The public_address field under the appservice section MUST be set when enabling public media.
    enabled: false
    # A key for signing public media URLs.
    # If set to "generate", a random key will be generated.
    signing_key: generated_signing_key
    # Number of seconds that public media URLs are valid for.
    # If set to 0, URLs will never expire.
    expiry: 0
    # Length of hash to use for public media URLs. Must be between 0 and 32.
    hash_length: 32

# Settings for converting remote media to custom mxc:// URIs instead of reuploading.
# More details can be found at https://docs.mau.fi/bridges/go/discord/direct-media.html
direct_media:
    # Should custom mxc:// URIs be used instead of reuploading media?
    enabled: false
    # The server name to use for the custom mxc:// URIs.
    # This server name will effectively be a real Matrix server, it just won't implement anything other than media.
    # You must either set up .well-known delegation from this domain to the bridge, or proxy the domain directly to the bridge.
    server_name: discord-media.example.com
    # Optionally a custom .well-known response. This defaults to `server_name:443`
    well_known_response:
    # Optionally specify a custom prefix for the media ID part of the MXC URI.
    media_id_prefix:
    # If the remote network supports media downloads over HTTP, then the bridge will use MSC3860/MSC3916
    # media download redirects if the requester supports it. Optionally, you can force redirects
    # and not allow proxying at all by setting this to false.
    # This option does nothing if the remote network does not support media downloads over HTTP.
    allow_proxy: true
    # Matrix server signing key to make the federation tester pass, same format as synapse's .signing.key file.
    # This key is also used to sign the mxc:// URIs to ensure only the bridge can generate them.
    server_key: signing_key

# Settings for backfilling messages.
# Note that the exact way settings are applied depends on the network connector.
# See https://docs.mau.fi/bridges/general/backfill.html for more details.
backfill:
    # Whether to do backfilling at all.
    enabled: false
    # Maximum number of messages to backfill in empty rooms.
    max_initial_messages: 50
    # Maximum number of missed messages to backfill after bridge restarts.
    max_catchup_messages: 500
    # If a backfilled chat is older than this number of hours,
    # mark it as read even if it's unread on the remote network.
    unread_hours_threshold: 720
    # Settings for backfilling threads within other backfills.
    threads:
        # Maximum number of messages to backfill in a new thread.
        max_initial_messages: 50
    # Settings for the backwards backfill queue. This only applies when connecting to
    # Beeper as standard Matrix servers don't support inserting messages into history.
    queue:
        # Should the backfill queue be enabled?
        enabled: false
        # Number of messages to backfill in one batch.
        batch_size: 100
        # Delay between batches in seconds.
        batch_delay: 20
        # Maximum number of batches to backfill per portal.
        # If set to -1, all available messages will be backfilled.
        max_batches: -1
        # Optional network-specific overrides for max batches.
        # Interpretation of this field depends on the network connector.
        max_batches_override: {}

# Settings for enabling double puppeting
double_puppet:
    # Servers to always allow double puppeting from.
    # This is only for other servers and should NOT contain the server the bridge is on.
    servers:
        anotherserver.example.org: https://matrix.anotherserver.example.org
    # Whether to allow client API URL discovery for other servers. When using this option,
    # users on other servers can use double puppeting even if their server URLs aren't
    # explicitly added to the servers map above.
    allow_discovery: false
    # Shared secrets for automatic double puppeting.
    # See https://docs.mau.fi/bridges/general/double-puppeting.html for instructions.
    secrets:
        my-domain.com: as_token:double_puppet_as_token

# End-to-bridge encryption support options.
#
# See https://docs.mau.fi/bridges/general/end-to-bridge-encryption.html for more info.
encryption:
    # Whether to enable encryption at all. If false, the bridge will not function in encrypted rooms.
    allow: true
    # Whether to force-enable encryption in all bridged rooms.
    default: true
    # Whether to require all messages to be encrypted and drop any unencrypted messages.
    require: true
    # Whether to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data.
    # This option is not yet compatible with standard Matrix servers like Synapse and should not be used.
    appservice: false
    # Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled.
    # You must use a client that supports requesting keys from other users to use this feature.
    allow_key_sharing: true
    # Pickle key for encrypting encryption keys in the bridge database.
    # If set to generate, a random key will be generated.
    pickle_key: generated_pickle_key
    # Options for deleting megolm sessions from the bridge.
    delete_keys:
        # Beeper-specific: delete outbound sessions when hungryserv confirms
        # that the user has uploaded the key to key backup.
        delete_outbound_on_ack: false
        # Don't store outbound sessions in the inbound table.
        dont_store_outbound: false
        # Ratchet megolm sessions forward after decrypting messages.
        ratchet_on_decrypt: false
        # Delete fully used keys (index >= max_messages) after decrypting messages.
        delete_fully_used_on_decrypt: false
        # Delete previous megolm sessions from same device when receiving a new one.
        delete_prev_on_new_session: false
        # Delete megolm sessions received from a device when the device is deleted.
        delete_on_device_delete: false
        # Periodically delete megolm sessions when 2x max_age has passed since receiving the session.
        periodically_delete_expired: false
        # Delete inbound megolm sessions that don't have the received_at field used for
        # automatic ratcheting and expired session deletion. This is meant as a migration
        # to delete old keys prior to the bridge update.
        delete_outdated_inbound: false
    # What level of device verification should be required from users?
    #
    # Valid levels:
    #   unverified - Send keys to all device in the room.
    #   cross-signed-untrusted - Require valid cross-signing, but trust all cross-signing keys.
    #   cross-signed-tofu - Require valid cross-signing, trust cross-signing keys on first use (and reject changes).
    #   cross-signed-verified - Require valid cross-signing, plus a valid user signature from the bridge bot.
    #                           Note that creating user signatures from the bridge bot is not currently possible.
    #   verified - Require manual per-device verification
    #              (currently only possible by modifying the `trust` column in the `crypto_device` database table).
    verification_levels:
        # Minimum level for which the bridge should send keys to when bridging messages from the remote network to Matrix.
        receive: cross-signed-tofu
        # Minimum level that the bridge should accept for incoming Matrix messages.
        send: cross-signed-tofu
        # Minimum level that the bridge should require for accepting key requests.
        share: cross-signed-tofu
    # Options for Megolm room key rotation. These options allow you to configure the m.room.encryption event content.
    # See https://spec.matrix.org/v1.10/client-server-api/#mroomencryption for more information about that event.
    rotation:
        # Enable custom Megolm room key rotation settings. Note that these
        # settings will only apply to rooms created after this option is set.
        enable_custom: false
        # The maximum number of milliseconds a session should be used
        # before changing it. The Matrix spec recommends 604800000 (a week)
        # as the default.
        milliseconds: 604800000
        # The maximum number of messages that should be sent with a given a
        # session before changing it. The Matrix spec recommends 100 as the
        # default.
        messages: 100
        # Disable rotating keys when a user's devices change?
        # You should not enable this option unless you understand all the implications.
        disable_device_change_key_rotation: false

# Logging config. See https://github.com/tulir/zeroconfig for details.
logging:
    min_level: trace
    writers:
        - type: stdout
          format: pretty-colored
        - type: file
          format: json
          filename: ./logs/bridge.log
          max_size: 100
          max_backups: 10
          compress: false
Surferlul commented 1 month ago

As a sanity check, I tried it without the DNS that drops requests for ipv4 addresses. This time it got to the qr and had an error after I scanned it. The fact that it got further is not an indication that the DNS is a problem, since it would sometimes get further with the DNS enabled (and sometimes successfully log in).

Behavior: after scanning the qr code it takes some time, then it gives the following error:

Login failed: failed to WebSocket dial: failed to send handshake request: Get "https://chat.signal.org/v1/websocket/": read tcp [MAUTRIX:SIGNAL:IPV6]:36768->[2600:9000:a61f:527c:d5eb:a431:5239:3232]:443: read: connection reset by peer

debug logs:

mautrix-signal  | 2024-10-16T16:01:58.063Z DBG Starting handling of transaction content={"pdu":0,"unstable_edu":1,"unstable_to_device":0} transaction_id=191585
mautrix-signal  | 2024-10-16T16:01:58.064Z DBG Finished dispatching events from transaction transaction_id=191585
mautrix-signal  | 2024-10-16T16:02:00.723Z DBG Starting handling of transaction content={"pdu":0,"unstable_edu":1,"unstable_to_device":0} transaction_id=191586
mautrix-signal  | 2024-10-16T16:02:00.724Z DBG Finished dispatching events from transaction transaction_id=191586
mautrix-signal  | 2024-10-16T16:02:00.975Z DBG Starting handling of transaction content={"pdu":1,"unstable_edu":0,"unstable_to_device":0} transaction_id=191587
mautrix-signal  | 2024-10-16T16:02:00.975Z DBG Finished dispatching events from transaction transaction_id=191587
mautrix-signal  | 2024-10-16T16:02:00.976Z DBG Decrypting received event event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw
mautrix-signal  | 2024-10-16T16:02:00.988Z DBG Upserting megolm inbound group session account_id= action="decrypt megolm event" event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U is_scheduled=false key_backup_version= max_age=604800000 max_messages=100 received_at=2024-10-16T14:20:42.123677Z room_id=!CJRjUpCmgPTVSZiPwv:my-domain.com sender=@my-username:my-domain.com sender_key=NgPGkpxlzB9U7RYUMThS/K6uqygMOZSTYABCWQbgL2Y session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw signing_key=K/SO+B9aRgdjjLyHCPHh4L67HeZeyqOo5wxXmZiwkME
mautrix-signal  | 2024-10-16T16:02:00.991Z DBG Ratchet safety data changed (ratchet state didn't change) action="decrypt megolm event" event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U lost_indices=[] max_messages=100 missed_indices=[0,1,2,3,4,5,6,7,8] new_ratchet_index=0 next_new_index=10 prev_ratchet_index=0 sender=@my-username:my-domain.com sender_key=NgPGkpxlzB9U7RYUMThS/K6uqygMOZSTYABCWQbgL2Y session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw
mautrix-signal  | 2024-10-16T16:02:01.031Z DBG Request completed action="decrypt megolm event" duration=27.871025 event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U method=POST req_body={"device_keys":{"@signalbot:my-domain.com":[]}} req_id=13 response_length=620 response_mime=application/json sender=@my-username:my-domain.com sender_key=NgPGkpxlzB9U7RYUMThS/K6uqygMOZSTYABCWQbgL2Y session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/client/v3/keys/query?user_id=%40signalbot%3Amy-domain.com
mautrix-signal  | 2024-10-16T16:02:01.032Z DBG Event decrypted successfully action="decrypt megolm event" decrypted_event_type="m.room.message (message)" event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U message_index=9 sender=@my-username:my-domain.com sender_key=NgPGkpxlzB9U7RYUMThS/K6uqygMOZSTYABCWQbgL2Y session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw
mautrix-signal  | 2024-10-16T16:02:01.04Z DBG Received command event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U mx_command=login session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw
mautrix-signal  | 2024-10-16T16:02:01.448Z TRC Encrypting event... event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U event_type=m.room.message expected_index=19 mx_command=login room_id=!CJRjUpCmgPTVSZiPwv:my-domain.com session_id=fHrWVnFeGSnYoyL9aSFAnmj0dBiZYCPVUpMVCHmF/5E state_key=null
mautrix-signal  | 2024-10-16T16:02:01.448Z DBG Encrypted event successfully event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U event_type=m.room.message expected_index=19 message_index=19 mx_command=login room_id=!CJRjUpCmgPTVSZiPwv:my-domain.com session_id=fHrWVnFeGSnYoyL9aSFAnmj0dBiZYCPVUpMVCHmF/5E state_key=null
mautrix-signal  | 2024-10-16T16:02:01.608Z DBG Request completed duration=148.397199 event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U method=PUT mx_command=login req_body={"algorithm":"m.megolm.v1.aes-sha2","ciphertext":"AwgTEsABcr+YequBI+BghTiuf0t4KKuT9elaV086SrUCDWt8b580HsidIVqN9qwxSZzvTk4cmpCwZBv7rx19jtoh7HlUcR5mhFfp0psfsl9U/zjdoBd/q9m0i6O5ISbKRqLM/IllEuvUaD5v/MeYkHFlhXjY2xSUzC/M+iYnpt8iQYnSNRGBv/GhAofoGcU3JjhPATimWHK8em6+DCLI3Dr/3zPVBjDYjERuuoupjRn0zxU+3i1qW8BD1nxY5HjSHUjKFLC6J9fsbcmLneJ0rGR1ZzoEmKKe3U3X/q2lrXNuqVXlfVojPacrS3F6wOhpErVIFTpFP+VQP9znrz5lDvi8VFtCixP9ddfWzO0D","device_id":"TKTSMTWJEQ","sender_key":"/8X8lCBcEfbkCfupduV1/gP+BFhjLHvOYxBIIlfCbkE","session_id":"fHrWVnFeGSnYoyL9aSFAnmj0dBiZYCPVUpMVCHmF/5E"} req_id=14 response_length=59 response_mime=application/json session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/client/v3/rooms/%21CJRjUpCmgPTVSZiPwv:my-domain.com/send/m.room.encrypted/mautrix-go_1729094521459125782_2?user_id=%40signalbot%3Amy-domain.com
mautrix-signal  | 2024-10-16T16:02:01.657Z DBG Starting handling of transaction content={"pdu":1,"unstable_edu":0,"unstable_to_device":0} transaction_id=191590
mautrix-signal  | 2024-10-16T16:02:01.657Z DBG Finished dispatching events from transaction transaction_id=191590
mautrix-signal  | 2024-10-16T16:02:01.674Z DBG Request completed duration=41.892364 event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U method=POST mx_command=login req_body={} req_id=15 response_length=97 response_mime=application/json session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/media/v1/create?user_id=%40signalbot%3Amy-domain.com
mautrix-signal  | 2024-10-16T16:02:01.68Z TRC Encrypting event... event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U event_type=m.room.message expected_index=20 mx_command=login room_id=!CJRjUpCmgPTVSZiPwv:my-domain.com session_id=fHrWVnFeGSnYoyL9aSFAnmj0dBiZYCPVUpMVCHmF/5E state_key=null
mautrix-signal  | 2024-10-16T16:02:01.681Z DBG Encrypted event successfully event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U event_type=m.room.message expected_index=20 message_index=20 mx_command=login room_id=!CJRjUpCmgPTVSZiPwv:my-domain.com session_id=fHrWVnFeGSnYoyL9aSFAnmj0dBiZYCPVUpMVCHmF/5E state_key=null
mautrix-signal  | 2024-10-16T16:02:01.716Z DBG Request completed duration=40.910452 event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U method=PUT mx_command=login req_body="<1038 bytes>" req_id=16 response_length=2 response_mime=application/json session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/media/v3/upload/my-domain.com/nybpkGQwDbIjyOEAUqyhmvyT?user_id=%40signalbot%3Amy-domain.com
mautrix-signal  | 2024-10-16T16:02:01.884Z DBG Request completed duration=197.016773 event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U method=PUT mx_command=login req_body={"algorithm":"m.megolm.v1.aes-sha2","ciphertext":"AwgUEpAGTqSQaxNTJj7Nr0IwRx7Y8PB15CJOvkWtYsxwMeQt/1L5Z48quIVzm2YVrvmjbW2KSIvsRato8aNExrE5QVk7XGOHekwj8sb01d44N06CEoaia0DfPe9YosAPDvFQzBbPfm4/rSt+nxlL6nqpNZ534uZ43XM9aITqZR5K2+34K2prbCyEsY2sUyae9s35NEFZJuC08NLGs0bsPrjZL4KaCAGTIuGBl3VNlhMDwoTm0OBIKlemFPAatzSwnlr+J4+BPVLHbFiZ4w/tKQ6OA6EVbS2pT9pKOR7Ur+khoh6qY3Qzaorynz+8LsvO4JFUznCqs+PThQ64ELHHL8eKpe/SrkBHeLD/UCdn4PPOeRa5DHDzJCbh9J1QERwHTQjZpLPWdul1F3LDInw9DWNCcyI7UQFc1eNF/xeMj5OD6dVDy4AXhcpI4l4aNLmCtQ0dLRHMtCVwyK+RIUlVKYM0skfWTs1OZR/sEX4+yr/wvSDSXHf/T1+Reyvy7xaicx8MwGv4/cUbYLAVcMeukLgyAvRDfELLQbjRc8gY40G06Rb/WzPhgYCeQgsJztBDWp/R2bjkkmNTkGB/jCfAtK7Wuf80BaADbiNshHSp7HRkEM/xI9EJ2VxjItXmv2KzeQE0kdRcoW4Fh801rui39IENd/1nJa7H/SRABC24xcETESxX0fcNh86/SGsqnfDxaSTjZezcDuSvUWR6CT7DxayTUC75lpE/gGTfhRx1G7umgm/kMcpqGnYVyC6qxZHpSNtjgyWYHvTWfUWaX9z/OmvZT9w0xreRErcy1CccASY6/BAahBZmkPhRaE6tLen9izSc6HcfMV1klF3qDhSxe+t81BNBFOeKczJx+XTvmLbVZ+EBbT3uRFlZkIghqIqImXGL3TiOE7DFH+ZjLZ97DCSj5XaT+hoqubELCvHlvL9Hp8ucYyjuWojqauu53ljQB8gFosX8D66qgLmPeEDiTAkuQHQ060fDWzvahyzV3x6OlMq9RUGvJWQ1vIgoZyMQikjOJ/28hZ1bJstAXegpXTsv2JU6BXaO/dBzs/W0uCL3AlhIv+vRmBqFe/BFi6QmlRevaBXjUnflKRW0z3xMpcAYNVm4TgvGeLvlCUFo5tBfmP62M+HI/r4S/P/bAQ","device_id":"TKTSMTWJEQ","sender_key":"/8X8lCBcEfbkCfupduV1/gP+BFhjLHvOYxBIIlfCbkE","session_id":"fHrWVnFeGSnYoyL9aSFAnmj0dBiZYCPVUpMVCHmF/5E"} req_id=17 response_length=59 response_mime=application/json session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/client/v3/rooms/%21CJRjUpCmgPTVSZiPwv:my-domain.com/send/m.room.encrypted/mautrix-go_1729094521686180940_3?user_id=%40signalbot%3Amy-domain.com
mautrix-signal  | 2024-10-16T16:02:01.962Z DBG Starting handling of transaction content={"pdu":1,"unstable_edu":0,"unstable_to_device":0} transaction_id=191592
mautrix-signal  | 2024-10-16T16:02:01.963Z DBG Finished dispatching events from transaction transaction_id=191592
mautrix-signal  | 2024-10-16T16:02:02.432Z DBG Starting handling of transaction content={"pdu":0,"unstable_edu":1,"unstable_to_device":0} transaction_id=191593
mautrix-signal  | 2024-10-16T16:02:02.432Z DBG Finished dispatching events from transaction transaction_id=191593
mautrix-signal  | 2024-10-16T16:02:08.6Z DBG Request completed as_user_id=@signalbot:my-domain.com duration=30009.103363 method=GET req_id=11 response_length=213 response_mime=application/json status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/client/v3/sync?filter=0&since=s86457_132957_3088_84011_29052_12_19808_903_0_4&timeout=30000&user_id=%40signalbot%3Amy-domain.com
mautrix-signal  | 2024-10-16T16:02:08.606Z TRC Starting sync response handling component=crypto since=s86457_132957_3088_84011_29052_12_19808_903_0_4
mautrix-signal  | 2024-10-16T16:02:08.606Z TRC Successfully handled sync response component=crypto since=s86457_132957_3088_84011_29052_12_19808_903_0_4
mautrix-signal  | 2024-10-16T16:02:30.977Z WRN Handling event in appservice transaction channel is taking long event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U event_type=m.room.encrypted
mautrix-signal  | 2024-10-16T16:02:31.033Z WRN Handling event in appservice transaction channel is taking long event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U event_type=m.room.message
mautrix-signal  | 2024-10-16T16:02:38.624Z DBG Request completed as_user_id=@signalbot:my-domain.com duration=30016.802146 method=GET req_id=18 response_length=213 response_mime=application/json status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/client/v3/sync?filter=0&since=s86460_132957_3090_84012_29054_12_19808_903_0_4&timeout=30000&user_id=%40signalbot%3Amy-domain.com
mautrix-signal  | 2024-10-16T16:02:38.627Z TRC Starting sync response handling component=crypto since=s86460_132957_3090_84012_29054_12_19808_903_0_4
mautrix-signal  | 2024-10-16T16:02:38.628Z TRC Successfully handled sync response component=crypto since=s86460_132957_3090_84012_29054_12_19808_903_0_4
mautrix-signal  | 2024-10-16T16:03:03.155Z DBG Starting handling of transaction content={"pdu":0,"unstable_edu":6,"unstable_to_device":0} transaction_id=191596
mautrix-signal  | 2024-10-16T16:03:03.156Z DBG Finished dispatching events from transaction transaction_id=191596
mautrix-signal  | 2024-10-16T16:03:03.274Z DBG Starting handling of transaction content={"pdu":0,"unstable_edu":1,"unstable_to_device":0} transaction_id=191600
mautrix-signal  | 2024-10-16T16:03:03.275Z DBG Finished dispatching events from transaction transaction_id=191600
mautrix-signal  | 2024-10-16T16:03:08.641Z DBG Request completed as_user_id=@signalbot:my-domain.com duration=30012.794646 method=GET req_id=19 response_length=213 response_mime=application/json status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/client/v3/sync?filter=0&since=s86460_132957_3090_84012_29054_12_19808_903_0_4&timeout=30000&user_id=%40signalbot%3Amy-domain.com
mautrix-signal  | 2024-10-16T16:03:08.645Z TRC Starting sync response handling component=crypto since=s86460_132957_3090_84012_29054_12_19808_903_0_4
mautrix-signal  | 2024-10-16T16:03:08.646Z TRC Successfully handled sync response component=crypto since=s86460_132957_3090_84012_29054_12_19808_903_0_4
mautrix-signal  | 2024-10-16T16:03:38.66Z DBG Request completed as_user_id=@signalbot:my-domain.com duration=30013.965692 method=GET req_id=20 response_length=213 response_mime=application/json status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/client/v3/sync?filter=0&since=s86460_132965_3090_84012_29054_12_19808_903_0_4&timeout=30000&user_id=%40signalbot%3Amy-domain.com
mautrix-signal  | 2024-10-16T16:03:38.665Z TRC Starting sync response handling component=crypto since=s86460_132965_3090_84012_29054_12_19808_903_0_4
mautrix-signal  | 2024-10-16T16:03:38.666Z TRC Successfully handled sync response component=crypto since=s86460_132965_3090_84012_29054_12_19808_903_0_4
mautrix-signal  | 2024-10-16T16:04:08.679Z DBG Request completed as_user_id=@signalbot:my-domain.com duration=30012.407246 method=GET req_id=21 response_length=213 response_mime=application/json status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/client/v3/sync?filter=0&since=s86460_132965_3090_84012_29054_12_19808_903_0_4&timeout=30000&user_id=%40signalbot%3Amy-domain.com
mautrix-signal  | 2024-10-16T16:04:08.683Z TRC Starting sync response handling component=crypto since=s86460_132965_3090_84012_29054_12_19808_903_0_4
mautrix-signal  | 2024-10-16T16:04:08.684Z TRC Successfully handled sync response component=crypto since=s86460_132965_3090_84012_29054_12_19808_903_0_4
mautrix-signal  | 2024-10-16T16:04:38.696Z DBG Request completed as_user_id=@signalbot:my-domain.com duration=30011.58234 method=GET req_id=22 response_length=213 response_mime=application/json status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/client/v3/sync?filter=0&since=s86461_132973_3092_84013_29054_12_19808_903_0_4&timeout=30000&user_id=%40signalbot%3Amy-domain.com
mautrix-signal  | 2024-10-16T16:04:38.7Z TRC Starting sync response handling component=crypto since=s86461_132973_3092_84013_29054_12_19808_903_0_4
mautrix-signal  | 2024-10-16T16:04:38.701Z TRC Successfully handled sync response component=crypto since=s86461_132973_3092_84013_29054_12_19808_903_0_4
mautrix-signal  | 2024-10-16T16:04:38.764Z ERR error opening websocket error="failed to WebSocket dial: failed to send handshake request: Get \"https://chat.signal.org/v1/websocket/\": read tcp [MAUTRIX:SIGNAL:IPV6]:36768->[2600:9000:a61f:527c:d5eb:a431:5239:3232]:443: read: connection reset by peer" action="confirm device" resp=null user_id=@my-username:my-domain.com
mautrix-signal  | 2024-10-16T16:04:38.764Z ERR confirmDevice error error="failed to WebSocket dial: failed to send handshake request: Get \"https://chat.signal.org/v1/websocket/\": read tcp [MAUTRIX:SIGNAL:IPV6]:36768->[2600:9000:a61f:527c:d5eb:a431:5239:3232]:443: read: connection reset by peer" action="perform provisioning" user_id=@my-username:my-domain.com
mautrix-signal  | 2024-10-16T16:04:38.958Z DBG Request completed duration=189.772738 event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U method=PUT mx_command=login req_body={} req_id=24 response_length=59 response_mime=application/json session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/client/v3/rooms/%21CJRjUpCmgPTVSZiPwv:my-domain.com/redact/$TLjkLlV62bvJJiPcKs-E001s3HifyMwwTQo6NDSMbPg/mautrix-go_1729094678767964522_4?user_id=%40signalbot%3Amy-domain.com
mautrix-signal  | 2024-10-16T16:04:38.965Z TRC Encrypting event... event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U event_type=m.room.message expected_index=21 mx_command=login room_id=!CJRjUpCmgPTVSZiPwv:my-domain.com session_id=fHrWVnFeGSnYoyL9aSFAnmj0dBiZYCPVUpMVCHmF/5E state_key=null
mautrix-signal  | 2024-10-16T16:04:38.966Z DBG Encrypted event successfully event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U event_type=m.room.message expected_index=21 message_index=21 mx_command=login room_id=!CJRjUpCmgPTVSZiPwv:my-domain.com session_id=fHrWVnFeGSnYoyL9aSFAnmj0dBiZYCPVUpMVCHmF/5E state_key=null
mautrix-signal  | 2024-10-16T16:04:39.051Z DBG Starting handling of transaction content={"pdu":1,"unstable_edu":0,"unstable_to_device":0} transaction_id=191610
mautrix-signal  | 2024-10-16T16:04:39.052Z DBG Finished dispatching events from transaction transaction_id=191610
mautrix-signal  | 2024-10-16T16:04:39.226Z DBG Request completed duration=254.216607 event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U method=PUT mx_command=login req_body={"algorithm":"m.megolm.v1.aes-sha2","ciphertext":"AwgVErAFhbGel2ms2jKxiOVPfVwlBQrcEELN6ulAD5xvAqz+LwchzkZ9wVFFMY3K9NfMLFNgA5o6JY6JesM4P/F/FbsuFPi1XfUq0KtC0Mu4S+Psu+vLTzrVJbIJmUEVmwOrh9VfiyrKzLyPBXejzBkCwr3PRwcZu0z81TVslAsJ1M9n1FQQQCz11qw/dTDk57suP9l5HJs+uB+vD/BEiDnFk/Pl4+YL4TQOCQLFS74GzjP3v+J2GYjxxcr+ck6ZGueRgwMkbYUyvcaw+Go1p85IrV8dBUOL8UZMJ+T13apDC+34rP2NGYnZ4jvODCmTP8uqV60XHa5b1BIQ1YcHrXc8JLUviYflL0+nD7+gI6iIv26Ex9ptuhqgJKrLHuh0/aeGRG+FNU7VeXs4TYdDfRlbdZsQpbYuD2CklttgAZ6+GQIaJwmrOdsL4HRYs+AUlLM0yInduPpCgg82RyisD3FiE+fVh+DQJBXYeXhASAibboAMQ2nCjV7FZ2AExK6CBZkL9I15LyTrac3wpJ+Pe9/HzUFK3SL0wFkxaVowGyYkSMeAw4P7KtKedg8kYrpqbjCSs3f6SNcCnbrE4NycttdO/3IQ/Aa5BgcHZpkpwZpGgV8omn6hP6dglzhoOq1RUlK0w5kcza8IYr/IkAClgw7GrYxFMKjGP0Xv1oMxK7n2+l00IX4+L/PjtvsYdfPb1v4Mx9ibB7KW19JSV+V6kfkPbQguWkIZNjoC3qFNQv+3Vo1dA3d5aQdlsk14We94TNu1U7OwJ7Tzb434+tyY2SiyMYx+nYB7rGojl0R3SDsZ5fwXPZ6BYsDxrXGkF/hT17bkc8nxaK4QJMx8gVFxa2a1oJBxn/zMbYRmoY9nsxjNNShgJRenTJ/ES8wdlXdN7zNJYkhrm+SbJV+JWqlIpeJ7vWCTdAzT3QialkuNrsmTTW8T8fayGy6FucbqPhSaKrlsb80j6KN2m3S7znPcUfqLDZ8679pTpWl16Gz4wgprZ2AiDS3kJyKY7CCCDg","device_id":"TKTSMTWJEQ","sender_key":"/8X8lCBcEfbkCfupduV1/gP+BFhjLHvOYxBIIlfCbkE","session_id":"fHrWVnFeGSnYoyL9aSFAnmj0dBiZYCPVUpMVCHmF/5E"} req_id=25 response_length=59 response_mime=application/json session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/client/v3/rooms/%21CJRjUpCmgPTVSZiPwv:my-domain.com/send/m.room.encrypted/mautrix-go_1729094678971458235_5?user_id=%40signalbot%3Amy-domain.com
mautrix-signal  | 2024-10-16T16:04:39.26Z DBG Starting handling of transaction content={"pdu":1,"unstable_edu":0,"unstable_to_device":0} transaction_id=191611
mautrix-signal  | 2024-10-16T16:04:39.26Z DBG Finished dispatching events from transaction transaction_id=191611
mautrix-signal  | 2024-10-16T16:04:39.303Z DBG Request completed duration=75.491106 event_id=$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U method=POST mx_command=login req_body={} req_id=26 response_length=2 response_mime=application/json session_id=0fSQaU9nkabaqTaOE2J5JCHdT6xsCkZ6t3IVXIwtuBw status_code=200 url=http://[SYNAPSE:IPV6]:8008/_matrix/client/v3/rooms/%21CJRjUpCmgPTVSZiPwv:my-domain.com/receipt/m.read/$ajrFiJNM9iXsu6DRRnn0Xodi_rvUSIidwkFRe1bef-U?user_id=%40signalbot%3Amy-domain.com
mautrix-signal  | 2024-10-16T16:04:39.355Z DBG Starting handling of transaction content={"pdu":0,"unstable_edu":1,"unstable_to_device":0} transaction_id=191613
mautrix-signal  | 2024-10-16T16:04:39.356Z DBG Finished dispatching events from transaction transaction_id=191613
Surferlul commented 1 month ago

Unless this is pure luck and the mautrix-signal stops working again, this seems to have been an issue with the docker network mtu. I added this to the network configuration and now it seems to work:

networks:
  my-network:

    ...

    driver_opts:
      com.docker.network.driver.mtu: 1300

I matched the mtu to the network interface with the lowest mtu on my system.

Unless I encounter the problems again, I will close this issue