Matrix was worth the effort to self host.
Initially I started with Matrix-Synapse. The toughest part was figuring out how to setup a subdomain to host my matrix server on, while still being able to point users to the main domain when they sign-up. (@user:example.com instead of @user:matrix.example.com). Once I figured out how delegation worked with a reverse proxy I got it working and figured id try dendrite. Dendrite is the second generation matrix server written in Go and I think its configuration is easier and its footprint is smaller than matrix-synapse. However since its still a work in progress and its in beta stages some features aren’t implemented and there were a few hiccups that made me switch back to matrix-synapse. So when dendrite is good to go I’ll definitely be switching to that.
File uploading, messaging, and E2E encryption all work way better than I expected. I’m running matrix-synapse on a VM and there’s no latency between me or my users. Its just working. I haven’t configured a STUN/TURN server yet so I can’t speak to its performance. The only delay you will get is when you join rooms, but that’s just because you’re part of a federation now and your matrix server has to go through each user in the room to retrieve and check keys. Really you only have to wait when joining rooms on matrix.org with 30k+ members.
Matrix clients hit different than pretty much any other chat client I’ve use before. Theres multiple clients I’ve found like nheko, moments, element that are a pleasure to look at and smooth as hell. Even better you can have users use web services like Element Web to sign-up and chat. Its sick.
Lastly, the communities on Matrix are invaluable to myself and and probably you if you self host. When I was having issues setting up matrix-synapse, I went to the matrix-synapse matrix room and multiple people were all giving me a hand with any question I had. Everybody knows to go to IRC but matrix has some pretty smart people in their matrix servers that are looking to help you out.
TLDR: If you’re looking for your next project, I’d rate setting up a matrix synapse server as a 6/10 difficulty. You need a domain, and you should know how to use letsencrypt for certs. You’ll probably get hung up on how to use delegation with your reverse proxy but you’ll figure it out. Everything else is pretty straight forward. I’m running it on a debian vm and it doesn’t require a lot of resources.
Also, a very good idea:
Make a uptime channel where you send uptime kuma notification if something is down so they know they’re not crazy/doing something wrong, some new movies/series/music/services channels to let them know of new content/services that you just added.
All on the platform of your choice. I do it on Discord for now but later I’ll be moving to Matrix. Give them a reason to use it then they’ll discover it for themselves.
I’m still thinking about it. The only thing that keeps me from doing it right now is the fact, that there is no real way to manage the storage requirements.
I dislike the idea to permanently store data in a messaging service.
I was thinking about hosting a server for me and my friends but the thought of storing the data forever sounds like a pain in the ass. Nowadays people send large files over chat and Matrix is designed to keep that data forever. So I’m worried that I have to constantly upgrade my storage which could make this project expensive.
Another thing that I don’t know is what implications the federation has in regards to storage. If my users join a large room that is hosted on a different server, will my server cache that data?
You can actually configure synapse to :
- automatically delete messages older than x
- automatically delete messages with media bigger than x kb after x days
- manually delete the medias with some filters from the gui for synapse admin
https://github.com/spantaleev/matrix-docker-ansible-deploy
This makes matrix relatively easy to setup with quite a few of the mainline bridges