I’ve been using Signal for many years now, and it fulfils most of my messaging needs. But last year’s AWS outage, which took it offline for almost a day, showed one of its many flaws: Signal is highly centralised and reliant on big tech infrastructure.

I was therefore wondering if I shouldn’t start self-hosting my own messaging infrastructure - maybe not for my day-to-day needs, but as an emergency fallback for my closest friends and family, should Signal fail again or become unavailable or compromised (looking at you, EU Chat Control!).

My first thought was to self-host my own Matrix/Synapse server, which ticks a lot of boxes for me: end-to-end encryption, media sharing (pics, audio, videos, all that good stuff), high availability of mobile clients with modern UIs, potentially even audio/video calls. The latter is still giving me a headache since apparently, I need a TURN server to get this working properly, and I’m somewhat reluctant to open so many ports just for it to work…

What’s your perspective on self-hosting messengers: which ones do you prefer? What is your primary motivation to do it? And how have you set it up?

  • Possibly linux@lemmy.zip
    link
    fedilink
    English
    arrow-up
    4
    ·
    6 hours ago

    Have you looked at all into Meshtastic? Depending on where you are, it may work quite well for local communications

    • LewdLemon@sh.itjust.worksOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      3 hours ago

      I’ve come across it, and I love the concept of making communication even more robust by making it independent even of the infrastructure of the internet. That said, I assumed that it would come with a lot more friction than the userbase I have in mind would tolerate. For now, my plan is to first seek an equally accessible, yet more decentralised alternative to Signal, and reserve digging into mesh networks for later.

  • stratself@lemdro.id
    link
    fedilink
    English
    arrow-up
    5
    ·
    edit-2
    6 hours ago

    If you choose to go with Matrix, I would strongly recommend you to give the Continuwuity server a try. It is quite simple to install, much less resource-intensive than the commonly-used Synapse, and has an active community behind it.

    apparently, I need a TURN server to get this working properly

    Do note, Matrix recently has a new calling stack called MatrixRTC, and for that you would be setting up LiveKit in place of a TURN server. That also opens many ports by default, but I think there is a “UDP mux” mode that listens all on one port. I’ll be looking into it soon.

    The other alternative is XMPP, which is a bit more complex to set up (more ports and subdomains, non-HTTP protocol etc) but is generally more lightweight and fast. ejabberd is my choice, but people tend to like Prosody and Snikket as well. While they use the traditional TURN servers for calls, their clients could use a lot of improvements though…

    So yeah, my Continuwuity and the XMPP server sits on a small homelab machine, and with some extra tuning and grit, they work well. LiveKit and TURN sits on a VPS for better network performance. To be honest, I do all of this mainly because I wanna talk to cool people on the internet, so the service has to be federatable.

  • Possibly linux@lemmy.zip
    link
    fedilink
    English
    arrow-up
    3
    ·
    6 hours ago

    Simplex chat looks interesting although I don’t use it

    I would recommend that you use what the people around you use

    • LewdLemon@sh.itjust.worksOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      3 hours ago

      I would recommend that you use what the people around you use

      That’s not what I have in mind. I’m playing trailblazer here: at least for the people closest to me, I want an alternative means of communication that will be ready in a minor shit-hits-the-fan scenario (i.e. one where Signal for instance goes tits up, like it already has once).

  • lambalicious@lemmy.sdf.org
    link
    fedilink
    English
    arrow-up
    30
    arrow-down
    2
    ·
    16 hours ago

    Self-hosted messaging was solved decades ago, it’s called XMPP or Jabber depending on who do you ask. There are a number of services for it, such as Prosody or ejabberd, and there are both client apps (eg.: Conversations for Android, Gajim or Dino for PC) and a number of webclients (such as converse.js which can actually be shipped via a ejabberd install).

    That said you could just set up an alternative Signal client that allows for custom servers, since the centralization of Signal only really exists at the level of the client only connecting to Signal’s servers… Signal’s people have pointed this out themselves, when offering bridge setups so that people could connect from Iran or other countries where those countries blocked Signal’s endpoints.

    • smiletolerantly@awful.systems
      link
      fedilink
      English
      arrow-up
      3
      ·
      5 hours ago

      I unfortunately wouldn’t call it solved. I host XMPP and Matrix, (and a STUN/TURN server, and a Livekit server for the modern matrix calls…), and nothing is perfect.

      Prosody is really great because it’s so no-nonsense. It doesn’t hog resources or choke up like matrix servers do if you suggest to them that maybe they could deliver this text message? :3 Oh, no, it’s “hold for 2 weeks despite the recipient being online” again? Ok…

      But XMPP is still incredibly hard to recommend for me, because

      1. no way to read old chats on new devices, which honestly is close to a deal-breaker for many people, myself inclided. And
      2. apart from maybe monocles on android, the clients just suck ass. They’re bad. Their UI/UX is stuck 20 years ago, and that does matter.

      Hence why I still mostly use Matrix… Even though it’s such a stupid, stupid protocol.

      • Andres@social.ridetrans.it
        link
        fedilink
        arrow-up
        1
        ·
        5 hours ago

        @smiletolerantly @lambalicious “no way to read old chats on new devices,”

        If you’re talking about unencrypted messages, then prosody’s mod_mam (https://prosody.im/doc/modules/mod/_mam) will store messages for a configurable amount of time and allow all devices to sync older messages.

        If you’re talking about encrypted messages, you have two choices. OMEMO is the standard means for encrypting XMPP messages, & only works in forward mode; you can’t decrypt old messages. OpenPGP, however, decrypts old msgs.

        https://prosody.im/doc/modules/mod_mam

        • smiletolerantly@awful.systems
          link
          fedilink
          English
          arrow-up
          2
          ·
          5 hours ago

          Yes, encrypted (otherwise what’s the point? 😄). I’ll admit I haven’t tried the PGP version yet. How’s client support? For OMEMO it’s pretty lackluster, from what I’ve heard not much different for PGP?

          In any case, perfect forward secrecy is definitely a good thing / strength, but I’d like a way to re-encrypt messages from an old device, just as an example, during the setup process; or a standardized way to export all history; or just something beyond “either use worse or no encryption, or loose access to your history eventually”.

    • Possibly linux@lemmy.zip
      link
      fedilink
      English
      arrow-up
      3
      ·
      6 hours ago

      I have literally never heard anyone mention xmpp outside of Lemmy. Anyways it is a dead technology due to how fragmented it is along with its reliance on XML

    • mjr@infosec.pub
      link
      fedilink
      English
      arrow-up
      3
      ·
      13 hours ago

      +1 for prosody. But you’ll still probably need a turnserver for calls, won’t you?

      • lambalicious@lemmy.sdf.org
        link
        fedilink
        English
        arrow-up
        2
        ·
        11 hours ago

        I’m unsure what’s the progress status over there so I’ll say “yes?”.

        Which reminds me, I think there is a binding somewhere that lets XMPP send SMS messages, but dunno how if any is that related to phone call compatible audio.

  • SolacefromSilence@fedia.io
    link
    fedilink
    arrow-up
    7
    ·
    13 hours ago

    I also self-host a messaging service. My infrastructure is a homing pigeon coop.

    /uj I like your question and couldn’t contribute technically, so hope you get a laugh

  • ShredderFeeder@shredderfood.net
    link
    fedilink
    English
    arrow-up
    18
    ·
    16 hours ago

    Matrix/Synapse is pretty easy to set up… the encryption is a bit on the kludgy side, but it definitely works… I run it over a cloudflare tunnel (inbound) and perm-VPN tunnel (outbound)

    I can give you a sample docker-compose file I use if you’d like. ;-)

    • LewdLemon@sh.itjust.worksOP
      link
      fedilink
      English
      arrow-up
      7
      ·
      16 hours ago

      Thank you so much for your offer! I’ve actually set it up last night and it’s running fine so far. It’s just that it won’t relay any calls if either of the devices is not on my network. Tunneling back into the network via VPN might be an option, but make it more cumbersome to use for some of the less techy folks around me.

      What’s your primary reason to self-host Synapse? And who do you use it with?

      • ShredderFeeder@shredderfood.net
        link
        fedilink
        English
        arrow-up
        7
        ·
        16 hours ago

        Getting off corporate messaging…I use it for family and friends, people I know personally… But it is fully federated so I can get to some of the groups and such… matrix community servers and the like. :)

        Mostly I started investigating it when Discord started talking about age-verification… Figured it was a good idea to have an exit strategy…

  • artyom@piefed.social
    link
    fedilink
    English
    arrow-up
    9
    arrow-down
    1
    ·
    edit-2
    13 hours ago

    Matrix is the most popular one these days, and it’s worth considering just for that reason, but it is also extremely buggy and slow. I can’t tell you how many timed I’ve been booted and locked out of my own account, or someone sends me a message, only to receive “message cannot be decrypted” error.

    If you’re starting something new that you’re bringing other people to, I’d very much recommend DeltaChat/ArcaneChat (chatmail). It’s been far more reliable and easier to use.

    I’ve never used XMPP because all of the clients are extremely dated.

  • rako@tarte.nuage-libre.fr
    link
    fedilink
    Français
    arrow-up
    6
    ·
    14 hours ago

    Looking at self-hosting I would rather go with chatmail, part of the deltachat ecosystem. Contrary to others the account doesn’t live on the server but on devices: a server going down merely affects connectivity, not the whole identity. Moreover servers are made to be redundant such that messages can transit through pretty much any of them. So when one goes down the app switches to another one and the downtime is invisible

  • Egonallanon@feddit.uk
    link
    fedilink
    English
    arrow-up
    4
    ·
    13 hours ago

    A friend hosts an IRC server that I use along with a bunch of other mates for a lot of our comms. Works really well and is wonderfully lightweight without any extra bells and whistles that we don’t care for.

  • drkt@scribe.disroot.org
    link
    fedilink
    English
    arrow-up
    8
    ·
    16 hours ago

    If you’re going with Matrix, consider looking at Synapse alternatives. Synapse is by a huge margin the heaviest of the backends to run and it doesn’t really get you anything extra.

    • benno@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      11
      ·
      15 hours ago

      introducing:

      • dendrite: basically dead
      • conduit: slow development, still beta
        • conduwuit: dead fork of conduit
          • tuwunel: active fork of conduwuit
          • continuwuity: another active fork of conduwuit
        • aksdb@lemmy.world
          link
          fedilink
          English
          arrow-up
          6
          ·
          15 hours ago

          Snikket is more like a distribution than a fork. It’s basically prosody with plugins and and configs.

            • lemmyvore@feddit.nl
              link
              fedilink
              English
              arrow-up
              2
              ·
              14 hours ago

              You can install the stack in an LXC container and take snapshots instead. Incus makes managing that very easy.

              App stack in a system container + snapshots is a different approach from stack of app containers that you provision/tear-down but it gets you most of the same advantages.

              Bit of time needed to re-learn Docker concepts in another form but I think it’s a good tool to have on your belt. Sometimes apps aren’t available for Docker, or they ship very poorly made images, or you simply feel that a system container that you upgrade in-place is the better fit.

              Oh and Incus can also do VMs (KVM) with the exact same command interface as for LXC so you get that option too at the cost of learning one tool.

  • femtek@lemmy.blahaj.zone
    link
    fedilink
    English
    arrow-up
    3
    ·
    13 hours ago

    I just setup fluxer selfhosted, using it for alerts from monitoring things but once I make everything is good and stable I was going to let the discord communities I’m in about it.

  • Decronym@lemmy.decronym.xyzB
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    3 hours ago

    Acronyms, initialisms, abbreviations, contractions, and other phrases which expand to something larger, that I’ve seen in this thread:

    Fewer Letters More Letters
    Git Popular version control system, primarily for code
    LXC Linux Containers
    UDP User Datagram Protocol, for real-time communications
    VPN Virtual Private Network
    VPS Virtual Private Server (opposed to shared hosting)
    XMPP Extensible Messaging and Presence Protocol (‘Jabber’) for open instant messaging

    6 acronyms in this thread; the most compressed thread commented on today has 9 acronyms.

    [Thread #166 for this comm, first seen 11th Nov 2026, 01:30] [FAQ] [Full list] [Contact] [Source code]