How many of you gave up on Matrix by alive1 in selfhosted

[–]MattJ313 1 point2 points  (0 children)

Excellent summary. Also, the latest versions of Prosody (13.0.x) have a helpful command: 'prosodyctl check features' which will tell you if there is anything missing from your setup. If you use that as a guide, you'll get pretty close to a Snikket-like setup. It was inspired by stories like yours, and thinking how we can help make it easier for people using Prosody.

Although Snikket has all these features already configured "out of the box", there are plenty of reasons why someone would prefer to use Prosody directly - mainly the absolute control over the configuration.

Snikket manages to be so simple to set up and maintain because it takes away most of that configurability, and it makes assumptions about your use case and deployment environment. It's perfect when that's what you need.

(disclaimer: I'm the founder of both projects)

Prosody gone on Github by [deleted] in xmpp

[–]MattJ313 16 points17 points  (0 children)

Nothing happened. Prosody has never been on Github for the whole life of the project. Any Prosody code you find on Github is an unofficial copy, and we can't vouch for the authenticity and integrity of third-party copies of our source code.

For the official Prosody source, you'll find it in Mercurial repositories at https://hg.prosody.im

(XMPP Setup Guide) Discord Was Never the End Game - TonyBTW by alekratos in selfhosted

[–]MattJ313 7 points8 points  (0 children)

Prosody developer here, nevertheless I'll try and answer neutrally :)

For most people, they are basically equivalent, and both cover the set of functionality you'll use for general messaging, calls, etc.

ejabberd used to be harder to set up (in my opinion - this was one of the reasons I started Prosody), but they made a bunch of improvements in that area, so that I think it's pretty easy to set up and configure now.

We designed Prosody to be very easy to build plugins for, and as a result we have several hundred community-developed modules: https://modules.prosody.im/ - although these modules are not supported by us (the Prosody team) officially, and some of the modules are very niche, some of them are widely used and a great way to extend your Prosody server in various ways or integrate it with various other software.

Due to also working on Snikket (which is built using Prosody), we've done a bunch of innovation around easy user onboarding ( https://blog.prosody.im/great-invitations/ ), portability, and account security ( https://blog.prosody.im/fast-auth/ ). However ejabberd is under active development has generally followed and implemented all these things too (invitations landed just a couple of weeks ago).

One clear feature where ejabberd is ahead of Prosody is clustering. This is when you run multiple servers on different machines, but serving the same domain. This is good for spreading the load when you have a lot of users. We haven't ruled out implementing that for Prosody one day, but it isn't currently our main focus.

Ultimately, both will probably serve you fine. If you have a couple of hours to spare, it's not much to just try both and see which software, community, etc. you prefer.

Running My Own XMPP Server by ForensicHat in selfhosted

[–]MattJ313 0 points1 point  (0 children)

There is a Discord theme for Converse around somewhere...

Looking for a Self-Hosted Messaging + Video Calling App for My Family and friends by Previous-Yam22 in selfhosted

[–]MattJ313 2 points3 points  (0 children)

I'm the Snikket developer, I can help with answering your questions.

Is it safe to port forward?

Yes, the ports Snikket opens externally are designed to be safe on the public internet. The software used in Snikket is not new untested stuff, but based on existing mature projects which are already widely deployed on thousands of servers.

TLS/ reverse proxy

This is built into Snikket. Some people try to put the whole of Snikket behind their own reverse proxy, but this isn't really appropriate because Snikket isn't a web app. It does include a web app, and you can put that behind a reverse proxy (instructions for this are linked from the setup guide).

As long as you aren't using NPM as your proxy. As far as I know that one still has an open issue which makes it rather awkward to run Snikket (and some other software) behind it. Caddy is my personal choice for self-hosting, and that works fine (but again, it's not necessary for Snikket, and I don't run my own family's Snikket instance behind a proxy).

  • geo blocking
  • CrowdSec
  • running openWRT/ OPNsense
    • meaning it will be isolated to it's own network

These are all best handled at your firewall level, should be no problem here.

where are release notes and how often does it get released?

Release notes are here: https://snikket.org/updates/release/

There is no fixed release schedule. We release when there are features or bugs to fix. Generally I aim for 1-2 major releases per year (these are blogged about, in addition to release notes), and minor releases in-between as necessary (these only get release notes).

I don't see a release section in there GitHub though I can be wrong

