Matrix Docker Ansible eploy
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

5.1 KiB

Setting up iMessage RustPush bridging (optional)

Refer the common guide for configuring mautrix bridges: Setting up a Generic Mautrix Bridge

The playbook can install and configure mautrix-imessage with RustPush for you, which provides a bridge to iMessage using Apple’s push notification service (no Mac needed at runtime).

See the project’s documentation to learn what it does and why it might be useful to you.

Note: This bridge is built from source (no pre-built Docker image exists). The build process requires Rust, Go, and C toolchains, which means the initial build will take significant time and resources.

Prerequisites

Hardware Key Extraction

To use this bridge on Linux (Docker), you need a hardware key extracted from a real Mac. This key contains hardware identifiers needed for iMessage registration.

The key is entered interactively through the bridge bot’s login flow (not configured via Ansible variables). See the upstream README for instructions on extracting the key.

Enable Appservice Double Puppet (optional)

If you want to set up Double Puppeting (hint: you most likely do) for this bridge automatically, you need to have enabled Appservice Double Puppet service for this playbook.

See this section on the common guide for configuring mautrix bridges for details about setting up Double Puppeting.

Adjusting the playbook configuration

To enable the bridge, add the following configuration to your inventory/host_vars/matrix.example.com/vars.yml file:

matrix_imessage_rustpush_enabled: true

Backfill (optional)

Backfill is disabled by default because Linux Docker cannot access the macOS chat.db file. If you are running on macOS with Full Disk Access, you can enable it:

matrix_imessage_rustpush_backfill_enabled: true
matrix_imessage_rustpush_initial_sync_days: 365

Extending the configuration

There are some additional things you may wish to configure about the bridge.

See this section on the common guide for configuring mautrix bridges for details about variables that you can customize and the bridge’s default configuration, including bridge permissions, encryption support, bot’s username, etc.

Installing

After configuring the playbook, run it with playbook tags as below:

ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start

Notes:

  • The shortcut commands with the just program are also available: just install-all or just setup-all

    just install-all is useful for maintaining your setup quickly (2x-5x faster than just setup-all) when its components remain unchanged. If you adjust your vars.yml to remove other components, you’d need to run just setup-all, or these components will still remain installed.

  • The first run will take longer than usual because the Docker image is built from source (Rust + Go compilation).

Usage

To use the bridge, you need to start a chat with @imessagebot:example.com (where example.com is your base domain, not the matrix. domain).

The bridge supports two login flows:

  1. External Key Login (Linux/Docker): Enter your hardware key (base64), then Apple ID credentials and 2FA code.
  2. Apple ID Login (macOS only): Enter Apple ID credentials and 2FA code directly.

After logging in, the bridge will start receiving iMessages and creating portal rooms.

Troubleshooting

As with all other services, you can find the logs in systemd-journald by logging in to the server with SSH and running journalctl -fu matrix-imessage-rustpush.

Increase logging verbosity

The default logging level for this component is warn. If you want to increase the verbosity, add the following configuration to your vars.yml file and re-run the playbook:

# Valid values: fatal, error, warn, info, debug, trace
matrix_imessage_rustpush_logging_level: 'debug'