Guto Carvalho # 2022-21-08 @ BSB
Guto Carvalho # 2022-21-08 @ BSB

Migrando Telegram para Matrix.org

by

Garantindo acesso às comunidades no caso de ficarmos sem Telegram, vem entender!

Gente, eleições estão chegando e o telegram está na mira do TSE, ele mesmo, a rede queridinha das comunidades de TI no Brasil.


Me siga no twitter @gutocarvalho e acompanhe meus posts sobre Cloud Native e CI/CD.

Aproveite e siga a CD Foundation e Cloud Native Foundation e acompanhe o trabalho destas incríveis entidades.


Qual o problema?

O fato é que que o alto comando do Telegram simplesmente não responde nenhuma notificação do governo ou da justiça Brazuca, e estes por sua vez já avisaram que se continuarem assim, é provavel o bloqueio do APP nas redes de nosso país.

Vale lembrar que o core do Telegram, bem como sua criptografia são projetos fechados, dos quais não podemos auditar e verificar.

Juntando isso com a guerra que estourou na Ucrânia e as sanções ao invasor Russo, temos dois fortes motivos para ficar com o pé atrás no caso do Telegram, afinal é um projeto de origem russa, que tem como dono um bilionário Russo com várias coisas obscuras em sua história e trajetória até hoje.

Com receio do cenário atual ter algum reflexo em nossas comunidades, eu fiquei pensando em como preservar os grupos que eu apoio no Telegram e construir um plano B no caso de corte dessa rede que usamos para compartilhar e aprender.

Indo no caminho de uma solução alternativa eu revisitei o projeto Matrix.

O que é o projeto Matrix.org?

O Matrix.org é um projeto que tem como objetivo criar padrões abertos para comunicação em tempo real, sendo descentralizado e tendo em mente segurança com forte criptografia, performance e escalabilidade.

Fundação Matrix

O projeto é mantido pela Matrix Foundation, entidade sem fins lucrativos que além de organizar o desenvolvimento do projeto, roda também a plataforma matrix.org (synapse) como ponto de partida, disponível para federação com outras instâncias matrix/synapse.

Pronto para produção

O projeto está na rua há algum tempo e já saiu do beta em 2019, podendo rodar em produção com segurança.

Ele tem mensagens de texto, áudio, vídeo, voip e criptografia séria, é beeeeem completão, além de ser 100% open-source e tem também recursos de moderação excelentes.

Do ponto de vista de mídias, ele suporta quase todos os tipos de arquivos de imagem, áudio e vídeo conhecidos.

Moderação de alto nível

O projeto em endereça as principais preocupações para fazer a gestão de comunidades tais como:

  • Garantir que moderadores de salas tenham as ferramentas necessárias para fazer o enforce do código de conduta que eles aplicam
  • Garantir que os administradores dos servidores tenham as ferramentas necessárias para fazer o enforce do termo de uso de suas instâncias
  • Garantir que os usuários consigam filtram conteúdo que não desejam ver

Junto a isso a moderação oferece:

  • Remoção de mensagens em canais
  • Gerenciamento de nomes e termos abusivos para salas e tópicos
  • Power Levels, ou poderes granulares para usuários em salas
  • Kick e ban de usuários
  • Ban por IP
  • Bloqueio de usuário
  • Moderação de canal
  • Um moderador de sala pode banir um servidor específico da sala

Dentre muitos outros recursos, entre no link abaixo para saber mais

Segurança moderna

O projeto oferece o que tem de mais moderno em criptografia E2E. O sistema de criptografia do matrix visa garantir que apenas os destinatários de uma mensagem consigam decriptogafar e ler seu conteúdo. O sistema avisa inclusive se outros dispositivos foram adicionados a conversa.

A criptografia do Matrix é baseada no “Double Ratchet Algorithm” popularizada pelo projeto Signal (que é considerado o mais seguro hoje). Ela foi baseada e estendida para que o mesmo nível de criptografia funcione em salas com milhares de dispositivos e usuários. Além disso, a criptografia do Matriz foi auditada de forma independente pelo grupo NCC o que traz uma segunda opnião sobre a qualidade da solução implementada. Vale lembrar que o relatório do grupo NCC é de 2016 e todas as issues apontadas já foram resolvidas.

APIs, Bots e SDK’s

O matrix tem um API bem flexível e dá para rodar bots, integrar com seus sistemas fazendo aquele chatops bacana.

Implementações de servidores

Você pode rodar sua própria instância/server do Matrix e se quiser pode integrar/federar com os outros servidores existentes.

Implementações de clientes

Existe o element.io que é um cliente fantástico para mobile, desktop e web, mas ele não é o único, existem diversos projetos de cliente Matrix

Conectando redes via Bridges

Fora isso tudo, uma das características mais interessantes do projeto Matrix é a integração com virtualmente qualquer outro projeto de comunicação, tais como irc, slack, telegram, whatsapp, mattermost, rocketchat, discord dentre outros, a integração é feita através do que eles chamam de bridges.

Com a bridge você pode estender um canal do telegram para o matrix por exemplo, conectar ao discord, irc e com isso unificar sua comunidade.

Quer saber mais?

Se você curtiu o projeto, vai gostar da loja deles, vai lá :)

Matrix na FOSDEM 22

O FOSDEM de 2022 aconteceu dentro das redes do Matrix e isso foi um grande marco, me impressionou e me fez revisitar o projeto com outro olhar.