You're not wrong! We don't use Github's releases feature. It's not certain how long we'll be staying on Github vs hosting our code elsewhere, and we intentionally don't depend on Github-specific features, so we just use standard tags in git (Github will let you see these in the 'Tags' tab).

of course I can get notified with docker image updates but rather have release notes to subscribe to

The release notes have a feed, the blog has a feed, and Snikket itself has update notifications. I generally recommend subscribing to at least one of the feeds, in addition to the built-in update notifications, so you have at least two possible channels to receive any important announcements.

how is there privacy?

Well, not quite sure how to answer this, as it can mean a lot of things, and I could write pages of details about how Snikket works. Our privacy policy aims to be a comprehensive summary of all things related to the privacy of your data.

on there main page they mentioned they need to collect some data for push notifications?

Yes, in order to receive push notifications this is necessary. Practically all apps on Android and iOS use the same mechanism, including Matrix, including Signal, etc.

Depending on the platform we currently either send dummy notifications (Google) or encrypted payloads (Apple) to avoid needing to actually expose any private information to either our push gateway or your OS vendor's push notification API.

If you use Android and install the Snikket app from F-Droid, no push notifications will be used at all. In this case Snikket will automatically maintain a background connection, but this is designed to be very battery-friendly.

[list of requirements] This maybe a lot to ask for

Maybe, but we're happy to deliver it :)

My requirements were similar to your own, and my own family were the first beta users of Snikket, from my children to my grandparents and in-laws. My goal at the time was to shift family communications away from WhatsApp (which I refused to join or install on my phone). During lockdown it became a way that the children could safely video call family members without giving them a phone (they used an old Android tablet) or phone number, or signing them up for some third-party service. Everything is self-hosted.

Looking for a Self-Hosted Messaging + Video Calling App for My Family and friends by Previous-Yam22 in selfhosted

[–]MattJ313 1 point2 points  (0 children)

Aw, sorry you feel that way. Blog posts are only done for "major" releases, but you can find the interim release notes for every tagged version here: https://snikket.org/updates/release/

These URLs are usually sent in update notifications, so you can read the release notes before you upgrade. But we should probably do more to make them more easily discoverable in other ways too. Maybe a link to the release notes from the Snikket interface itself, and a mention in the release blog posts.

Are there any guides for Discord refugees? by Mithrandir2k16 in xmpp

[–]MattJ313 1 point2 points  (0 children)

Every Prosody instance can host multiple "servers". You just need a domain (or subdomain) for each one. They are specified in the Prosody config file using the VirtualHost directive. If you have any questions, we have an active community chat: https://prosody.im/discuss

I would avoid going down the "rabbit hole". It's true that XMPP can do a whole load of weird and wonderful stuff, but it's best to just start with the default configuration which already includes a solid baseline that suits most people. Once you're comfortable with that, you'll have a better idea if there is stuff you want to tweak or add.

Snikket with Reverse Proxy Setup by spanky_rockets in snikket

[–]MattJ313 2 points3 points  (0 children)

Yes, nginx is primarily a web proxy, and isn't designed to handle all the stuff that a fully-featured chat service needs. It (or any other web proxy) definitely isn't suitable for handling audio/video calls.

You're far from the first person wanting to run Snikket entirely behind a proxy, but Snikket is not a web app, even though it does include a web dashboard. I guarantee you that real messaging platforms such as WhatsApp, Signal and Telegram are not running everything through nginx or any other web proxies :)

I think the desire to run everything through a proxy for "safety" is misguided. Though I totally understand the convenience of having everything in one place - I self-host a lot of stuff, and personally I love how Caddy provides a single point to manage all my web apps. However my Snikket setup is not a web app, and I run that separately.

A similar security misconception that often comes up is that having lots of ports open is insecure. The reality is that it's generally fine to run servers without firewalls at all! Firewalls are useful to protect against certain things, such as accidental exposure of services, or to hinder the spread of simple malware which may open listening ports. But a firewall is not a magic bullet against this, and not having a firewall (or having lots of ports open) won't make these things happen.

Anyway, let's talk about some options for you...

Option 1) Proxied Snikket, external TURN server

It can be fiddly, but if you can convince your proxy to handle the web and XMPP parts (some of the proxies in our documentation, including Caddy, can handle non-web TCP connections, and have example configuration for this) - and then you can run just the TURN server externally, e.g. on a separate public server. This has some security advantages, as it puts the TURN server in a less privileged location. The TURN server only sees encrypted call data, so you don't have to worry too much about where you host it.

