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?

  • 𝕽𝖚𝖆𝖎𝖉𝖍𝖗𝖎𝖌𝖍@midwest.social
    link
    fedilink
    English
    arrow-up
    26
    arrow-down
    1
    ·
    4 days ago

    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
      link
      fedilink
      English
      arrow-up
      5
      ·
      3 days ago

      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…

      • 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
          link
          fedilink
          English
          arrow-up
          2
          ·
          3 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.

    • unexposedhazard@discuss.tchncs.de
      link
      fedilink
      English
      arrow-up
      6
      ·
      4 days ago

      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.

  • msage@programming.dev
    link
    fedilink
    English
    arrow-up
    2
    ·
    3 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.

  • ambitiousslab@lemmy.ml
    link
    fedilink
    English
    arrow-up
    12
    ·
    edit-2
    4 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
    link
    fedilink
    English
    arrow-up
    9
    ·
    4 days ago

    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.wtfOP
      link
      fedilink
      English
      arrow-up
      4
      ·
      4 days ago

      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
        link
        fedilink
        English
        arrow-up
        10
        arrow-down
        2
        ·
        edit-2
        4 days ago

        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
          link
          fedilink
          English
          arrow-up
          3
          ·
          3 days ago

          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
            link
            fedilink
            English
            arrow-up
            2
            ·
            3 days ago

            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.

  • poVoq@slrpnk.net
    link
    fedilink
    English
    arrow-up
    6
    ·
    4 days ago

    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.

  • grin@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    ·
    4 days ago

    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.

  • unexposedhazard@discuss.tchncs.de
    link
    fedilink
    English
    arrow-up
    3
    ·
    edit-2
    4 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
    link
    fedilink
    English
    arrow-up
    1
    arrow-down
    2
    ·
    4 days ago

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

    • Stefen Auris@pawb.social
      link
      fedilink
      English
      arrow-up
      4
      ·
      4 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
      link
      fedilink
      English
      arrow-up
      2
      ·
      3 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.