Comunicazioni aziendali con Synapse

In questo post esamineremo l'installazione di Synapse, Un server proprietario che ci permetterà di controllare e proteggere le comunicazioni di messaggistica tra i nostri utenti, una similitudine di Slack. Saremo in grado di fornire loro un accesso sicuro alle sale riunioni tramite un'app mobile o un sito web, Messaggistica privata, Integrazione con Active Directory, con Jitsi, Successivocloud…

Uno strumento che ci faciliterà molto nell'organizzazione della nostra vita lavorativa attraverso canali o stanze dove gli utenti potranno scambiare le loro esigenze, un'alternativa reale all'email, Squadre, Slack e simili. Potranno chattare, inviarsi file, videoconferenze integrate con il nostro Jitsi, o quello che ho detto, se hai Nextcloud possiamo integrare il client in modo nativo.

Avviato! Matrix è un protocollo aperto e una rete per la comunicazione decentralizzata, dove gli utenti possono partecipare a stanze di chat pubbliche e private attraverso server pubblici e privati (“server domestici”); così come qualsiasi client della loro scelta, allo stesso modo in cui facciamo con l'email. L'obiettivo è fornire una rete globale libera e aperta per la comunicazione crittografata end-to-end, senza sacrificare la facilità d'uso, e così liberare gli utenti dall'essere intrappolati nelle app di alcuni produttori, che oggi sono diventate le più comuni.

Synapse è l'implementazione del server domestico Matrix più installata, è scritto in Python 3 ed è open source. In questo post vedremo diverse cose:

  • Installare Synapse
  • Abilitare il proxy inverso con Nginx
  • Installare il client Element
  • Integrazione dell'autenticazione con Active Directory.
  • Installare Element-web
  • Integrazione con Jitsi
  • Integrazione con Nextcloud

Installazione di Synapse

Per effettuare l'installazione ci baseremo su un Ubuntu Server 21.04 che avremo aggiornato e con un IP statico. Iniziamo installando i requisiti:

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

Scarichiamo il repository e le chiavi per installare finalmente Matrix Synapse:

sudo apt install -y lsb-release wget apt-transport-httpssudo wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpgecho "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) principale" | sudo tee /etc/apt/sources.list.d/matrix-org.listsudo apt updatesudo apt install matrix-synapse-py3