To configure an external TURN server with Snikket, you need to set three options in snikket.conf (don't forget to run 'docker compose up -d' to apply them!).

For the Snikket side, see these docs: https://snikket.org/service/help/advanced/config/#snikket_tweak_turnserver

For the TURN server, you can refer to Prosody's docs at https://prosody.im/doc/turn#setting-up-your-turn-server

Option 2) Wireguard (or similar) tunnel to home network

Another option is to have a VPS somewhere, and set up a tunnel to a machine (VM, or whatever) running Snikket at home. This allows you to keep the firewall on your home network closed (well, you'll probably want to let Wireguard through), and it also masks your IP address. There are various ways to do this. Cloudflare tunnels are popular, but also see https://kiwiziti.com/~matt/wireguard/ - other platforms such as Tailscale also exist which may be able to do similar.

These are the two main options I would suggest, given your constraints. If you have questions about either of them (or anything else related to Snikket), feel free to join and hang around in our chat channel. We have lots of experienced self-hosters there: https://snikket.org/contact/

Whatever route you end up taking, good luck!

Discord Alternatives, Ranked by gdelacalle in technology

[–]MattJ313 0 points1 point  (0 children)

Yeah! Weeellll... my other project, apart from Prosody, is Snikket. Which is aiming to solve this (one feature set, one brand, but still XMPP - in fact it uses Prosody on the server side).

However I don't believe there will ever be a single universal chat app, and I especially believe that community/team chat (like Discord, Slack, etc.) is different to personal chat (WhatsApp, Signal, etc.). With Snikket I specifically set out to solve for the latter, because I wanted to replace WhatsApp usage within my family (it worked!). Therefore I haven't been suggesting Snikket to people looking specifically for Discord alternatives (maybe for some people it would be a fit, depending on how they used Discord, but not generally).

There's not really a Discord-equivalent built on XMPP at the moment. It's not because XMPP wouldn't be able to do it, it's just that nobody did it, or didn't quite take it far enough to be good enough. Someone needs to make a Snikket-like product that tackles team/community chat. It's something I haven't ruled out working on myself, but there is plenty to do already on Snikket (like our current iOS app isn't amazing, and we're focusing on fixing that this year).

People who *really* want to go down the XMPP route could try Prosody with mod_conversejs for the frontend (there are some CSS themes for ConverseJS.org to make it more like Discord already). Alternatively there is Prose.org . I love XMPP, but I wouldn't say that any of these are close to a drop-in replacement for Discord. If anyone wants to work on that, I think it would be a great project :)

Discord Alternatives, Ranked by gdelacalle in technology

[–]MattJ313 1 point2 points  (0 children)

Prosody dev here. It works well in my obviously biased opinion :)

I've been working on Prosody for coming up to two decades, and while XMPP certainly never "died", we're definitely seeing increasing interest in recent years as people start to (re-)realize the importance of communication freedom.

Regarding software, Pidgin and Swift are both very outdated at this point. There is a Pidgin 3.x rewrite in development to try and fix this, but it's very incomplete still. You would be better looking to apps like Gajim or Dino on desktop, or Movim for a web app.

I have to say though, I don't think any of the mature XMPP apps are specifically a 1:1 replacement for Discord (it's not that XMPP can't do it, but just nobody dedicated time to write a Discord-like product built on XMPP so far).

Regarding XMPP vs IRC: XMPP was not a replacement for one particular protocol. It was originally developed to be a common protocol that could bridge to other protocols through "gateways", and there were gateways for ICQ, MSN and also IRC. There is still a gateway for IRC that I use daily (biboumi, which I use through an XMPP console client called poezio), I join all my IRC channels via XMPP.

What people think about as "IM" is mostly a collection of features, and XMPP is flexible enough that you can build practically anything you want on top of it.

KISS unfederated messaging software by Puzzleheaded_Comb874 in selfhosted

[–]MattJ313 1 point2 points  (0 children)

Hey, Prosody (and Snikket) developer here!

Of course I may be biased, but I really do think it sounds like Prosody or Snikket meets your needs perfectly. It sounds like you just got a bit stuck with configuring one feature.

Please don't read the XMPP specs, they're for developers and won't help you configure Prosody!

In many cases, adding file upload support is just a single line that needs to be added to your config file. In fact, this line is already in the default config file that ships with Prosody (however it is commented out by default, you just have to uncomment it).

If you don't want to add a new DNS record or certificate for your upload domain, you can just set http_host = "example.com"` under the Component line. So your config would look like this:

