Hi all,
I want to host my own matrix server, so that i can run bridges to all the other (stupid) messaging apps.
I am looking for any advice or experience in choosing which server to run, and if you know of any good tutorials, run throughs, etc. i typically would like a lighter instance, as i expect about 3 users, with 2 of us needing bridging.
and then the addition of bridges, (Signal, WA, Messenger and hopefully SMS).
I am fairly self sufficient when it comes to self hosting, and i run everything on linux, in docker, proxied by Nginx proxy manager. but typically prefer stuff that works more or less out of the box.
Thanks all!
A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.
Rules:
Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.
No spam posting.
Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it’s not obvious why your post topic revolves around selfhosting, please include details to make it clear.
Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.
Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).
No trolling.
Resources:
Any issues on the community? Report it using the report flag.
Questions? DM the mods!
I run my own Synapse server with bridges to WhatsApp and Telegram, along with a few other services, using Yunohost. I haven’t observed any huge resource usage, and I like the centralized management/update. One possible downside is that you won’t get the latest versions immediately, the Yunohost maintainers take time to test those. I prefer the stability that gives me but if you want to be on the edge a docker setup will be better.
Do you need/like matrix so much that you want to self-host it in place of more admin-friendly alternatives? The client/user side of matrix is okayish, but everything else is terrible. The protocol is inefficient by design and that’s not something faster languages will solve so expect your available resources to sink, all implementations suck in different ways, are highly incompatible, constantly changing and have you in a permanent stressful state of chasing the latest/breaking/testing stuff. The team in charge is in denial about a great many things, and lacks the deeply needed amount of focus and reality check to get things done (which I imagine has been a large contributor to more and more “institutional actors” dropping them recently, like France several months ago).
I could go on and on, but in short, I was at your place some time ago and the mess, disappointment and overall stress I found with matrix only compelled me to give XMPP a close look. Now I (and my users) are super happy with ejabberd and modern clients like Conversation/dino/movim make the while thing a very pleasant experience. Not all features of matrix are there, but I take reliability/predictability and simplicity over them any single day.
Ultimately, i want something that is able to work outside of its own walls. I dont want 10 messenger apps, and i dont want to limit the messenging app that i host to just us (ie, it would be good if my account can talk to others, by my sons can only talk with us).
XMPP i have heard nothing but good things about - i will do some reading on it.
Do you have any links for the french dropping matrix?
The funny thing about XMPP is that this is exactly where it started at, when AIM, ICQ, MSN, Yahoo and co. were all the rage in the late 90’s, the geeks became annoyed of needing as many clients as there were protocols, and XMPP was meant to bridge over to all of them. Fast forward, we since learned that bridging to other protocols generally sucks (or isn’t to be recommended to the average folks), and just to make sure, Matrix tried again 15 years later with the same outcome. But if you need it, the capability is still very much there and some still pursue the effort to this day.
I only have a (private) IRC chatlog which I’m not sure it is ethical to post in the open, so I sent it to you by private message instead. I don’t think it is a secret at this point so there might be other sources out there to corroborate this.
Do not use Dendrite for multi-user setups if you plan to run bridges. Contacts handled by the bridges are visible by the whole server, which means that it leaks many information on your contacts (names, phone number, …). I’m also not sure that multi-user puppeting is supported with dendrite.
I would advise you to run Synapse because of that.
thanks, i am hoping to get conduit up and running, and the default docker-compose seems to be going ok, just need the rest of the plumbing, then the bridges and i will be sweet :D
Im using the ansible matrix playbook with synapse for 3 users and a bunch of bridges. I choose this because I used to setup my docker container and everything myself up but i absolutely dont want any downtime on my communications just because a config is not perfectly setup. If im out and about i want to still be reached. The playbook makes it really simple and takes care of everything i want. Even things like sliding sync are setup with one line added to the config. https://github.com/spantaleev/matrix-docker-ansible-deploy
This is the way! I also have a synapse with this ansible playboy up and running and it works like a charm.
My experience has been that dendrite and synapse totally maxxed out the server I ran it on (100% cpu utilization for days on end), so I run conduit.
The one downside of conduit is it’s a bit behind, so it doesn’t support all the latest rooms, and it doesn’t support spaces yet, and it has minimal admin tools so you’ll want to create all the accounts you need then close logins because bad actors will try to create logins and get you banned from half of Matrix. That said, I can tell you that even on my piddly little server (an Intel Atom D2550), it runs Conduit, ejabberd, nostr, and lotide, and the server basically sits idle. I can’t speak of bridges, unfortunately, because I don’t really use them.
This is the guide I used, it worked well to set things up:
https://gitlab.com/famedly/conduit/-/blob/next/DEPLOY.md
thanks - the dendrite and synapse experience is what i am worried about - it seems to be the massive implementation that will scale to millions.
i was looking at conduit, but realy dont know what the issues i will come against with it. but it seems to be the most visible of the non-major implementations.
Besides lacking spaces and some rooms not letting you join, (and the lack of admin tools) the only big issue I find is that you plan to run something other than Element as the interface, you’ll have to test it because many matrix clients expect synapse or dendrite and won’t start with anything else. I’ve run fluffychat, I think kchat(whatever the kde matrix client is), and nheko, they all worked well with conduit.
as you saying that element doesn’t work?
No, I’m saying it does work, but other clients might not.
ah, yep - that is cool. I expect that i will use Element and potentially another simpler client.
I am also curious about how element X will go, which requires the sliding API/proxy thingo. but that is future palitu’s problem.
I run my own Dendrite server and have had it work pretty well.
Initially I chose Dendrite over Synapse as I heard about Synapse being quite heavy in terms of load, and my overall experience with Dendrite has been pretty good!
I run the server just for myself, but have it setup with Signal and Messenger bridges that work flawlessly (apart from one time when Facebook thought my account was hacked and had to reauth!)
how difficult was the setup? i am hoping for lug-n-play type of thing.
I would rate it 8/10 for ease of install, especially with the docker setup it is pretty easy.
Only slightly annoying setup task was getting the matrix bridges setup as you need to mess with some config and I had some issues getting it to work initially.
But once it was all setup, pretty solid for me ever since!
I have the container up, but now some issues with ports. I can connect with element in the browser, but the app is having issues.
What did you do with proxying? I was told I need to port forward 8448, but that doesn’t seem right.
I’m using nginx proxy manager, default settings, and LE certs.
You can use whatever port if you’re proxying it to 8448 (assuming the container host is listening on that port which it would be by default).
If you use matrix.example.com and proxy port 443 to 8448 then it should work as your user would be @user:matrix.example.com.
You would need to portforward from outside your network if you want to access it and have it talk to other servers as they all need to communicate with your server.
Personally I wanted matrix to show my user as @user:example.com at my actual domain not as a matrix subdomain, so I had to setup the .well-known/server type http path to tell it my server is actually at matrix.example.com.
yep, i have my sub-domain proxying to the host <server>:8448, and i can use it locally. however the android element app is not able to connect, but the browser element can.
it is a dilly of a pickle, and i am not sure what is missing.
the docs at https://gitlab.com/famedly/conduit/-/blob/next/DEPLOY.md tell me to curl directly to port 8448… oh, dumbass! just typing this out i saw that it was an
if
not anand
port 8448… never mind! i iwll post this to indicate my stupidity and hopefully figure out what i am doing wrong!