Perguntas frequentes
Esta é uma lista de perguntas frequentes (FAQ), incluindo algumas questões técnicas.
As perguntas do [Fórum] (https://forum.jami.net/) também são adicionadas aqui.
Noções básicas
O que é Jami?
Ver a Introdução.
O que significa Jami?
A escolha do nome Jami foi inspirada na palavra Swahili [jamii] (https://en.wiktionary.org/wiki/jamii) que significa “comunidade” como substantivo e “juntos” como advérbio. Foi escolhido porque reflete a visão do projeto:
um programa gratuito/livre disponível para todos que ajuda a unir as comunidades,
é apoiado pela comunidade e
respeita a liberdade e a privacidade dos utilizadores.
Como posso fazer um relatório de bugs?
Por favor, veja o [Guia de relatório de erros] (bug-report-guide.md).
O que torna o Jami diferente de outras plataformas de comunicação?
O Jami não funciona como a maioria das plataformas de comunicação porque é distribuído:

Some of the consequences may seem surprising. For instance, since accounts are stored on the user’s device, passwords are optional. However, the most significant practical differences are that the user has more freedom and privacy.
O que significam os círculos de estado verdes / laranjas / vermelhos junto às fotografias de perfil?
Na conta de um utilizador, a indicação 🔴 (um círculo vermelho) significa que o dispositivo não está conectado ao DHT ou está offline. Deve ser apresentado um erro detalhado que explique o problema. Verificar a ligação à rede/Internet ou reiniciar a aplicação pode resolver o problema.
Para contactos:
nenhum círculo apresentado significa que não foi detetado nenhum dispositivo no DHT. O contacto não está acessível.
🟠 (um círculo laranja) apresentado significa que pelo menos um dispositivo é anunciado na DHT, pelo que o contacto PARECE estar acessível. O dispositivo ainda não tem uma ligação direta a este ponto a ponto. Mas deve ser capaz de receber pedidos de ligação. Como o dispositivo não está diretamente conectado a nada, o estado do dispositivo não pode ser determinado com certeza. Assim, isto pode ser conectado a “Parece estar contactável”, mas a ligação pode falhar (firewall, impasse, NAT, etc.). A presença tem geralmente um TTL de:
10 minutos sobre a DHT, e
várias horas se as notificações push estiverem ativadas.
🟢 (um círculo verde) apresentado significa que o dispositivo está conectado a um dispositivo deste par.
Porque falta uma característica no meu cliente?
Nem todos os clientes implementam todas as funcionalidades. Verifique a lista Todos os recursos por cliente para ver se o cliente não possui o recurso. Pedidos de recursos podem ser feitos em https://git.jami.net.
O Jami suporta recibos de leitura? Posso ativá-los ou desativá-los?
Sim. Os recibos de leitura podem ser ativados ou desativados nas definições do Jami para computador, Android, Android TV e iOS.
O Jami suporta indicadores de escrita? Posso ativá-los ou desativá-los?
Sim. Os indicadores de digitação podem ser ativados ou desativados nas definições do Jami para computador, Android e iOS.
Posso fazer chamadas de conferência de grupo?
Sim. Os contactos Jami podem ser adicionados a chamadas (áudio ou vídeo) clicando no botão “Adicionar participante”.
A Jami apoia as conversas de grupo?
Sim.
Por que minhas mensagens enviadas não estão aparecendo em todos os dispositivos vinculados?
Antes da implementação da tecnologia Enxame, os dispositivos de uma conta só recebiam as mesmas mensagens dos contactos se o dispositivo estivesse online no momento em que a mensagem era enviada. No entanto, as mensagens enviadas não apareciam noutros dispositivos para além daquele que enviava a mensagem.
Com a implementação da tecnologia Enxame, os históricos de novas conversas (incluindo conversas individuais) são totalmente sincronizados entre todos os dispositivos vinculados a uma conta. Atualize todas as versões antigas do Jami para a versão mais recente que inclui a tecnologia Enxame. A versão mais recente do Jami está sempre disponível na página de Transferências do Web site do Jami, em https://jami.net/download/.
Para saber mais sobre a tecnologia Enxame, visite a publicação do blogue Sincronizar o histórico de conversas com o Swarm e visite o Manual do programador.
Posso enviar mensagens para contatos offline?
Com as conversações da tecnologia Enxame, cada dispositivo armazena uma cópia de todas as mensagens dessa conversação. Se o dispositivo de um utilizador, ou de outro participante, estiver inacessível quando uma mensagem é enviada, quando se tornar acessível, tentará obter quaisquer mensagens novas de outros dispositivos acessíveis e sincronizar o histórico de mensagens. Isto pode ser feito sempre que pelo menos um outro dispositivo que tenha uma cópia das novas mensagens também esteja acessível.
Ver também
Para ler mais sobre a forma como as conversações da tecnologia Enxame são sincronizadas, visite a publicação do blogue [Sincronizar o histórico de conversações com o Enxame] (https://jami.net/synchronizing-conversation-history-with-swarm/).
Se os participantes numa conversa não estiverem frequentemente online ao mesmo tempo (por exemplo, devido a fusos horários diferentes), um deles pode optar por configurar o Jami num dispositivo frequentemente online. O dispositivo frequentemente online receberia as mensagens de cada participante e transmiti-las-ia ao(s) outro(s) sempre que este(s) estivesse(m) em linha. Assim, atuando de forma semelhante a um “servidor”, o Jami permanece distribuído por natureza.
Onde estão os arquivos de configuração?
Jami guarda sua configuração (conto, certificados, histórico) em diferentes locais dependendo da plataforma.
GNU/Linux: a configuração global está em
~/.config/jami/dring.yml
, e os ficheiros específicos da conta estão em~/.local/share/jami/
. Finalmente, há um diretório de cache em~/.cache/jami/
.macOS: a configuração completa está em
~/Library/Application Support/Jami/
se instalado via https://jami.net. A versão da loja de aplicações utiliza~/Library/Containers/com.savoirfairelinux.ring.macos/Data/Library/Application Support/jami/
.Android: a configuração completa está em
/data/data/cx.ring/
(pode exigir privilégios de root para ver ou alterar de fora do Jami).Windows: a configuração global está em
%AppData%/Local/jami/dring.yml
, e os ficheiros específicos da conta estão em%AppData%/Local/jami/
. Finalmente, existe um diretório de cache em%USERPROFILE%/.cache/jami/
.
Nota
As mensagens de áudio e vídeo são gravadas nos dados locais, na pasta: sent_data
Para os ficheiros, se um ficheiro for guardado (clique com o botão direito do rato no ficheiro e depois em Guardar), será adicionado ao diretório configurado nas definições da aplicação.
How much bandwidth is required for calls?
Para as chamadas de áudio, o Jami utiliza cerca de 100 Kbps. Para uma chamada de vídeo, são necessários cerca de 2 Mbit/s para uma qualidade média. Se a ligação for mais lenta, a taxa de bits será automaticamente reduzida.
If a device is hosting a video conference, approximately an additional 2 Mbps per participant is required. So, for example, for a conference with 10 participants, each participant requires 2 Mbps up and down, and the host requires 20 Mbps up and down.
O Jami também usa um algoritmo para alterar o consumo de acordo com a qualidade da conexão. Assim, a taxa de bits pode ter um mínimo de 200 Kbit/s e um máximo de 6 Mbit/s.
Como é que a Savoir-Faire Linux Inc. (SFL) pode dar-se ao luxo de oferecer o Jami gratuitamente? Como é que a SFL ganha dinheiro com o Jami?
A Savoir-Faire Linux Inc. (SFL) é uma empresa de consultoria com alguns projetos de I&D. O Jami é um projeto GPLv3+ e isso não vai mudar. A SFL já vende serviços para várias áreas de especialização (alojamento, desenvolvimento de sítios Web e aplicações, software incorporado, etc.).
A Jami é financiada de várias formas:
Serviços para outros projetos
Visibilidade
Despesas recorrentes de Jami:
Por ser um sistema distribuído, o Jami incorre em custos muito baixos
A coleta opcional de estatísticas anônimas pode ser adicionada no futuro para entender melhor o uso do Jami; no entanto, nenhum dado pessoal será coletado.
Gestão de contas
O que é uma conta Jami?
Uma conta Jami é uma chave de encriptação assimétrica. A conta Jami é identificada por um Jami ID, que é uma impressão digital da chave pública.
What information is required to be provided to create a Jami account?
Quando é criada uma nova conta Jami, não são necessárias informações privadas como o endereço de correio eletrónico, a morada ou o número de telefone.
Podem ser fornecidas as seguintes informações:
Uma fotografia de perfil (opcional).
Um nome de apresentação (opcional), que é o nome que os clientes mostrarão para o seu contacto. Pode conter caracteres especiais.
Um nome de utilizador (opcional), que é um identificador único que está diretamente associado ao seu Jami ID. Este mapeamento nome de utilizador→ID do Jami é armazenado num servidor (
ns.jami.net
por defeito, mas pode alojar o seu próprio).Uma palavra-passe (opcional). Esta palavra-passe é utilizada para proteger o arquivo da conta no dispositivo.
Ver também
Mais informações sobre as contas Jami estão disponíveis na secção Gestão de contas do manual do Programador.
Onde está a minha identificação Jami?
O ID do Jami é apresentada na página principal da aplicação Jami. O ID Jami é uma cadeia de 40 caracteres de letras e números; por exemplo: f2c815f5554bcc22689ce84d45aefdda1bce9146
.
Porque não tenho de usar uma senha?
Num sistema centralizado, é necessária uma palavra-passe para autenticar com um servidor público onde as contas são armazenadas. Qualquer terceiro que saiba a palavra-passe de uma pessoa pode roubar a identidade dessa pessoa.
Com o Jami, a conta é armazenada numa pasta no dispositivo. Não existe um servidor público onde as contas Jami são armazenadas. Por conseguinte, não é necessária uma palavra-passe da conta com o Jami. A palavra-passe só é utilizada para encriptar uma conta Jami, de modo a proteger a conta Jami de alguém que tenha acesso físico ao dispositivo.
A password may not be wanted or required if the device is encrypted. Recent versions of Jami do not ask for an account encryption password by default when creating new accounts.
Nota
A alteração de uma palavra-passe apenas altera a palavra-passe no dispositivo atual e não é sincronizada (porque não existe um servidor e os outros dispositivos podem estar offline).
Porque não tenho de registrar um nome de usuário?
O identificador mais permanente e seguro é o Jami ID. No entanto, estes são difíceis de usar para algumas pessoas, existe também a opção de registar um nome de utilizador. O registo do nome de utilizador requer um servidor de nomes, tal como o servidor padrão do Jami em ns.jami.net
.
Se não registrar um nome de usuário, você ainda poderá optar por registrar um mais tarde, a qualquer momento.
Se você hospedar seu próprio servidor de nomes em example.com
, os nomes de utilizadores registados lá podem ser procurados pesquisando por username@example.com
.
Posso mudar o meu nome de usuário?
Os nomes de utilizador não podem ser alterados no servidor de nomes predefinido (ns.jami.net
).
Qual é a diferença entre um nome de usuário e um nome de exibição?
O nome de utilizador pode ser utilizado como um identificador. O nome de utilizador aponta para o Jami ID, que é o identificador permanente e seguro. Os nomes de utilizador são únicos no servidor de nomes.
Um nome de apresentação permite-lhe escolher outro nome que identifique uma conta Jami aos contactos. Os nomes de apresentação podem ser editados ou alterados em qualquer altura e apenas os colegas de confiança os podem ver.
Como posso fazer backup da minha conta?
Existem duas formas de efetuar uma cópia de segurança de uma conta:
Vincule outro dispositivo à conta para que a conta esteja em dois dispositivos. Esta opção está disponível na página Configurações da conta.
Fazer a cópia de segurança do arquivo da conta. Estão disponíveis mais informações sobre as contas Jami na secção Gestão de contas do Manual do programador. Alguns clientes permitem exportar o arquivo da conta Jami a partir das Configurações de conta.
Posso recuperar o meu nome de usuário sem as minhas chaves?
Se o servidor de nomes padrão em ns.jami.net
armazena um nome de utilizador, o nome de utilizador não pode ser recuperado sem a chave. Não há nenhuma maneira de provar um nome de utilizador sem a chave.
Se tiver sido utilizado um servidor de nomes diferente para armazenar um nome de utilizador, pode haver uma forma de mover o nome de utilizador para um novo Jami ID, à discrição do administrador do servidor de nomes.
Ver também
Estão disponíveis mais informações sobre servidores de nomes na secção [Protocolo do servidor de nomes] (/developer/jami-concepts/name-server-protocol.md) do manual do Programador.
Posso recuperar a minha conta se esquecer a minha senha?
Não. Não existe um processo tradicional de recuperação de contas; o utilizador é a única pessoa com acesso aos seus dados.
Dica
Use a password manager if there is a concern about forgetting the Jami account password.
O que acontece quando eu excluo minha conta?
A conta Jami só é guardada em dispositivos que tenham a conta Jami.
A conta Jami desapareceu e não pode ser restaurada se:
não existe qualquer cópia de segurança da conta Jami, e
a conta Jami é eliminada de todos os dispositivos.
Além disso, mais ninguém pode utilizar a conta Jami.
Os contactos continuarão a ter as mensagens que lhes foram enviadas, mas todos os registos públicos da conta no DHT acabarão por desaparecer devido à ausência e falta de atividade.
Aviso
O servidor de nomes padrão ns.jami.net
não elimina nenhum nome de utilizador registado – outros servidores de nomes podem (não recomendado), à discrição do seu administrador. Então, se uma conta tem um nome de utilizador registado no servidor de nomes padrão e a conta é eliminada ou perdida (sem uma cópia de segurança), ninguém (incluindo o utilizador) será capaz de registar uma nova conta com esse nome de utilizador novamente; assim, ninguém mais pode contactar o utilizador com esse nome de utilizador.
To avoid losing an account please back it up!
O que acontece quando eu vincular um novo dispositivo?
Quando um dispositivo é ligado a uma conta, o arquivo da conta Jami é colocado na rede Jami durante alguns minutos. A conta Jami é protegida com uma palavra-passe fornecida pela Jami.
O novo dispositivo recebe o certificado de conta completo com as chaves RSA principais e gera uma nova chave de dispositivo para assinar / encriptar mensagens.
Avançado
Que protocolo o Jami usa para a criptografia de ponta a ponta?
Utilizamos o TLS 1.3 com um requisito de sigilo de encaminhamento perfeito para as cifras negociadas para chamadas e transferências de ficheiros. As mensagens são encriptadas com uma chave RSA.
Que dados passam pela minha máquina quando participo da rede Jami?
Todos esses dados são criptografados. Há:
descritores ICE de outros usuários do Jami (ICE é um protocolo que ajuda a estabelecer a comunicação entre dois computadores)
determinadas mensagens de texto
contas que estão sendo vinculadas a um novo dispositivo, conforme explicado acima.
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.
Por que sou capaz de me comunicar comigo mesmo?
Muitos usuários usam o Jami para transferir dados de uma máquina para outra.
Devo ativar as notificações push?
As notificações push permitem ao Jami funcionar de uma forma mais adaptada ao contexto da mobilidade (consumo de energia, dados…). No entanto, de momento, as notificações passam pelos servidores da Google, através do serviço Firebase. Apenas um identificador é transferido e é inutilizável por qualquer pessoa que não tenha acesso à conta.
O que é um servidor bootstrap?
Um servidor de arranque é o ponto de entrada da rede distribuída. Para entrar numa rede, o Jami tem de conhecer um outro nó. Este é o papel do bootstrap. Ele pode ser qualquer nó na rede, mas, os nós bootstrap geralmente estão sempre ativos e disponíveis. O nó padrão no Jami é bootstrap.jami.net
.
O que é um servidor TURN? O que é o STUN?
Um servidor TURN é um retransmissor e é geralmente utilizado quando dois pares não conseguem contactar um com o outro devido a alguma restrição de firewall, têm NAT sem qualquer porta aberta e não têm IPv6.
Um servidor STUN só é utilizado para contas SIP e é geralmente utilizado para obter o endereço IP público do dispositivo. Para as contas Jami, o DHT já fornece o endereço IP público do dispositivo.
O que é o DHT proxy?
O proxy DHT é um servidor que se regista na DHT em nome do dispositivo e retransmite informações de e para o dispositivo. Assim, é o servidor que estará ativo na DHT e participará na rede, e já não o dispositivo alvo. Vários dispositivos podem registar-se no mesmo proxy DHT.
Geralmente, para transferir dados entre dois pares, existem 3 etapas:
Troca de candidatos (endereços IP) através do DHT
Negociar o melhor canal P2P entre os pares
Transferir dados nesse soquete.
O DHT só é utilizado para o primeiro passo.
E se eu desativar o proxy DHT no Android e as notificações por push?
Há basicamente três modos de usar o aplicativo Android:
With push notifications (DHT proxy must be enabled). This mode supports notifications for Android (via Google/Firebase, and soon UnifiedPush or Apple/APN). This decreases battery usage by removing the sync required with the DHT and without any socket always alive.
Sem notificações push, mas com o proxy DHT ativado. Isto evita que a aplicação se sincronize com outros nós, mas a opção “Executar em segundo plano” DEVE estar ativada para evitar que o sistema operativo “mate” a aplicação.
Sem proxy DHT. Neste caso, a opção “Executar em segundo plano” DEVE ser ativada para evitar que o sistema operativo mate a aplicação. A aplicação sincronizar-se-á com os outros nós DHT.
Ainda tenho problemas com o aplicativo Android, mesmo que a otimização da bateria esteja desativada
Leia https://dontkillmyapp.com para obter mais detalhes. Se não resolver os problemas, abra um relatório de erro (de preferência com um cenário para ajudar a reproduzir e/ou registos).
Como funciona o serviço de registro de nomes de usuário?
Com o servidor de nomes padrão (ns.jami.net
), os nomes de utilizador são registados numa blockchain Ethereum. É possível desenvolver um servidor de nomes com qualquer tecnologia de armazenamento de dados subjacente. Por exemplo, pode ser usado uma base de dados SQL em vez de um blockchain para a tecnologia de armazenamento de dados.
Com o servidor de nomes predefinido, procure nomes de utilizador com https://ns.jami.net/name/test
, onde test
é um nome de utilizador para o qual estamos à procura de um Infohash correspondente.
Uma vez registado, o servidor de nomes não fornece qualquer forma de remover o mapeamento.
Estão disponíveis mais informações sobre servidores de nomes na secção [Protocolo do servidor de nomes] (/developer/jami-concepts/name-server-protocol.md) do manual do Programador.
Como posso alterar o tempo para uma chamada?
In the dring.yml
file (see Onde estão os arquivos de configuração?), the ringingTimeout
value, measured in seconds, can be changed.
Como fazer backup e reimportar conversas e contas
Nota
Isso só é aplicável a clientes de desktop. Os clientes desktop são executados nos sistemas operacionais GNU/Linux, macOS e Windows.
Exportar cada conta. (Para GNU/Linux:
Abrir configurações
→Conta
→Gerir conta
→Conta de cópia de segurança
).Copie e guarde a base de dados (em
~/.local/share/jami/
por exemplo).No novo dispositivo, para importar as configurações e os contactos com conversas vazias:
se o Jami for aberto pela primeira vez, importar a cópia de segurança do arquivo.
Já tenho uma conta
→Importar de um arquivo de segurança
.se o Jami já tiver uma conta, importar cada cópia de segurança de arquivo.
Adicionar outra conta
→Já tenho uma conta
→Importar de uma cópia de segurança de arquivo
.
Feche o Jami e substitua a base de dados pela base de dados anteriormente guardada.
Quão seguro você está?
TLS/SRTP is used to secure connection and communications over the network.
SRTP over SIP is implemented using recommendations described in the following two RFCs:
Normalmente, são negociados 2 tipos de sockets. Um para o socket de controlo e o outro para os sockets de media.
Uma sessão de controlo típica utilizará o seguinte conjunto de cifras:
(TLS1.3)-(ECDHE-SECP384R1)-(RSA-PSS-RSAE-SHA384)-(AES-256-GCM)
(TLS_ECDHE_RSA_AES_256_GCM_SHA384)
Suporte para DTLS (fallback):
"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"
A criptografia suportada para a sessão de mídia é:
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 IP addresses get exposed?
Podemos considerar três cenários principais de conetividade: (1) uma configuração clássica, (2) por detrás de uma VPN e (3) através do Tor.
As Jami is a P2P application, the reader would probably know that (2) or (3) is mandatory to avoid IP address 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, Jami developers use the first scenario (sometimes the second one). It is impossible to test all the possible networks configurations, so if you discover a bug, please open an issue.
Para os três cenários, existem três ações principais:
Enviar uma mensagem (esta utilizará o DHT);
enviar um ficheiro (ligação TCP ICE como descrito na secção Transferência de ficheiros do manual do Programador; e
fazer uma chamada (ligação TCP + UDP ICE como descrito na secção Chamadas do manual do programador.
(1) Uma configuração clássica
Enviar mensagem
The Jami application is running a DHT (https://opendht.net) node on your device. So every operations on the DHT will use your IP address. This is why Jami has the option to use a DHTProxy (e.g., http://dhtproxy.jami.net/); this will avoid using your node and instead will use another node on the network (which will see your IP address). 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 address at this step, but the node who get the message will (or they will see the IP address of the proxy).
Enviar um arquivo
Tal como descrito na documentação, enviará uma mensagem com todos os endereços IP que sabe que o seu par pode contactar num pacote encriptado. Assim, se o seu par lhe enviar um ficheiro ou se você enviar um ficheiro, os seus endereços aparecerão na mensagem ICE.
Chamadas
O mesmo que acima, o endereço IP está presente no ICE.
(2) Por trás de uma VPN
Enviar mensagem
The IP address 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:
IP ADDRESSES 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.
Enviar um arquivo
O mesmo que acima, o ICE contém:
endereços da sua LAN
endereço público da sua VPN
Endereço TURN se TURN estiver ativado
Faça uma chamada.
O mesmo que acima, o seu endereço público é substituído pelo seu endereço VPN. Pode vê-lo nos registos do daemon. Veja Registros.
(3) Tor
Enviar mensagem
Tor basicamente não suporta UDP. Isso significa que você não pode usar seu nodo DHT localmente, você MUST usar um DHTProxy. Esse proxy verá o nodo de saída.
Enviar um arquivo
Prefiro uma prova a qualquer descrição. Então, fiz uma transferência de arquivos com Jami + TOR. Isso é o que vejo nos registros do controle remoto:
[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
Os primeiros são alguns 192.168.x.x, então não nos importa. 51.254.39.157 é o endereço TURN na França (meu dispositivo está no Canadá). 185.220.101.24 é o nodo de saída Tor:
inetnum: 185.220.101.0 - 185.220.101.127
netname: MK-TOR-EXIT
Faça uma chamada.
Isto não vai funcionar (na verdade, você pode criar a conexão de controle SIP porque é uma conexão TCP), mas os meios de comunicação são negociados em UDP, então isso falhará.
Que portos usa Jami?
Jami trabalha como um servidor e recebe novas portas para cada conexão (randomamente ligadas).
Dht: UDP [4000, 8888]
Áudio: UDP [16384-32766]
Video: UDP [49152-65534]
Controle SIP: UDP/TCP ligado aleatoriamente
Nota
If UDP is blocked, a DHTProxy can be used to use TCP instead. However, media will not work because it only supports UDP.
So for UFW (Uncomplicated Firewall), it is recommended to open the Terminal and enter the command:
sudo ufw default allow outgoing
Currently, it is not possible to define the range of configured ports to be used by Jami. The inbound traffic can be controlled without issue; Jami should work and can use a TURN server if required.
Se executar o seu próprio servidor proxy ou de nomes:
DHTProxy, name server: TCP [80-100], 443
Se executar o seu próprio servidor TURN:
TURN/STUN: TCP+UDP 3478, 5349
Posso utilizar o Jami numa rede local (LAN) sem acesso à Internet?
Sim! Graças à arquitetura do Jami, os utilizadores do Jami numa rede local / privada podem comunicar entre si utilizando o Jami, sem necessitarem de qualquer conetividade externa, como a Internet.
Para o fazer, nas definições de Conta
do Jami, abra Configurações avançadas da conta
. Lá, ative a configuração Ativar a descoberta local de pares
. Além disso, pode querer definir manualmente o endereço do nó bootstrap
(padrão: bootstrap.jami.net
) para o endereço IP de outro dispositivo na sua rede que também executa o Jami e/ou um nó OpenDHT.
Nota
Se utilizar esta conta Jami para comunicar apenas com outros dispositivos na mesma rede local / privada, pode desativar o TURN se assim o desejar. Se o fizer, e mais tarde decidir utilizar esta conta também para comunicar com outros dispositivos Jami fora da sua rede, não se esqueça de ativar novamente o TURN, uma vez que ajuda o Jami a contornar problemas com algumas firewalls demasiado restritivas.
Como posso configurar os codecs ainda mais?
Os codecs podem ser configurados através de um ficheiro. Nos ficheiros de configuração, pode criar um ficheiro chamado encoder.json
como este:
{
"libx264": {
"profile": 100,
"level": 42,
"crf": 20,
"preset": "ultrafast"
},
"h264_vaapi": {
"low_power": 1
},
"libopus": {
"application": "voip"
}
}
ou
{
"libopus": {
"bit_rate": 128000
}
}
This file is located in the same directory as dring.yml
.
Para verificar quais opções são suportadas, utilize o comando ffmpeg -h encoder=[nome_do_codificador]
, onde nome_do_codificador
pode ser qualquer um dos libx264
, libvpx
, mpeg4
, h263
, libopus
, libspeex
, g722
, pcm_alaw
, ou pcm_mulaw
(os nomes do FFmpeg para todos os codificadores suportados por Jami).
Como posso configurar o processador de áudio?
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 this section to find where this file is located.
As chaves de preferência pertinentes são:
audioProcessor
, que configura o processador de áudio a utilizar. As opções válidas são:webrtc
: abiblioteca de processamento de áudio WebRTC <https://www.freedesktop.org/software/pulseaudio/webrtc-audio-processing/>
_speex
: abiblioteca DSP Speex <https://gitlab.xiph.org/xiph/speexdsp>
_null
: desativa o processamento áudio (embora o cancelador de eco do sistema possa ainda ser utilizado, ver abaixo)
echoCancel
, que configura a forma como o cancelamento de eco deve ser efetuado. As opções válidas são:auto
: tentar utilizar o cancelador de eco do seu sistema operativo (se existir), caso contrário, recorrer ao cancelador de eco do processador de áudio escolhidoaudioProcessor
: utilizar apenas o cancelador de eco do processador de áudio escolhidosystem
: utilizar apenas o cancelador de eco do seu sistema operativonull
: não fazer nenhum cancelamento de eco
noiseReduce
,true
/false
para definir a redução de ruído no processador de áudioautomaticGainControl
,true
/false
para definir o controlo automático de ganho no processador de áudiovoiceActivityDetection
,true
/false
para definir a deteção de atividade vocal no processador áudio