qwik-site/content/pages/articles/xmpp/intro.md
2021-08-11 11:30:47 +02:00

98 lines
5.2 KiB
Markdown

%%-
title: XMPP - qwik docs
header: XMPP
date: 11th August 2021
-%%
# Introduction
XMPP is a protocol for instant messaging. It stands for *Extensible Messaging and Presence Protocol*.
It supports most things you'd expect from an instant messaging software, like: chat (duh?), sending images/videos/other
files, chatrooms (group chats), and even calling (both voice and video). It also supports another great thing: encryption.
The biggest problem with XMPP is that many of the clients (apps/programs you use to chat with people) could be better.
To some extent, all clients lack features or are buggy or even poorly designed - although, for the most part, it will be
fine.
# Usage
To use XMPP you will need a client. Below you can see our recommendations of clients for different platforms.
## Clients
**Linux**
* Gajim ([Website](https://gajim.org/))
* Dino ([Website](https://dino.im/))
**Windows**
* Gajim ([Website](https://gajim.org/))
**macOS**
* Monal IM ([Mac App Store](https://apps.apple.com/app/id1499227291))
* Siskin IM ([Mac App Store](https://apps.apple.com/us/app/siskin-im/id1153516838))
* Beagle IM ([Mac App Store](https://apps.apple.com/us/app/beagleim-by-tigase-inc/id1445349494))
**Android**
* blabber.im ([F-Droid](https://f-droid.org/en/packages/de.pixart.messenger/)*, [Google Play](https://play.google.com/store/apps/details?id=im.blabber.messenger))
* Conversations ([F-Droid](https://f-droid.org/en/packages/eu.siacs.conversations/)*, [Google Play](https://play.google.com/store/apps/details?id=eu.siacs.conversations))
**iOS**
* Monal IM ([App Store](https://apps.apple.com/us/app/monal-xmpp-chat/id317711500))
* Siskin IM ([App Store](https://apps.apple.com/us/app/tigase-messenger/id1153516838))
There might be other XMPP clients that we have missed, but this covers the main ones we know about.
We primarily use gajim and blabber.im.
*\* [F-Droid](https://f-droid.org/) is a repository containing free and open source Android apps.*
## Registration
To register you would need a server to register on. Kind of in the same way you can register an email at different domains.
(@gmail.com, @outlook.com, @protonmail.com, etc.) XMPP works in a similar manner where your *JID* (Jabber ID) is formatted as
`username@server.com`. You can choose between thousands of server, but we'd be happy if you joined our server.
Most, if not all, clients allow you to register an account directly in the app, but if you have problems to register through the
app then you can use [this page](https://qwik.space:5443/register/). If you want to register at our server use the server address
`qwik.space`. Once you've registred your JID would become `username@qwik.space` (assuming you used our server). Your friends will
use this address to contact you.
When you've registered on our server you should get a welcome message kind of like this:
> Welcome to qwik.space!
> You can find more information at https://qwik.space/articles/xmpp/intro
>
> If you have any questions regarding the server, send a message on XMPP to [furo@qwik.space](xmpp:furo@qwik.space)
## Encryption
XMPP supports two types of encryption: OMEMO and OTR. We personally recommend using OMEMO as it is the easiest to use and all
previously mentioned clients support it*. Even though OTR is supported by some clients, we don't recommend using it as it doesn't
support support encryption of calls or MUCs.
If you are more of an "advanced" user, we recommend turning of *blind trusting* in your client and manually trust OMEMO fingerprints.
*\* If you are using gajim on linux you might need to install an external package to get support for OMEMO: `gajim-omemo`*
## Chat rooms (group chats)
XMPP allows you to create chat rooms with multiple participants, they are called *MUCs* (Multi-User Chats). You can create one
through most clients. If you are prompted for a *room address* when creating a room, simply input `name@muc.qwik.space` where
`name` is the name of the chat room.
You might be prompted to choose between a public and a private room. The difference is that private rooms supports encryption
and you must be invited to enter it. Public rooms, on the other hand, only requires you to know the address to join, although
you can also be invited to a public room. **Public rooms do not support encryption**.
Once you have created a room you should be able to invite your friends through the client, otherwise you could try giving them
the address. You can also create invite links with the following format: [xmpp:qwik@muc.qwik.space?join](xmpp:qwik@muc.qwik.space?join).
You would replace `qwik` with the name of your room.
## Calls
To use calls (audio or video) your client must support it. Not all clients support calls, but if your client supports calls
you should see a call-button somewhere on the screen. For your recipient to recieve the call their client must also support
calls. The last requirement is that the server must support calls as well (our server does support calls).
If you use OMEMO, the calls will be encrypted.
# Tor
You can also connect using Tor, use the following information:
| Port | Hostname |
|------|----------------------------------------------------------------|
| 5222 | qwikxcv6qo7ochwil3ihobsclz6ulfkszvngy6cna4rx6a6a4bedktad.onion |