Frequently asked questions

Using Snikket to Chat

Q: What on Earth is this Snikket thing?

A: Snikket is a chat service, designed to be as simple and user-friendly as possible, and to provide all the features people have come to expect from modern chat software. Snikket is decentralized, which means that it’s made up of a network of independent servers, not a cluster of “cloud” servers controlled exclusively by a single company, as in apps like WhatsApp, Telegram, and Signal.

Q: Are there Snikket apps for all major platforms?

A: We currently have apps for Android (available in F-Droid and the Google Play store), and an iOS app in the Apple app store. Links to the apps can be found in your Snikket invitation.

We have plans to work on a web client in the near future, and look forward to a native desktop solution as well. Until then you may use any other compatible XMPP software to connect to your Snikket account on other platforms.

For more information on our future plans, see our goals.

Q: Why do I need an invitation to use Snikket?

Unlike many proprietary messaging service you may be familiar with, Snikket is based on an open network of servers operated by many different individuals and organizations. You need to receive an invitation from one of these operators, or start your own Snikket service, or encourage someone you know to do so.

Starting your own service is easy with Snikket hosting, or if you have the skills and resources to run your own server, we make it very easy to self-host Snikket and encourage you to do so.

Q: Why is there no public Snikket service with open registration?

If you are familiar with the XMPP network, you may wonder why we don’t operate a public server with open registration. There are many public XMPP servers to choose from already. Snikket is focusing on making it easier for people to run their own private servers instead.

Why? We are trying to build a future where, instead of a handful of large public servers, the XMPP network is comprised of a vast number of smaller servers. This reduces the control that any single entity has over the network, and makes it more robust. Additionally, each user knows the operator of their server. Too often public servers are not transparent about how they are operated or funded, and whether they are sustainable.

Invite-based sign-up is a great way to build such a decentralized network! It allows someone to set up their own server without fear that it will be abused or used as a spam relay. On the user side, it makes getting signed up really easy and intuitive. They just have to pick a username to get going.

Our invitation mechanism uses open standards, and therefore is also compatible with many other XMPP clients, as well as the Snikket apps.

Q: How many languages are the Snikket apps available in?

A: We aim to support as many languages as humanly possible. Our Android app is translated by wonderful volunteers into over 30 languages, which very likely includes yours! Our web portal has translations for over 10 languages, and more are being added.

Our iOS app is not currently translated (English only), but we are working to change that very soon!

If you want to help out with translation efforts, come join the community chat and say hi!

Q: What if my friends aren’t on Snikket?

A: Snikket is designed to make it quick and easy to invite your friends to your server, and to get them set up with an account and a Snikket app for their device. But even if you are the only user on a new Snikket server, you can still chat with a wide range of people. Chat apps like WhatsApp, Telegram, and Signal, are centralized, which means they require you to create an account on their servers before you can chat with anyone else using their service. But if you have an account on a Snikket server you can chat with people using accounts on other servers, not only other Snikket servers, but any chat server that supports the XMPP protocol.

Q: Is a Snikket server like a Discord server?

A: Yes and no. On Discord, the word “server” is used to mean a cluster of chat channels run by one group of people. But all of these “servers” are running on a cluster of servers managed and controlled by the company behind Discord.

Snikket servers are totally independent of each other, even servers run by the Snikket hosting service are designed to be easily moved to another host at any time.

Q: How do I get my own Snikket server?

A: To get started with Snikket you need to set up a Snikket instance for yourself. There are two options, depending on your skill level.

For an easy non-technical route to joining the Snikket network, you can sign up for Snikket Hosting and have your own personal Snikket instance in just a few clicks.

Alternatively, if you are familiar with Linux and SSH, our software is designed to make it easy to install Snikket on your own server. This could be a physical server, VPS, or even a small device in your home such as a Raspberry Pi (as long as it is accessible from the internet). To set up Snikket on your own server, visit the Snikket service setup guide.

Whichever route you choose, after setup you will be able to easily invite your contacts to join you on your shiny new Snikket service!

