Alternative to Discord? XMPP!

I would like to throw out an option for Manjaro in communicating with it’s user base. XMPP!

As someone that dabbled with XMPP way back when, I recently was happy to find out that it is actually still going strong and getting stronger!

Currently, I have set up two xmpp servers, both using Prosody, one for the family and one for general purpose use, although neither of the servers is open to the public for registration.

Just before posting this, I finished the a Multi User Chat room (MUC) for DeLinuxCo. It is read only and so I can broadcast announcements, updates and or even fixes quickly to everyone that subscribes to the group chat. The forum here was kind enough to list me on the contributions page and so I will utilize that for discussion, but when I want to broadcast something, I can do it via the XMPP chat room.

For those not familiar with XMPP, it is a protocol first released in 1999, some of you may know it by “Jabber”. Jabber was one of the most popular XMPP clients and the name kind of became synonymous with XMPP.

The whole idea, is like your email provider, any email server can send an email to any other server just by knowing their address. The same way it works for XMPP with chats, video and voice calls, any server can chat, Call or video call any other server as long as it knows the address. It is truly federated system, decentralized as it should be, no one is snooping, collecting information from users etc.

Interestingly enough, WhatsApp, Telegram, Signal, FB Messenger, and many others, they are all using xmpp protocol, only difference is they lock it down to their server only.

If you already have an XMPP account, sub my DeLinuxCo.

Quick Client list:
iOS: Monal, Siskin M, Snikket
Android: Conversations, Monocles or Snikket
Linux: Dino or Gajim (chat only)

2 Likes

Seems very interesting.

I’m looking for a discord alternative for a small group of gamers.

I have some questions to understand if this project fits my needs:

  • is it possible to completely self-host (i mean my server in my home)?
  • is it possible to use non standard ports (my ISP blocks ports 80 and 443 and I have to use 8880 and 7443)?
  • is it possible to install on a standard manjaro distribution?

Until now my search ended with matrix (see this thread https://forum.manjaro.org/t/tips-on-setting-up-a-self-hosted-voice-chat-server/185892 )

But that solution misses the many to many video and audio and I’m retrying with the ESS distribution ( GitHub - element-hq/ess-helm: Element Server Suite Community Edition · GitHub )

I’m still searching a solution

For your information, we do already have an instant-messenger presence, on Telegram. :man_shrugging:

1 Like

I understand that, but Telegram is no different than Signal, WhatsApp, or Messenger in that you have to subscribe to each service, which harvest your data etc.

XMPP, is different in that it inverts the whole eco system. Instead of having to have Messenger, WhatsApp, Signal, apps installed, you select a client app of your choosing and you subscribe to your various outlets and they all show up on one client app.

In database terms, the current setup is a “many to one” model, you have to have many apps to connect to one channel. With XMPP, it is a one to many relationship, you have one client that you can suibscribe to many channels.

Think of it this way, can you imagine if email worked like the current messaging app eco system? It was never supposed to be this way, it was always designed to be open and decentralized. Mac OS used to have XMPP/Jabber support baked right into iChat.

Now I understand why there are so many chat apps, most are just xmpp implementations locked down to not allow other servers to connect. It is literally one line you comment out on the config file and you have your Signal, or Telegram or what ever.

Hi @mirto

is it possible to completely self-host (i mean my server in my home)?

Yes, you can do it in a container if need be. But if you want to make calls, you need to have a STUN server running in the cloud.

is it possible to use non standard ports (my ISP blocks ports 80 and 443 and I have to use 8880 and 7443)?

Here are the ports used by Prosody’s implementation of XMPP:

is it possible to install on a standard manjaro distribution?

Sure… but if you can swing it, I really recommend just hosting the whole thing on a cloud server. I run one of my servers on HOSTKEY, 4 cores, 6GB Ram, 120GB SSD for 3 Euros per month, that server can run thousands of users, automatic backup etc. Now, I am a Portuguese National, so I have a Portuguese Domain being hosted in Spain. Your situation may be different.

I was a big, BIG advocate for Matrix, but they went bat shiat crazy too and now their service is basically proprietary.

But that solution misses the many to many video and audio and I’m retrying with the ESS distribution ( GitHub - element-hq/ess-helm: Element Server Suite Community Edition · GitHub )

Yes, that is one draw back. but remember, many to many video calls are really a different beast, they are more of a meeting type thing, you could always just use Jitsi Meet.

2 Likes

This video was one that gave me a deep dive into XMPP and why?

4 Likes

Hi @DeLinuxCo thanks for your reply

I’ll try to explain my situation:

STUN server in the cloud: I have to study STUN; but my need is to avoid the cloud and to use my server with a [my ISP ip].nip.io address and a self-signed certificate

Hosting on a cloud server: I don’t like to have my server out of my control. I know this is the simplest solution; but, you know, if someone have the physical access to a machine (o a virtual machine) he can do everything to your data (BTW I am in Italy)

About jitsi meet: it was my first try. But the project seems abandoned (at least the open source version) all software and documentation seems years old

You can completely self-host (I do).

If you can configure SRV records for your domain you can set non-standard ports. It might be better to port-forward to the standard ports internally.

I use ArchlinuxARM but you should be able to configure a solution on Manjaro. Of course, your server would have to be available 24/7.

If you want to employ a STUN/TURN server for voice and video calls be aware that, unless you want to make it publically accessible and unauthenticated, it will only be available to users with accounts registered on your XMPP server. This is because the XMPP server authenticates with the STUN/TURN server for those calls.

Self-signed certificates are problematic as there’s no chain of trust associated with them. They’re fine for internal usage but when communicating externally something like Let’s Encrypt should be used for the convenience of others.

2 Likes

Hi @mirto

So a STUN server, is the smallest of servers, in fact I run my STUN server on the same server as XMPP. The reason for a STUN server is for those that are behind a firewall to find your server, especially if it is being self hosted behind your ISP.

XMPP requires multiple sub domains, I am not sure you can use an IP address. One thing you could try, is using Cloudflare Tunnels, but then again you are trying to avoid using the cloud.

One option that came across after I set up my servers, was Snikket, Snikket Chat | Get Started

Regarding Jitsi Meet, the xmpp version has gone End of Life, they switched to SIP for better multi user video (meetings), but the project by no means abandoned. Jitsi · GitHub

Enjoy, learning, I would be interested to know if you get it working locally on your machine.

-John

1 Like

Hi @DeLinuxCo thanks a lot for these informations.

I’m happy to learn that jitsi is not abandoned.

I’ll study and try. If I have some success I’ll report here or in a new thread.

2 Likes

Found a list of open registration xmpp/jabber servers, Just an FYI

2 Likes

https://movim.eu/ might be an option for you to host locally, but you would have to run Tunnels or something similar.

Thanks a lot!

I’ll give it a try.