Synapse-rekin komunikazio korporatiboak

Post honetan Synapse-en instalazioa ikusiko dugu, gure erabiltzaileen arteko mezularitza-komunikazioak kontrolatu eta seguru mantentzeko aukera emango digun zerbitzari propioa, Slack-en antzekoa. App mugikor edo web bidez bilerako gela seguruetara sartzeko aukera izango dugu, mezularitza pribatua, Active Directory-rekin integratzea, Jitsi-rekin, Nextcloud…

Tresna bat, gure lan-bizitza antolatzen lagunduko diguna kanalen edo gelaren bidez, non erabiltzaileek euren beharrak trukatuko dituzten, posta elektronikoko benetako alternatiba bat, Teams, Slack eta beste batzuk. Txateatu ahal izango dute, fitxategiak bidali ahal izango dituzte, bideo-konferentziak gure Jitsi-rekin integratuta, edo esan bezala, Nextcloud badaukazu, bezeroa modu naturalean integratu ahal izango dugu.

Hasi gaitezen!! Matrix protokolo irekia eta komunikazio deszentralizatuarako sare bat da, non erabiltzaileek parte hartu ahal duten txate-gela publikoetan eta pribatuetan zerbitzarietatik (“etxeko zerbitzariak”); halaber, edozein hautatutako bezero bezala, posta elektronikoarekin egiten dugun moduan. Helburua mundu osoko sare libre eta irekia eskaintzea da, bukaeratik bukaerako zifratutako komunikaziorako, erabilerraztasuna galdu gabe, eta horrela erabiltzaileak askatzeko fabrikatzaile batzuen aplikazioetan harrapatuta ez gera daitezen, egun dagoeneko ohikoena bihurtu dena da.

Synapse etxeko Matrix zerbitzariaren inplementazio ezagunenetako bat da, Python-ez idatzita dago 3 eta iturri irekikoa da. Post honetan hainbat gauza ikusiko ditugu:

  • Synapse instalatzea
  • Nginx-ekin alderantzizko proxy-a gaitzea
  • Element bezeroa instalatzea
  • Aktiboen Direktorioarekin autentifikazio integrazioa.
  • Element-web instalatzea
  • Jitsi-rekin integrazioa
  • Nextcloud-ekin integrazioa

Synapse instalazioa

Instalazioa egiteko Ubuntu Server batean oinarrituko gara 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) 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, matrix.midominio bezalakoa. hori zure DNS zerbitzarietan erregistratu beharko duzu eta makinaren IParen kontra ebaziko dute.

Estatistikak anonimoak bidali nahi baditugu erabilera hobetzeko,

Zerbitzua abiarazi eta gaitzen dugu:

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

Synapse konfigurazio-fitxeroa editatzen dugu: /etc/matrix-synapse/homeserver.yaml eta entzunezko ataka ikusiko dugu, entzunezko helbidea (utzi ahal izango dugu 127.0.0.1 proxy alderantzizkoa erabiliz sartu nahi badugu), TLS nahi badugu, edo garrantzitsua, Erabiltzaileak libreki gure ingurunean erregistratzen utzi nahi badugu, edo ez:

...
- port: 8008
    tls: false
    type: http
    x_forwarded: true
    bind_addresses: ['0.0.0.0']

    baliabideak:
      - names: [bezeroa, federazioa]
        konprimitu: false
...
erregistroa gaitzea: false
...

Aldaketa edozein egiten badugu, zerbitzua berrabiarazten dugu:

sudo systemctl restart matrix-synapse.service

Eta bind_address-ean entzuten badugu 0.0.0.0 nabigatzaile bat irekiko dugu eta egiaztatu zerbitzua martxan dagoela, irekiko dugu http kontra://DIRECCION_IP_SYNAPSE:8008

Proxy Inbertsioa

Ikusten dugun bezala, gure Synapse HTTP azpian dabil, hurrengo egingo duguna Nginx instalatu eta Synapse-ri sarbidea proxy inbertsioaren eta SSL zifratzearekin ahalbidetzea izango da. Beraz, aurrera, instalamos Nginx, hasi eta sistemarekin hasiera automatiko gisa markatu:

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

Synapse webgunerako konfigurazio fitxategia sortu, esaterako '/etc/nginx/sites-available/synapse' deituko diogu’ eta gutxienez uzten dizuedan FQDN adibidea bakoitzarenarekin ordezkatuko dugu:

zerbitzaria {
       listen 80;
       server_name matrix.midominio.eso;
       return 301 https://$server_name$request_uri;
}

zerbitzaria {
    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;

    # Gune bat ez baduzu zerbitzatu nahi, hau iruzkina egin
    root /var/www/html;
    index index.html index.htm;

    lekua /_matrix {
      proxy_pass http://127.0.0.1:8008;
      proxy_set_header X-Forwarded-For $remote_addr;
    }
    lekua /.well-known/matrix/server {
      return 200 '{"m.server": "matrix.midominio.eso:443"}';
      add_header Content-Type application/json;
    }
    lekua /.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" *;
    }
}

Synapse gunea aktibatzeko esteka bat sortu eta Nginx berrabiarazi dugu:

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