Q: Doesn’t running a hosting service clash with your stated goal of creating a chat network that’s decentralized?

A: Using our hosting service is (and always will be) optional. We encourage people who can self-host to do so (you can still help sustain the Snikket project through donations!).

We have a strong belief in decentralization, and strive to make self-hosting as easy as possible. But we have to balance that with our mission to provide everyone with a privacy-friendly alternative to proprietary networks, and we recognise that not everyone who wants to escape those networks has the necessary skills to run their own server safely and securely.

For the future we are investigating partnerships with other organizations that would be able to offer Snikket hosting independently on their own infrastructure, so that we do not become a central piece of the network.

We are also working on making migration between hosted and self-hosted (and vice-versa) as easy as possible.

Q: Do you have any major partners, or organizations willing to help with the development of Snikket?

A: Snikket’s primary partners are the developers of existing XMPP software, including Prosody, Conversations, and Siskin. Without their work Snikket development would be much slower and more expensive, because we would have to develop all the necessary software from scratch instead of building on their freely-licensed code.

The Snikket project has been accepted into a Next Generation Internet (NGI) programme called DAPSI (Data Portability and Services Incubator). This includes funding, mentorship and other opportunities.

Other possible partnerships are being actively explored and we welcome approaches from anyone interested in supporting us, either with funding or development assistance.

Q: Can I use the Snikket apps with a non-Snikket server?

A: You can, but you may not get the best experience. All the Snikket apps use the open standard XMPP protocol and you can use them with any compatible service. However non-Snikket services may not support all the features that the app requires, and some features of the app may not be available or they may work unreliably.

We encourage you to look at other general-purpose XMPP clients if you just want to connect to third-party XMPP services.

Some suggested clients for use with non-Snikket servers:

If you report a bug in a Snikket app to us while using a third-party server, please state this clearly in your bug report.

Q: Can I use non-Snikket apps to connect to a Snikket server?

A: You can, but you may not get the best experience. Depending on the app you choose, some features may not be available or they may work unreliably.

We routinely test the compatibility between official Snikket apps and the Snikket server, but we do not have the resources to do this testing for all third-party XMPP applications.

If you report a Snikket server bug to us while using a third-party app, please state this clearly in your bug report.

With the above in mind, some clients are better-suited to work with Snikket servers than other clients. Here are some suggestions you can try:

None of these will provide the same “Snikket experience”, but many people use them happily with Snikket every day.

Q: What about a web client?

A: We have plans for a web client when resources allow. Meanwhile, generic XMPP web clients are available and should work fine with Snikket (though certain features may be unavailable in some clients).

Some XMPP web clients are:

It is probable that one of these will form the basis of the official Snikket web client, but no decision will be made until a full assessment of all the options has been performed.

Hosting a Snikket Server

Q: What are the system requirements?

A: We recommend a machine with at least 1GB RAM to set up and run Snikket comfortably. The server software supports Linux on 64-bit (i.e. amd64), and ARM devices of ARMv7 or ARMv8. This includes Raspberry Pi 2/3/4 devices.

The server memory usage scales with the number of active users. Expect to fit 10-15 users comfortably in as little as 128MB RAM, but this may vary based on activity (video calls, media sharing, etc.). If you’re not already running docker on your system then you also need to account for resource usage by the docker service. As with most things, spare RAM is always good to have :)

CPU requirements are generally minimal. A slow CPU may slow down some operations, but this is generally not noticeable unless you have a significant number of users.

Q: When will Snikket be made available for my favourite self-hosting platform (eg YunoHost, FreedomBox, FreedomBone)?

A: We aspire to support as many self-hosting options as humanly possible, but Snikket has limited development resources and has to prioritize. If anyone volunteers to package the Snikket server for a particular self-hosting platform, we’ll do our best to help them do that. But in the longer term we hope to attract more funding so we can pay people to work on a wider range of development and distribution work.

Q: Is it possible to use a different domain for my Snikket address and the web portal?

