Indice

Bridge XMPP <=> Whatsapp con slidge

Premessa

Questa guida presume l'utilizzo di Debian stable, docker per installare “slidge whatsapp” e di un server XMPP Prosody, versione 0.12.x.

Esistono pacchetti debian per slidge, ma personalmente ho sempre preferito installazione su docker, per cui non ho esperienza coi primi.

Prosody su Debian stable può essere installato da repositoty “backports”, dove è già alla versione più recente `0.12.4`

docker compose

services:
   slidge-whatsapp:
       network_mode: host
       container_name: whatsapp
       volumes:
           - /var/lib/slidge:/var/lib/slidge
       image: nicocool84/slidge-whatsapp:master
       command: --secret=random_string --jid=whatsapp.example.tld
           --user-jid-validator='.*@example.tld'
           --upload-service=upload.example.tld
           --admins=roughnecks@example.tld

network-mode deve obbligatoriamente essere “host”, poiché slidge dovrà connettersi a prosody, il quale gira ovviamente sull'host.

il volume può essere “montato” su una dir a piacere, ovvero: - /path/to/slidge/whatsapp:/var/lib/slidge ma per semplificare consiglio di lasciare come scritto nel compose.


L'utente default per il container dovrebbe avere “uid” `10000` (ho disinstallato slidge da un po', quindi non sono sicuro al 100%), quindi consiglio di creare una utenza debian con tale uid e gid e come home il percorso del volume; qualcosa tipo:

sudo groupadd -g 10000 slidge

sudo useradd slidge -r -u 10000 -g 10000 -m -d /var/lib/slidge -s /usr/sbin/nologin

Consultare man useradd per le varie opzioni. Il penultimo path è la directory di cui parlavo sopra, dove il volume verrà montato, quindi assicuratevi di impostare lo stesso valore sul compose di docker e per l'utente slidge.

Alcuni possibili warning restituiti dal comando:

Warning: missing or non-executable shell '/usr/sbin/nologin' Installate il pacchetto debian `login`

warning: slidge's uid 10000 is greater than SYS_UID_MAX 999 Ignorate


Riguardo la riga “command”:

–secret= conterrà una stringa random - una password sostanzialmente, che andrà inserita anche nella configurazione di prosody, che vedremo più tardi.

–jid= sarà il nome del componente prosody: potete sceglierne uno qualsiasi, mantenendo naturalmente il dominio su cui è installato il server XMPP. Non necessita di record DNS, in quanto il collegamento tra componenti e server XMPP è solamente interno.

–user-jid-validator= lasciate come da esempio

–upload-service= serve per il caricamento dei media sul gateway slidge. A seconda di come è configurato il vostro server, questo valore potrebbe cambiare, ma generalmente su prosody è utilizzato il modulo https://prosody.im/doc/modules/mod_http_file_share per cui inserite il nome del componente relativo.

Approfondimenti/variazioni: https://slidge.im/core/admin/attachments.html

Ogni gateway slidge ha una serie di configurazioni “standard” e altre relative al particolare gateway, ma queste elencate sono sufficienti per una installazione funzionante: maggiori info su https://slidge.im/core/admin/config/index.html

Prosody

Innanzi tutto installate:

https://modules.prosody.im/mod_privilege

In /etc/prosody/prosody.cfg.lua aggiungete il modulo nella configurazione globale.

Quindi, sotto al virtualhost “example.tld”, aggiungete:

privileged_entities = {
  ["whatsapp.example.tld"] = {
    roster = "both";
    message = "outgoing";
    iq = {
    ["http://jabber.org/protocol/pubsub"] = "both";
    ["http://jabber.org/protocol/pubsub#owner"] = "set";
    };
  }
}

Cambiate solamente la riga col nome del componente.

Sempre nello stesso file, questa volta in fondo, aggiungete:

Component "whatsapp.example.com"
  component_secret = "random_string"
  modules_enabled = {"privilege"}

Di nuovo, cambiate il nome del componente e aggiungete la stringa random (la password) che avete impostato nel compose precedentemente.


Dovrebbe essere tutto.

Riavviate prosody (oppure ricaricate la conf, caricate il modulo “privilege” ed attivate il componente a mano - si può fare tutto con prosodyctl shell o con comandi ad-hoc)

Avviate il container docker

Usate Gajim (o Movim) per registrare la vostra utenza sul gateway, andando nel menu “Discover Services”, cliccando sul componente whatsapp e poi su “commands”: https://slidge.im/core/user/register.html