Comunicacions corporatives amb Synapse
En aquest post veurem la instal·lació de Synapse, un servidor propi que ens permetrà controlar i securitzar les comunicacions de missatgeria entre els nostres usuaris, un símil de Slack. Podrem mitjançant una app mòbil o una web donar-los accés segur a sales de reunions, missatgeria privada, integració amb Directori Actiu, amb Jitsi, Núvol següent…
Una eina que ens agilitzarà molt organitzant la nostra vida laboral mitjançant canals o sales on els usuaris podran intercanviar les seves necessitats, una alternativa real al correu electrònic, Teams, Slack i altres. Podran xatejar, enviar-se fitxers, videoconferències integrades amb el nostre Jitsi, o el que s' ha dit, si tens Nextcloud podrem integrar el client de manera nativa.
Comencem! Matrix es un protocolo abierto y una red para la comunicación descentralada, donde los usuarios poden participar en sales de xat pública y privadas a través de servidors públicos i privats (“servidores domésticos”); así como cualquier client de la seva elecció, al igual que hacemos amb el correu electrònic. El objetivo es proporcionar una red global libre y abierta para la comunicación encriptada de principio a fin, sin sacrificar la facilitat de uso, y así poder liberar a los usuarios de quedar atrapados en les apps de ciertos fabricantes, que se hoy en día se ha convertido en lo más común.
Synapse es la implementación de servidor doméstico Matrix más instalada, está escrito en Python 3 y és codi obert. En aquest post veremos diverses cosillas:
- Instalar Synapse
- Habilitar Proxy inverso con Nginx
- Instalar cliente Element
- Integración de autenticación con Directorio Activo.
- Instalar Element-web
- Integración con Jitsi
- Integración con Nextcloud
Instalación de Synapse
Para hacer la instalación nos basaremos 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://packages.matrix.org/debian/ $(lsb_release -cs) principal" | sudo tee /etc/apt/sources.list.d/matrix-org.list sudo apt update sudo apt install matrix-synapse-py3
Ens apareixerà la següent pregunta, hem d'indicar el nom FQDN del servidor, alguna cosa com matrix.midomini.això que hauràs de donar d'alta als teus servidors DNS i que resolguin cap a la IP d'aquesta màquina.
Si volem enviar estadístiques anònimes perquè millorin l'ús,
Iniciem i habilitem el servei:
sudo systemctl start matrix-synapse.service sudo systemctl enable matrix-synapse.service
Editem el fitxer de configuració de Synapse: /etc/matrix-synapse/homeserver.yaml i veurem el port d'escolta, l'adreça d'escolta (podrem deixar 127.0.0.1 si accedim amb el proxy invers), si volem TLS, o important, si volem permetre que es registrin usuaris lliurement al nostre entorn, o no:
...
- port: 8008
tls: false
type: http
x_forwarded: true
bind_addresses: ['0.0.0.0']
resources:
- Noms: [client, federation]
compress: false
...
enable_registration: false
...
Si fem qualsevol canvi reiniciem el servei:
sudo systemctl restart matrix-synapse.service
I si a bind_address escoltem des de 0.0.0.0 podrem obrir un navegador i verificar que el servei està en funcionament, obrim contra http://ADREÇA_IP_SYNAPSE:8008
Proxy Invers
Com veiem, el nostre Synapse funciona sota HTTP, el que farem a continuació serà instal·lar Nginx i habilitar l'accés a Synapse mitjançant proxy invers i xifrat amb SSL. Així que venga, instal·lem Nginx, el iniciem i el marquem com a inici automàtic amb 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 llamamos por ejemplo ‘/etc/nginx/sites-available/synapse’ y al menos reemplazaremos el FQDN de ejemplo que os dejo con el de cada uno de vosotros:
server {
listen 80;
server_name matrix.midominio.eso;
return 301 https://$server_name$request_uri;
}
server {
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 {
return 200 '{"m.server": "matrix.midominio.eso:443"}';
add_header Content-Type application/json;
}
location /.well-known/matrix/client {
return 200 '{"m.homeserver": {"base_url": "https://matrix.midominio.eso"},"m.identity_server": {"base_url": "https://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 tot ha ido bien podremos validarlo abriendo un navegador contra https://DIRECCION_IP_SYNAPSE/.well-known/matrix/server
Element
Bé, para connectarnos al nostre servidor Synapse, podem usar qualsevol client com dijimos anteriorment, el més común quizá sea Element, anteriormente conocido como Riot. Pues Element lo podremos abrir directamente desde https://app.element.io o podem descargarnos un cliente en local, para nuestro Windows, Linux, Mac, Android o iOS.
Una vez abierto Element, deberem indicar que tenim la compte alojada en el nostre propi servidor, indiquem el nostre FQDN i ja podrem parlar amb nosaltres. però abans de loguearnos… ¿tendremos que tener una cuenta? ¿no? Bé. si tenim Synapse ja configurat contra el nostre LDAP podrem intentar entrar ja amb el nostre usuari del Directori Actiu, si no és així, necessitarem usar usuaris locals. Per poder crear usuaris locals haurem de permetre que els usuaris puguin registrar-se i per això si recordem, al fitxer de configuració establim ‘enable_registration': true’ i reiniciem el servei. Ara ja sí que podríem crear un compte d'usuari. Però clar, compte amb els registres oberts, és cert que a la configuració veuràs que podem requerir un secret compartit previ i així no es validen, posar un CAPTCHA… Normalment els registres els deixarem deshabilitats.
I res, si entrem ja Element ens dóna la benvinguda, ens permet enviar missatges a contactes, explorar sales públicas o crear chats grupales entre altres.
Element en sí no tiene ninguna complicación, los usuaris manejen aquest tipus d'eines diariamente, pero esta es open source, segura, cifrada y corre en el nostre datacenter, sin fugas de dades o con la màxima privacitat.
Configuración contra Directorio Activo
Lo más cómodo integrarà l'autenticació de Synapse amb el nostre domini d'Active Directory, per a això, primer instal·larem el connector LDAP i finalment en la configuració de Synapse indicamos los datos de nuestro LDAP. Instalamos los requisitos primer:
sudo apt-get install matrix-synapse-ldap3 -y
Editem el fitxer de configuració de Synapse (/etc/matrix-synapse/homeserver.yaml) y añadimos la següent configuració en la secció correspondiente:
password_providers:
- module: "ldap_auth_provider. LdapAuthProvider"
config:
enabled: true
uri: "ldap://DIRECCION_IP_DC:389"
start_tls: false
base: "ou=OU_2,ou=OU_1,dc=DOMINIO,dc=LOCAL"
attributes:
uid: "sAMAccountName"
mail: "mail"
name: "givenName"
bind_dn: "cn=USUARIO_LDAP_SYNAPSE,ou=OU_2,ou=OU_1,dc=DOMINIO,dc=LOCAL"
bind_password: "CONTRASENYA"
#filter: "(objectClass=posixAccount)"
Donde bueno, podríamos añadir alguna linea adicional contra otro DC, así como que preferiblemente configurar LDAPS mejor por el 636 y con TLS y en la BaseDN tendremos la base de donde nos buscará los usuarios, así como si queremos poner algún filtro adicional…
Y nada tras reiniciar el servicio de Synapse podremos ya intentar loguearnos con nuestros usuarios de dominio.
sudo systemctl restart matrix-synapse.service
Element-web
En el propio servidor de Synapse podremos instalar Element-web, que así podremos evitar hacer que los usuarios se tengan que ir a la web de Element para hablar o el tener un cliente instalado offline. Element-web nos proporcionará el mateix GUI pero ejecutándose en nuestro servidor (en Nginx), un client web, vagi.
Així que, creamos el directorio donde guardaremos element-web, nos lo descargamos, instalamos gnupg, las claves & las instalamos, descomprimimos element, creamos un enllaç simbólico i corregim els permisos; finalment crearem el nostre fitxador de configuració:
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). Quedant:
{
"default_server_config": {
"m.homeserver": {
"base_url": "https://matrix.midominio.eso",
"server_name": "midominio.eso"
},
"m.identity_server": {
"base_url": "https://matrix.midominio.eso"
}
},
...
Creamos el fichero de configuración para Nginx:
server {
listen 80;
server_name element.midominio.eso;
return 301 https://$server_name$request_uri;
}
server {
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;
location / {
try_files $uri $uri/ =404;
}
}
Habilitamos el sitio y reiniciamos Nginx:
sudo ln -s /etc/nginx/sites-available/element /etc/nginx/sites-enabled/ sudo systemctl restart nginx.service
I provem amb un navegador a accedir a https://element.midomini.eso i voilà! ja podrem iniciar sessió amb els nostres usuaris directament a la web, i no t'expliqui si personalitzem la Inici…
Integración con Jitsi
Si tenim el nostre propietari servidor de videoconferències basat en Jitsi, podem integrar-lo amb Element-web i així quan vulguin fer una trucada o videotrucada, o grupal, usaràn els nostres recursos, tot queda a casa, assegurança, xifrat… només cal editar el fitxer de configuració d'element-web (/var/www/html/element/element/config.json) a la secció de Jitsi i posar el nostre FQDN:
},
"jitsi": {
"preferredDomain": "jitsi.midomini.eso"
}
I quedaria súper guai!
Integración con Nextcloud
Vinga ja acabem… això el mateix, si tienes tu propio sistema de intercambio de ficheros o aún más un Hub de conexión a tus usuaris con Núvol següent podrás con una app integrar en la pròpia interfície de Nextcloud un apa
En Nextcloud, logueados con una cuenta con privilegios de administrador, vamos a las Apps > Integración > y buscamos 'Element for Nextcloud', posem en “Descargar y activar”.
Si vamos a la part de Configuración, en el menú lateral podremos ver un apartado nuevo llamado 'Element', deberemos configurar la URL del servidor Element Web.
I ara els usuaris tindran en la barra superior un icono addicional, donde directamente podrán parlar, interactuar amb el resto de companyos… ¡precioso!
Bo, que espero os haya resultat interessant, gràcies a todos los que dais Likes y Recomanacions en las xarxes socials, abrazos a tod@s!






















