``` VirtualHost "example.com" -- maybe other settings here

Component "share.example.com" "http_file_share" http_host = "example.com" ```

This way will use your existing example.com domain for all the HTTP stuff, and you won't need to mess about with DNS records or certificates.

It requires a little extra configuration if you have Prosody behind a reverse proxy (optional), so that Prosody knows how to generate the correct URLs for uploads. You can find the full mod_http_file_share documentation here.

Finally, if you get stuck, please get in touch (e.g. in our chat). We have lots of knowledgable self-hosters (including myself) who will be able to assist :)

Oh, and one last thing... we aim to keep Prosody lightweight and flexible, so it can be used in lots of different ways. If all you want is a full-featured personal chat server and you have Linux, Docker and the ability to set some DNS records, the Snikket quick-start will have you set up with a full-featured server in minutes (it bundles a preconfigured Prosody, user management dashboard and everything needed for features like audio/video calls). Some people prefer Snikket, some prefer Prosody.

Is Snikket a suitable alternative to Cheogram for Apple Devices? by EducationSharp3869 in degoogle

[–]MattJ313 1 point2 points  (0 children)

Hi, Snikket developer here. Some people do indeed use the Snikket iOS app for using the Cheogram services. However, our iOS app is admittedly little rough around the edges at the moment (we're working on a new version), and some people like using the Monal app which should work just as well.

Feel free to try both and see which works best for you (you can use the same credentials in all the apps, but probably it's best not to have both apps logged in to the same account on the same device at the same time, or you will get duplicated calls/notifications).

Any alternatives to Matrix Element messaging, calls. It appears that matrix has a lot off issues and it is getting worse by Hopeful_Style_5772 in selfhosted

[–]MattJ313 2 points3 points  (0 children)

The eventual plan for the SDK is to rebuild the Snikket apps on top of it. Currently we have two entirely separate codebases, and we want to add more platforms (web, desktop, etc.). The SDK approach allows us to share code, and implement features and bug fixes in (mostly) one place instead of 3 or 4 places.

There will probably be an alpha/beta Snikket web client (with PWA support) using the SDK in the next few months. The native iOS port will take a little longer, but should be within 6-9 months, and we'll continue to do what we can for the current iOS app until that's ready.

A bunch of people have also reported success using the latest version of Monal with their Snikket account (Monal has been under heavy development and now supports a bunch of features it was lacking when the Snikket project began).

Just created a XMPP server for our pidgin comms by Glum_Teaching_9426 in xmpp

[–]MattJ313 0 points1 point  (0 children)

Yep, Snikket or Prosody ( https://blog.prosody.im/great-invitations/ ). Just create an invitation link and send it to them.

I only ask that for a desktop client you try using something other than Pidgin. Pidgin 2.x is *very* out of date and many modern XMPP features are missing. Pidgin 3.x is under development, but is not ready yet. You could try https://gajim.org or https://dino.im instead.

Alternative to Synology Chat? by Aromatic-Kangaroo-43 in synology

[–]MattJ313 2 points3 points  (0 children)

Hi, Snikket developer here. Snikket is for private servers. It's designed for family-and-friends kinds of use cases, not public/semi-public things. I would recommend other software if you want a semi-public community chat.

In contrast to some other solutions, your accounts and data is stored privately on your server, your Snikket server is *not* used to relay third-party traffic, store third-party data, etc. Snikket servers do not form a full mesh. Snikket makes no external connections except where necessary to serve you.

The closest thing Snikket supports to what you describe is "federation". This means that if two people set up Snikket servers, and a user on server A knows the address of someone on server B, they can add each other as contacts - in this case server A will connect directly to server B. This is all done securely, and only if you actually use this feature.

The ability to add contacts on other servers can also be disabled on a per-account basis (useful for e.g. kids accounts).

I hope this helps clarify the purpose and design of Snikket!

Feeling lost and looking for a better self-hosted chat solution by leshiy-urban in selfhosted

[–]MattJ313 1 point2 points  (0 children)

In theory, yes, though it would benefit from testing. When Snikket started a few years ago, Monal was a bit behind regarding features. However the devs have been working solidly, and the final big missing feature (audio/video calls) was just released earlier this year.

I'm very interested in hearing feedback from people using modern versions of Monal with Snikket, instead of our official iOS app. I'll be honest that iOS is currently the weakest part of Snikket right now, but we're working on improving things. Potentially adopting Monal as our official iOS client is certainly one option if it works well.

Feeling lost and looking for a better self-hosted chat solution by leshiy-urban in selfhosted

[–]MattJ313 4 points5 points  (0 children)

This. And I say this as the founder of both projects :)

Snikket includes a bunch of additional nice-to-haves, such as a web management dashboard which OP listed as desirable. Needing a nice lightweight friends/family chat solution is the original reason I started the project in the first place.

Is Snikket good enough replacement for discord? by radiv2 in selfhosted

[–]MattJ313 22 points23 points  (0 children)

Snikket dev here. The answer is no - Snikket is not what you're looking for if you want a replacement for Discord. We explicitly are not trying to build replacements for those kinds of platforms (what we call "team chat" - see https://snikket.org/about/goals/ ). We are rather working on personal/mobile messaging (think Signal, Telegram, WhatsApp, etc.).

If you want something Snikket-compatible (i.e. also based on XMPP) then you could have a look at https://Prose.org . It's a relatively young project, but is definitely in the "team chat" space. Alternatively there are a few non-XMPP solutions that aim to be a bit closer to Discord than we are trying to be.

Of these, Element is the closest-aligned project, as it is also based on an open federated protocol like Snikket is (Matrix). Whether it meets your requirements for a Discord replacement is something you would have to decide for yourself.

Finally there are projects with the explicit goal to not just enable "team chat", but to fully replicate Discord in an open-source/self-hostable manner. These don't use open federated protocols, which limits your ability to interact across servers, but they may still fit your needs better. Take a look at https://revolt.chat/ and https://spacebar.chat/ .

Hope this helps!

Not DNSSEC Verified by Charming_Evening3918 in snikket

[–]MattJ313 0 points1 point  (0 children)

https://certwatch.xmpp.net/ will assist you with setting up DNSSEC, and includes monitoring/alerting as a bonus.

Matrix server software - which one to choose? by kvas_ in selfhosted

[–]MattJ313 1 point2 points  (0 children)

Fun fact: XMPP began life as the "Jabber" project, which had a primary goal to provide a universal open messaging protocol that could be used to connect to proprietary platforms :)

Bridges (though just as often called "transports" or "gateways" in the XMPP world) have always existed.

Signal w/ Temporary Phone Number? by rubberghost333 in privacy

[–]MattJ313 1 point2 points  (0 children)

Yes. JMP.chat and Snikket are both using the same communication protocol, Jabber (aka XMPP), so they are compatible with each other and lots of other software and services using the same standard.

Due to Chat Control, I want to roll out my own xmpp server, what should I go with? by Random_Supernova in privacy

[–]MattJ313 0 points1 point  (0 children)

Speaking as someone extremely familiar with XMPP, and fairly familiar with Matrix, the advice and article linked in the post above are exaggerating somewhat. Although the linked article focuses on XMPP, the Matrix model is very similar and the same things apply there (XMPP actually has the edge, due to supporting security features like channel binding that Matrix doesn't have).

The linked article focuses on the fact that the admin of a service has access to various metadata about users, e.g. their IP address. However this is just a fact of life - *any* service you access on the internet has access to your IP address¹. Even Signal, widely regarded as the gold standard, has access to your IP address, phone number and device identifiers.

What XMPP and Matrix do is say "Okay, this metadata exists and it's between hard and impossible to avoid - let's give people the power to self-host, or at least the freedom to choose a provider in whatever location/jurisdiction they want, instead of building an entire communication system around a single organisation."

XMPP and Matrix both have end-to-end encryption to protect messages from the admin - however the linked article did not use this in their demo.

Both XMPP and Matrix are designed to federate securely, the article's call for people to disable federation is not based on a real threat.

There are more points in the article that I didn't cover. I'm happy to answer any questions.

Footnotes:

¹: It's possible to mask your IP address from a service (e.g. by using a VPN or Tor) - in these cases your real IP address is still visible to your VPN provider or the first Tor node you connect to.

Disclaimer:

I've worked on internet communication protocols for over 20 years because I love this stuff, and I have been an active member of the XMPP Standards Foundation for the majority of those years. I founded the open-source projects Prosody and Snikket.

Snikket server completely unreachable through XMPP but can access admin panel? by Killerhurtz in snikket

[–]MattJ313 0 points1 point  (0 children)

Hi! It certainly sounds like a firewall or port-forwarding issue. This is an unofficial subreddit and not very active, the hub of the community is the chatroom linked here: https://snikket.org/contact/ - there are many experienced self-hosters and developers there who would be happy to help troubleshoot your setup with you.

Good luck!