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
  • 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 | Demo | Docs | Install
  1. Cloudron Forum
  2. App Wishlist
  3. Prosody + Converse.js

Prosody + Converse.js

Scheduled Pinned Locked Moved App Wishlist
34 Posts 7 Posters 6.7k Views 7 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.
  • synchroneS synchrone

    Kaiwa is no longer maintained, but there is now inverse.chat.

    I have packaged this as https://git.cloudron.io/synchrone/jabber-app, but also got stuck on TLS certificates.

    jdaviescoatesJ Online
    jdaviescoatesJ Online
    jdaviescoates
    wrote on last edited by
    #4

    @synchrone looks like that just points to an install of https://conversejs.org/ now

    I use Cloudron with Gandi & Hetzner

    1 Reply Last reply
    0
    • S Offline
      S Offline
      syn
      App Dev
      wrote on last edited by
      #5

      Okay, 4 years later, we now have a fairly good prosody 0.12 release (March-June 2022).

      Components like Multi-User Chat, and Proxy65 for file uploads require their own TLS certificates, which is now sort of possible via Secondary Domains aka "httpPorts" introduced in December 2021.

      The only thing missing is accessing those TLS certs via tls add-on. It should work if you just upload your certs to /app/data/certs as well though.

      @jdaviescoates: converse.js gets served on the frontend, yes. There is also a fully featured Prosody.im installation, so it's a fully-featured xmpp/jabber server, and you can use any compatible client app with it.

      girishG 1 Reply Last reply
      4
      • S syn referenced this topic on
      • S syn

        Okay, 4 years later, we now have a fairly good prosody 0.12 release (March-June 2022).

        Components like Multi-User Chat, and Proxy65 for file uploads require their own TLS certificates, which is now sort of possible via Secondary Domains aka "httpPorts" introduced in December 2021.

        The only thing missing is accessing those TLS certs via tls add-on. It should work if you just upload your certs to /app/data/certs as well though.

        @jdaviescoates: converse.js gets served on the frontend, yes. There is also a fully featured Prosody.im installation, so it's a fully-featured xmpp/jabber server, and you can use any compatible client app with it.

        girishG Offline
        girishG Offline
        girish
        Staff
        wrote on last edited by girish
        #6

        @syn said in Prosody + Kaiwa:

        Components like Multi-User Chat, and Proxy65 for file uploads require their own TLS certificates, which is now sort of possible via Secondary Domains aka "httpPorts" introduced in December 2021.

        So each feature is in it's own subdomain, is it? How many such features are there? I don't have much idea about prosody as such as you can tell 🙂

        FWIW, IIRC, in Jitsi which uses prosody underneath as well, the subdomains are just virtual subdomains. They don't need to be real (cc @nebulon )

        S 1 Reply Last reply
        0
        • girishG girish

          @syn said in Prosody + Kaiwa:

          Components like Multi-User Chat, and Proxy65 for file uploads require their own TLS certificates, which is now sort of possible via Secondary Domains aka "httpPorts" introduced in December 2021.

          So each feature is in it's own subdomain, is it? How many such features are there? I don't have much idea about prosody as such as you can tell 🙂

          FWIW, IIRC, in Jitsi which uses prosody underneath as well, the subdomains are just virtual subdomains. They don't need to be real (cc @nebulon )

          S Offline
          S Offline
          syn
          App Dev
          wrote on last edited by syn
          #7

          @girish in my provisional implementation I am using the key from httpPort for a predictable certificate/key locations.

          given:

          "httpPorts": {
              "CONFERENCE_DOMAIN": {
                "title": "Conference Service Domain",
                "description": "XEP-0045 domain",
                "containerPort": 5280,
                "defaultValue": "conference.chat"
              }
            },
          

          the expected paths by convention are:

          ssl = {
                  certificate = "/etc/certs/secondary/CONFERENCE_DOMAIN.cert";
                  key = "/etc/certs/secondary/CONFERENCE_DOMAIN.key";
              }
          

          but I do not insist on this method. I would be perfectly fine with listing that directory to find out which domains exist, as well as environment variable based paths per a predictable httpPorts key.

          So each feature is in it's own subdomain, is it?

          not necessarily. E.g file uploads and proxy65 turned out to not need their own TLS certificates.

          However, XMPP components that participate in federation MUST authenticate themselves for server-to-server communication via TLS. In my current configuration there is a Multi-User chat component that acts as it's own entity under "conference.chat.example.com" and must present a CA-trusted TLS certificate for that domain. Same goes for pubsub service.

          This is necessary because other XMPP servers will expect to talk to "conference.chat.example.com" on port 5269 or 5222 with STARTTLS.

          I do not expect many more components to be there. In total under 5 in the scope of this app. There may be a different XMPP Transports app that will have it's own configuration, but right now I'm focused on getting the core functionality.

          As to why Jitsi is working ... I would need to check that code, but perhaps they do not do server-to-server xmpp ? Everything would happily work within the boundaries of the single prosody server, but outside world XMPP federation wouldn't work.

          girishG 1 Reply Last reply
          1
          • S syn

            @girish in my provisional implementation I am using the key from httpPort for a predictable certificate/key locations.

            given:

            "httpPorts": {
                "CONFERENCE_DOMAIN": {
                  "title": "Conference Service Domain",
                  "description": "XEP-0045 domain",
                  "containerPort": 5280,
                  "defaultValue": "conference.chat"
                }
              },
            

            the expected paths by convention are:

            ssl = {
                    certificate = "/etc/certs/secondary/CONFERENCE_DOMAIN.cert";
                    key = "/etc/certs/secondary/CONFERENCE_DOMAIN.key";
                }
            

            but I do not insist on this method. I would be perfectly fine with listing that directory to find out which domains exist, as well as environment variable based paths per a predictable httpPorts key.

            So each feature is in it's own subdomain, is it?

            not necessarily. E.g file uploads and proxy65 turned out to not need their own TLS certificates.

            However, XMPP components that participate in federation MUST authenticate themselves for server-to-server communication via TLS. In my current configuration there is a Multi-User chat component that acts as it's own entity under "conference.chat.example.com" and must present a CA-trusted TLS certificate for that domain. Same goes for pubsub service.

            This is necessary because other XMPP servers will expect to talk to "conference.chat.example.com" on port 5269 or 5222 with STARTTLS.

            I do not expect many more components to be there. In total under 5 in the scope of this app. There may be a different XMPP Transports app that will have it's own configuration, but right now I'm focused on getting the core functionality.

            As to why Jitsi is working ... I would need to check that code, but perhaps they do not do server-to-server xmpp ? Everything would happily work within the boundaries of the single prosody server, but outside world XMPP federation wouldn't work.

            girishG Offline
            girishG Offline
            girish
            Staff
            wrote on last edited by
            #8

            @syn said in Prosody + Kaiwa:

            As to why Jitsi is working ... I would need to check that code, but perhaps they do not do server-to-server xmpp ? Everything would happily work within the boundaries of the single prosody server, but outside world XMPP federation wouldn't work.

            Ah, good point. Indeed, jitsi doesn't talk to anything else.

            I will incorporate your main patch in 7.3 itself if time permit. Trying to get it out this week.

            S 1 Reply Last reply
            2
            • girishG girish

              @syn said in Prosody + Kaiwa:

              As to why Jitsi is working ... I would need to check that code, but perhaps they do not do server-to-server xmpp ? Everything would happily work within the boundaries of the single prosody server, but outside world XMPP federation wouldn't work.

              Ah, good point. Indeed, jitsi doesn't talk to anything else.

              I will incorporate your main patch in 7.3 itself if time permit. Trying to get it out this week.

              S Offline
              S Offline
              syn
              App Dev
              wrote on last edited by
              #9

              @girish sure. This has waited for years. Can wait another couple months 🙂

              Also can you please rename this topic into "Prosody + Converse.js" ? Kaiwa is long since unmaintained and even forks have also dried up.

              1 Reply Last reply
              2
              • S Offline
                S Offline
                syn
                App Dev
                wrote on last edited by syn
                #10

                Ok, certificates are in place (thanks @girish) so now jabber-app is in a useable state with server-to-server communication, AND mutli-user chatrooms support.

                One problem is that when we limit MUC room creation to local users only (so random people off the internet won't be able to create public rooms on your conference.example.com) - prosody expects your local JIDs to be user@example.com, not user@chat.example.com.

                I have side-stepped this by defaulting jabber-app's conference subdomain to conference.chat.example.com, and not conference.example.com. So it's possible misconfiguration by the end user will result in the MUC component not being functional.

                Another problem is, I would like to be able to use cloudron's apex domain as my JID host (syn@example.com, not syn@chat.example.com)

                That requires 2 things:

                • DNS management to add SRV records (we can probably have the users manually do that with a generated instruction)
                • Access to the TLS certificate for apex domain
                  • alternatively, TLS-proxied ports 5223/5270, although I'm not certain what is the state of Direct TLS adoption among clients/server implementations these days

                then a small patch for prosofy.cfg.lua should enable those upper-level VirtualHosts, and it's done.

                murgeroM 1 Reply Last reply
                3
                • S syn

                  Ok, certificates are in place (thanks @girish) so now jabber-app is in a useable state with server-to-server communication, AND mutli-user chatrooms support.

                  One problem is that when we limit MUC room creation to local users only (so random people off the internet won't be able to create public rooms on your conference.example.com) - prosody expects your local JIDs to be user@example.com, not user@chat.example.com.

                  I have side-stepped this by defaulting jabber-app's conference subdomain to conference.chat.example.com, and not conference.example.com. So it's possible misconfiguration by the end user will result in the MUC component not being functional.

                  Another problem is, I would like to be able to use cloudron's apex domain as my JID host (syn@example.com, not syn@chat.example.com)

                  That requires 2 things:

                  • DNS management to add SRV records (we can probably have the users manually do that with a generated instruction)
                  • Access to the TLS certificate for apex domain
                    • alternatively, TLS-proxied ports 5223/5270, although I'm not certain what is the state of Direct TLS adoption among clients/server implementations these days

                  then a small patch for prosofy.cfg.lua should enable those upper-level VirtualHosts, and it's done.

                  murgeroM Offline
                  murgeroM Offline
                  murgero
                  App Dev
                  wrote on last edited by
                  #11

                  @syn Have you seen Snikket? It's a prosody clone I believe but it is way easier to setup

                  --
                  https://urgero.org
                  ~ Professional Nerd. Freelance Programmer. ~

                  jdaviescoatesJ S 2 Replies Last reply
                  1
                  • murgeroM murgero

                    @syn Have you seen Snikket? It's a prosody clone I believe but it is way easier to setup

                    jdaviescoatesJ Online
                    jdaviescoatesJ Online
                    jdaviescoates
                    wrote on last edited by
                    #12

                    @murgero said in Prosody + Converse.js:

                    Snikket

                    +1

                    It's also written by the same person who is main Prosody dev too.

                    Upvote here: https://forum.cloudron.io/post/23291

                    I use Cloudron with Gandi & Hetzner

                    1 Reply Last reply
                    0
                    • murgeroM murgero

                      @syn Have you seen Snikket? It's a prosody clone I believe but it is way easier to setup

                      S Offline
                      S Offline
                      syn
                      App Dev
                      wrote on last edited by
                      #13

                      @murgero I have. From what i see - it does not have the actual web client, just the management interface.

                      As for the XMPP server itself - it is in fact prosody, so nothing special there.

                      Why?

                      murgeroM 1 Reply Last reply
                      0
                      • S syn

                        @murgero I have. From what i see - it does not have the actual web client, just the management interface.

                        As for the XMPP server itself - it is in fact prosody, so nothing special there.

                        Why?

                        murgeroM Offline
                        murgeroM Offline
                        murgero
                        App Dev
                        wrote on last edited by
                        #14

                        @syn Just wondering if it would be easier to bundle snikket since it has the scripts to setup automatically already?

                        --
                        https://urgero.org
                        ~ Professional Nerd. Freelance Programmer. ~

                        S 1 Reply Last reply
                        0
                        • murgeroM murgero

                          @syn Just wondering if it would be easier to bundle snikket since it has the scripts to setup automatically already?

                          S Offline
                          S Offline
                          syn
                          App Dev
                          wrote on last edited by
                          #15

                          @murgero the blockers for my dream-world Jabber app on Cloudron are not related to configuring prosody. It's done already and I for one am using the current jabber-app daily.

                          The remaining issues are related to lack of interfaces to editing DNS (SRV, TXT) records from inside cloudron apps. That is going to affect any XMPP implementation.

                          I appreciate your feedback, but please look into the actual limitations instead of jumping to between shiny end-user brandings.

                          jdaviescoatesJ murgeroM 2 Replies Last reply
                          1
                          • S syn

                            @murgero the blockers for my dream-world Jabber app on Cloudron are not related to configuring prosody. It's done already and I for one am using the current jabber-app daily.

                            The remaining issues are related to lack of interfaces to editing DNS (SRV, TXT) records from inside cloudron apps. That is going to affect any XMPP implementation.

                            I appreciate your feedback, but please look into the actual limitations instead of jumping to between shiny end-user brandings.

                            jdaviescoatesJ Online
                            jdaviescoatesJ Online
                            jdaviescoates
                            wrote on last edited by
                            #16

                            @syn said in Prosody + Converse.js:

                            It's done already and I for one am using the current jabber-app daily.

                            What Jabber app?

                            I use Cloudron with Gandi & Hetzner

                            S 1 Reply Last reply
                            0
                            • jdaviescoatesJ jdaviescoates

                              @syn said in Prosody + Converse.js:

                              It's done already and I for one am using the current jabber-app daily.

                              What Jabber app?

                              S Offline
                              S Offline
                              syn
                              App Dev
                              wrote on last edited by
                              #17

                              @jdaviescoates as I posted on 18 Jul 2018, 20:23:

                              I have packaged this as https://git.cloudron.io/synchrone/jabber-app

                              murgeroM 1 Reply Last reply
                              1
                              • S syn

                                @murgero the blockers for my dream-world Jabber app on Cloudron are not related to configuring prosody. It's done already and I for one am using the current jabber-app daily.

                                The remaining issues are related to lack of interfaces to editing DNS (SRV, TXT) records from inside cloudron apps. That is going to affect any XMPP implementation.

                                I appreciate your feedback, but please look into the actual limitations instead of jumping to between shiny end-user brandings.

                                murgeroM Offline
                                murgeroM Offline
                                murgero
                                App Dev
                                wrote on last edited by
                                #18

                                @syn Oh! My bad. I've been out of the community for a few months and just coming back now.

                                --
                                https://urgero.org
                                ~ Professional Nerd. Freelance Programmer. ~

                                S 1 Reply Last reply
                                0
                                • S syn

                                  @jdaviescoates as I posted on 18 Jul 2018, 20:23:

                                  I have packaged this as https://git.cloudron.io/synchrone/jabber-app

                                  murgeroM Offline
                                  murgeroM Offline
                                  murgero
                                  App Dev
                                  wrote on last edited by
                                  #19

                                  @syn I'd like to build and install, what's the proper way to do this while waiting for this beautiful app to hit the store.

                                  --
                                  https://urgero.org
                                  ~ Professional Nerd. Freelance Programmer. ~

                                  robiR 1 Reply Last reply
                                  0
                                  • murgeroM murgero

                                    @syn I'd like to build and install, what's the proper way to do this while waiting for this beautiful app to hit the store.

                                    robiR Offline
                                    robiR Offline
                                    robi
                                    wrote on last edited by
                                    #20

                                    @murgero https://docs.cloudron.io/packaging/tutorial/#update

                                    Conscious tech

                                    murgeroM 1 Reply Last reply
                                    0
                                    • robiR robi

                                      @murgero https://docs.cloudron.io/packaging/tutorial/#update

                                      murgeroM Offline
                                      murgeroM Offline
                                      murgero
                                      App Dev
                                      wrote on last edited by
                                      #21

                                      @robi Hey Robi, I am an app dev with Cloudron (RE: the appdev tag) so I know how to package and install apps. My question was more the after-install setup as he mentioned some manual steps (but was not specific)

                                      --
                                      https://urgero.org
                                      ~ Professional Nerd. Freelance Programmer. ~

                                      robiR 1 Reply Last reply
                                      0
                                      • murgeroM murgero

                                        @robi Hey Robi, I am an app dev with Cloudron (RE: the appdev tag) so I know how to package and install apps. My question was more the after-install setup as he mentioned some manual steps (but was not specific)

                                        robiR Offline
                                        robiR Offline
                                        robi
                                        wrote on last edited by
                                        #22

                                        @murgero Lol, sorry, thought you were getting rusty ;-]

                                        Thanks that's more specific.

                                        Conscious tech

                                        murgeroM 1 Reply Last reply
                                        1
                                        • robiR robi

                                          @murgero Lol, sorry, thought you were getting rusty ;-]

                                          Thanks that's more specific.

                                          murgeroM Offline
                                          murgeroM Offline
                                          murgero
                                          App Dev
                                          wrote on last edited by
                                          #23

                                          @robi Thanks for helping anyway! Never a bad thing to give good info.

                                          --
                                          https://urgero.org
                                          ~ Professional Nerd. Freelance Programmer. ~

                                          1 Reply Last reply
                                          0
                                          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