A: No, it’s not currently possible. When you configure the domain for your Snikket instance (e.g. chat.example.com), that domain will be part of your Snikket address (e.g. username@chat.example.com) and also the web address of your instance, e.g. https://chat.example.com/.

Sometimes we get asked if it is possible to have a different address for users, such as user@example.com. Technically XMPP supports this (by adding custom SRV records in DNS), but it’s made complex by the requirement for certificates for that domain. Snikket would need certificates for example.com, which is quite tricky unless the A record for that domain is also pointing at Snikket - Let’s Encrypt does not follow SRV records (see letsencrypt/boulder#1309 for discussion around this).

There are some workarounds we are planning in the future, such as support for using DNS challenges, which will hopefully be a workable option for many people. There is also promising work being done at the IETF for certificate delegation techniques that may provide some interesting alternatives in the future.

Q: Can I host Snikket if I have a dynamic IP address?

A: If you are self-hosting Snikket at home, many residential internet service providers (ISPs) still issue dynamic IP addresses - addresses that change every time you reconnect to the internet, or sometimes at fixed intervals (e.g. daily).

The good news is, this doesn’t mean you can’t self-host Snikket and other services on your connection. You just need to update your DNS records when your IP address changes. Many home routers have support for this functionality already, and it may be compatible with your existing DNS provider. If not, there are free dynamic DNS providers you can use:

As with hosting anything on a dynamic IP address, there may be minor connectivity disruption when your IP address changes (hopefully not too often) but generally things should reconnect quickly.

Q: Do I need to register a domain name to use Snikket?

A: We strongly recommend registering your own domain name if you can. It gives you more control over your service than using a free DNS provider. You can register domains via gandi.net, Namecheap, or a range of other registrars. Prices vary widely by the top-level domain (TLD) that you choose - e.g. .com, .org, or some of the fancy new TLDs such as .chat, .family, and so on. Many of them work out to less than the price of a single coffee per month.

If you don’t want to register your own domain right now, you can use a free DNS provider, where you will be able to choose a subdomain of a domain that they own. The provider you use must support subdomains to work with Snikket. Some example providers are:

Q: Can I set up Snikket without Docker?

The only supported installation method is currently Docker. A Snikket service is built from multiple software components, carefully configured to work together in a specific way.

Using Docker allows us to supply you with the exact same software versions and configuration that we have tested all the Snikket apps with. It ensures that Snikket will run and function the same on any machine and operating system that you choose to deploy it on, without worrying about dependencies and conflicts with the host system.

Docker is not the only way to achieve these things. For a start there are drop-in Docker replacements such as podman. There are also other similar container-based systems around, including for non-Linux OSes. We’re very interested in supporting more installation methods that meet our requirements in the long term, but due to time, resources and limited demand, it’s not something we’re actively working on.

Q: Can I host more than one domain on a single Snikket instance?

No, Snikket only supports hosting a single domain (plus associated subdomains for services such as group chats and file sharing).

If you need to support multiple groups of users on the same instance and you don’t mind the domain being the same, you can use Snikket’s “circles” feature to organize your users into separate groups.

If you need support for more advanced features such as multi-domain hosting on a single instance, you may be served better by generic XMPP server software such as Prosody, the software upon which Snikket is based. It may be a little more complex than Snikket to set up, but has many more features and customization potential.

Q: What is federation?

Federation (also often called “server-to-server” or simply “s2s”) is the ability for servers to connect to each other for delivering messages.

Snikket supports federation, which allows users on one Snikket instance to communicate with users on other Snikket instances (or any XMPP-compatible services). This is similar to the postal, phone and email networks - where users of one service can communicate with anyone, regardless of what service they use. We’re doing the same thing for messaging.

Q: Does federation reduce security or privacy?

No! Federation is a safe and standard feature even for private servers to use.

Snikket uses the mature XMPP protocol, which is widely used and has been deployed on XMPP servers large and small for decades. Snikket enforces modern TLS encryption with valid certificates for all server-to-server connections.

Snikket’s federation support is also designed with privacy in mind. Your data remains on your server, and other servers cannot access it, neither can they see the list of users on your server. For someone else in the network to communicate with someone on your server, they must first know their address.

If you want to restrict certain accounts on your server so that they can only communicate with people on your Snikket instance, you can set their account to be ’limited’ - see User Roles for more information.

Under the Hood

Q: What is XMPP?

A: The internet is a worldwide network of computers (most of which we usually call “servers”). Every time you use an internet-based service, whether that is browsing websites, sending an email, chatting or calling, it requires computers to communicate with each other and exchange data.

But the computers need to understand the same data format (known as a “protocol”). When you browse websites, your computer speaks a protocol called HTTP with the website’s server. When you email to someone, the computers use a protocol called SMTP.

XMPP is a protocol for real-time communication, such as messaging and calling. It is an open standard, which allows any developers or server operators to add support for XMPP to their software and services.

Q: Why does Snikket use XMPP?

A: Rather than invent our own protocol, Snikket builds upon the existing open ecosystem of XMPP. We believe that this is a more healthy approach for the internet - it allows for software diversity, and gives people additional freedom to communicate with their contacts using the software of their choice.

For more information on how Snikket fits into the XMPP ecosystem, see Snikket’s goals.

Q: Isn’t XMPP outdated?

A: We sometimes encounter people who have heard about XMPP in the past, and assume that it’s no longer in use. Although the protocol was officially born in 1999 (as “Jabber”), many people first heard about XMPP in 2005 when it was used to power Google Talk, one of Google’s most successful communication services, based on principles of open communication that we strongly believe in.

Unfortunately when Google announced the end of Talk during a change of strategy, it closed many people off from the rest of the XMPP network.

But XMPP never went away. Although Google was for 8 years the largest XMPP service around, there are many other smaller services - public and private, that continue to participate on the XMPP network. The XMPP community is active, and you can follow activities in the XMPP community newsletter that is published monthly by the XMPP Standards Foundation.

Q: Why not the Matrix protocol?

A: Matrix is another communication protocol with similar goals to XMPP, though based on a different technical design. There are a number of ways to answer this. XMPP and its standards foundation are much older than Matrix. XMPP has been standardized by the IETF (Internet Engineering Task Force), an open standards organization where basic protocols for the internet, email, the web and so on are discussed and agreed on.

In theory, any federation protocol can be used for any kind of application, for example, Delta Chat using the email protocols for chat, or Movim using XMPP for social media. But in practice, some protocols force software to do more work than is really necessary to do a particular job. There are a number of technical reasons that we think make XMPP a more efficient protocol for the kind of informal personal and group messaging Snikket aims to support. We intend to expand on these details in an upcoming blog post :)

