jami-docs/user/faq.rst

801 lines
30 KiB
ReStructuredText

FAQ
===
This is an exhaustive list of frequently asked questions, including
some technical questions.
.. contents::
:local:
:depth: 3
Basics
------
What is Jami?
~~~~~~~~~~~~~
See the :doc:`introduction`.
What does Jami mean?
~~~~~~~~~~~~~~~~~~~~
The choice of the name Jami was inspired by the Swahili word `jamii`
which means `community` as a noun and `together` as an adverb. It was
chosen as it reflects the vision for the project: a free/libre program
available to all that helps bring communities together, is community
supported, and respects the freedom and privacy of the users.
How can I make a bug report?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Please see the :doc:`bug-report-guide`.
What makes Jami different from other communication platforms?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jami does not work like most communication platforms because it is
*distributed*:
.. image:: ../_static/network-topology.svg
:alt: Centralized, Decentralized, and Distributed network topology
Some of the consequences may seem surprising. For instance, since
accounts are stored on your device, passwords are optional. However,
the most significant practical differences are that you have more
*freedom* and *privacy*.
..
TODO: expand on this
What do the red/green status circles next to avatars mean?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
On your own account, a red circle means that you aren't connected to
the DHT. You may need to check your connection or restart the app.
On other contacts, a red circle means that they are not online, and a
green circle means they are online and you should be able to message
them.
Note that a green circle only means that the contact has announced
their presence on the DHT. It does not indicate a direct connection
to their device. In some cases, a contact may be able to send and
receive messages but cannot make calls or file transfers because of
their firewall.
Why is a feature missing on my client?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Not every client implements all features; check the list :doc:`here
<all-features-by-client>` to see if your client is missing the
feature.
You can make feature requests at https://git.jami.net.
Does Jami support read receipts? Can I turn them on or off?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
You can enable or disable read receipts on Android. Other platforms
may still be working on this feature. Please see :doc:`All Features
by Client <all-features-by-client>` for the current status.
Does Jami support typing notifications? Can I turn them on or off?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Most of the client support sending and receiving typing notifications.
You can enable/disable them in the general settings.
Can I share my screen?
~~~~~~~~~~~~~~~~~~~~~~
Yes, on all platforms except for iOS. Search for a dedicated "Share
screen" button while you are in a video call.
Can I make group conference calls?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Yes. You can add Jami contacts to existing calls (audio or video) by
clicking the "Add participant" button.
Does Jami have group chats?
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Yes, Jami now has :doc:`../developer/swarm` group chats. However,
they are currently experimental and must be manually enabled from
application settings. Also, group chats are currently limited to 8
participants (so that bugs and issues could be more easily found and
fixed in smaller scenarios, and hopefully lift this limit in the
future).
Why aren't my sent messages showing up on all linked devices?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Before :doc:`../developer/swarm`, an account's devices would receive
the same messages from contacts if the device was online at the time
of the message being sent, but *sent* messages would not show up on
devices other than the one sending the message.
With the introduction of Swarm, conversation histories of new Swarm
conversations (including one-on-one conversations) are fully
synchronized between all of an account's linked devices. If you are
using an older version of Jami, please upgrade to the latest version
with Swarm support. The latest version of Jami is always available
from the Download page of the Jami website, at
https://jami.net/download/.
To learn more about Swarm, you can read our blog post `Synchronizing
conversation history with Swarm
<https://jami.net/synchronizing-conversation-history-with-swarm/>`_
and see the :doc:`../developer/swarm` page of the Jami developer
manual.
Can I message offline contacts?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
With :doc:`../developer/swarm` conversations, every device stores all
a copy of all of the messages in that conversation. If a device
(whether your own, or another participant's) is not available/online
when a message is sent, when it comes back online again it will try to
fetch any new messages from other online devices/peers and synchronize
message history. This can be done whenever at least one other device
that has a copy of the new messages is also online.
.. note:: You can read more about how Swarm conversations are
synchronized in our blog post `Synchronizing conversation
history with Swarm
<https://jami.net/synchronizing-conversation-history-with-swarm/>`_.
If the participants in a conversation are often not online at the same
time (for instance, due to timezone differences), one of them might
choose to set up Jami on an often-online device that would receive the
messages from each participant and relay it to the other(s) whenever
they come online. Thus, acting similarly to a "server", all the while
Jami remains distributed by nature.
.. _config-file-location:
Where are the configuration files located?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jami saves its configuration (account, certificates, history) at
different locations depending on the platform.
- **GNU/Linux**: global configuration is under
``~/.config/jami/dring.yml``, and account-specific files are under
``~/.local/share/jami/``. Finally, there is a cache directory at
``~/.cache/jami/``.
- **macOS**: the full configuration is under
``~/Library/Application Support/Jami/`` if installed via
https://jami.net. The app store version uses
``~/Library/Containers/com.savoirfairelinux.ring.macos/Data/Library/Application Support/jami/``.
- **Android**: the full configuration is under ``/data/data/cx.ring/``
(may require root privileges to view or change from outside Jami).
- **Windows**: global configuration is under
``%AppData%/Local/jami/dring.yml``, and account-specific files are
under ``%AppData%/Local/jami/``. Finally, there is a cache
directory at ``%USERPROFILE%/.cache/jami/``.
Note: audio and video messages are recorded in the local-data in the
folder: ``sent_data``
For files, if a file is saved (right click on the file, then Save) it
will be added to the directory you configured in the application
settings.
How much bandwidth do I need for calls?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For audio calls, Jami uses about 100 Kbps. For a video call, you need
about 2 Mbit/s for medium quality. If your connection is slower, the
bitrate will be automatically reduced.
If you are hosting a video conference, you will approximately need an
additional 2 Mbps per participant. So, for example for a conference
with 10 participants, each participant will need 2 Mbps up & down and
the host will need 20 Mbps up and down.
Jami also uses an algorithm to change the consumption depending of the
quality of the link. So, the bitrate can have a minimum of 200 Kbit/s
and maximum of 6 Mbit/s.
How can Savoir-Faire Linux (SFL) afford to give Jami away for free? How does/will SFL make money off Jami?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Savoir-Faire Linux](https://savoirfairelinux.com/) (SFL) is a consulting company with some R&D projects.
Jami is a GPLv3+ project and this will not change. Savoir-Faire Linux already sells services
for several fields of expertise (hosting, developing websites and applications, embedded
software, etc). Jami is financed several ways:
+ [Donations](https://www.paypal.com/donate?hosted_button_id=MGUDJLQZ4TP5W)
+ Customization contracts
+ Services for other projects
+ Visibility
+ R&D
+ https://jami.biz
+ As a distributed system, Jami incurs very low costs by design
+ Opt-in collection of anonymized statistics might be added in the future to better understand
Jami usage; however, no personal data will be collected.
Account management
------------------
What is a Jami account?
~~~~~~~~~~~~~~~~~~~~~~~
A Jami account is an `asymmetric encryption key
<https://en.wikipedia.org/wiki/Public-key_cryptography>`_.
Your account is identified by a Jami ID, which is a `fingerprint
<https://en.wikipedia.org/wiki/Public_key_fingerprint>`_ of your
public key.
What information do I need to provide to create a Jami account?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When you create a new Jami account, you don't have to provide any
private information like an email, address, or phone number.
This is the information you can provide if you choose (it's all
optional):
1. An avatar.
2. A display name, which is the name that clients will display for
your contact. It can contain special characters.
3. An optional username, which is a unique identifier that is directly
associated with your Jami ID. This username->Jami ID mapping is
stored on a server (``ns.jami.net`` by default, but you can host
your own).
4. A password. This password is used to protect the account archive
in your device.
More information about Jami accounts is available in the
:ref:`Technical Overview <developer/technical-overview:Jami Account>`.
Where is my Jami ID?
~~~~~~~~~~~~~~~~~~~~
Your Jami ID should be displayed prominently in whichever app you're
using. It looks like a long string of letters and numbers; for
example: ``f2c815f5554bcc22689ce84d45aefdda1bce9146``.
Why don't I have to use a password?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
You are not forced to have a password on your account. On a
centralized system you would use your password to authenticate with a
public server where your account is stored. Someone who knows your
password could steal your identity.
With Jami, your account is stored in a :ref:`folder <user/faq:Where
are the configuration files located?>` on your device. **The password
is only used to encrypt your account in order to protect you from
someone who has physical access to your device.**
If your device is encrypted, you may not want or need to use a
password, and indeed recent versions of Jami don't ask for an account
encryption password by default when creating new accounts.
Note: changing a password will only change the password on the current
device and it's not synced (because their is no server and other devices
can be offline anyway).
Why don't I have to register a username?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The most permanent, secure identifier is your :ref:`Jami ID
<user/faq:Where is my Jami ID?>`, but since these are difficult to use
for some people, you also have the option of registering a username.
Username registration requires a name server, such as Jami's default
one at ``ns.jami.net``.
If you don't register a username, you can still choose to register one
later at any time.
If you host your own nameserver at ``example.com``, usernames registered
there can be looked up by searching for ``username@example.com``.
Can I change my username?
~~~~~~~~~~~~~~~~~~~~~~~~~
With the default nameserver (``ns.jami.net``) you cannot change your
username.
What is the difference between a username and a display name?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
You can use your username as an identifier. The username points to
your :ref:`Jami ID <user/faq:Where is my Jami ID?>`, which is your
permanent, secure identifier. Two people cannot have the same
username.
A display name allows you to choose another name that identifies you
to your contacts. Display names can be edited or changed at any time
and only your contacts can see them.
How can I back up my account?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
There are two ways to back up your account:
1. Link another device to your account so your account will be on two
devices. You can find this option in the account settings page.
2. Back up the :ref:`account archive
<developer/technical-overview:Jami archive (export.gz)>`. This
file can be found in the account files :ref:`folder <user/faq:Where
are the configuration files located?>`. In some clients, you can
export this archive from the account settings.
Can I retrieve my username without my keys?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If you used the default name server at ``ns.jami.net``, **you can not**.
There is no way to prove it's your username without your key.
If you use a different name server, there may be a way to move a
username to a new Jami ID at the discretion of the administrator of
that name server.
For more information about name servers, see
:doc:`../developer/name-server-protocol`.
Can I recover my account if I forget my password?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
No. There can not be a traditional account recovery process; you are
the only person with access to your data. If you are worried about
forgetting your password, please use a password manager.
What happens when I delete my account?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Your account is only stored on your own devices. If you delete your
account from each device, the account is gone and you cannot get it
back (unless you already made a backup of it earlier). Nobody else
can use your account after that.
Your contacts will still have the messages you sent them, but all
public record of your account on the DHT will eventually disappear
due to absence and lack of activity.
.. warning:: The default ``ns.jami.net`` name server **does not**
delete any registered usernames -- other name servers might (not
recommended), at their administrator's discretion. So, if you have
an account with a username registered on the default name server
and you delete or lose your account, and did not back up your
account earlier, nobody (including you) will be able to register a
new account with that username again, thus nobody can reach you at
that username anymore.
To avoid losing your account **please** :ref:`back it up
<user/faq:How can I back up my account?>`!
What happens when I link a new device?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When you link a device to your account, your :ref:`account archive
<developer/technical-overview:Jami archive (export.gz)>` is put on the
Jami network for a few minutes. It is protected by a password Jami
gives you.
The new device receives your full account certificate with the master
RSA keys, but it generates a new device key for signing/encrypting
messages.
Advanced
--------
What protocol does Jami use for the end-to-end encryption?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
We use TLS 1.3 with a perfect forward secrecy requirement for the
negotiated ciphers for calls and file transfers. Messages are
encrypted with an RSA key.
What data passes through my machine when I participate in the Jami network?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**All these data are encrypted**. There is:
- ICE descriptors of other Jami users (ICE is a protocol that helps
establishing communication between two computers);
- certain text messages; and
- accounts currently being linked to a new device, as explained above.
Audio/video streams and some text messages pass through the VOIP
protocol. Text messages can be sent either via VOIP or DHT (the
distributed network) depending on whether a VOIP communication channel
is already open or not.
Why am I able to communicate with myself?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Many users use Jami to transfer data from one machine to another.
Should I enable push notifications?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Push notifications allow Jami to operate in a way more adapted to the
context of mobility (energy consumption, data, ...). However, for the
moment, notifications go through Google's servers, via the Firebase
service. Only one identifier is transferred and it is unusable for
anyone who does not have access to your account.
What is a bootstrap server?
~~~~~~~~~~~~~~~~~~~~~~~~~~~
A bootstrap server is the entry point of the distributed network.
To enter in a network, Jami must know one other node. This is the
role of the bootstrap. It can be any node in the network, but,
bootstrap nodes are generally always up and available.
The default one in Jami is ``bootstrap.jami.net``.
What is a TURN server? What is STUN?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A TURN server is a relay, and is generally used when two peers can not
contact to each other due to some firewall restriction, have NAT
without any opened port, and no IPv6.
A STUN server is only used for SIP accounts, and is generally used to
get your public IP. For Jami accounts, the DHT already gives this
information.
What is DHT proxy?
~~~~~~~~~~~~~~~~~~
The DHT proxy is a server that registers on the DHT for you and relays
your information to you. Thus, it is the server that will be active
on the DHT and will participate in the network, and no longer the
target device. Multiple devices can register on the same DHT proxy.
Generally, to transfer data between two peers, there are 3 steps:
1. Exchange candidates (IPs) via the DHT
2. Negotiate the best p2p channel between the peers
3. Transfer data on this socket.
The DHT is only used for the first step.
What if I disable the DHT proxy on Android and what about push notifications?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
There is basically 3 modes on how to use the Android application:
+ With push notifications (DHT proxy must be enabled). This mode supports
notifications for Android (via Google/Firebase, and soon Unified Push or Apple/APN).
This decrease battery usage, by removing the sync needed with the DHT and without
any socket always alive.
+ Without push notifications but with DHT proxy enabled. This avoids the application
synchronizing with other nodes, but "Run in background" MUST be enabled to avoid the
operating system killing the application.
+ Without DHT proxy. In this case, "Run in background" MUST be enabled to avoid the operating
system killing the application. The application will synchronize with the other DHT nodes.
I still have issues with the Android application even if battery optimization is disabled
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Please read https://dontkillmyapp.com for more details.
If it does not solve your issue, you can open a bug report (ideally with a scenario to help
us to reproduce and/or logs).
How does the username registration service work?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
With the default name server (``ns.jami.net``), the usernames are
registered on an Ethereum blockchain. If you are a developer, you can
build your own name server with the underlying data storage technology
of your choice (e.g. you could use a SQL database rather than using a
blockchain).
With the default name server, you can look up usernames at
``https://ns.jami.net/name/test``, where ``test`` is a username
for which we are looking for a matching :doc:`Infohash
<../developer/jami-identifiers>`. Once registered, this name server
**does not** provide any way to remove the mapping.
Read more about the Jami :doc:`../developer/name-server-protocol`.
How can I change the timeout for a call?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In the ``dring.yml`` file (see :ref:`user/faq:Where are the
configuration files located?`), you can change the ``ringingTimeout``
(in seconds).
How to back up and reimport conversations and accounts
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note:: This is only for clients based on LRC (desktop ones).
First you will need to export all your accounts (For GNU/Linux:
``Settings`` => ``Account`` => ``Export account``). Then you will
need to copy the database (in ``~/.local/share/jami/`` for example).
Then on the new device, when you will open Jami for the first time, you
have to re-import your accounts via the archive previously saved. This
will re-import your settings and contacts (with empty conversations).
Then close the client and replace the database with the one previously
saved. That's all!
How secure are you?
~~~~~~~~~~~~~~~~~~~
**We use TLS/SRTP to secure connection and communications over the
network.**
We implement SRTP over SIP using recommendations described in the
following two RFCs:
- `RFC 3711 <https://tools.ietf.org/html/rfc3711>`_
- `RFC 4568 <https://tools.ietf.org/html/rfc4568>`_
Typically 2 kinds of sockets are negotiated. One for the control
socket, the other for the media sockets.
Typical control session will use the following cipher suite::
(TLS1.3)-(ECDHE-SECP384R1)-(RSA-PSS-RSAE-SHA384)-(AES-256-GCM)
(TLS_ECDHE_RSA_AES_256_GCM_SHA384)
DTLS (fallback) supported::
"SECURE192:-KX-ALL:+ANON-ECDH:+ANON-DH:+SECURE192:-VERS-TLS-ALL:+VERS-DTLS-ALL:-RSA:%SERVER_PRECEDENCE:%SAFE_RENEGOTIATION"
TLS::
"SECURE192:-KX-ALL:+ANON-ECDH:+ANON-DH:+SECURE192:-RSA:-GROUP-FFDHE4096:-GROUP-FFDHE6144:-GROUP-FFDHE8192:+GROUP-X25519:%SERVER_PRECEDENCE:%SAFE_RENEGOTIATION"
Supported crypto suite for the media session are:
- ``AES_CM_128_HMAC_SHA1_80 / SRTP_AES128_CM_HMAC_SHA1_80``
- ``AES_CM_128_HMAC_SHA1_32 / SRTP_AES128_CM_HMAC_SHA1_32``
When do public IPs get exposed?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
We can consider three main connectivity scenarios: (1) a classic
configuration, (2) behind a VPN, (3) via Tor. As Jami is a p2p
application, the reader would probably know that (2) or (3) is a bit
mandatory to avoid IP leaking.
Moreover, even if it's my answer, you can choose to not trust my
answer and check the code, or use wireshark or other tools.
Generally, I (and as far as I know most other Jami developers) use the
first scenario (sometimes the second one), and we surely can not test
all the possible networks configurations we would like to, so if you
discover a bug, please :doc:`open an issue <bug-report-guide>`.
Anyway, in these 3 scenarios, there are 3 main actions:
- sending a message (this will use the DHT);
- sending a file (TCP ICE connection as described here:
:doc:`../developer/file-transfer`; and
- placing a call (TCP + UDP ICE connection as described here:
:doc:`../developer/calls`).
Classic config
^^^^^^^^^^^^^^
- Send a message
The Jami application is running a DHT (https://opendht.net) node on your
device. So every operations on the DHT will use your ips. This is why
Jami has the option to use a dhtproxy (eg dhtproxy.jami.net), this will
avoid to use your node, but will use another node on the network (which
will see your ip). Note that your message is not sent directly to the
other device. In fact your message is sent on some nodes of the DHT and
your contact will retrieve the message on this node. So, your contact
don't see your IP at this step, but the node who get the message will
(or they will see the IP of the proxy).
- Send a file
As described in the docs, you will send a message with all the IP you
know that your peer can contact in an encrypted packet. So, if your peer
send you a file or you send a file, your addresses will appear in the
ICE message.
- Calls
Same as above, the IP is present in the ICE.
Behind a VPN
^^^^^^^^^^^^
- Send a message
The IP of your VPN will be used by the DHT node. If you want a proof,
you can compile dhtnode and run the ``la`` command to get your public
detected address. This is what I got:
::
./tools/dhtnode -b bootstrap.jami.net
Bootstrap: bootstrap.jami.net:4222
OpenDHT node be58fdc9f782269bfc0bbfc21a60bca5f02cb881 running on port 54299
(type 'h' or 'help' for a list of possible commands)
>> la
Reported public addresses:
IPs OF MY VPN
So, if you don't use a proxy, your VPN addresses will be used for using
the DHT. If you use a dhtproxy, the dhtproxy will see your VPN addresses
- Send a file
Same as above, the ICE will contains: + addresses from your LAN + public
address of your VPN + TURN address if TURN is enabled
- Do a call
Same as above, your public address is replaced by your VPN
address. You can see it in the logs from daemon.
See :ref:`user/bug-report-guide:logs`.
Tor
^^^
- Send a message
Tor basically does not supports UDP. This means that you can not use your
DHT node locally, you MUST use a DHTProxy. That proxy will see the Exit
node.
- Send a file
I prefer a proof that any description. So, I did a file transfer with
Jami + TOR. This is what I see in the logs for the remote:
::
[1574218330.556|10688|p2p.cpp :241 ] [Account:93a03f519f394143] add remote ICE candidate: Hc0a8c801 1 TCP 2130706431 192.168.200.1 33293 typ host tcptype passive
[1574218330.556|10688|p2p.cpp :241 ] [Account:93a03f519f394143] add remote ICE candidate: Hc0a8c801 1 TCP 2130706431 192.168.200.1 9 typ host tcptype active
[1574218330.556|10688|p2p.cpp :241 ] [Account:93a03f519f394143] add remote ICE candidate: Hc0a80103 1 TCP 2130706431 192.168.1.3 33293 typ host tcptype passive
[1574218330.556|10688|p2p.cpp :241 ] [Account:93a03f519f394143] add remote ICE candidate: Hc0a80103 1 TCP 2130706431 192.168.1.3 9 typ host tcptype active
[1574218330.556|10688|p2p.cpp :241 ] [Account:93a03f519f394143] add remote ICE candidate: R33fe279d 1 TCP 16777215 51.254.39.157 27427 typ relay tcptype passive
[1574218330.556|10688|p2p.cpp :241 ] [Account:93a03f519f394143] add remote ICE candidate: Sc0a8c801 1 TCP 1694498815 185.220.101.24 33293 typ srflx tcptype passive
The first ones are some 192.168.x.x so we don't care. 51.254.39.157 is
the TURN address in France (my device is in the Canada). 185.220.101.24
is the Tor exit node:
::
inetnum: 185.220.101.0 - 185.220.101.127
netname: MK-TOR-EXIT
- Do a call
This will not work (actually, you can create the SIP control connection
because it's a TCP connection), but medias are negotiated in UDP, so
this will fail.
What ports does Jami use?
~~~~~~~~~~~~~~~~~~~~~~~~~
Jami works as a server and gets new ports for each connections (randomly
bound). These are the ranges that can be used for each component:
- dht: UDP [4000, 8888]
- audio: UDP [16384-32766]
- video: UDP [49152-65534]
- SIP Control: UDP/TCP randomly bound
Note: if UDP is blocked, a dhtproxy can be used to use TCP instead.
Note that medias will not work cause it only supports UDP.
So for ufw, we recommend running ``sudo ufw default allow outgoing``.
For now, you can not specify a specific range to configure ports used by
Jami. The inbound traffic can be controlled without issue, Jami should
work and can use a TURN server if needed.
If you run your own proxy or nameserver:
- dhtproxy, nameserver: TCP [80-100], 443
If you run your own TURN server:
- TURN/STUN: TCP+UDP 3478, 5349
Can I use Jami in a local network (LAN) without internet access?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Yes! Thanks to Jami's architecture, Jami users on a local/private
network can communicate among themselves using Jami, without requiring
any outside connectivity such as the internet.
To do so, from Jami's ``Account`` settings open ``Advanced account
settings``. There, enable the ``Enable local peer discovery``
setting. Additionally, you may want to manually set the ``bootstrap``
node's address (default: ``bootstrap.jami.net``) to the IP address of
another device on your network that also runs Jami and/or an OpenDHT
node.
.. note:: If you will use this Jami account for communicating only
with only with other devices on the same local/private network,
you can disable TURN if you wish. If you do so, and later you
decide to use this account also for communicating with other Jami
devices outside your network, don't forget to enable TURN again,
as it helps Jami work around issues with some overly restrictive
firewalls.
How can I configure the codecs even more?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Codecs can be configured via a file. In the configurations files, you
can create a file called ``encoder.json`` like this:
::
{
"libx264": {
"profile": 100,
"level": 42,
"crf": 20,
"preset": "ultrafast"
},
"h264_vaapi": {
"low_power": 1
},
"libopus": {
"application": "voip"
}
}
or:
::
{
"libopus": {
"bit_rate": 128000
}
}
This file is :ref:`located in the same directory <user/faq:Where are
the configuration files located?>` as ``dring.yml``.
To check which options are supported, use the command ``ffmpeg -h
encoder=[encoder_name]``, where ``encoder_name`` can be any of
``libx264``, ``libvpx``, ``mpeg4``, ``h263``, ``libopus``,
``libspeex``, ``g722``, ``pcm_alaw``, or ``pcm_mulaw`` (the FFmpeg
names for all of Jami's supported encoders).
How can I configure the audio processor?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
An audio processor allows Jami to clean up and process your microphone's audio.
It can remove echo, reduce noise, and equalize your microphone's volume.
Additionally, it can detect when you're speaking and send this information to participants in your call.
The audio processor settings can be set in your ``dring.yml`` file.
See :ref:`this section to find where this file is located <config-file-location>`.
The relevant preference keys are:
- ``audioProcessor``, which configures which audio processor to use. The valid options are:
- ``webrtc``: the `WebRTC Audio Processing library <https://www.freedesktop.org/software/pulseaudio/webrtc-audio-processing/>`_
- ``speex``: the `Speex DSP library <https://gitlab.xiph.org/xiph/speexdsp>`_
- ``null``: disables audio processing (though your system echo canceller may still be used, see below)
- ``echoCancel``, which configures how echo cancelling should be done. The valid options are:
- ``auto``: try to use your operating system's echo canceller (if it exists), otherwise fall back to the chosen audio processor's echo canceller
- ``audioProcessor``: only use the chosen audio processor's echo canceller
- ``system``: only use your operating system's echo canceller
- ``null``: don't do any echo cancelling
- ``noiseReduce``, ``true``/``false`` to set noise reduction on the audio processor
- ``automaticGainControl``, ``true``/``false`` to set automatic gain control on the audio processor
- ``voiceActivityDetection``, ``true``/``false`` to set voice activity detection on the audio processor