Snowberry Social

A private Matrix homeserver.

Snowberry Social is the name for my decentralized, federated Matrix homeserver, meant for a few friends and family members. Jump to How can I register? or the FAQ.

What is Matrix?

Matrix is a decentralized, open-standard communication protocol designed to provide secure and sovereign messaging, VoIP, and video calling. Unlike traditional messaging platforms where a single company controls the servers and user data, Matrix functions similarly to email, allowing users on different providers to communicate seamlessly with one another. This process, known as federation, ensures that no single entity has a monopoly over the network, giving users the freedom to choose their own hosting provider or even run their own private server while remaining connected to the global ecosystem.

At its core, Matrix acts as a massive conversation store that synchronizes chat history across all participating servers. When you send a message, it is replicated across every server whose users are participating in that specific room, ensuring there is no single point of failure. The protocol is built with security as a priority, utilizing robust end-to-end encryption based on the Double Ratchet Algorithm. This means that only the intended recipients can decrypt and read the messages, protecting conversations from being intercepted by server administrators or external third parties.

One of the most powerful features of the Matrix ecosystem is its ability to bridge different communication silos. Because it is an open standard, developers are free to build their own clients, bots, and integrations, leading to a diverse range of applications that cater to various needs — from high-security government communications to casual community gaming hubs.

What is end-to-end encryption (E2EE)?

End-to-end encryption, or E2EE, is a secure communication method that ensures only the communicating users can read the messages being sent. In a standard encrypted connection, data is often only protected while in transit between your device and a server, meaning the service provider could technically access your private conversations. With E2EE, the data is encrypted on the sender's device and can only be decrypted by the recipient's device. The cryptographic keys required to unlock the message are stored locally on the users' hardware rather than on a central server, effectively turning the service provider into a blind courier that delivers locked packages it cannot open.

Pros and cons

In the context of a chat using Matrix, the primary advantage of enabling E2EE is the high level of digital sovereignty and privacy it affords. Because Matrix is a federated protocol where your data may be replicated across several different servers owned by various individuals or organizations, E2EE provides a necessary layer of trustless security. You do not need to worry about the administrator of a remote server snooping on your logs or your data being exposed in a server-side breach. This makes it an excellent choice for sensitive professional projects, private financial discussions, or personal coordination where data integrity and confidentiality are paramount.

However, enabling encryption on Matrix does come with specific functional trade-offs and added complexity. One of the most significant downsides is the "key management" burden placed on the user; if you lose access to your recovery keys or fail to verify a new session, you may find yourself permanently locked out of your own message history. Additionally, E2EE can complicate certain server-side features such as full-text search, as the server cannot index the content of your messages to help you find a specific phrase later. There is also the occasional "UISI" or Unable to Decrypt error that can occur if session keys don't sync correctly between multiple devices in a large encrypted room. Additionally, if you log out of all your devices, you may render all previous messages unreadable in a given room/chat.

What in the world is a client?

It helps to understand what all these terms mean, and how they fit together to form "Matrix."

The backend is the server Synapse. This stores everyone's messages, rooms people create, history, all the data. The frontend is what you see and use as a user: I can choose which client/app I want based on what features or visuals I like more:

If you switch between clients, your messages and established rooms stay where they are, because you're only changing which app you use to access the same information.

Matrix, as mentioned above, is only the method by which all of this happens. You can't access a website without HTTP or HTTPS; similarly, you can't message someone using these clients without Matrix. Other people running their own backend servers and using the Matrix protocol can communicate seamlessly with anyone registered on my homeserver, with no need to register on each individual one.

The difference is where your messages and media (like photos) are being stored, and who has access to them. If you create a private room with friends while registered on my server and encryption is not enabled for the room, I could technically try to see your messages because I run the server the messages are stored on. Same for any homeserver you register an account on.

In the case of a centralized software like Discord, they only have the official Discord app (client), Discord's backend server they own, and the only features they support are the ones the company decides to implement.

How can I register?

  1. Navigate to https://cinny.snowberry.social.
  2. Register a new account, entering your preferred username and password.
  3. Request a registration token from the admin of the server (me) and input that when asked to create the account.
  4. You can use that account to log in on any eligible client (see What in the world is a client?).
  5. It is also recommended to create a recovery key from your account settings and keep it somewhere safe to restore your message history if you log in somewhere else later.

