Matrix/Riot
-
@stantropics already askes this question in the closed matrix thread:
First of all, thanks to everyone who has been working on the matrix app. I'm very happy to be able to run it on cloudron!
Making a user an administrator.
Referring to the documentation (https://github.com/matrix-org/synapse/wiki) one command needs to be executed to make a user an admin - it manipulates the data in the postgresdb:
UPDATE users SET admin = 1 WHERE name = '@foo:bar.com'
What is the recommended way to perform this on Cloudron?Thanks a lot in advance.
Stay healthy everyone!Is there any recommended way to set a user as an admin in the app store released version of matrix?
Thanks!
-
OK, I found https://github.com/vector-im/riot-web/issues/4125 which is an open issue for implementing admin functions in Riot. I also found https://github.com/Awesome-Technologies/synapse-admin which can probably be run locally.
-
Hi all,
Matrix Synapse and Riot are available for testing as unstable apps.Code: https://git.cloudron.io/cloudron/matrix-synapse-app
App store link: https://cloudron.io/store/org.matrix.synapse.htmlCode: https://git.cloudron.io/cloudron/riot-web-app
App store link: https://cloudron.io/store/im.riot.cloudronapp.htmlMatrix is integrated with Cloudron user management. A non-LDAP version can possibly be supported in a future release.
IMPORTANT: You require Cloudron 5.1.4 for the apps to work. We are still rolling this out slowly but you will get it in the coming week. Cloudron version is on the footer of Cloudron dashboard on the bottom right.
Understand
If you are new to matrix, then this 2 min section is for you. Matrix is a decentralized messaging system. It's easy to explain things in terms of email addresses. Just like email, each user has a unique world wide id like
@username:example.com
. The "backend" that implements matrix protocol is called Synapse (in mail world, there is haraka, postfix, exim to name a few). The location where you install Synapse is called the home server. For example,matrix.example.com
. As you can see, the location of your homeserver can be different from your ID. Just like how mail servers exchange emails with each other via SMTP, home servers exchange messages with each other using Matrix protocol.The "frontend" that we have packaged is Riot. There are numerous desktop and mobile apps to access your homeserver. You only need to install Riot if you want a web based frontend (like roundcube, rainloop). Otherwise, just use any mobile and desktop clients (check matrix.org).
Installing
Step 1
Start with Synapse. If you install it at
anything.example.com
, the default setup is set to configure to generate IDs like@username:example.com
. I think this is what most people want i.e memorable IDs underexample.com
. If you want a recommendation, install this app atmatrix.example.com
, only because Riot is pre-configured to usematrix
subdomain as the homeserver location.If you want some different setup, see https://cloudron.io/documentation/apps/synapse/#step-1-select-matrix-ids
Step 2
Now, you must setup a so called delegation record. This is like MX record for email where
foo@example.com
can be translated by a DNS lookup to the mail servermailserver.example.com
. In matrix, this is done by setting up a.well-known
record which is served up the HTTP server (this is not a DNS record like in email!).To setup this record, please see https://cloudron.io/documentation/apps/synapse/#step-2-delegation
If
example.com
is a site hosted on Cloudron (what I mean here is that there is an app on Cloudron servingexample.com
and not just the domainexample.com
is added), you can SSH into the server and add the record like this:mkdir -p /home/yellowtent/boxdata/well-known/example.com/matrix echo '{ "m.server": "matrix.example.com:443" }' > /home/yellowtent/boxdata/well-known/example.com/matrix/server
Then, re-configure the app by going to the Location view and just click save without making any changes.
You can then test if it works like this:
$ curl https://example.com/.well-known/matrix/server { "m.server": "matrix-homeserver.example.com:443" }
Step 3
Install Riot. If you installed synapse at
matrix.example.com
, the client should be already able to connect. Just login with Cloudron username and password.Voice/Video Calls
It's pre-configured to use Cloudron's built-in TURN server. 1-1 calls should work out of the box. For group calls, it uses an external jitsi server. We are working on a Jitsi package for Cloudron which you can set once it's ready.
That's it!
@girish Getting an error on verifying:
$ curl https://example.com/.well-known/matrix/server
curl: (6) Could not resolve host: example.com (I used my own domain)I chowned the matrix folder and server file to be owned by yellowtent. I had to use sudo to get the mkdir command to work.
I set permissions of 0600 on the server file.
There is no app at example.com.
Matrix is installed at matrix.example.com.
Do I need to manually add a DNS entry for example.com? -
@will You need to have an app installed at
example.com
. You can even set it to redirect to some other existing app i.e go to existing app -> Location -> Add redirection. -
@will Only requirement is that it should be used by some app on Cloudron. You don't need to redirect it to matrix specifically.
example.com
can either be any app or it can redirect to any app. (At a technical level, all this means is that the Cloudron's reverse proxy is prepared & ready to answer requests for that domain). -
@will Only requirement is that it should be used by some app on Cloudron. You don't need to redirect it to matrix specifically.
example.com
can either be any app or it can redirect to any app. (At a technical level, all this means is that the Cloudron's reverse proxy is prepared & ready to answer requests for that domain). -
@will there is no way around this requirement. the matrix protocol requires the apex domain to serve up those documents. is your concern that the domain
example.com
can be used to host a site somewhere else? If so, all you have to do is to move the.well-known
setup to that server/new location. -
@will there is no way around this requirement. the matrix protocol requires the apex domain to serve up those documents. is your concern that the domain
example.com
can be used to host a site somewhere else? If so, all you have to do is to move the.well-known
setup to that server/new location. -
@girish My concern is having anything at example.com
It would be cleaner to just have cloudron handle that for me. Small gripe, not a big deal at all.@will said in Matrix/Riot:
It would be cleaner to just have cloudron handle that for me. Small gripe, not a big deal at all.
Ah, Cloudron side limitation can definitely be fixed
I agree that having to ssh and put files manually in a cryptic location is kinda crude. This will be fixed soonish but we just wanted to get the apps out for testing sooner rather than later.
-
@will said in Matrix/Riot:
It would be cleaner to just have cloudron handle that for me. Small gripe, not a big deal at all.
Ah, Cloudron side limitation can definitely be fixed
I agree that having to ssh and put files manually in a cryptic location is kinda crude. This will be fixed soonish but we just wanted to get the apps out for testing sooner rather than later.
-
@yusf that is a good question, I moved the app to a different subdomain to test around, but that's probably not it. I'm guessing it is because of new keys and everything, haven't tried to re-use any of the existing ones.
Oh yea, atm there is no default channel, you might want to remove the comment on those lines as well to get new users in there automatically
-
I'm transitioning my external reverse-proxy-and-well-known solution to the Cloudron solution. Is there any way I can configure Riot to have
https://domain.tld
asbase_url
while still having the Synapse server athttps://matrix.domain.tld
? This way I would be able keep Riot user sessions across migration. -
@yusf That should not be a problem. Riot can be installed on the main domain as well. Just make sure the
.well-known
is setup on the server.