this post was submitted on 15 Apr 2025
51 points (96.4% liked)

Selfhosted

46110 readers
832 users here now

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:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. 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.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
 

Hi there,

I would like to host my own Synapse server, but I am not sure where to start.

I would like to be able to use Nginx Proxy Manager as the reverse proxy and I've read that you can use example.eu for the username, while actually using a subdomain like matrix.example.eu?

Is there some good documentation out there and what would people recommend? I would like to run it in a container on Proxmox, but Docker could also be an option?

all 23 comments
sorted by: hot top controversial new old
[–] sxan@midwest.social 25 points 6 days ago (2 children)

A lot of memory, and a lot of disk space.

Synapse is the reference platform, and even if they don't, it feels as if the Matrix team make changes to Synapse and then update the spec later. This makes it hard for third-party servers (and clients!) to stay compliant, which is why they rise and fall. The spec management of Matrix is awful.

So, while suggestions may be to run something other than Synapse - which I sympathize with, because it's a PITA and expensive to run - if you go with something else just be prepared to always be trailing. Migrating server software is essentially impossible, too, so you'll be stuck with what you pick.

Matrix is one of the worst-managed best projects to come out in decades.

[–] farcaller@fstab.sh 5 points 5 days ago (1 children)

Conduit is in no way compact either. I tuned its caches because two gigs of ram seemed ridiculous for a single-user instance but I only got the mobile client sync lag as a result.

XMPP used to be so much nicer...

[–] sxan@midwest.social 4 points 5 days ago (1 children)

The problem is the design is Matrix itself. As soon as a single user joins a large room, the server clones all of the history it can.

I mean, there are basically two fundamental design options, here: either base the protocol over always querying the room host for data and cache as little as possible, or cache as much as possible and minimize network traffic. Matrix went for minimizing network traffic, and trying to circumvent that - while possible with cache tuning - is going to have adverse client behaviors.

XMPP had a lot of problems, too, though. Although I've been told some (all?) of these have been addressed, when I left the Jabberverse there was no history synchronization and support for multiple clients was poor - IIRC, messages got delivered to exactly one client. I lost my address book multiple times, encryption was poorly supported, and XMPP is such a chatty protocol, and wasteful of network bandwidth. V/VOIP support was terrible, it had a sparse feature set, in terms of editing history, reactions, and so on. Group chat support was poor. It was little better than SMS, as I remember.

It was better than a lot of other options when it was created, but it really was not very good; there are reasons why alternative chat clients were popular, and XMPP faded into the background.

[–] poVoq@slrpnk.net 2 points 5 days ago

You must have last used XMPP more than a decade ago, since none of these issues still exist (except on Pidgin which also hasn't been updated since a decade).

And XMPP is also not a "chatty protocol, and wasteful of network bandwidth" at all. In fact it is using significantly less bandwidth than Matrix and works on extremely shitty connections. It is basically the exact opposite of what you say.

They are the definition of move fast and break things. And they just keep breaking things while not even being that fast. But still there is nothing to replace it and the work they are doing is valuable.

[–] ambitiousslab@lemmy.ml 12 points 6 days ago* (last edited 6 days ago)

I host Synapse using this playbook. I can highly recommend it - the instructions are very clear and detailed and ongoing maintenance is straightforward too (just git pull and redeploy, and 5% of the time modify a deprecated variable).

As for how to delegate to a subdomain - that's covered here. Basically - you set it up on matrix.example.eu and then have a "well known" file hosted at example.eu that tells other clients/servers where to look.

[–] Shimitar@downonthestreet.eu 9 points 6 days ago (2 children)

Why synapse?

Its a good choice for max stability, but its by far the heaviest and most resource intense server out there, and probably overkill for a few user installation.

[–] meldrik@lemmy.wtf 4 points 6 days ago (2 children)

What do you suggest? It's only intended for a few users, but I'd still like to have the most features available to the users.

[–] Shimitar@downonthestreet.eu 8 points 6 days ago* (last edited 6 days ago) (1 children)

Tuwunel, the sequel of conduwuit.

Go with conduwuit today, then upgrade to tuwunel as soon as they release.

There is a post about that in this community.

[–] sylphio@lemmy.ml 3 points 5 days ago (1 children)

From what I read, using anything but Synapse requires to compromise on features/compatibility. I know this is not the dev's fault, it's from the way the Matrix spec evolve. Do you know of any resource regarding the current features/compatibility of tuwunel/conduwuit? I am particularly curious about:

  • bridges
  • element-call
  • threads
  • session verification (e.g. emoji comparison over federation)
[–] Shimitar@downonthestreet.eu 2 points 5 days ago (1 children)

My personal experience with conduwuit is very positive.

Everything worked including sliding sync for Element X.

Bridges works fine. Threads too (limited to client support ofc), session verification works fine, element call never tried, you need to install a dedicated server anyway, but that's true also for synapse.

[–] sylphio@lemmy.ml 1 points 4 days ago

Thanks, that ia vert encouraging! I look forward to tuwunel then 🙂

[–] natryamar@lemmy.world 2 points 6 days ago

Which one can be hosted on truenas scale?

[–] msage@programming.dev 2 points 5 days ago

I use the pip install without issues for 8 years.

Never join matrix.org from your server (or ideally any other) and you'll be fine.

I have my entire inner circle on my homeserver without issues, sharing pictures and texting a lot, and in that time we are on like 25ish GB in disk space.

[–] poVoq@slrpnk.net 6 points 6 days ago (1 children)

Synapse has become open-core and the possible alternatives are either abandoned or are currently in a really unclear state. And due to how Matrix federation works, it is quite difficult to change anything later and if you are unhappy with the setup you have basically burned a domain and need to start fresh on another. If you just want a chat server I would rather suggest to set up a XMPP server with a Slidge.im Matrix bridge.

That said: there are easy to use official Docker containers for Synapse, and you just need a redirect in your reverse-proxy for some sub-directories to put it on the same domain than something else. There are also some other, more complex ways to do it, but just redirecting the subdirectories is the easiest.

[–] acockworkorange@mander.xyz 1 points 6 days ago

That would regio explain with there are so few matrix servers out there compared to Lemmy or Mastodon.

[–] grin@lemmy.world 4 points 6 days ago (1 children)

Look for the docs about jemalloc, may push down memory usage to ⅕. I'd say use conduwuit because it's way more resource conservative… but it's dead now.

[–] slacktoid@lemmy.ml 3 points 5 days ago

Its been forked to tunnel but with an uwu joke in the spelling

[–] unexposedhazard@discuss.tchncs.de 3 points 6 days ago* (last edited 6 days ago)

If you want the new mobile client "element x" to work, you will need element-call on the server (a decentralized webrtc based call system). This currently only really works in combination with synapse, so i would go with synapse. Either the ansible playbook as mentioned by others, or look into the still quite new ESS community edition.

[–] lambalicious@lemmy.sdf.org 0 points 5 days ago (2 children)

Doesn't synapse need like, a server cluster to run? The self-hostable service is supposed to be something owo, I think.

[–] stefenauris@pawb.social 4 points 5 days ago

No it works perfectly fine on a relatively small VPS. Ideally you'd want some redundancy for a form of communication but some people (like me) just wing it lol

[–] daniskarma@lemmy.dbzer0.com 2 points 5 days ago

Not at all. I have my instance sitting on 100MG of RAM and 0% cpu usage. There's only 3 users that barely use it, but there it is.

It scales by number of users.

It's true that it's a resource hog, due to being written in python (who the hell though that), but it all depends on usage.