Teve uma trilha inteira na FOSDEM dedicada ao Matrix

Com isso sabemos inclusive que é possível utilizá-lo para eventos online

Por essa razão eu achei que era o momento de criar meu plano B lá na rede da Matrix.org já que seus recursos são tão interessantes.

O que eu fiz?

Eu criei os seguintes canais no matrix.org – dos quais eu ajudo a manter - e conectei aos mesmos canais no telegram.

#cicd-br (canal #cdnbr no telegram)
#gitops-br
#cloudnative-br
#macusers-br
#tecladomecanico
#gitlab-br
#docker-br
#devops-br
#terraform-br
#packer-br
#ansible-br
#devopsdays-br

Aproveitei para criar também os canais abaixo – que não estão sob minha administração no telegram – só falta pedir autorização dos donos e conectá-los

#kubernetes-br
#rancher-br

E vou conversar com os gestores dos canais no telegram para verificar se conseguimos linkar os canais no Matrix, claro que os donos serão os admins também, já assumo esse compromisso aqui.

Ah subi também um cliente do element web para testar

Está rodando na minha casa, pode ser um pouco lento, é só para testes hein :)

Por que mudar?

Esse é um primeiro passo para um movimento que considero importante, migrar comunidades de tecnologias open-source para uma rede igualmente open e segura, mantida por uma fundação sem fins lucrativos, acessível, responsável e transparente.

O Element.io é um cliente tão bom quanto ou até superior ao próprio cliente do telegram para mobile, desktop ou web, se a questão é usabilidade, ele oferece algo em um mesmo nível de qualidade e usabilidade.

O que usei para fazer a bridge?

Usei o projeto matterbridge que já uso e acompanho há muitos anos. Inicialmente o projeto foi criado para conectar outras redes ao MatterMost, contudo, ele cresceu e se tornou flexível o suficiente para conectar diferentes redes entre si.

Segue o arquivo de configuração do matterbridge.


[general]
MediaDownloadSize="3000000"

########################## [ matrix section ]

[matrix]

[matrix.nativetrail]
Server="https://matrix.org"
Login="user"
Password="pass"
NoHomeServerSuffix=false
HTMLDisable=false
UseUserName=false
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "
ShowJoinPart=false
StripNick=false
ShowTopicChange=false

########################## [ telegram section ]

[telegram]

[telegram.nativetrail]
Token="Token"
MessageFormat=""
DisableWebPagePreview=false
UseFirstName=false
UseInsecureURL=false
QuoteDisable=false
QuoteLengthLimit=0
QuoteFormat="{MESSAGE} (re @{QUOTENICK}: {QUOTEMESSAGE})"
MediaConvertWebPToPNG=false
EditDisable=false
EditSuffix=" (edited)"
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "
ShowJoinPart=false
StripNick=false
ShowTopicChange=false

########################## [ gateway config ]

[[gateway]]
name="matrix-telegram-canal-cloudnative"
enable=true
    [[gateway.inout]]
    account="matrix.nativetrail"
    channel="#cloudnative-br:matrix.org"

    [[gateway.inout]]
    account="telegram.nativetrail"
    channel="-1001375583910"

[[gateway]]
name="matrix-telegram-canal-cicd"
enable=true
    [[gateway.inout]]
    account="matrix.nativetrail"
    channel="#cicd-br:matrix.org"

    [[gateway.inout]]
    account="telegram.nativetrail"
    channel="-1001283833531"

[[gateway]]
name="matrix-telegram-canal-tecladomecanico"
enable=true
    [[gateway.inout]]
    account="matrix.nativetrail"
    channel="#tecladomecanico:matrix.org"

    [[gateway.inout]]
    account="telegram.nativetrail"
    channel="-1001208515699"

[[gateway]]
name="matrix-telegram-canal-macusers"
enable=true
    [[gateway.inout]]
    account="matrix.nativetrail"
    channel="#macusers-br:matrix.org"

    [[gateway.inout]]
    account="telegram.nativetrail"
    channel="-1001052488672"

[[gateway]]
name="matrix-telegram-canal-gitops"
enable=true
    [[gateway.inout]]
    account="matrix.nativetrail"
    channel="#gitops-br:matrix.org"

    [[gateway.inout]]
    account="telegram.nativetrail"
    channel="-1001375992764"

Aqui o dockerfile que usei para validar.

version: '3.7'
services:
  matterbridge:
    image: 42wim/matterbridge:1.24
    restart: unless-stopped
    volumes:
    - ./matterbridge.toml:/etc/matterbridge/matterbridge.toml:ro

Em breve solto os manifestos k8s e depois o pacote helm do matterbrige.

Quais serão os meus próximos passos?

Quero estudar mais sobre o Matrix, conhecer outras implementações do server como o dendrit, conhecer outros clientes, entender melhor sua criptografia para extrair mais dela, entender melhor sua API, estender o alcance das bridges no telegram, ajudar quem quiser construir a sua bridge e talvez começar a fazer meetups da CD.Foundation utilizando Matrix.org + Jitsi.

Depois do FOSDEM e da imensa POC que eles fizeram, no momento o limite é nossa criatividade :)

[s]
Guto


Este post é do tipo #FalaGutera, entenda aqui.

Se gostou manda um alo no twitter @gutocarvalho.