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

Offical apps | Community apps | Demo | Docs | Install
  1. Cloudron Forum
  2. App Wishlist
  3. πŸ§ͺ Testers wanted: Element Server Suite (ESS Community) for Cloudron

πŸ§ͺ Testers wanted: Element Server Suite (ESS Community) for Cloudron

Scheduled Pinned Locked Moved App Wishlist
24 Posts 4 Posters 1.6k Views 5 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.
  • humptyH humpty

    @andreasdueren Does the migration process work on existing installs to keep using the same domain?

    andreasduerenA
    andreasduerenA
    andreasdueren
    App Dev
    wrote on last edited by andreasdueren
    #15

    @humpty yes that’s what it’s designed to do

    1 Reply Last reply
    2
    • andreasduerenA andreasdueren

      Hi all,

      The existing Synapse/Element packages on Cloudron work, but they predate Matrix 2.0: no Matrix Authentication Service, which means next-gen auth (Element X), and especially Element Call don't work properly. Instead of patching the old package I've built a new one that packages the full Element Server Suite (ESS Community) stack β€” the same components as Element's official Helm chart (element-hq/ess-helm), repackaged as a single Cloudron app.

      What's included

      One app, one container, the whole stack:

      Component Version What it does
      Synapse 1.157.1 Matrix homeserver (MSC4143 RTC transports enabled)
      Matrix Authentication Service 1.21.0 Next-gen auth (OIDC-native, Element X compatible)
      Element Web 1.12.24 Web client with embedded Element Call
      Element Call (standalone SPA) 0.22.0 Guest-accessible call links
      LiveKit SFU + lk-jwt 1.13.4 / 0.5.0 WebRTC media backend for calls
      Element Admin 0.1.12 Admin UI (users, rooms)
      Hookshot 7.4.3 Webhooks/bridges (optional)

      Cloudron integration: SSO via the Cloudron OIDC addon β†’ MAS β†’ Synapse. Your Cloudron users log in with their normal accounts, including on Element X mobile. PostgreSQL via the Cloudron addon, well-known files served automatically, all configs regenerated from Cloudron env on every start.

      What works today (v0.3.8)

      • βœ… Login via Cloudron SSO on Element Web and Element X (iOS tested)
      • βœ… Messaging, media, federation with other Matrix servers
      • βœ… Element Call between users on your server (desktop confirmed, mobile in testing)
      • βœ… Element Admin against MAS + Synapse admin APIs

      Install

      Install as a custom app via the version catalog:

      App Store β†’ Settings (gear icon) β†’ Custom App Repository and enter https://git.due.ren/andreas/cloudron-ess/-/raw/main/CloudronVersions.json.

      Repo: https://git.due.ren/andreas/cloudron-ess

      The app asks for several locations at install time (all prefilled except the primary):

      • Primary location = the account/auth domain β€” set this to e.g. account.example.com (this is where MAS lives; it must be primary because Cloudron's OIDC addon only registers callbacks on the primary domain)
      • chat. β†’ Element Web, matrix. β†’ Synapse, mrtc. β†’ RTC backend, admin.matrix. β†’ Admin, call. β†’ standalone Element Call

      Current limitations / gotchas (please read before testing)

      1. The apex domain alias. Matrix identity lives on your bare domain (@user:example.com), so https://example.com/.well-known/matrix/* must be served correctly. Right now the only way to do this is to add your bare domain as an alias on the ESS app β€” the app then serves the well-known files itself and redirects everything else to Element Web. That means the apex domain has to be parked on this app, which is far from ideal if you want to run something else there. Cloudron's built-in per-domain well-known support doesn't allow the custom JSON entries Matrix RTC needs (org.matrix.msc4143.rtc_foci), hence the request to the Cloudron team below.
      2. Server name is permanent. The Matrix server name is baked in at first start. Changing domains later will brick your identity β€” the app refuses to start on a mismatch by design.
      3. Federated calls require the other homeserver to also advertise an RTC transport (rtc_foci in its well-known). Calls with users on servers that haven't deployed Matrix RTC yet will show "Call is not supported" on their side.
      4. Fresh installs only. No migration path yet from the existing Cloudron Synapse package (syn2mas migration is on the roadmap, untested).
      5. Element X mobile calls β€” still shaking out well-known caching issues (log out/in after server updates if calls error out). Actively being worked on.
      6. Resource usage: this is ~7 services in one container. Give it 2–4 GB memory.
      7. Hookshot ships but is off by default; workers/redis scaling not implemented yet.

      Request for the Cloudron team

      @girish @nebulon The apex-domain situation (limitation #1) could be solved cleanly with a small platform feature: let an app declare custom well-known entries for its parent/apex domain β€” either in CloudronManifest.json or via an API the app can call β€” so Cloudron's nginx serves e.g. https://example.com/.well-known/matrix/{server,client} and /.well-known/element/element.json on the app's behalf, without the app claiming the whole apex as an alias.

      Cloudron already serves some well-known content per domain, but there's no way to set the arbitrary JSON that Matrix needs today (e.g. the org.matrix.msc4143.rtc_foci transport entry that Element Call requires), and no way for a package to register it automatically. A wellKnown section in the manifest (updated on configure/restart) would benefit any protocol using apex-domain discovery β€” Matrix, WebFinger/Mastodon delegation, etc. Happy to write up a concrete proposal or beta-test an implementation with this package.

      How you can help

      • Install it on a test domain and report: SSO login, Element X login, 1:1 and group calls, federation with matrix.org
      • Especially interested in: calls between two different ESS-package servers, iOS vs Android behavior, and apex/alias setups
      • Issues β†’ please reply here

      Everything is rebuilt from upstream Element artifacts, config generation mirrors the official Helm chart, so upstream version bumps should be routine once this stabilizes. My plan is to eventually either implement the upstream ESS Community migration tool or build a custom script for future migrations from the legacy Cloudron matrix apps.

      Thanks for testing!

      andreasduerenA
      andreasduerenA
      andreasdueren
      App Dev
      wrote on last edited by andreasdueren
      #16

      Pinging the Cloudron team @girish @nebulon one more time more cleanly for this, or a comparative feature request (if you give me permissions on git.cloudron.io I’m happy to commit something directly):

      andreasdueren said:

      Request for the Cloudron team

      @girish @nebulon The apex-domain situation (limitation #1) could be solved cleanly with a small platform feature: let an app declare custom well-known entries for its parent/apex domain β€” either in CloudronManifest.json or via an API the app can call β€” so Cloudron's nginx serves e.g. https://example.com/.well-known/matrix/{server,client} and /.well-known/element/element.json on the app's behalf, without the app claiming the whole apex as an alias.

      Cloudron already serves some well-known content per domain, but there's no way to set the arbitrary JSON that Matrix needs today (e.g. the org.matrix.msc4143.rtc_foci transport entry that Element Call requires), and no way for a package to register it automatically. A wellKnown section in the manifest (updated on configure/restart) would benefit any protocol using apex-domain discovery β€” Matrix, WebFinger/Mastodon delegation, etc. Happy to write up a concrete proposal or beta-test an implementation with this package.

      1 Reply Last reply
      3
      • girishG
        girishG
        girish
        Staff
        wrote on last edited by
        #17

        @andreasdueren is this same or different from https://docs.cloudron.io/domains#matrix-server-location ? I guess we can also add element.json there.

        andreasduerenA 1 Reply Last reply
        2
        • girishG girish

          @andreasdueren is this same or different from https://docs.cloudron.io/domains#matrix-server-location ? I guess we can also add element.json there.

          andreasduerenA
          andreasduerenA
          andreasdueren
          App Dev
          wrote on last edited by
          #18

          @girish Almost the same, with two differences:

          1. That feature only serves a fixed set of locations (matrix/server, matrix/client, host-meta, caldav/carddav). element/element.json isn't in the whitelist, so adding it to the domain config today would still 404. If you're open to adding it there, or better, serving any configured location, that solves it. I actually have a small patch for the generic version ready (branch wellknown-generic-locations on https://git.due.ren/andreas/cloudron-box, incl. regression test) if you want an MR.

          2. The entries are static text the admin maintains by hand, while the correct values (e.g. rtc_foci for Element Call, the MAS auth block) come from the app and change with its config. That's the angle of my feature request: letting an app declare/update these entries for its apex domain itself, so they can't go stale. The dashboard feature would stay as the manual override.

          So: same mechanism, just asking for it to be un-whitelisted and optionally app-populated.

          jamesJ 1 Reply Last reply
          2
          • andreasduerenA andreasdueren

            @girish Almost the same, with two differences:

            1. That feature only serves a fixed set of locations (matrix/server, matrix/client, host-meta, caldav/carddav). element/element.json isn't in the whitelist, so adding it to the domain config today would still 404. If you're open to adding it there, or better, serving any configured location, that solves it. I actually have a small patch for the generic version ready (branch wellknown-generic-locations on https://git.due.ren/andreas/cloudron-box, incl. regression test) if you want an MR.

            2. The entries are static text the admin maintains by hand, while the correct values (e.g. rtc_foci for Element Call, the MAS auth block) come from the app and change with its config. That's the angle of my feature request: letting an app declare/update these entries for its apex domain itself, so they can't go stale. The dashboard feature would stay as the manual override.

            So: same mechanism, just asking for it to be un-whitelisted and optionally app-populated.

            jamesJ
            jamesJ
            james
            Staff
            wrote on last edited by
            #19

            fyi: @andreasdueren
            https://git.due.ren/andreas/cloudron-box can't be accessed without an account.

            andreasduerenA 1 Reply Last reply
            2
            • jamesJ james

              fyi: @andreasdueren
              https://git.due.ren/andreas/cloudron-box can't be accessed without an account.

              andreasduerenA
              andreasduerenA
              andreasdueren
              App Dev
              wrote on last edited by
              #20

              @James Oops, sorry about that. It's public now. https://git.due.ren/andreas/cloudron-box/-/commit/314e5f7a39aec36e61bc21dfced5f26dec797b96

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

                We can take a look at this after Cloudron 10, thanks.

                1 Reply Last reply
                4
                • andreasduerenA
                  andreasduerenA
                  andreasdueren
                  App Dev
                  wrote on last edited by
                  #22

                  Just successfully moved my Matrix instance over to this ESS package.

                  humptyH 1 Reply Last reply
                  3
                  • andreasduerenA andreasdueren referenced this topic on
                  • andreasduerenA andreasdueren

                    Just successfully moved my Matrix instance over to this ESS package.

                    humptyH
                    humptyH
                    humpty
                    wrote last edited by
                    #23

                    @andreasdueren Hi Andreas. Why does v0.3.32 require a manual update?

                    andreasduerenA 1 Reply Last reply
                    1
                    • humptyH humpty

                      @andreasdueren Hi Andreas. Why does v0.3.32 require a manual update?

                      andreasduerenA
                      andreasduerenA
                      andreasdueren
                      App Dev
                      wrote last edited by
                      #24

                      @humpty v0.3.32 moved the package image from Docker Hub to the new Cloudron Container Registry as part of the Cloudron 10 build-system migration. Cloudron intentionally requires manual confirmation whenever a community package changes its image repository, as a security precaution. This should be a one-time manual update; later versions from the new repository will update automatically again.

                      1 Reply Last reply
                      3

                      Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                      Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                      With your input, this post could be even better πŸ’—

                      Register Login
                      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