Cloudron makes it easy to run web apps like WordPress, Nextcloud, GitLab on your server. Find out more or install now.


Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Bookmarks
  • Search
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

Cloudron Forum

Apps - Status | Demo | Docs | Install
  1. Cloudron Forum
  2. App Packaging & Development
  3. Matrix WhatsApp Bridge

Matrix WhatsApp Bridge

Scheduled Pinned Locked Moved App Packaging & Development
30 Posts 9 Posters 4.9k Views 12 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • girishG Offline
    girishG Offline
    girish
    Staff
    wrote on last edited by
    #11

    Yes, I think that will work

    1 Reply Last reply
    1
    • andreasduerenA Offline
      andreasduerenA Offline
      andreasdueren
      wrote on last edited by
      #12

      Updated bridge to v0.12.3

      https://git.due.ren/andreas/mautrix-whatsapp-cloudron

      1 Reply Last reply
      2
      • andreasduerenA Offline
        andreasduerenA Offline
        andreasdueren
        wrote on last edited by
        #13

        Updated bridge to v0.12.4

        https://git.due.ren/andreas/mautrix-whatsapp-cloudron/releases/tag/v1.2.2

        1 Reply Last reply
        1
        • andreasduerenA Offline
          andreasduerenA Offline
          andreasdueren
          wrote on last edited by
          #14

          Updated bridge to v0.12.5

          https://git.due.ren/andreas/mautrix-whatsapp-cloudron/releases/tag/v1.2.3

          jdaviescoatesJ 1 Reply Last reply
          1
          • andreasduerenA andreasdueren

            Updated bridge to v0.12.5

            https://git.due.ren/andreas/mautrix-whatsapp-cloudron/releases/tag/v1.2.3

            jdaviescoatesJ Offline
            jdaviescoatesJ Offline
            jdaviescoates
            wrote on last edited by jdaviescoates
            #15

            @staff any reason we can't add this @andreasdueren Matrix-WhatsApp Bridge app to the app store?

            I use Cloudron with Gandi & Hetzner

            1 Reply Last reply
            1
            • girishG Offline
              girishG Offline
              girish
              Staff
              wrote on last edited by
              #16

              @jdaviescoates I think we have to figure a way to get such niche app packages published. At least, we are on board internally to do something to allow external publishers, so we will work on something soon.

              jdaviescoatesJ andreasduerenA 2 Replies Last reply
              2
              • girishG girish

                @jdaviescoates I think we have to figure a way to get such niche app packages published. At least, we are on board internally to do something to allow external publishers, so we will work on something soon.

                jdaviescoatesJ Offline
                jdaviescoatesJ Offline
                jdaviescoates
                wrote on last edited by
                #17

                @girish said in Matrix WhatsApp Bridge:

                such niche app packages

                I'm not sure it's really a niche app. I'd guess that many/ most people running Matrix/ Element might like to use this (and other similar bridges too). IMHO ideally Cloudron Matrix would come bundled with WhatsApp, Signal and Telegram bridges much like Element One does.

                I use Cloudron with Gandi & Hetzner

                1 Reply Last reply
                2
                • girishG girish

                  @jdaviescoates I think we have to figure a way to get such niche app packages published. At least, we are on board internally to do something to allow external publishers, so we will work on something soon.

                  andreasduerenA Offline
                  andreasduerenA Offline
                  andreasdueren
                  wrote on last edited by
                  #18

                  @girish said in Matrix WhatsApp Bridge:

                  I think we have to figure a way to get such niche app packages published.

                  I would argue that this is equal or even less of a niche app than the Valheim Gameserver for example.

                  1 Reply Last reply
                  2
                  • girishG Offline
                    girishG Offline
                    girish
                    Staff
                    wrote on last edited by
                    #19

                    @andreasdueren I am with you on that 🙂

                    Maybe niche is not the right term but I simply meant to say is that "extensions" to apps by third parties is quite a burden for app packages. It's best to figure out a way by which other people can host it easily especially when people are making their efforts public.

                    andreasduerenA 1 Reply Last reply
                    1
                    • girishG girish

                      @andreasdueren I am with you on that 🙂

                      Maybe niche is not the right term but I simply meant to say is that "extensions" to apps by third parties is quite a burden for app packages. It's best to figure out a way by which other people can host it easily especially when people are making their efforts public.

                      andreasduerenA Offline
                      andreasduerenA Offline
                      andreasdueren
                      wrote on last edited by
                      #20

                      @girish said in Matrix WhatsApp Bridge:

                      "extensions" to apps by third parties is quite a burden for app packages.

                      I understand that it needs to be feasible to maintain these kind of things. Cloudron needs to be profitable after all. I hope we can find some solution for these things, especially if they're simple go binaries like this one.

                      nostrdevN 1 Reply Last reply
                      2
                      • andreasduerenA Offline
                        andreasduerenA Offline
                        andreasdueren
                        wrote on last edited by
                        #21

                        Updated bridge to v0.2510.0

                        https://git.due.ren/andreas/mautrix-whatsapp-cloudron/releases/tag/v2.0.0

                        1 Reply Last reply
                        1
                        • N Offline
                          N Offline
                          ntnsndr
                          wrote on last edited by
                          #22

                          I'm looking to install the Zulip bridge in order to connect our Matrix server with a Zulip chat that collaborators use. Supporting bridges somehow seems important, as bridging is really central to Matrix's value proposition. (Of course, it is absurd that bridging requires third-party software installation rather than some kind of simple, integrated plugin architecture.)

                          Is there a way to set this up on the app/data side so it is persistent through updates?

                          Here are the options I'm looking at:
                          https://github.com/mautrix/zulip
                          https://github.com/GearKite/MatrixZulipBridge

                          andreasduerenA 1 Reply Last reply
                          2
                          • N ntnsndr

                            I'm looking to install the Zulip bridge in order to connect our Matrix server with a Zulip chat that collaborators use. Supporting bridges somehow seems important, as bridging is really central to Matrix's value proposition. (Of course, it is absurd that bridging requires third-party software installation rather than some kind of simple, integrated plugin architecture.)

                            Is there a way to set this up on the app/data side so it is persistent through updates?

                            Here are the options I'm looking at:
                            https://github.com/mautrix/zulip
                            https://github.com/GearKite/MatrixZulipBridge

                            andreasduerenA Offline
                            andreasduerenA Offline
                            andreasdueren
                            wrote on last edited by
                            #23

                            @ntnsndr You'll need to packge it. Since the whatsapp brige (also go based) runs pretty well, I would assume, this one should be also easy to package.

                            1 Reply Last reply
                            1
                            • andreasduerenA Offline
                              andreasduerenA Offline
                              andreasdueren
                              wrote on last edited by
                              #24

                              Updated bridge to v25.12

                              andreasdueren/mautrix-whatsapp-cloudron:1.2.4

                              1 Reply Last reply
                              3
                              • E Offline
                                E Offline
                                Eliahou
                                wrote on last edited by
                                #25

                                Thanks for packaging this bridge - it actually motivated me to discover and deploy Matrix 🙂

                                I’m trying to set it up alongside the Synapse app from the Cloudron store, but I’m currently stuck with the following issue.


                                What I did

                                • Installed the Matrix (Synapse) app from the Cloudron app store
                                • Installed the mautrix-whatsapp bridge
                                • Added the registration file generated by the bridge to the Synapse app
                                • Restarted Synapse
                                • Sent login to @whatsappbot:domain.com

                                What happens

                                I consistently get:

                                ⚠️ Your message was not bridged: the bridge hasn't received the decryption keys


                                Bridge logs

                                The bridge fails to sync and retries indefinitely:

                                Dec 25 19:22:40 2025-12-25T18:22:40.932Z DBG Request completed as_user_id=@whatsappbot:domain.com duration=6.873778 method=GET req_id=477 response_length=55 response_mime=application/json status_code=500 url=https://matrix.domain.com/_matrix/client/v3/sync?filter=0&timeout=0&user_id=%40whatsappbot%3Adomain.com
                                Dec 25 19:22:50 2025-12-25T18:22:50.939Z ERR Error /syncing, waiting 10 seconds error="M_UNKNOWN (HTTP 500): Internal server error" component=crypto
                                

                                Synapse logs (version 1.144.0)

                                Synapse returns HTTP 500 on /sync for the bridge user, with a NotImplementedError:

                                Dec 25 19:28:11 2025-12-25 18:28:11,245 - synapse.access.http.8008 - 521 - INFO - GET-887 - 172.18.20.179 - 8008 - {@whatsappbot:domain.com} Processed request: 0.004sec/0.000sec (0.001sec, 0.000sec) (0.000sec/0.001sec/1) 55B 500 "GET /_matrix/client/v3/sync?filter=0&timeout=0&user_id=%40whatsappbot%3Adomain.com HTTP/1.1" "mautrix-whatsapp/v25.12+dev.1f06bd38 mautrix-go/v0.26.1 go/1.25.5" [0 dbevts]
                                

                                Followed by this stacktrace:

                                Dec 25 19:28:21 2025-12-25 18:28:21,251 - synapse.http.server - 147 - ERROR - GET-892 - Failed handle request via 'SyncRestServlet': <XForwardedForRequest at 0x7657785cd910 method='GET' uri='/_matrix/client/v3/sync?filter=0&timeout=0&user_id=%40whatsappbot%3Adomain.com' clientproto='HTTP/1.1' site='8008'>
                                Dec 25 19:28:21 Traceback (most recent call last):
                                Dec 25 19:28:21 File "/app/code/env/lib/python3.12/site-packages/synapse/http/server.py", line 335, in _async_render_wrapper
                                Dec 25 19:28:21 callback_return = await self._async_render(request)
                                Dec 25 19:28:21 File "/app/code/env/lib/python3.12/site-packages/synapse/http/server.py", line 576, in _async_render
                                Dec 25 19:28:21 callback_return = await raw_callback_return
                                Dec 25 19:28:21 File "/app/code/env/lib/python3.12/site-packages/synapse/rest/client/sync.py", line 269, in on_GET
                                Dec 25 19:28:21 sync_result = await self.sync_handler.wait_for_sync_for_user(
                                Dec 25 19:28:21 File "/app/code/env/lib/python3.12/site-packages/synapse/handlers/sync.py", line 358, in wait_for_sync_for_user
                                Dec 25 19:28:21 res = await self.response_cache.wrap(
                                Dec 25 19:28:21 File "/app/code/env/lib/python3.12/site-packages/synapse/handlers/sync.py", line 527, in current_sync_for_user
                                Dec 25 19:28:21 sync_result = await self.generate_sync_result(
                                Dec 25 19:28:21 File "/app/code/env/lib/python3.12/site-packages/synapse/handlers/sync.py", line 1660, in generate_sync_result
                                Dec 25 19:28:21 raise NotImplementedError()
                                Dec 25 19:28:21 NotImplementedError
                                

                                Summary

                                It looks like the bridge calls:

                                /_matrix/client/v3/sync?filter=0&timeout=0
                                

                                for @whatsappbot, which causes Synapse 1.144.0 to return HTTP 500 with a NotImplementedError.
                                Because /sync fails, the bridge can’t receive encryption keys and messages are not bridged.

                                Do you have any idea what could be wrong here ?
                                I didn’t manage to find a solution in the official documentation.

                                andreasduerenA 2 Replies Last reply
                                0
                                • E Eliahou

                                  Thanks for packaging this bridge - it actually motivated me to discover and deploy Matrix 🙂

                                  I’m trying to set it up alongside the Synapse app from the Cloudron store, but I’m currently stuck with the following issue.


                                  What I did

                                  • Installed the Matrix (Synapse) app from the Cloudron app store
                                  • Installed the mautrix-whatsapp bridge
                                  • Added the registration file generated by the bridge to the Synapse app
                                  • Restarted Synapse
                                  • Sent login to @whatsappbot:domain.com

                                  What happens

                                  I consistently get:

                                  ⚠️ Your message was not bridged: the bridge hasn't received the decryption keys


                                  Bridge logs

                                  The bridge fails to sync and retries indefinitely:

                                  Dec 25 19:22:40 2025-12-25T18:22:40.932Z DBG Request completed as_user_id=@whatsappbot:domain.com duration=6.873778 method=GET req_id=477 response_length=55 response_mime=application/json status_code=500 url=https://matrix.domain.com/_matrix/client/v3/sync?filter=0&timeout=0&user_id=%40whatsappbot%3Adomain.com
                                  Dec 25 19:22:50 2025-12-25T18:22:50.939Z ERR Error /syncing, waiting 10 seconds error="M_UNKNOWN (HTTP 500): Internal server error" component=crypto
                                  

                                  Synapse logs (version 1.144.0)

                                  Synapse returns HTTP 500 on /sync for the bridge user, with a NotImplementedError:

                                  Dec 25 19:28:11 2025-12-25 18:28:11,245 - synapse.access.http.8008 - 521 - INFO - GET-887 - 172.18.20.179 - 8008 - {@whatsappbot:domain.com} Processed request: 0.004sec/0.000sec (0.001sec, 0.000sec) (0.000sec/0.001sec/1) 55B 500 "GET /_matrix/client/v3/sync?filter=0&timeout=0&user_id=%40whatsappbot%3Adomain.com HTTP/1.1" "mautrix-whatsapp/v25.12+dev.1f06bd38 mautrix-go/v0.26.1 go/1.25.5" [0 dbevts]
                                  

                                  Followed by this stacktrace:

                                  Dec 25 19:28:21 2025-12-25 18:28:21,251 - synapse.http.server - 147 - ERROR - GET-892 - Failed handle request via 'SyncRestServlet': <XForwardedForRequest at 0x7657785cd910 method='GET' uri='/_matrix/client/v3/sync?filter=0&timeout=0&user_id=%40whatsappbot%3Adomain.com' clientproto='HTTP/1.1' site='8008'>
                                  Dec 25 19:28:21 Traceback (most recent call last):
                                  Dec 25 19:28:21 File "/app/code/env/lib/python3.12/site-packages/synapse/http/server.py", line 335, in _async_render_wrapper
                                  Dec 25 19:28:21 callback_return = await self._async_render(request)
                                  Dec 25 19:28:21 File "/app/code/env/lib/python3.12/site-packages/synapse/http/server.py", line 576, in _async_render
                                  Dec 25 19:28:21 callback_return = await raw_callback_return
                                  Dec 25 19:28:21 File "/app/code/env/lib/python3.12/site-packages/synapse/rest/client/sync.py", line 269, in on_GET
                                  Dec 25 19:28:21 sync_result = await self.sync_handler.wait_for_sync_for_user(
                                  Dec 25 19:28:21 File "/app/code/env/lib/python3.12/site-packages/synapse/handlers/sync.py", line 358, in wait_for_sync_for_user
                                  Dec 25 19:28:21 res = await self.response_cache.wrap(
                                  Dec 25 19:28:21 File "/app/code/env/lib/python3.12/site-packages/synapse/handlers/sync.py", line 527, in current_sync_for_user
                                  Dec 25 19:28:21 sync_result = await self.generate_sync_result(
                                  Dec 25 19:28:21 File "/app/code/env/lib/python3.12/site-packages/synapse/handlers/sync.py", line 1660, in generate_sync_result
                                  Dec 25 19:28:21 raise NotImplementedError()
                                  Dec 25 19:28:21 NotImplementedError
                                  

                                  Summary

                                  It looks like the bridge calls:

                                  /_matrix/client/v3/sync?filter=0&timeout=0
                                  

                                  for @whatsappbot, which causes Synapse 1.144.0 to return HTTP 500 with a NotImplementedError.
                                  Because /sync fails, the bridge can’t receive encryption keys and messages are not bridged.

                                  Do you have any idea what could be wrong here ?
                                  I didn’t manage to find a solution in the official documentation.

                                  andreasduerenA Offline
                                  andreasduerenA Offline
                                  andreasdueren
                                  wrote on last edited by
                                  #26

                                  @Eliahou unfortunately I can’t really help you with this because I’m running it unencrypted on my side. But yes when I used it a while ago with encryption I had similar errors.

                                  1 Reply Last reply
                                  0
                                  • robiR Offline
                                    robiR Offline
                                    robi
                                    wrote on last edited by
                                    #27

                                    Any clues from upstream git repo issues?

                                    Conscious tech

                                    andreasduerenA 1 Reply Last reply
                                    0
                                    • robiR robi

                                      Any clues from upstream git repo issues?

                                      andreasduerenA Offline
                                      andreasduerenA Offline
                                      andreasdueren
                                      wrote on last edited by
                                      #28

                                      @robi didn’t find any when I tried to investigate. But since it’s pretty much stored in plain text on the other side I decided I may as well store it plain text on mine. Encryption and bridges/bots are just not a good fit

                                      1 Reply Last reply
                                      1
                                      • andreasduerenA andreasdueren

                                        @girish said in Matrix WhatsApp Bridge:

                                        "extensions" to apps by third parties is quite a burden for app packages.

                                        I understand that it needs to be feasible to maintain these kind of things. Cloudron needs to be profitable after all. I hope we can find some solution for these things, especially if they're simple go binaries like this one.

                                        nostrdevN Offline
                                        nostrdevN Offline
                                        nostrdev
                                        wrote on last edited by
                                        #29

                                        @andreasdueren a good middle ground would be to make it easier for platform providers to install third party apps.

                                        https://forum.cloudron.io/topic/14231/ccai-cloudron-custom-app-installer

                                        1 Reply Last reply
                                        1
                                        • E Eliahou

                                          Thanks for packaging this bridge - it actually motivated me to discover and deploy Matrix 🙂

                                          I’m trying to set it up alongside the Synapse app from the Cloudron store, but I’m currently stuck with the following issue.


                                          What I did

                                          • Installed the Matrix (Synapse) app from the Cloudron app store
                                          • Installed the mautrix-whatsapp bridge
                                          • Added the registration file generated by the bridge to the Synapse app
                                          • Restarted Synapse
                                          • Sent login to @whatsappbot:domain.com

                                          What happens

                                          I consistently get:

                                          ⚠️ Your message was not bridged: the bridge hasn't received the decryption keys


                                          Bridge logs

                                          The bridge fails to sync and retries indefinitely:

                                          Dec 25 19:22:40 2025-12-25T18:22:40.932Z DBG Request completed as_user_id=@whatsappbot:domain.com duration=6.873778 method=GET req_id=477 response_length=55 response_mime=application/json status_code=500 url=https://matrix.domain.com/_matrix/client/v3/sync?filter=0&timeout=0&user_id=%40whatsappbot%3Adomain.com
                                          Dec 25 19:22:50 2025-12-25T18:22:50.939Z ERR Error /syncing, waiting 10 seconds error="M_UNKNOWN (HTTP 500): Internal server error" component=crypto
                                          

                                          Synapse logs (version 1.144.0)

                                          Synapse returns HTTP 500 on /sync for the bridge user, with a NotImplementedError:

                                          Dec 25 19:28:11 2025-12-25 18:28:11,245 - synapse.access.http.8008 - 521 - INFO - GET-887 - 172.18.20.179 - 8008 - {@whatsappbot:domain.com} Processed request: 0.004sec/0.000sec (0.001sec, 0.000sec) (0.000sec/0.001sec/1) 55B 500 "GET /_matrix/client/v3/sync?filter=0&timeout=0&user_id=%40whatsappbot%3Adomain.com HTTP/1.1" "mautrix-whatsapp/v25.12+dev.1f06bd38 mautrix-go/v0.26.1 go/1.25.5" [0 dbevts]
                                          

                                          Followed by this stacktrace:

                                          Dec 25 19:28:21 2025-12-25 18:28:21,251 - synapse.http.server - 147 - ERROR - GET-892 - Failed handle request via 'SyncRestServlet': <XForwardedForRequest at 0x7657785cd910 method='GET' uri='/_matrix/client/v3/sync?filter=0&timeout=0&user_id=%40whatsappbot%3Adomain.com' clientproto='HTTP/1.1' site='8008'>
                                          Dec 25 19:28:21 Traceback (most recent call last):
                                          Dec 25 19:28:21 File "/app/code/env/lib/python3.12/site-packages/synapse/http/server.py", line 335, in _async_render_wrapper
                                          Dec 25 19:28:21 callback_return = await self._async_render(request)
                                          Dec 25 19:28:21 File "/app/code/env/lib/python3.12/site-packages/synapse/http/server.py", line 576, in _async_render
                                          Dec 25 19:28:21 callback_return = await raw_callback_return
                                          Dec 25 19:28:21 File "/app/code/env/lib/python3.12/site-packages/synapse/rest/client/sync.py", line 269, in on_GET
                                          Dec 25 19:28:21 sync_result = await self.sync_handler.wait_for_sync_for_user(
                                          Dec 25 19:28:21 File "/app/code/env/lib/python3.12/site-packages/synapse/handlers/sync.py", line 358, in wait_for_sync_for_user
                                          Dec 25 19:28:21 res = await self.response_cache.wrap(
                                          Dec 25 19:28:21 File "/app/code/env/lib/python3.12/site-packages/synapse/handlers/sync.py", line 527, in current_sync_for_user
                                          Dec 25 19:28:21 sync_result = await self.generate_sync_result(
                                          Dec 25 19:28:21 File "/app/code/env/lib/python3.12/site-packages/synapse/handlers/sync.py", line 1660, in generate_sync_result
                                          Dec 25 19:28:21 raise NotImplementedError()
                                          Dec 25 19:28:21 NotImplementedError
                                          

                                          Summary

                                          It looks like the bridge calls:

                                          /_matrix/client/v3/sync?filter=0&timeout=0
                                          

                                          for @whatsappbot, which causes Synapse 1.144.0 to return HTTP 500 with a NotImplementedError.
                                          Because /sync fails, the bridge can’t receive encryption keys and messages are not bridged.

                                          Do you have any idea what could be wrong here ?
                                          I didn’t manage to find a solution in the official documentation.

                                          andreasduerenA Offline
                                          andreasduerenA Offline
                                          andreasdueren
                                          wrote last edited by andreasdueren
                                          #30

                                          @Eliahou I packaged the signal bridge and now wanted to see how I can make encryption work.

                                          Root Cause: Synapse 1.141+ explicitly blocks appservice users from using /sync. The mautrix bridges were configured to poll /sync for encryption data, which caused HTTP 500 errors.
                                          Solution: Enabled appservice mode for end-to-bridge encryption, which uses MSC3202/MSC2409 to receive encryption data via appservice transactions instead of /sync.

                                          In specific this means:

                                          Changes Made

                                          1. Synapse:
                                            • Added experimental features to homeserver.yaml:
                                                     experimental_features:
                                                           msc3202_transaction_extensions: true
                                                           msc2409_to_device_messages_enabled: true
                                          
                                          • Added org.matrix.msc3202: true to both bridge registration files
                                          1. Signal Bridge:
                                            • Updated start.sh to set encryption.appservice = true
                                            • Built and deployed andreasdueren/mautrix-signal:1.0.2
                                          2. WhatsApp Bridge:
                                            • Updated start.sh to set encryption.appservice = true
                                            • Built and deployed andreasdueren/mautrix-whatsapp:2.0.2
                                          1 Reply Last reply
                                          5
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Bookmarks
                                          • Search