Why do I use Cinny to register?

Cinny is a client that provides the most consistent registration experience across desktop and mobile. Trying to register through Element on a phone can lead to errors, but works fine on a computer, for example.

Which client do I use?

There are a lot to choose from. This server officially supports FluffyChat and Element, due to their wide range of features, including polls; however, there are other clients that can be used, at the risk of not being able to use certain features, depending on the client. Note that Snowberry Social has its own hosted web interfaces for FluffyChat, Element, and Cinny that are separate from the official ones, to avoid having to give credentials to a third-party.

Client Primary Platforms Best For Key Features Notable Limitations
Element (Web/Desktop) Web, Win, macOS, Linux General use Full feature parity (Spaces, Widgets, Bridging UI, video and voice calls) Can feel heavy/slow on older hardware. No support for custom emojis.
Element X Android, iOS Mobile-first speed Extremely fast (Sliding Sync), native feel, modern Matrix 2.0 RTC for calls. Missing some "Classic" features like full room settings or complex widgets.
FluffyChat Android, iOS, Web, Linux General use, mobile Simple "cute" UI, easy onboarding, good custom sticker/emoji support. Video and voice call features are experimental.
Cinny Web, Desktop Discord-like communities Clean, Discord-like interface, very lightweight and fast, focused on chat. No mobile app; limited support for advanced widgets or VoIP, no poll support
Commet Web, Desktop, Android Discord-like communities Voice channels with presence, calendar rooms, rich profile customization. Experimental; some concerns regarding enforcement of room encryption.

Pick your poison!

Terminology, compared to Discord

Discord Term Matrix Equivalent Why the difference?
Server (Guild) Space A Discord "server" is a collection of channels. In Matrix, a Space is a way to group Rooms together, but those rooms might actually live on different physical servers.
Channel Room In Matrix, every conversation, whether a group chat or a DM, is technically a Room. There is no distinction between "text channels" and "chat rooms."
Direct Message (DM) Direct Room or 1:1 Room DMs in Matrix are just two-person rooms that have been flagged as "direct." They behave exactly like any other room.
Server Icon Space Avatar Both serve as the visual shortcut in your sidebar to navigate to a specific community or group.
Bot Bot / Appservice While both have bots, Matrix also has Appservices, which are powerful integrations (like bridges) that have deeper access to the server.
Roles / Permissions Power Levels Discord uses named roles (e.g., "Moderator"). Matrix uses a numerical system from 0 to 100. For example, a standard user is 0, a Moderator is 50, and an Admin is 100.
Discord App Client Discord is the only app for Discord. For Matrix, you can choose between many different apps (like Element, FluffyChat, or Cinny) to access the same account.
The Discord Service Homeserver When you make a Discord account, it's on Discord's server. In Matrix, your account lives on a specific Homeserver (like matrix.org or snowberry.social).

FAQ

How do I do video and voice calls?

This server uses Jitsi, which is integrated with some clients, like Element. You can also visit https://jitsi.snowberry.social to use the conferencing tool by itself externally. It is very similar to Google Meets and easy to use. Some clients do not support video and voice calls, or do, but are experimental.

I keep getting warnings about "unverified" users or "session keys". What does this mean?

When in an encrypted chat, you need to ensure your session is "verified". You can usually do this in the settings by entering your recovery key, or starting a verification session with another client already logged-in. To verify with another user, you can initiate a verification session by clicking on their profile. You compare emojis to make sure that this is, in fact, the person they say they are. Not verifying does not affect the technical functionality of the encryption, but it does protect you against fake users or a man-in-the-middle attack (unlikely on a small server such as this one, but not impossible).

Why are the images I send low-quality?

Some clients compress images by default to save space. You can un-toggle the option to compress an image to send the full quality one, usually prompted after you've selected the photo you want to send.

Some custom emojis or messages appear only as [img :name-of-emoji:].

This indicates your client does not support custom emojis or stickers. The only way to fix this is to use a client that does, such as FluffyChat.