Comunicações corporativas com o Synapse

Neste post vamos olhar para a instalação do Synapse, Um servidor proprietário que nos permitirá controlar e proteger as comunicações de mensagens entre os nossos utilizadores, um símile de Slack. Poderemos dar-lhes acesso seguro às salas de reuniões através de uma aplicação móvel ou de um sítio Web, Mensagens privadas, Integração com o Ative Directory, com Jitsi, Próxima nuvem…

Una herramienta que nos agilizará mucho organizando nuestra vida laboral mediante canales o salas donde los usuarios podrán intercambiar sus necesidades, una alternativa real al correo electrónico, Equipes, Slack y demás. Podrán chatear, enviarse ficheros, videoconferencias integradas con nuestro Jitsi, o lo dicho, si tienes Nextcloud podremos integrar el cliente de manera nativa.

Começou! Matrix es un protocolo abierto y una red para la comunicación descentralizada, donde los usuarios pueden participar en salas de chat públicas y privadas a través de servidores públicos y privados (“servidores domésticos”); así como cualquier cliente de su elección, al igual que hacemos con el correo electrónico. El objetivo es proporcionar una red global libre y abierta para la comunicación encriptada de principio a fin, sin sacrificar la facilidad de uso, y así poder liberar a los utilizadores de quedar atrapados en las apps de ciertos fabricantes, que se hoy en día se converteu en lo más comum.

Synapse es la implementación de servidor doméstico Matrix más instalada, está escrito em Python 3 y es open source. En este post veremos várias cosillas:

  • Instalar Synapse
  • Habilitar Proxy inverso con Nginx
  • Instalar cliente Element
  • Integração de autenticación con Directorio Activo.
  • Instalar Element-web
  • Integración con Jitsi
  • Integración con Nextcloud

Instalación de Synapse

Para fazer la instalação nos basearemos en un Ubuntu Server 21.04 que tendremos actualizadito y con una IP estática. Comenzamos instalando los requisitos:

sudo apt install build-essential python3-dev libffi-dev python3-pip python3-setuptools sqlite3 libssl-dev virtualenv libjpeg-dev libxslt1-dev

. Nos descargamos la repo y las claves para finalmente instalar Matrix Synapse:

sudo apt install -y lsb-release wget apt-transport-https
sudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
echo "Deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https (em inglês)://packages.matrix.org/debian/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/matrix-org.list
sudo apt update
sudo apt install matrix-synapse-py3

Nos saltará la siguiente pregunta, tenemos que indicar el nombre FQDN del servidor, algo como matrix.midominio.eso que deberás dar de alta en tus servidores DNSs y que resuelvan contra la IP de esta máquina.

Si queremos enviar estadísticas anónimas para que mejoren el uso,

Iniciamos y habilitamos el servicio:

sudo systemctl start matrix-synapse.service
sudo systemctl enable matrix-synapse.service

Editamos el fichero de configuración de Synapse: /etc/matrix-synapse/homeserver.yaml y veremos el puerto de escucha, la dirección de escucha (podremos dejar 127.0.0.1 si accederemos con el proxy inverso), si queremos TLS, o importante, si queremos permitir que se registren usuarios libremente en nuestro entorno, Ou não:

...
- porto: 8008
    TLS: false
    type: http
    x_forwarded: true
    bind_addresses: ['0.0.0.0']

    resources:
      - names: [cliente, federation]
        compress: Falso
...
enable_registration: Falso
...

Si hacemos cualquier cambio reiniciamos el servicio:

sudo systemctl restart matrix-synapse.service

Y si en bind_address escuchamos desde 0.0.0.0 . podemos abrir um navegador e verificar que el servicio está corriendo, abrimos contra http://DIRECCION_IP_SYNAPSE:8008

Proxy Inverso

Como podemos ver, nuestro Synapse corre bajo HTTP, lo que haremos a continuación será instalar Nginx y habilitar el acceso a Synapse mediante proxy inverso y cifrado con SSL. Así que venga, instalamos o Nginx, lo iniciamos y lo marcamos como início automático con el sistema:

sudo apt install nginx
sudo systemctl start nginx.service
sudo systemctl enable nginx.service

creamos el fichero de configuración para el sitio web de Synapse, le chamamos por exemplo '/etc/nginx/sites-available/synapse’ y al menos substituaremos el FQDN de exemplo que os dejo con el de cada uno de vosotros:

Servidor {
       listen 80;
       server_name matrix.midominio.eso;
       Retornar 301 https (em inglês)://$server_name$request_uri;
}

