echo6-docs/mautrix_signal.md
echo6-autocommit a5299d09a2 auto: docs sync 2026-06-15T20:08:44+00:00
Files changed: .obsidian/workspace.json PHASE6_DECISION.md PLAN.md appservices.md archive_receiver_discovery.md archivist.md archivist_discovery.md argus.md docs/hardware/environment.md docs/services/services.md docs/software/recon.md echo6-landing-page-data-export.md hookshot_deployment_discovery.md hookshot_e2ee_discovery.md hookshot_payload_discovery.md hookshot_room_targeting_discovery.md matrix_host.md mautrix_signal.md pp_comparison.json projects/headscale-full-deployment.md projects/utility-caddy-initial-setup.md projects/vaultwarden-deployment.md runbooks/add-peertube-channel.md runbooks/authentik-oidc-application.md runbooks/proxmox-create-ubuntu-vm.md runbooks/proxmox-onboard-node.md runbooks/recon-operations.md runbooks/recon-service-integration.md scribd_session.json synapse.md synapse_retention_discovery.md
2026-06-15 20:08:44 +00:00

3.4 KiB

mautrix-signal Bridge Reference

Deployed: 2026-04-09 (Phase 3)

Updated: 2026-04-09 (Phase 5)

Deployment

  • Image: dock.mau.dev/mautrix/signal:v0.2603.0
  • Container: mautrix-signal
  • Compose: /opt/matrix/docker-compose.yml (same stack as Synapse)
  • Config dir: /opt/matrix/mautrix-signal/
  • Network: matrix-net (internal only, no host port mapping)
  • Appservice port: 29328 (container-internal)

Database

  • DB name: mautrix_signal
  • DB role: mautrix_signal (NOSUPERUSER, NOCREATEDB, NOCREATEROLE)
  • Host: matrix-postgres:5432 (same container as Synapse/MAS)
  • Collation: C/C (matches Synapse)

Signal Account

  • Phone: +12083080811
  • Login ID: 58f99d83-f3a8-487f-a2b7-3d118e236d23
  • Matrix user: @matt:echo6.co

Bot

  • MXID: @signalbot:echo6.co
  • Device ID: UPX4KKLZVY
  • Management room: !fDjIRTMjxILVQoAcEN:echo6.co

Encryption

  • E2BE: enabled (allow: true, default: true, require: true)
  • MSC4190: enabled (required for MAS compatibility)
  • Pickle key: auto-generated, stored in config
  • Self-sign: true

Synapse Integration

  • Registration files: /opt/matrix/synapse/registration.yaml, /opt/matrix/synapse/doublepuppet.yaml
  • homeserver.yaml additions:
    • app_service_config_files: [/data/registration.yaml, /data/doublepuppet.yaml]
    • experimental_features.msc3202_transaction_extensions: true
    • experimental_features.msc2409_to_device_messages_enabled: true
  • Registration file permissions: 644 (world-readable, Synapse UID 991)

Double Puppeting

  • Method: appservice-based (doublepuppet.yaml)
  • as_token: configured in bridge config double_puppet.secrets
  • Effect: Messages matt sends from Signal appear as @matt:echo6.co in Matrix

MAS Compatibility

  • Confirmed working: as_token auth bypasses MAS entirely
  • MSC4190: Parsed from registration.yaml io.element.msc4190: true, NOT a homeserver experimental_features flag
  • Synapse handles appservice auth independently of MAS token introspection

Autocreate Behavior

  • No autocreate toggle exists in bridgev2 signal connector
  • portal_create_filter config key is silently stripped on restart
  • Old keys (autocreate_group_portal, autocreate_contact_portal) don't exist
  • Portals auto-create when incoming Signal messages arrive for untracked groups/DMs
  • This is the default and only behavior — cannot be disabled

Permissions

bridge:
  permissions:
    "*": relay
    "echo6.co": user
    "@matt:echo6.co": admin

Backup

  • DB dumped by /opt/matrix/scripts/pg_backup.sh (added alongside synapse + mas dumps)
  • 14-day retention, daily at 3 AM

Management Commands

Available in management room (!fDjIRTMjxILVQoAcEN:echo6.co):

  • !signal help — list commands
  • !signal ping-matrix — verify Matrix connectivity
  • !signal list-logins — show linked Signal accounts
  • !signal sync-portal — force-sync current portal
  • !signal id — show bridge IDs for current room
  • !signal create-group — create a new Signal group
  • !signal start-chat — start a DM with a Signal user
  • !signal resolve-identifier — look up a Signal user

NOT available (bridgev2 signal connector doesn't expose):

  • list-chats, bridge, create-portal, filter

Provisioning API

  • Shared secret: in config.yaml (do NOT log or put in ref files)
  • Allow Matrix auth: true
  • Debug endpoints: false