Ci verrà posta la seguente domanda, dobbiamo indicare il nome FQDN del server, 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, O no:

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

    resources:
      - Nomi: [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 podremos abrir un navegador y verificar que el servicio está corriendo, abrimos contra http://DIRECCION_IP_SYNAPSE:8008

Proxy Inverso

Come possiamo vedere, 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, abbiamo installato Nginx, lo iniciamos y lo marcamos como inicio 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 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 {
       Ascoltare 80;
       server_name matrix.midominio.eso;
       Ritorno 301 https://$server_name$request_uri;
}

Server {
    Ascoltare 443 Certificato SSL;
    Ascoltare [::]:443 Certificato 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;

    # Se non vuoi servire un sito, commenta questo 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 {
      Ritorno 200 '{"m.server": "matrix.midominio.eso:443"}';
      add_header Content-Type application/json;
    }
    location /.well-known/matrix/client {
      Ritorno 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 todo ha ido bien podremos validarlo abriendo un navegador contra https://DIRECCION_IP_SYNAPSE/.well-known/matrix/server

Elemento

Non male, per connetterci al nostro server Synapse, possiamo usare qualsiasi client come abbiamo detto prima, il più comune forse è Element, precedentemente noto come Riot. Possiamo aprire Element direttamente da https://app.element.io oppure possiamo scaricare un client in locale, per il nostro Windows, Linux, Mac, Android o iOS.

Una volta aperto Element, dovremo indicare che abbiamo l'account ospitato nel nostro server, indichiamo il nostro FQDN e potremo già fare il login. Ma prima di fare il login… dobbiamo avere un account? No? Non male. se abbiamo già configurato Synapse contro il nostro LDAP possiamo provare ad entrare già con il nostro utente del Directory Active, Se non, dovremo usare utenti locali. Per poter creare utenti locali dovremo permettere che gli utenti possano registrarsi e per questo se ricordiamo, nel file di configurazione impostiamo 'enable_registration': Vero’ e riavviamo il servizio. Ora sì, potremmo creare un account utente. Ma ovviamente, attenzione ai registri aperti, è vero che nella configurazione vedrai che possiamo richiedere un segreto condiviso precedente e così non vengono convalidati, inserire un CAPTCHA… Normalmente lasceremo i registri disabilitati.

E niente, se entriamo, Element ci dà il benvenuto, ci permette di inviare messaggi ai contatti, esplorare sale pubbliche o creare chat di gruppo tra gli altri.

Element di per sé non ha alcuna complicazione, gli utenti usano questo tipo di strumenti quotidianamente, ma questo è open source, Certo, crittografato e gira nel nostro datacenter, senza perdite di dati o con la massima privacy.

Configurazione contro Active Directory

Lo más cómodo será integrar la autenticación de Synapse con nuestro dominio de Active Directory, per questo, 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:
    - modulo: "ldap_auth_provider.LdapAuthProvider"
      configurazione:
        Abilitato: 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"
           Nome: "givenName"
        bind_dn: "cn=USUARIO_LDAP_SYNAPSE,ou=OU_2,ou=OU_1,dc=DOMINIO,dc=LOCAL"
        bind_password: "PAROLA D’ORDINE"
        #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 con TLS e nella BaseDN avremo la base da cui ci cercherà gli utenti, così come se vogliamo impostare un filtro aggiuntivo…

E niente dopo aver riavviato il servizio di Synapse potremo già provare a effettuare il login con i nostri utenti di dominio.

sudo systemctl restart matrix-synapse.service

Element-web

Sul server stesso di Synapse potremo installare Element-web, in modo da non dover far andare gli utenti sul sito web di Element per parlare o dover avere un client installato offline. Element-web ci fornirà la stessa GUI ma in esecuzione sul nostro server (in Nginx), un client web, andare.

Così, creiamo la directory dove salveremo element-web, ce lo scarichiamo, installiamo gnupg, le chiavi & le installiamo, decomprimiamo element, creiamo un link simbolico e correggiamo i permessi; 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 ri******@**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_urlcon el FQDN completo de Synapse (matrix.midominio.eso); y ‘server_namecon 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:

Server {
       Ascoltare 80;
       server_name element.midominio.eso;
       Ritorno 301 https://$server_name$request_uri;
}

Server {
    Ascoltare 443 Certificato SSL;
    Ascoltare [::]:443 Certificato 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;

    Ubicazione / {
        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 directamente en web, y no te cuento si customizamos el Inicio…

Integrazione con Jitsi

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, useranno le nostre risorse, tutto rimane in casa, certo, cifratura… basta modificare il file di configurazione di element-web (/var/www/html/element/element/config.json) nella sezione Jitsi e mettere il nostro FQDN:

},
"jitsi": {
    "preferredDomain": "jitsi.miomodominio.eso"
}

E sarebbe davvero fantastico!

Integrazione con Nextcloud

Dai, finiamo… questo è lo stesso, se hai il tuo sistema di scambio file o ancora di più un Hub di connessione ai tuoi utenti con Successivocloud potrai con un'app integrare nell'interfaccia di Nextcloud un apa

In Nextcloud, loggati con un account con privilegi di amministratore, andiamo nelle App > Integrazione > e cerchiamo 'Element for Nextcloud', Clicca su “Scarica e attiva”.

Se andiamo nella parte delle Impostazioni, nel menu laterale possiamo vedere una nuova sezione chiamata 'Element', dobbiamo configurare l'URL del server Element Web.

E ora gli utenti avranno nella barra superiore un'icona aggiuntiva, dove potranno parlare direttamente, interagire con il resto dei colleghi… meraviglioso!

Bene, spero vi sia risultato interessante, grazie a tutti coloro che mettono Mi Piace e Condivisioni sui social network, abbracci a tutti!

Post consigliati

Autore

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, Non esitate a contattarmi, Cercherò di aiutarti ogni volta che potrò, Condividere è vivere ;) . Goditi i documenti!!!