Q: Does Snikket support bridges to other networks?

A: Technically, yes. Any XMPP-compatible bridge (also known as a “gateway” or “transport” in XMPP-speak) should be usable from a Snikket account and app.

XMPP was initially developed to allow people to connect to proprietary networks via an open protocol. In recent years however the primary focus for most XMPP projects has been instead on providing a first-class experience for XMPP-to-XMPP communication. It is far easier to provide a good user experience when everyone is using the same standard protocol, and it encourages people onto free and open communication networks.

Nevertheless, there are public bridges to various non-XMPP networks. We do not officially support any of them at this time, and we recommend them mostly for more technical users who understand the limitations of those networks (don’t expect typing notifications or message acknowledgements when bridging to email, for example!).

Some public bridges include:

Q: Why does Snikket not score 100% on this test site?

There are a few services and tools online that can probe your XMPP server/website and generate a report, often with a grade or score attached. Some examples are:

The developers and maintainers of these tools choose their own criteria for these tests, but their criteria do not always match fully with Snikket’s requirements or goals. Therefore it is not a goal of Snikket to achieve 100% across all such tools (unless one day we make our own!).

We will not make changes simply to achieve a higher score in any such tool. However we welcome constructive suggestions about specific changes we could make, if there is a sensible reason for them.

Our advice is: use these tools, they are very handy as a guide to help you learn specific things about your systems. But don’t obsess about achieving that “perfect” score :)