Servidor {
    listen 443 SSL;
    listen [::]:443 SSL;
    server_name matrix.midominio.eso;

    ssl_certificate /etc/ssl/certs/wildcard_midominio_eso.cer;
    ssl_certificate_key /etc/ssl/certs/wildcard_midominio_eso.key;

    # If you don't wanna serve a site, comment this out
    root /var/www/html;
    index index.html index.htm;

    location /_matrix {
      proxy_pass http://127.0.0.1:8008;
      proxy_set_header X-Forwarded-For $remote_addr;
    }
    location /.well-known/matrix/server {
      Retornar 200 '{"m.server": "matrix.midominio.eso:443"}';
      add_header Content-Type application/json;
    }
    location /.well-known/matrix/client {
      Retornar 200 '{"m.homeserver": {"base_url": "https (em inglês)://matrix.midominio.eso"},"m.identity_server": {"base_url": "https (em inglês)://vector.im"}}';
      add_header Content-Type application/json;
      add_header "Access-Control-Allow-Origin" *;
    }
}

Creamos un enlace para habilitar el sitio de Synapse y reiniciamos Nginx:

sudo ln -s /etc/nginx/sites-available/synapse /etc/nginx/sites-enabled/
sudo systemctl restart nginx.service

Si todo ha ido bien podremos validarlo abriendo un navegador contra https://DIRECCION_IP_SYNAPSE/.well-known/matrix/server

Element

Nada mau, para conectarnos a nosso servidor Synapse, podemos usar qualquer cliente como dijimos anteriormente, el más común quizá sea Element, anteriormente conhecido como Riot. Pues Element lo podremos abrir diretamente desde https://app.element.io o podemos descargarnos un cliente en local, para o nosso Windows, Linux, Mac, Android o iOS.

Una vez abierto Element, devemos indicar que temos a conta alojada no nosso próprio servidor, indicamos o nosso FQDN e já podremos fazer loguearnos. Mas antes de loguearnos… ¿tendremos que ter uma conta? Não? Nada mau. se temos o Synapse configurado já contra o nosso LDAP podremos tentar entrar já com o nosso utilizador do Directorio Ativo, se não es assim, precisamos usar utilizadores locais. Para poder criar utilizadores locais devemos permitir que os utilizadores possam registar-se e para ele si recordamos, en el fichero de configuración establecemos ‘enable_registration: Verdadeiro’ y reiniciamos el servicio. Ahora ya sí podríamos crear una cuenta de usuario. Pero claro, cuidado con los registros abiertos, es cierto que en la configuración verás que podemos requerir de un secreto compartido previo y así no se validan, poner un CAPCHANormalmente los registros los dejaremos deshabilitados.

E nada, si entramos ya Element nos da la bienvenida, nos permite enviar mensajes a contactos, explorar salas públicas o crear chats grupales entre otros.

Element en sí no tiene ninguna complicación, los usuarios manejan este tipo de herramientas diariamente, pero esta es open source, Certo, cifrada y corre en nuestro datacenter, sin fugas de datos o con la máxima privacidad.

Configuración contra Directorio Activo

Lo más cómodo será integrar la autenticación de Synapse con nuestro dominio de Active Directory, por isso, primero instalaremos el conector LDAP y finalmente en la configuración de Synapse indicamos los datos de nuestro LDAP. Instalamos los requisitos primero:

sudo apt-get install matrix-synapse-ldap3 -y

Editamos el fichero de configuración de Synapse (/etc/matrix-synapse/homeserver.yaml) y añadimos la siguiente configuración en la sección correspondiente:

password_providers:
    - módulo: "ldap_auth_provider.LdapAuthProvider"
      Configuração:
        Habilitado: true
        uri: "ldap://DIRECCION_IP_DC:389"
        start_tls: false
        base: "ou=OU_2,ou=OU_1,dc=DOMINIO,dc=LOCAL"
        attributes:
           uid: "Nome do sAMAccountName"
           correio: "correio"
           Nome: "givenName"
        bind_dn: "cn=USUARIO_LDAP_SYNAPSE,ou=OU_2,ou=OU_1,dc=DOMINIO,dc=LOCAL"
        bind_password: "PALAVRA-PASSE"
        #filtro: "(objectClass=posixAccount)"

Donde bueno, podríamos añadir alguna linea adicional contra otro DC, así como que preferiblemente configurar LDAPS mejor por el 636 E com TLS e na BaseDN teremos a base de onde nos irá buscar os utilizadores, assim como se quisermos colocar algum filtro adicional…

E nada, após reiniciar o serviço do Synapse poderemos já tentar iniciar sessão com os nossos utilizadores de domínio.