Denak ondo badago, nabigatzaile bat irekituz egiaztatu ahal izango dugu https-en bidez://DIRECCION_IP_SYNAPSE/.well-known/matrix/server

Element

Ondo, Gure Synapse zerbitzarira konektatzeko, aurrekoan esan bezala edozein bezero erabili dezakegu, agian ohikoena Element da, aurrekoan Riot izenez ezaguna zena. Element zuzenean ireki ahal izango dugu https://app.element.io edo egin dezakegu bezero bat deskargatu tokian bertan, gure Windows-erako, Linux, Mac, Android edo iOS.

Element irekitakoan, adierazi beharko dugu kontua gure zerbitzari propioan dagoela, adierazi gure FQDN eta orduan saioa hasi ahal izango dugu. Baina saioa hasi aurretik… kontu bat izan behar al dugu? ¿no? Ondo. Synapse gure LDAParekin dagoeneko konfiguratu badugu, Active Directoryko gure erabiltzailearekin saioa hasi saiat dezakegu, horrela ez bada, tokiko erabiltzaileak erabili beharko ditugu. Tokiko erabiltzaileak sortu ahal izateko, erabiltzaileek erregistratu ahal izatea baimendu behar dugu eta horretarako gogora badugu, en el fichero de configuración establecemos ‘enable_registration: true’ 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.

Eta ezer, 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, seguru, cifrada y corre en nuestro datacenter, sin fugas de datos o con la máxima privacidad.

Configuración contra Directorio Activo

Erosoena Synapse autentifikazioa gure Active Directory domeinuarekin integratzea izango da, horretarako, lehenik LDAP konpositorea instalatuko dugu eta azkenik Synapse konfigurazioan gure LDAP datuak adieraziko ditugu. Lehenik beharrezkoak instalatzen ditugu:

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

Synapse konfigurazio-fitxeroa editatzen dugu (/etc/matrix-synapse/homeserver.yaml) eta hurrengo konfigurazioa gehitzen dugu dagokion atalean:

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"
           posta, : "posta, "
           name: "givenName"
        bind_dn: "cn=USUARIO_LDAP_SYNAPSE,ou=OU_2,ou=OU_1,dc=DOMINIO,dc=LOCAL"
        bind_password: "PASAHITZA"
        #iragazi: "(objectClass=posixAccount)"

Non ona, beste DC bati buruz lerro osagarri bat gehitu genezake, eta ahal den heinean LDAPS hobeto konfiguratu 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 mismo GUI pero ejecutándose en nuestro servidor (en Nginx), un cliente web, vaya.

Beraz, creamos el directorio donde guardaremos element-web, nos lo descargamos, instalamos gnupg, las claves & las instalamos, descomprimimos element, creamos un enlace simbólico y corregimos los permisos; finally 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://matrix.midominio.eso",
            "server_name": "midominio.eso"
        },
        "m.identity_server": {
            "base_url": "https://matrix.midominio.eso"
        }
    },
...

Creamos el fichero de configuración para Nginx:

zerbitzaria {
       listen 80;
       server_name element.midominio.eso;
       return 301 https://$server_name$request_uri;
}

zerbitzaria {
    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;

    kokapena / {
        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

Y probamos con un navegador a acceder a https://element.midominio.eso ¡et voilà! ya podremos loguearnos con nuestros usuarios directly en web, y no te cuento si customizamos el Inicio…

Jitsi-rekin integrazioa

Si tenemos nuestro propio servidor de videoconferencias basado en Jitsi, podemos integrarlo con Element-web y así cuando quieran hacer una llamada o video llamada, o grupal, gure baliabideak erabiliko dituzte, dena etxean geratzen da, segurua, kriptatuta… nahikoa da element-web konfigurazio fitxategia editatzea (/var/www/html/element/element/config.json) Jitsi atalean eta gure FQDN jartzea:

},
"jitsi": {
    "preferredDomain": "jitsi.nire-domeinua.hori"
}

Eta primeran geratuko litzateke!

Nextcloud-ekin integrazioa

Aupa, amaitu dugu… hau berdina da, zure fitxategien truke sistema propioa baduzu edo hortik harago, zure erabiltzaileekin konektatzeko Hub bat baduzu Nextcloud app batekin Nextcloud interfazean bertan integratu ahal izango duzu apa

Nextcloud-en, administratzaile pribilegioak dituen kontu batekin saioa hasiak, Joango gara Apps-era > Integratzea > eta bilatzen dugu 'Element for Nextcloud', sustatu “Deskargatu eta aktibatu”.

Konfigurazio atalera joaten bagara, alboko menuan 'Element' izeneko atal berri bat ikus dezakegu, Element Web zerbitzariaren URLa konfiguratu beharko dugu.

Y ahora los usuarios tendrán en la barra superior un icono adicional, donde directly podrán hablar, interactuar con el resto de compañeros… ¡precioso!

Onena, que espero os haya resultado interesante, gracias a todos los que dais Likes y Recomendaciones en las redes sociales, abrazos a tod@s!

Izenburuko mezuak

Egilea

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, ez zalantzarik izan nirekin harremanetan jartzeko, ahal duzun guztietan laguntzen saiatuko naiz, partekatu ahal dudan guztietan ;) . Dokumentuez gozatu!!!