sudo systemctl restart matrix-synapse.service

Element-web

No próprio servidor do Synapse poderemos instalar o Element-web, assim poderemos evitar que os utilizadores tenham de ir ao site do Element para conversar ou de ter um cliente instalado offline. O Element-web fornecer-nos-á a mesma GUI mas a executar no nosso servidor (no Nginx), um cliente web, ir.

Então, criamos o diretório onde vamos guardar o element-web, fazemo-lo descarregar, instalamos gnupg, as chaves & instalamo-las, descomprimimos o element, criamos um link simbólico e corrigimos as permissões; Finalmente crearemos nuestro fichero de configuración:

sudo mkdir -p /var/www/html/element
cd /var/www/html/element

sudo wget https://github.com/vector-im/element-web/releases/download/v1.7.34/element-v1.7.34.tar.gz

sudo apt install -y gnupg
sudo wget https://github.com/vector-im/element-web/releases/download/v1.7.34/element-v1.7.34.tar.gz.asc


sudo gpg --keyserver keyserver.ubuntu.com --search-keys re******@**ot.im
sudo gpg --verify element-v1.7.34.tar.gz.asc

sudo tar -xzvf element-v1.7.34.tar.gz

sudo ln -s element-v1.7.34 element
sudo chown www-data:www-data -R element

cd element
sudo cp config.sample.json config.json

Editamos el fichero de configuración (/var/www/html/element/element/config.json), modificamos la 'base_url’ con el FQDN completo de Synapse (matrix.midominio.eso); y 'server_name’ con el nombre del dominio (midominio.eso). Quedando:

{
    "default_server_config": {
        "m.homeserver": {
            "base_url": "https (em inglês)://matrix.midominio.eso",
            "server_name": "midominio.eso"
        },
        "m.identity_server": {
            "base_url": "https (em inglês)://matrix.midominio.eso"
        }
    },
...

Criamos o ficheiro de configuração para Nginx:

Servidor {
       listen 80;
       server_name element.midominio.eso;
       Retornar 301 https (em inglês)://$server_name$request_uri;
}

Servidor {
    listen 443 SSL;
    listen [::]:443 SSL;
    server_name element.midominio.eso;

    ssl_certificate /etc/ssl/certs/wildcard_mi_dominio.cer;
    ssl_certificate_key /etc/ssl/certs/wildcard_mi_dominio.key;

    root /var/www/html/element/element;
    index index.html;

    Localização / {
        try_files $uri $uri/ =404;
    }
}

Ativamos o site e reiniciamos o Nginx:

sudo ln -s /etc/nginx/sites-available/element /etc/nginx/sites-enabled/
sudo systemctl restart nginx.service

E testamos com um navegador aceder ao https://element.midominio.eso ¡et voilà! já poderemos iniciar sessão com os nossos utilizadores directamente na web, e nem quero imaginar se personalizarmos o Início…

Integración con Jitsi

Se tivermos o nosso próprio servidor de videoconferências baseado em Jitsi, podemos integrá-lo com o Element-web e assim quando quiserem fazer uma chamada ou videochamada, ou em grupo, usarão os nossos recursos, tudo fica em casa, certo, cifrado… basta editar o ficheiro de configuração do element-web (/var/www/html/element/element/config.json) na secção de Jitsi e colocar o nosso FQDN:

},
"jitsi": {
    "preferredDomain": "jitsi.midominio.isso"
}

E ficaria super fixe!

Integración con Nextcloud

Vamos lá, acabamos… isto é o mesmo, se tens o teu próprio sistema de troca de ficheiros ou ainda melhor um Hub de ligação aos teus utilizadores com Próxima nuvem poderás com uma app integrar na própria interface do Nextcloud um apa

No Nextcloud, ligados com uma conta com privilégios de administrador, vamos às Apps > Integração > e procuramos ‘Element for Nextcloud’, Clique em “Descarregar e ativar”.

Se formos à parte de Configuração, no menu lateral poderemos ver uma secção nova chamada ‘Element’, deveremos configurar a URL do servidor Element Web.

Y ahora los utilizadores terão na barra superior um ícone adicional, onde diretamente poderão falar, interactuar com o resto de companheiros… precioso!

Poço, que espero os haja resultado interessante, graças a todos os que dizem Likes e Recomendações nas redes sociais, abrazos a tod@s!

Postagens recomendadas

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, Não hesite em contactar-me, Vou tentar ajudá-lo sempre que puder, Compartilhar é viver ;) . Desfrute de documentos!!!